장비와 HOST가 어떤 형식으로 데이터를 주고받을지 규정하는 표준
Stream 이라는 그룹과 Stream 내에 Function 세부 메시지로 구분
HSMS 메시지 구조의 C영역(데이터 필드)은 SECS-II 포맷에 따라 구성됩니다.
이 영역에는 Stream/Function, 포맷 코드, Length, 데이터 값(Value)
등의 정보가 SECS-II 표준에 맞춰 들어갑니다.
SECS-II 메시지는 계층적 구조(Tree 구조)로 되어 있습니다.

Message(SxFy) : 하나의 논리적 단위(Ex:S1F1).
메시지마다 고유의 기능과 의미를 갖습니다.(요청/응답 구조)
Block : 물리적인 전송단위(실제 전송 단위)
List : 데이터 그룹 (다른 리스트 포함 가능)
Item : 실제 데이터 단위(정수, 문자열 ···)
Format : 데이터 타입(A,I4,F8···)
Length : 데이터 길이(바이트 수)
Data : 실제 값
→ Item
ㄴ Format + Length + Data 구조
S6F11: Alarm 발생 알림
└─ L, 3
├─ A, "ALARM01"
├─ U2, 100
└─ A, "Overheat detected"
- 리스트 안에 문자열, 정수, 문자열 순으로 데이터가 포함됨
Stream : 회의 주제
Function : 회의에서 하는말
SxFy
= Stream x, Function y
S: Stream 번호 (대화의 큰 주제)
F: Function 번호 (그 주제에서의 세부 명령)
→ 보통 홀수 Function은 요청(Request) / 짝수 Function은 응답(Response)
| 메시지 | 의미 | 설명 |
|---|---|---|
| S1F1 | Are You There? | 장비 상태 확인 요청(ping 느낌) |
| S1F2 | On Line Now | 응답 : “나 살아있음” |
| S1F3 | Selected Equipment Status Request | 장비의 상태값 요청 |
| S1F4 | Selected Equipment Status Send | 상태값 응답 |
| 메시지 | 의미 | 설명 |
|---|---|---|
| S1F13 | Establish Communication Request | 통신 요청 설정 |
| S1F14 | Establish Communication Accept | 통신 요청 수락 설정 |
| S1F15 | Request OFF-LINE | 오프라인 요청 |
| S1F16 | Request ON-LINE | 온라인 요청 |
| S1F17 | Request ONLINE by Host | 호스트가 온라인으로 요청 |
| S1F18 | Reply ONLINE Transition Accepted | 답변 온라인 전환 수락 |
| 메시지 | 의미 | 설명 |
|---|---|---|
| S5F1 | Alarm Report Send | (장비 → 호스트) 알람 보고서 전송 |
| S5F2 | Alarm Report Acknowledge | (호스트 → 장비) 알람 보고서 확인 |
| S5F3 | Alarm Set Request | 알람 설정 요청 |
| S5F4 | Alarm Set Response | 알람 설정 응답 |
| S5F5 | Alarm Clear Request | 알람 해제 요청 |
| S5F6 | Alarm Clear Response | 알람 해제 응답 |
| 메시지 | 의미 | 설명 |
|---|---|---|
| S6F11 | Event Report Send | 장비가 이벤트 발생 알려줌 |
| S6F12 | Event Report Acknowledge | 호스트가 확인 |
| S6F1 | Establish Report Request | 보고 요청 수립 |
| S6F2 | Establish Report Response | 보고 응답 설정 |
| S6F13/F14 | Link Report Response | 링크 보고 요청/ 응답 |
| S6F15/F16 | Enable / DisAble Report | 보고 활성화/ 비활성화 |
| S6F19/F20 | Triggered Report | 보고 강제 실행 요청/응답 |
| 메시지 | 의미 | 설명 |
|---|---|---|
| S7F1/F2 | Recipe Directory Request/ Send | 레시피 디렉토리 요청/ 보내기 |
| S7F3/F4 | Recipe Body Request/ Send | 레시피 본문 요청/ 전송 |
| S7F5/F6 | Recipe Delete Request/ Response | 레시피 요청 / 응답 삭제 |
| S7F17/F18 | Recipe ID Check | 레시피 ID 확인 |
| 메시지 | 의미 |
|---|---|
| S9F1~S9F11 | Error 메시지 관련 (Bad Message 등) |
| S10F3/F4 | Terminal Display Message |
| S10F5/F6 | Operator Command Request/ Response |
SECS-II 에서 장비랑 HOST가 데이터를 주고 받을 때 , Header에 주고 받는 “데이터”가 어떤 종류고, 얼마나 들어있는지 정보를 담아서 전달합니다.
여기서 Header는 1바이트짜리 코드로 두 가지 정보를 포함하고있습니다.
예 : 0xA1 = 1010_0001
→ 101000 = ASCII (A) ,
→ `01` = Length는 1바이트
SECE 표준
SECS-II 메시지는 데이터를 효율적으로 주고받기 위해 특정 구조와 규칙을 따릅니다.
Item은 SECS-II 데이터의 기본 단위이며, Item Header 와 Item Data로 구성됩니다.
Item Header는 데이터 타입(Format Code)과 길이를 나타냅니다.
“온도 : 25.5℃ , 상태 : 정상” 이라는 정보를 SECS-II 메시지로 보낸다고 가정해 보겠습니다.
25.5 는 4-byte Floating Point(F4) 타입으로 표현000000100100010000<L, 2
<F4, 4 25.5>
<A, 6 "정상">
>
<L, 2> : 루트 아이템은 2개의 아이템(<F4> 와 <A>)을 포함하는 LIST 입니다.<F4, 4 25.5>: 4-byte Floating Point 타입으로, 데이터의 길이는 4바이트이며, 실제 값은 25.5입니다.<A, 6 "정상">: ASCII String 타입으로, 데이터의 길이는 6바이트이며, 실제값은 “정상”입니다.<L, 2> :0x000x0200 02<F4, 4 25.5> :0xA40x0425.5의 16진수 표현(IEEE 754): 41 CC CC CD(바이트 순서에 따라 다를 수 있음)A4 04 41 CC CC CD<A, 6 "정상"> :0x400x06EC A0 95 EC 83 8140 06 EC A0 95 EC 83 81**00 02 A4 04 41 CC CC CD 40 06 EC A0 95 EC 83 81**
00 02: 최상위 List는 2개의 Item을 포함합니다.A4 04 41 CC CC CD: 첫 번째 Item은 4-byte Floating Point 값 25.5입니다.40 06 EC A0 95 EC 83 81: 두 번째 Item은 ASCII 문자열 "정상"입니다.다른 예시: 단일 정수 값 전송
온도 값 25 (정수)를 1-byte unsigned integer로 전송하는 경우:
<U1, 1 25>0xC40x0125의 16진수 표현: 19C4 01 19핵심 이해: