본문으로 건너뛰기

SECS/GEM (HSMS) — 반도체 / 디스플레이 fab

SECS/GEM 은 반도체 / 디스플레이 fab 의 장비 (tool) 와 호스트 (MES / EAP) 사이 표준 통신입니다. 메시지는 SECS-II 로 정의되고, 이더넷 위에서는 HSMS (High-Speed SECS Message Services) TCP/IP 로 전송됩니다.

운영 가이드

게이트웨이의 SECS/GEM 드라이버는 HSMS Select handshake + 백그라운드 Linktest + 비동기 reply 매칭 + SECS-II item codec (L / A / B / U1U8 / I1I8 / F4 / F8) 위에서 read (S<n>F<m>) / write (S2F41 host command, HCACK 검증) 를 제공합니다. 장비별 GEM 시퀀스 — S1F13/F14 establish, S6 event reports, S5 alarms, control state model, spool — 가 추가로 필요한 경우 개발팀 문의 부탁드립니다.


등록 폼 입력값

입력 칸무엇을 적나요예시
IP 주소장비 (tool) 의 HSMS IP192.168.0.140
포트HSMS 포트5000 (자주 쓰임)
Device IDSECS device ID0 (자주 쓰임)
Modepassive / activeactive (게이트웨이가 connect 측)
T3 / T5 / T6 / T7 / T8HSMS 타임아웃 (ms)기본값 사용 권장
active vs passive

SECS/GEM 표준상 host (MES / 게이트웨이) 가 passive 로 listen 하고 tool 이 connect 하는 게 권장이지만, 현장 사정에 따라 active 로 게이트웨이가 connect 하는 환경이 더 많습니다. tool 측 설정에 맞추세요.


태그의 PLC 주소 표기

게이트웨이에서는 SECS-II 메시지를 S<n>F<m> 형식으로 입력합니다. n=stream, m=function.

표기의미
S1F1Are You There — 통신 살아있는지 ping
S1F3Selected Equipment Status Request
S1F11Status Variable Namelist Request
S2F13Equipment Constant Request
S2F41Host Command Send (write — start/stop 등)
S5F1Alarm Report
S6F11Event Report Send

읽기 메시지 (S1F3, S1F11 등) 는 응답이 그대로 값이 됩니다.

응답에서 특정 값 골라내기

응답이 SECS-II list 형태이면 S1F4[0], S1F4[2].[1] 같이 인덱스로 꺼낼 수 있습니다.

표기의미
S1F4[0]S1F4 응답 list 의 0번째
S6F12[1].[3]S6F12 nested list 의 [1][3]

데이터 형식 매칭

SECS-II 의 item code 와 매칭됩니다.

SECS-II 타입의미데이터 형식형식 보조
LList (재귀)(인덱스로 펼쳐 사용)
AASCIIString(비움)
BBinaryString(비움)
BOOLEANBooleanBoolean(비움)
U1/U2/U4Unsigned 1/2/4 byteIntegerUI/UDW
U8Unsigned 8 byteLong(비움)
I1/I2/I4Signed 1/2/4 byteInteger(비움)/DW
F4Float 32-bitFloatREAL
F8Float 64-bitDoubleLREAL

쓰기 (Write) 지원

S2F41 (Host Command Send) 으로 장비에 명령을 내릴 수 있습니다.

표기의미
S2F41Host Command Send (RCMD = "START" / "STOP" / "PP-SELECT" 등)
S2F49Enhanced Remote Command

값은 명령 이름 (RCMD) + 파라미터 list 형태로 보냅니다. 자세한 포맷은 장비 매뉴얼의 SEMI 표준 명세 참고.

fab 운영 영향

S2F41 의 START / STOP 은 실제 장비 동작 을 일으킵니다. 운영 fab 에서는 반드시 EAP / MES 팀과 협의 후 사용하세요.


흔한 문제와 해결

증상가능한 원인해결
“Select.rsp not received”active/passive 미스매치tool 측 GEM 설정 확인
“Linktest timeout”방화벽T6 (linktest) 늘려도 안 되면 네트워크 점검
“Communication not established (S1F13)”일부 장비는 S1F13/F14 establish sequence 를 먼저 요구장비 측 GEM 설정에서 자동 establish 옵션 활성화 또는 S1F1 / S1F3 등으로 raw 통신
응답 디코딩 실패nested list 깊이 오류응답 raw 로 받아 SECS-II 디코더로 별도 파싱

자주 쓰는 SECS 메시지 더 자세히

S1F1 / S1F2 — Are You There (ping)

메시지방향의미
S1F1host → tool"살아있나?" — 빈 메시지
S1F2tool → host"MDLN, SOFTREV" 응답 (장비 모델명 + 펌웨어)

S1F3 / S1F4 — Selected Equipment Status Request (SVID 읽기)

S1F3 의 body 는 SVID list. 응답 S1F4 는 같은 순서의 값 list.

표기의미
S1F3 (body=L,1.<U4 100>)SVID 100 (CassetteCount 등) 읽기
S1F4[0]응답 list 0번째 (= SVID 100 의 값)

S2F41 — Host Command Send (write — 장비 동작)

RCMD의미
START가공 시작
STOP가공 정지
ABORT즉시 중단
PP-SELECTProcess Program 선택 (CPNAME=PPID, CPVAL=프로그램명)
PAUSE / RESUME일시정지 / 재개

S6F11 / S6F12 — Event Report Send (CEID 단위)

장비가 자체적으로 이벤트 발생 시 host 로 push. CEID (Collection Event ID) 별로 묶여 들어옵니다.

필드의미
DATAID이벤트 일련번호
CEIDCollection Event ID (예: 21=ProcessStarted)
RPTID list보고서 ID 별로 nested data

PlantPulse 는 응답 raw 를 그대로 받으므로 S6F11[0], S6F11[1] 식으로 인덱스 추출 후 계산식 으로 후처리.

S5F1 / S5F2 — Alarm Report

필드의미
ALCDAlarm Code (1 byte: bit7=set/clear, bit0~6=category)
ALIDAlarm ID
ALTXAlarm text (사람이 읽는 메시지)

자주 쓰는 운영 패턴

패턴 1. fab tool 헬스 모니터링 (ping + 상태)

태그 이름주소형식비고
PingS1F1(응답 유무)timecycle 30s
모델명S1F4[0]String(S1F3 SVID=MDLN)
가공 상태S1F4[1]Integer(S1F3 SVID=ControlState)

패턴 2. 결과 데이터 수집 (S6F11)

장비 측 GEM 설정에서 “EventReport on PROCESSEND” 활성화 → S6F11 로 push 됨. PlantPulse 가 active mode 로 connect 후 응답 raw 수집 → 후처리 파이프라인에서 SECS-II 디코더 (예: secsgem-py) 로 파싱.

패턴 3. Pset / Recipe 전환 (S2F41)

S2F41 RCMD="PP-SELECT" CPNAME="PPID" CPVAL="RECIPE_AB100"
운영 영향

실제 fab 에서 S2F41 은 장비 동작을 일으킵니다. 반드시 EAP / MES 팀과 협의 + 실제 장비 idle 상태에서만 사용.


다음 단계

  • SEMI E5 (SECS-II) / E37 (HSMS) / E30 (GEM) 표준 문서 참고.
  • 본격적인 GEM 통합 (event reporting, control state, recipe) 이 필요하시면 개발팀 문의.
  • 고급 — REST API 의 SECS/GEM 예제 참고.