콘텐츠로 이동
무료 평가 시작

SECS/GEM 배경 지식

SECS/GEM은 반도체 공장(fab)에서 장비(equipment)와 호스트(host)가 대화하는 방법을 정한 SEMI 표준 묶음입니다. 이 절은 PDComm SDK를 쓰기 전에 알아야 할 개념을 설명합니다. 각 개념이 어느 표준의 어느 주제에 해당하는지 함께 적으므로, 자세한 내용은 표준 원문에서 찾아볼 수 있습니다.

반도체 공장에는 노광기, 식각기, 계측기 같은 공정 장비가 수백 대 있습니다. 공장의 생산 관리 시스템(MES, Manufacturing Execution System)이나 셀 컨트롤러(cell controller)는 장비의 상태를 읽고, 공정 프로그램을 내려 보내고, 이벤트와 알람을 받아야 합니다. SECS/GEM은 이 대화의 공통 언어입니다. 장비 제조사가 SECS/GEM 인터페이스를 제공하면 공장은 장비마다 다른 프로토콜을 배우지 않고 같은 방식으로 장비를 연결합니다.

+---------------------------+ +---------------------------+
| MES / fab host | | Cell controller |
+-------------+-------------+ +-------------+-------------+
| HSMS (TCP/IP) | HSMS or SECS-I
+-------+--------+ +-------+--------+
| Equipment A | | Equipment B |
| (GEM) | | (GEM) |
+----------------+ +----------------+

같은 표준은 디스플레이 패널, LED, 태양광 셀, 전자 부품 조립처럼 반도체와 비슷한 자동화 공장에서도 쓰입니다.

SECS/GEM이라는 이름은 여러 SEMI 표준을 함께 부르는 말입니다.

표준 이름 다루는 내용 설명 페이지
SEMI E5 SECS-II 메시지(message)와 데이터 아이템(item)의 구조, 스트림(stream)과 펑션(function)의 의미 SECS-II 메시지
SEMI E37, E37.1 HSMS, HSMS-SS TCP/IP 위에서 SECS-II 메시지를 주고받는 방법과 연결 관리 HSMS
SEMI E4 SECS-I RS-232 직렬 회선에서 메시지를 블록(block)으로 나눠 보내는 방법 SECS-I
SEMI E30 GEM 통신·제어 상태 모델, 데이터 수집, 알람, 원격 명령 같은 장비의 표준 동작 GEM 상태 모델, GEM 기능
SEMI E39, E40, E87, E90, E94 외 GEM300 300 mm 공장의 캐리어, 공정 작업, 기판 추적 같은 추가 표준 GEM300

표준 문서는 SEMI에서 구입할 수 있습니다. 이 사이트는 표준 문서 이름과 주제를 인용할 뿐 본문을 옮기지 않습니다.

SECS/GEM은 계층으로 나눠 이해하면 쉽습니다. 아래 계층은 바이트를 운반하고, 위 계층은 그 바이트의 의미를 정합니다.

+--------------------------------------------------+
| Your application (host or equipment) |
+--------------------------------------------------+
| GEM (SEMI E30) |
| state models, data collection, alarms, |
| remote commands, process programs, spooling |
+--------------------------------------------------+
| SECS-II (SEMI E5) |
| stream/function messages and data items |
+------------------------+-------------------------+
| HSMS (SEMI E37) | SECS-I (SEMI E4) |
| TCP/IP | RS-232 serial line |
+------------------------+-------------------------+
  • 전송 계층: HSMS 또는 SECS-I가 메시지를 상대에게 전달합니다. 오늘날 새 장비는 대부분 HSMS를 씁니다.
  • 메시지 계층: SECS-II가 S1F3 같은 메시지 이름과 리스트·정수·문자열 같은 데이터 형식을 정합니다.
  • 동작 계층: GEM이 어떤 메시지를 언제 보내고, 받은 쪽이 어떻게 반응해야 하는지 정합니다.

모든 연결에는 두 가지 독립된 설정이 있습니다.

  • 역할(role): 호스트(host)는 장비를 관리하는 쪽이고, 장비(equipment)는 관리받는 쪽입니다. GEM 동작은 역할에 따라 다릅니다. 예를 들어 이벤트 보고서(event report)는 장비가 보내고 호스트가 받습니다.
  • 연결 모드(connection mode): Active 쪽이 TCP 연결을 시작하고, Passive 쪽이 포트를 열고 기다립니다.

역할과 연결 모드는 서로 관계가 없습니다. 흔히 호스트가 Active, 장비가 Passive이지만 반대 구성도 정상입니다.

프로그램 A 프로그램 B 결과
Host, Active Equipment, Passive 가장 흔한 구성입니다.
Host, Passive Equipment, Active 장비가 연결을 시작합니다. 정상 구성입니다.
Host, Active Equipment, Active 기다리는 쪽이 없어 연결되지 않습니다.
Host, Passive Equipment, Passive 연결을 시작하는 쪽이 없어 연결되지 않습니다.

PDComm SECS/GEM SDK는 HSMS, SECS-I, SECS-II와 GEM을 호스트와 장비 양쪽에서 구현합니다.

구성 요소 내용
C ABI pdcomm.h(SECS-II 아이템), pdcomm_tcp.h(HSMS), pdcomm_secs1.h(SECS-I), pdcomm_gem*.h(GEM), pdcomm_gem300.h(GEM300 기능 카탈로그)
C++ 래퍼(wrapper) 같은 이름의 .hpp 헤더입니다. C++14 이상에서 RAII로 핸들의 수명을 관리합니다.
.NET 바인딩(binding) PDComm.dll(.NET 10)입니다. PDComm 네임스페이스에 GemHost, GemEquipment, 비동기 작업자(worker) 클래스가 있습니다.
GUI 시뮬레이터 pdcomm-simulator는 장비나 호스트 역할을 하는 Qt 프로그램입니다. 실제 장비 없이 통신을 시험합니다.
headless 시뮬레이터 pdcomm-simulator-headless는 화면 없이 정해진 시나리오(scenario)를 실행하고 JSON으로 결과를 출력합니다.
MCP 서버 pdcomm-simulator-mcp는 시뮬레이터를 MCP(Model Context Protocol) 도구로 노출합니다. AI 도구나 자동화 스크립트가 시뮬레이터를 조작합니다.

C ABI는 내부 스레드(thread)나 콜백(callback)을 만들지 않습니다. 애플리케이션이 poll을 호출해 진행시키고, 이벤트 큐(event queue)에서 결과를 꺼냅니다. .NET의 작업자 클래스는 이 반복을 전용 스레드에서 대신 실행합니다. 함수와 타입의 전체 목록은 API 레퍼런스를 참고합니다.

처음이라면 다음 순서로 읽습니다.

  1. SECS-II 메시지: 메시지와 아이템을 읽는 법
  2. HSMS: TCP 연결, Select, 타이머
  3. GEM 상태 모델: 통신 상태와 제어 상태
  4. GEM 기능: 데이터 수집, 이벤트, 알람, 원격 명령
  5. 직렬 회선을 쓴다면 SECS-I, 300 mm 공장 표준이 궁금하다면 GEM300

개념을 익혔다면 빠른 시작에서 첫 HSMS 연결을 만들어 봅니다.