이번 포스팅에선 SEMI Standard - E37인 HSMS에 대해서 설명하겠다.
SEMI나 SECS가 무엇인지 아직 모르는 분은 해당 게시글을 참고하기 바란다.
SECS가 뭔지 궁금하다면? - [SEMI] SEMI와 SECS란? SECS 기본 개념
HSMS란?
SEMI E37 - High-Speed SECS Message Services (HSMS) Generic Services(이하 HSMS)는 SEMI Equipment Communications Standard(이하 SECS)의 메세지 전송 표준으로 Ethernet 기반의 통신 표준이다.
당시 가장 많이 사용하던 통신 방식이 RS-232 케이블을 이용한 시리얼 통신 방식에서 우리가 흔히 랜선이라고 칭하는 이더넷 케이블을 이용한 이더넷 통신 방식이 보편화됨에 따라 반도체 업계에서도 이에 대응하기 위해 이더넷을 기반으로 한 통신 프로토콜을 HSMS를 1995년 최초로 제정하였다.
이더넷 통신은 시리얼 통신에 비해 통신 속도, 데이터 용량, 여러 대의 컴퓨터 통신 가능 등 다양한 부분에서 훨씬 효율적이기 때문에 현재에는 HSMS를 주력으로 사용하는 편이다.
HSMS(High-Speed SECS Message Services)는 이름에서 알 수 있듯이 기존 SECS-I의 틀을 크게 벗어나지 않았기 때문에 SECS-I을 알고 있는 사람이라면 크게 어려움이 없을 것이다.
HSMS 메세지 구조
구분 | 내용 |
A영역 | B, C의 데이터 길이 |
B영역 | Message Header로 데이터에 대해 상세히 설명하는 영역이다. |
C영역 | 실제 데이터가 전송되는 영역으로 SECS-II로 정의된 데이터가 들어가는 영역이다. 즉, HSMS를 이용한 정의는 Header 부분만 해당하고 C영역은 SECS-II 표준에 의해 정의해야 한다. |
D영역 | SECS-I은 CheckSum을 위한 영역으로 데이터에 노이즈가 없이 잘 받아졌는지 확인작업을 위해 데이터의 길이를 전송하는 영역이 존재하지만 HSMS는 이 작업을 TCP/IP프로토콜에서 진행해 주기 때문에 따로 필요가 없어진 영역이다. |
HSMS의 메세지 구조이다. 그림과 같은 형식으로 메세지가 전송되는데
A영역 4btye, B영역 10byte, C영역 0~약 4GB로 구성되어 있다.
여담으로 A영역은 B, C의 데이터 길이를 나타내는데 4byte는 32bit이기 때문에 10진수로 바꿔보면 42억 정도 나오기 때문에 한번에 최대 약 4GB정도의 데이터를 전송이 가능하다.
HSMS Message Header
HSMS의 메세지 헤더는 연결 상태를 관리하는 Control Message와 실제 내용을 전달하는 Data Message로 구분된다.
HSMS의 메세지 헤더는 총 10Byte로 구성되어 있다. 10개의 byte는 각각의 값에 따라 설비 ID, 메시지 종류, SECS-II 메시지 종류, 시리얼 넘버 등 의 정보를 담고 있다.
Byte | 이름 | 내용 |
0~1 | SessionID | DeviceID, 장비 또는 장비 그룹 구분을 위한 디바이스 아이디 |
2 | Header Byte2 | 0 : Control Message를 의미 0 이외의 값 : 메세지의 Stream 넘버를 의미 * Stream 전송일 때 1byte = 8bit 8개의 비트 중 가장 앞의 비트가 1일 경우 Wait bit 임을 나타냄 |
3 | Header Byte3 | 0 : Control Message를 의미 0 이외의 값 : 메세지의 Function 넘버를 의미 |
4 | Ptype | 0 : SECS-II사용을 의미 |
5 | Stype | 0 : Data Message임을 정의. 데이터 전송을 의미 0 이외의 값 : Control Mesasge임을 정의 현 상태를 결정 (1~9) 1: Select.req 2: Select.rsp 3: Deselect.req 4: Deselect.rsp 5: Linktest.req 6: Linktest.rsp 7: Reject.req 8: not used 9: Separate.req |
6~9 | SystemByte | 통신 고유 ID값으로 통신할 때마다 고유값 전송 |
Control Message
HSMS의 Control Message 예시이다.
컨트롤 메시지는 설비 간 네트워크 상태를 나타내고 최종적으로 통신이 가능한 상태인 selected 까지 상태를 변경 및 유지하는 것이 중요하다.
1 ~ 3의 과정은 일반적인 소켓통신의 연결 상태를 의미한다.
4 이후 부터는 HSMS 스펙에 맞는 데이터 전송 여부를 확인하는 것으로 select.rsp 메세지에서 header byte3. 즉, header message의 4번째 byte 값이 SelectStatus 역할을 해서 0, 1, 2, 3 등의 status를 전송하여 selected 상태로 변경하는 작업이 진행된다. (정상 값은 0)
이처럼 다른 controll message도 모두 정의가 되어 있는데 이에대한 내용은 기회가 된다면 포스팅해보겠다.
Data Message
데이터 메세지는 HSMS에서 가장 중요하다고 할 수 있다. (실제로 통신하는 가장 큰 이유는 데이터를 전송하기 위함이니...)
데이터 메시지와 컨트롤 메세지의 가장 큰 차이는 body라고 칭하는 데이터 영역. 즉, C영역의 존재 유무라고 할 수 있다.
컨트롤 메세지는 Header 부분만 전송을 통해 통신을 하지만 데이터 메세지는 Header를 통해 메세지의 Stream, Function 등을 정의하고 실제 데이터가 담긴 C영역은 SECS-II 표준을 통해 정의하여 전송한다.
SECS-II에 대한 내용은 다른 포스팅에서 진행하고 데이터 메세지를 간략하게 보면 데이터 메세지의 3번째 값은
binary로 표현 시
1000 0110 이 되는데 맨 앞 비트가 1이기 때문에 Wait bit 메세지임을 나타낸다.
0000 0110 을 10 진수로 바꾸면 6이 되고 4번째 bit의 값은 11이 된다.
그래서 W-bit를 갖고 있는 S6F11 메세지이고 header의 6번째 바이트가 0이기 때문에 데이터 메세지임을 나타내고 있다.
마지막으로 Message 송수신 간 발생하는 Timeout error이다.
name | description | typical | value range |
T1 | Inter-character timeout SECS-I 에서 데이터 문자열을 수신하는 도중 수신해야 하는 데이터가 남아있는데도 다음 데이터 문자열이 설정된 시간안에 도착하지 않았을 때 발생 |
0.5 | 0.1~10 |
T2 | Control timeout SECS-I 에서 Control Message를 보낸 후 대응하는 응답 rsp 메세지가 설정된 시간 안에 도착하지 않았을 때 발생 |
10 | 02.~25 |
T3 | Reply timeout SECS-I, HSMS 에서 Primary Message를 전송한 다음 Reply Mesage를 설정된 시간안에 받지 못했을 때 발생 |
45 | 1~120 |
T4 | Block timeout SECS-I 에서 멀티 블럭 데이터를 수신하는 도중 다음 블럭 데이터가 설정된 시간 안에 도착하지 않았을 때 발생 |
30 | 1~120 |
T5 | Connect Separation Timeout HSMS 에서 소켓이 연결된 후 설정된 시간동안 selection handshaking을 진행하고 실패하면 connection을 끊고 재시도하기까지 기다리는 시간 |
10 | 1~240 |
T6 | Control timeout HSMS 에서 Control Message를 전송한 후 응답 rsp 메세지가 설정된 시간 안에 도착하지 않았을 때 발생 |
5 | 1~240 |
T7 | Not selected timeout HSMS 에서 소켓이 connect 된 후 설정된 시간 안에 select.req 메세지를 받지 못 했을 때 발생 |
10 | 1~240 |
T8 | Network Intercharacter Time HSMS 에서 데이터 문자열을 수신 후 다음 데이터 문자열을 설정된 시간 안에 받지 못 했을 때 발생 |
5 | 1~120 |
SECS-II에 대해 궁금하다면? - [SEMI] SECS-II란? 메세지 내용 표준 적용 방법
'logistics' 카테고리의 다른 글
최적 경로 찾기 #2 - 에이스타(A*) 알고리즘, 자바 코드 구현 포함 (0) | 2023.06.20 |
---|---|
자율 주행 로봇의 각종 센서들(카메라, 레이더, 라이다, 적외선 등) (0) | 2023.06.01 |
무인 운반 차량의 물류 최적화에 대한 고찰 (0) | 2023.05.26 |
[SEMI] SECS-II란? 메세지 내용 표준 적용 방법 (0) | 2022.09.20 |
[SEMI] SEMI와 SECS란? SECS 기본 개념 (0) | 2022.07.18 |