HSMS

김원중·2025년 5월 20일

SECS

목록 보기
2/3
post-thumbnail

1. [E37] HSMS란?

TCP/IP에 의한 SECS 통신

HSMS(High-Speed SECS Message Service)는 ****반도체 장비가 수 많은 공정 데이터를 주고 받아야하기 때문에 속도와 신뢰성이 중요성이 강조됨에따라 기존 SECS-I(시리얼 통신) 기반의 구조에서 TCP/IP로 변경 되었습니다.

특징

  • TCP/IP 기반 양방향 통신
  • 장비와 호스트는 더 이상 상하관계가 아니라, Entity(개체)로 동등하게 설정
  • 메시지를 주고 받는데 있어서 여러 상태 모델과 절차를 따른다.

메시지 교환 절차

TCP/IP 연결 설정 → Entity간 선택 프로토콜 수행 → 양방향 메시지 교환 →  통신 종료시 프토토콜에 따라 종료 처리

2.HSMS Connection State(연결 상태)

기계판 소개팅 프로토콜

TCP/IP통신은 아래 단계를 거쳐 안전하게 데이터를 주고 받습니다.

연결 상태

연결상태내용
NOT CONNECTED아무 연결도 안 되어있음
CONNECTINGTCP/IP 소켓 연결을 시도 중
연결이 성사되면 다음 단계로, 실패하면 NOT CONNECTED로 떨어짐
CONNECTED연결은 됐는데, 아직 “누구냐 넌?” 하는 상황
실제 통신은 아직 시작되지 않음. 통성명만 한 셈
SELECTING통신 참여자끼리 서로 확인 중

SELECT REQUEST / REPLY 메시지 주고 받음
여기서 문제 생기면 다시 연결 끊고 처음부터 |
| SELECTED | 통신 준비 완료 상태
양방향 메시지 송·수신 가능
실질적 데이터 통신 시작 |

  • 이 단계를 통해 오류를 최소화하고 신뢰어 있는 연결을 보장합니다.

3. HSMS Message Exchange Procedure (메시지 교환 절차)

순서이름설명
TCP/IP 연결가장 기초적인 연결로 두 Entity(장비/호스트)는 먼저 TCP/IP 소켓을 통해 접속합니다.
선택(Select) 절차통신할 준비가 됐는지 확인하는 단계.

HSMS는 Select.req 와 Select.rsp 메시지로 이 단계 수행
제대로 응답이 오면 통신 승인. 응답 실패 시 연결 종료 |
| ③ | 메시지 교환 시작 | 메시지 주고 받을 수 있는 상태
메시지 종류에는 Data Message 와 Control Message가 있음

  • Data Message : 실제 데이터 , 장비 상태와 작업 명령 ‥을 보냄
  • Control Message : 통신 자체를 제어하는 메시지(예 : Separate , Linktest, Reject‥) |
    | ④ | 종료 시나리오 | 누군가 Separate.req 를 보내면 “그만하자”라는 뜻
    상대는 Separate.rsp로 “그래” 하고 종료 |

4. HSMS 메시지 구조

  • A영역 : B,C의 데이터 길이
  • B영역 : Header 영역. HSMS 메시지의 핵심 정보 포함
  • C영역 : Data가 전송되는 부분. SECS-II 메시지 (주로 데이터 메시지일 경우만 존재)
  • SECS-Ⅰ은 checkSum을 위한 영역으로 데이터가 노이즈 없이 잘 받아졌는데 확인작업을 위해 데이터의 길이를 전송하는 영역이 존재하지만 , HSMS는 TCP에서 checkSum을 해주기 때문에 필요없음

✔ 정리

  • Header : 이 메시지가 어디서 , 누구에게, 무슨 목적으로, 응답을 바라는지 ··· 를 알려줌
  • Data : 실제로 전달되는 업무 데이터 (예 : 공정 명령, 알람 ···)

5. HSMS Message Header

연결 상태를 관리하는 Control Message , 실제 내용 전달하는 Data Message로 구분

메시지 헤더는 총 10byte로 구성되어 있습니다.

Byte이름내용
0~1SessionID이 메시지가 어떤 연결(Session)에 속하는지
2Header Byte2Stream (상위 7bit) + W-bit
*Stream 전송일 때 1byte = 8bit
8개의 비트 중 가장 앞의 비트가 1일 경우 Wait bit 임을 나타냄
0 → Control Message
3Header Byte3Function 0 → Control Message
4Ptype0 : SECS-II 메시지 인코딩
5Stype0 : 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~9SystemByte통신 고유 ID값으로 통신할 때마다 고유값 전송
  • W-bit (Wait Bit) : 이 비트가 1이면 응답 기다리겠다는 뜻. 0이면 보내고 끝

6. Control Message 와 Data Message

HSMS은 Control MessageData Message로 구분됩니다.

SType으로 구분되며

Stype = 0 → Date Message 
Stype ≠ 0 → Control Message

구조를 가지고 있습니다.

1. Control Message (제어 메시지)

통신상태를 주고 받기 위한 최소 메시지(연결/ 해제 /유지 …)

Control Message 예시 - 16진수 적용

✅ 예시:
00 00 00 0A   00 00 00 00   00 01   00 00 00 01

SType = 1 → Select.req

통신상태에 대한 언어로, 주요 Message가 정해져있기 때문에 HSMS 메시지 구조에서 C영역이 빠져있습니다. → SECS-Ⅱ 데이터가 포함되지 않음.

  • Control Message 종류
S Type메시지 이름내용
1Select.req연결 요청(Host→장비)
2Select.rsp연결 응답(장비→Host)
3Deselect.req연결 해제 요청
4Deselect.rsp연결 해제 응답
5Linktest.req통신 확인 ping(상태체크)
6Linktest.rspping 응답
7Reject.req메시지 거부 요청(장비가 떨처낸다.)
9Separate.req강제 연결 종료(TCP Connection까지 끊김)

2. Data Message (데이터 메시지)

Data Message 예시 - 16진수 적용

✅ 예시:
00 00 00 2E   00 00 06 0B   00 00   00 00 00 11   [SECS-II Body...]
→ S6F11 메시지, CEID 이벤트 보고

실제 장비와 Host(서버) 간 업무용 데이터 를 주고 받기 위한 메시지

  • SECS-Ⅱ 메시지를 담고있습니다. (장비 상태 보고, 명령 수행, 데이터 수집…)
  • Header Byte2 의 상위 1비트 (W-Bit)가 응답 필요 여부를 표시합니다.
1 → 이 메시지에 대해 응답이 필요함.

0 → 이 메시지에 대해 응답이 필요 없음.
  • Header Byte2 의 하위 7비트는 Stream Number (SECS-Ⅱ Stream 번호) 이고,
  • Header Byte3 은 Function Number (SECS-ⅡFunction 번호) 입니다.
예:
Stream 2, Function 17 : 특정 명령 전송
Stream 3, Function 1 : 상태 요청

비교

구분Control MessageData Message
목적통신 제어 관리업무 데이터 전송
SType1~90
Header Byte 2보통 0W-Bit + Stream Number
Header Byte 3Control TypeFunction Number
SECS-II거의 없음포함

profile
while(life) { keep_growing() };

0개의 댓글