본문 바로가기
logistics

[SEMI] HSMS란? 메세지 구조 자세히 설명

by Jayson Jeong 2022. 9. 20.

이번 포스팅에선 SEMI Standard - E37인 HSMS에 대해서 설명하겠다.

SEMI나 SECS가 무엇인지 아직 모르는 분은 해당 게시글을 참고하기 바란다.

SECS가 뭔지 궁금하다면? - [SEMI] SEMI와 SECS란? SECS 기본 개념

 

[SEMI] SEMI와 SECS란? SECS 기본 개념

이번 포스팅에선 필자가 다녔던 MES 솔루션 회사에서 사용한 SEMI와 SECS에 대해 설명하겠다. SEMI란? SEMI란 국제반도체장비재료협회(Semiconductor Equipment and Materials International)에서 제정한 국제 표준

jbground.tistory.com

 

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 메세지 구조

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

Control Message 예시 - 16진수 적용

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 표준을 통해 정의하여 전송한다.

Data Message 예시 - 16진수 적용

 

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란? 메세지 내용 표준 적용 방법

 

 

[SEMI] SECS-II란? 메세지 내용 표준 적용 방법

오늘은 SECS-II에 대해서 알아보겠다. Stream, Function 등에 대한 내용이 아닌 실제 전송되는 byte를 해석하는 방법에 대해서 설명하겠다. 현재 SECS를 공부하고 있거나 접해 본 사람들은 좌측의 메세지

jbground.tistory.com