알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)
HSMS 프로토콜 이란 본문
HSMS[High Speed SECS Message Service]
sesc-I 을 대체 하기 위해서 만들어진 프로토콜입니다.
시대가 변하면서 RS-232 보다 더빠른 ehternet 기반으로한 TCP/IP 프로토콜을 사용하여 통신을 하는 시대가 됬습니다.
반도체 설비들도 더 빠른 통신을 필요로 하였습니다.
그래서 TCP/IP 프로토콜 위에 HSMS 프로토콜을 얻혀 SESC-I 을 대체 하는것으로 표준이 만들어 졌습니다.
먼저 secs-I 위에 secs-II 를 다시 한번 구조를 보겠습니다.
영역 |
크기 |
설명 |
A |
1byte |
B영역과 C영역의 데이터 크기가 몇바이트 인지 설정 |
B |
10byte |
Header Structure 에서 상세히 설명 기본 개념은 데이터의 흐름 제어 |
C |
0~244Byte |
DATA 를 집어 넣음 |
D |
2byte |
Check sum 으로 데이터에 노이즈 없이 잘들어 왔는지 확인 작업 |
여기서 C영역은 Secs-II의 영역입니다.
HSMS는 secs-II 영역은 그대로 두고 A,B,D secs-I 의 부분만 대체 하게 됩니다.
연결도
HSMS 상태 변경 로직
HSMS 에서는 통신으로 뭔가 동작을 하기위해서는 먼저 선절차가 있다.
우리가 HSMS 문서를 보면
위와 같은 시퀀스 정보를 볼수 있는데 이에 대한 설명으로적혀 있는것은
Current State | Current State Description | Comment | |
1 |
|
|
TCP/IP Communication 준비 |
2 |
Not Connected |
TCP/IP Connection을 초기화할 준비는 되어 있으나, 아직 Connection은되어 있지 않은 상태 |
|
3 |
Connected |
TCP/IP Connection이 되어 있는 상태 |
|
4 |
Not Selected |
Connected상태이지만,HSMS Session이 Establish 되어 있지 않는 상태 |
Data Message Exchange 허락상태 |
5 |
Selected |
Connected
상태이며, 적어도 한개의 Session이Establish되어 있는 상태이고 이상태가 HSMS의 |
HSMS Communication의 끝 |
6 |
Not Selected |
|
|
통신을 하기위한 최종 목적은 selected 까지 상태를 변경는것입니다.
그 과정에 사용 되는 HSMS 통신을 살펴 보겠습니다.
1~3 까지 과정은 소켓통신을 통해 TCP/IP 통신 접속 상태를 말합니다.
중요한것은 4번 부터 입니다.
HSMS 헤더 분석 하기
영역 |
사이즈 |
내용 |
A |
4byte |
B+C 데이터 길이 |
B |
10byte |
메시지 헤더 |
C |
0~4G Bytes |
데이터 SECS-II 부분 |
여기서 중요한 부분은 B 영역 입니다 .
또한 SECS-I 에 있던 D 부분 check SUM 부분은 사라졌습니다.
그이유는 TCP/IP 프로토콜에서 CHECK_SUM 을 해주기 때문에 굳히 HSMS 에서 할필요가 없기 때문에 빠졌습니다.
B영역
B영역의 메세지에는 Control Message 메세지와 Data Message 가 있습니다.
Control Message
상태를 제어하는데 사용되는 통신 입니다.
Data Message
secs-II 데이터를 통신하기 위한 헤더를 만듭니다.
Control Message B영역 구조
순서 |
이름 |
내용 |
0~1 |
sessionID |
DEVICE ID |
2 |
Header Byte 2 |
0이 콘트롤 메시지를 의미함 |
3 |
Header Byte 3 |
0이 콘트롤 메시지를 의미함 |
4 |
Ptype |
0 은 secs-II 사용을 의미함 |
5 |
Stype |
현 상태를 어떻게 할지를 결정함 (1~9) [콘트롤 메세지일때만 의미 있음] |
6~9 |
Systembyte |
통신 고유 ID 값으로 통신할때마다 고유값을 넘겨 주면 됩니다. |
Procedure | Symbol | Description |
Select | Select.req → | HSMS communication 을 만들 때 사용 |
← Select.rsp | CONNECTED state에서 가능(maybe in NOT SELEDTED) | |
Deselect | Deselect.req → | 양방합의에 의한 통신 종료 수행 |
← Deselect.rsp | SELECTED state에서만 가능, Not Selected 상태로 전이 | |
Link Test | LinkTest.req → | Connection 유지 확인 절차 |
← LinkTest.rsp | CONNECTED state에서는 언제나 가능 | |
Separate | Separate.req → | 일방적으로 HSMS Communication을 종료하는 경우에 사용 |
SELECTED state에서 가능 | ||
Procedure이 정상적으로 되면, Selected->Not Selected로 바뀜. | ||
Reject | Reject.req → | When an inappropriate message is received |
Data Message B영역 구조
순서 |
이름 |
내용 |
0~1 |
sessionID |
DEVICE ID |
2 |
Header Byte 2 |
stream 번호를 의미함 |
3 |
Header Byte 3 |
Funtion 번호를 의미함 |
4 |
Ptype |
0 은 secs-II 사용을 의미함 |
5 |
Stype |
0 은 DATA 을 의미함 |
6~9 |
Systembyte |
통신 고유 ID 값으로 통신할때마다 고유값을 넘겨 주면 됩니다. |
active , passive 모드
HSMS 에서 active 와 passive 모드가 존재합니다.
위의 시나리오를 보면 알겠지만 Passvie가 서버 이며 active 가 client 로 보면 되겠습니다.
일반적으로 설비가 Passvie 모드를 사용합니다.
'산업용 프로토콜 > secs gem 프로토콜 개념' 카테고리의 다른 글
secs GEM 프로토콜 기본 개념 (0) | 2017.08.29 |
---|---|
[secs gem ]Time 에러 알아보기 (0) | 2017.08.29 |
secs-II 개념과 데이터 작성 방법 (0) | 2017.08.28 |
secs-I 프로토콜 이란 ? (1) | 2017.08.28 |