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 IP | 192.168.0.140 |
| 포트 | HSMS 포트 | 5000 (자주 쓰임) |
| Device ID | SECS device ID | 0 (자주 쓰임) |
| Mode | passive / active | active (게이트웨이가 connect 측) |
| T3 / T5 / T6 / T7 / T8 | HSMS 타임아웃 (ms) | 기본값 사용 권장 |
SECS/GEM 표준상 host (MES / 게이트웨이) 가 passive 로 listen 하고 tool 이 connect 하는 게 권장이지만, 현장 사정에 따라 active 로 게이트웨이가 connect 하는 환경이 더 많습니다. tool 측 설정에 맞추세요.
태그의 PLC 주소 표기
게이트웨이에서는 SECS-II 메시지를 S<n>F<m> 형식으로 입력합니다. n=stream, m=function.
| 표기 | 의미 |
|---|---|
S1F1 | Are You There — 통신 살아있는지 ping |
S1F3 | Selected Equipment Status Request |
S1F11 | Status Variable Namelist Request |
S2F13 | Equipment Constant Request |
S2F41 | Host Command Send (write — start/stop 등) |
S5F1 | Alarm Report |
S6F11 | Event 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 타입 | 의미 | 데이터 형식 | 형식 보조 |
|---|---|---|---|
| L | List (재귀) | (인덱스로 펼쳐 사용) | — |
| A | ASCII | String | (비움) |
| B | Binary | String | (비움) |
| BOOLEAN | Boolean | Boolean | (비움) |
| U1/U2/U4 | Unsigned 1/2/4 byte | Integer | UI/UDW |
| U8 | Unsigned 8 byte | Long | (비움) |
| I1/I2/I4 | Signed 1/2/4 byte | Integer | (비움)/DW |
| F4 | Float 32-bit | Float | REAL |
| F8 | Float 64-bit | Double | LREAL |
쓰기 (Write) 지원
S2F41 (Host Command Send) 으로 장비에 명령을 내릴 수 있습니다.
| 표기 | 의미 |
|---|---|
S2F41 | Host Command Send (RCMD = "START" / "STOP" / "PP-SELECT" 등) |
S2F49 | Enhanced Remote Command |
값은 명령 이름 (RCMD) + 파라미터 list 형태로 보냅니다. 자세한 포맷은 장비 매뉴얼의 SEMI 표준 명세 참고.
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)
| 메시지 | 방향 | 의미 |
|---|---|---|
| S1F1 | host → tool | "살아있나?" — 빈 메시지 |
| S1F2 | tool → 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-SELECT | Process Program 선택 (CPNAME=PPID, CPVAL=프로그램명) |
PAUSE / RESUME | 일시정지 / 재개 |
S6F11 / S6F12 — Event Report Send (CEID 단위)
장비가 자체적으로 이벤트 발생 시 host 로 push. CEID (Collection Event ID) 별로 묶여 들어옵니다.
| 필드 | 의미 |
|---|---|
| DATAID | 이벤트 일련번호 |
| CEID | Collection Event ID (예: 21=ProcessStarted) |
| RPTID list | 보고서 ID 별로 nested data |
PlantPulse 는 응답 raw 를 그대로 받으므로 S6F11[0], S6F11[1] 식으로 인덱스 추출 후 계산식 으로 후처리.
S5F1 / S5F2 — Alarm Report
| 필드 | 의미 |
|---|---|
| ALCD | Alarm Code (1 byte: bit7=set/clear, bit0~6=category) |
| ALID | Alarm ID |
| ALTX | Alarm text (사람이 읽는 메시지) |
자주 쓰는 운영 패턴
패턴 1. fab tool 헬스 모니터링 (ping + 상태)
| 태그 이름 | 주소 | 형식 | 비고 |
|---|---|---|---|
| Ping | S1F1 | (응답 유무) | 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 예제 참고.