TNB SOFT
TNB SOFT
Technology and Beyond
Menu

GEM/SECS 통신 개요

2026-01-30

## 한 줄 요약 GEM은 “장비의 표준 대화법”이고, SECS는 그 문장 구조, HSMS는 전송 방식입니다. ## 구성 요소 - **SECS-II**: 메시지 포맷(스트림/펑션, 아이템 구조) - **HSMS**: TCP/IP 기반 전송(연결/세션/타임아웃) - **GEM**: 장비 상태/알람/이벤트/리모트 커맨드 등 “운영 규칙” ## 장비 SW에서 가장 많이 부딪히는 지점 - T3/T5/T6/T7/T8 타이머 관리 - Linktest, Select/Separate 흐름 - Event/Alarm 보고의 “누락/중복” 방지 - 재연결 시 상태 동기화(CEID/ALID/VID) ## 실무 팁 - 끊겼다 붙는 상황, - 호스트가 재시작하는 상황, - 장비가 부팅 중인 상황 이 3가지를 테스트 케이스로 잡아야 한다. ## 재연결 시 반드시 점검해야 할 것들: - 현재 장비 상태를 어떤 CEID로 복구 보고할 것인가 - Alarm Set / Clear 상태를 어떻게 재동기화할 것인가 - VID 값 중 “순간 값”과 “현재 상태 값”을 구분했는가 ## 타이머(T3/T6/T7/T8) - T3 Timeout이 잦다면, 메시지 구조보다 처리 흐름을 의심해야 합니다. - T6 Timeout은 대개 내부 로직 블로킹에서 발생합니다. - T7/T8 문제는 연결 상태 관리의 실패인 경우가 많습니다. - 타이머를 늘리지 말고 원인 해결을 해야한다. ## GEM/SECS를 구현할 때 점검 기준 - 전원 ON → Host 연결 → 바로 명령 가능 여부 - 통신 중 LAN 단절 → 재연결 → 상태 일치 여부 - 장비 동작 중 Host 재시작 → 보고 누락 여부 - Alarm 발생/해제 시 중복 보고 여부 - Offline ↔ Online 전환 시 Event 순서 ## 상태(State) 설계 - 많은 장비 소프트웨어에서 문제의 절반은 SECS 메시지가 아니라 상태 정의가 애매한 것에서 시작된다. - 예를 들어, 이 장비는 지금 IDLE 인가? 아니면 READY 이지만 인터록 대기 상태인가? 알람은 해제되었지만, RECOVERY 중인 상태는 어디에 속하는가? 이 질문에 코드 레벨에서 명확히 답하지 못하면, 결국 다음 문제가 생긴다. CEID는 올라가는데 VID 값이 맞지 않음 재연결 후 Host 화면과 장비 상태 불일치 “동작은 했는데 보고가 안 된” 애매한 상황 - GEM 구현은 결국 상태를 단순화하면서도 거짓말하지 않게 만드는 작업이다.