이 블로그는 원래 cimetrix.com에 게시되었습니다.
SECS/GEM 시리즈의 첫걸음으로, GEM 표준의 핵심 기능 중 하나인 '수집 이벤트(Collection Events)'에 대해 설명해 보겠습니다. 먼저수집 이벤트의 작동 방식을 설명한후, 제조 장비로부터 데이터를 수집하는 데 왜 효과적인지 살펴보겠습니다.
수집 이벤트란 무엇인가요?
"수집 행사"라는 명칭의 두 단어는 설명적입니다.
"이벤트"라는 단어에서 알 수 있듯이, 수집 이벤트는 알림입니다. 장비에서 관심 대상이 되는 일이 발생했을 때 호스트에게 알리는 것이 그 목적입니다. "호스트"란 장비의 GEM 인터페이스에 연결되는 공장 클라이언트 소프트웨어를 의미합니다. 예를 들어, 수집 이벤트는 재료 도착, 소모품 부족, 하드웨어 문제 발생, 카메라에 의한 재료 검사, 재료 제거 준비 완료, 챔버 목표 진공 압력 도달, 공정 완료 등을 보고할 수 있습니다. 장비는 수집 이벤트 기능을 활용하여 관심 사항이 발생할 때마다 이를 보고할 수 있습니다. GEM 인터페이스를 제작하는 업체가 호스트에 제공되는 수집 이벤트를 정확히 결정하므로, 사용 가능한 수집 이벤트 세트는 장비 유형마다 다릅니다.
"수집"이라는 단어에서 알 수 있듯이, 수집 이벤트는 수집 이벤트 메시지와 함께 데이터를 게시할 수도 있습니다. 이는 데이터가 사용 가능해지는 즉시 비동기적으로 정보를 제공하는 매우 효율적인 형태의 데이터 수집 방식입니다. 예를 들어, 자재 도착 시점을 보고하는 수집 이벤트는 동시에 도착한 자재의 바코드와 위치를 보고할 수도 있습니다. GEM 인터페이스에는 세 가지 유형의 데이터가 있습니다: 수집 이벤트에 대한 정보(데이터 변수라고 함), 상태 정보(상태 변수라고 함), 장비 설정(장비 상수라고 함). GEM 인터페이스를 만드는 주체가 각 수집 이벤트에 대해 정확히 어떤 정보를 사용할 수 있도록 할지 결정합니다. 따라서 수집 이벤트에 대해 사용할 수 있는 정보의 집합은 장비 유형마다 다릅니다. 또한 사용 가능한 데이터는 호스트가 보고서를 설정할 경우에만 전송됩니다.
요약하자면, 수집 이벤트는 호스트에게 어떤 일이 발생했음을 알릴 뿐만 아니라, 발생한 내용과 장비 상태에 대한 보다 상세한 정보도 제공할 수 있습니다.
작은 비유
비유하자면, 공장을 사장님으로, 그들이 구입하는 장비를 직원으로 생각해보세요. 공장 운영 방식과 유형이 다양하듯 관리 방식도 여러 가지입니다. 다른 사람의 공장처럼 운영하도록 강요받고 싶지는 않을 겁니다. 자신만의 방식으로 운영하고 싶을 테니까요.
또한 각 직원은 고유하며 각자 다른 수준의 관심이 필요합니다. 그리고 각 직원은 고유한 업무를 수행하고 있습니다. 일반적으로 모든 관리자는 직원들에 대한 기본 정보와 그들이 무엇을 하고 있는지 알고 싶어 합니다. 직원이 프로젝트를 시작하는 시점과 완료하는 시점을 알고 싶어 합니다. 일부 직원은 최소한의 감독과 보고만으로도 매우 생산적입니다. 반면 일부 직원은 광범위한 감독과 보고가 필요합니다. GEM은 공장이 각 장비를 개별적으로 다룰 수 있게 합니다. 구체적으로, GEM 수집 이벤트는 장비가 자신이 수행 중인 작업을 보고할 수 있는 방법을 제공합니다.
호스트는 보고 규칙을 설정하고 상황에 맞게 조정해야 합니다. 예를 들어, 관리자는 직원이 화장실에 갈 때를 신경 쓰지 않을 수도 있습니다. 특정 직원의 경우 관리자가 알고 싶어 할 수도 있습니다. GEM 인터페이스에서 호스트는 어떤 알림이 발생하고 어떤 알림이 발생하지 않을지 선택할 수 있습니다.
때로는 관리자가 직원의 출근, 퇴근, 휴식 시작, 휴식 종료 시점과 같은 기본적인 활동만 알면 충분합니다. 하지만 어떤 경우에는 완료한 프로젝트 내용, 소요 시간, 주요 성과 등 더 상세한 정보가 필요하기도 합니다. 마찬가지로 GEM은 호스트가 단순히 활동 발생 시점뿐만 아니라 해당 활동에 대한 세부 정보까지 추적할 수 있도록 지원합니다. GEM 보고서는 이러한 요구를 매우 효과적으로 충족시킵니다.
이 기능이 왜 필요한가요?
간단히 말해, 수집 이벤트를 통해 장비의 실시간 동작을 추적할 수 있습니다. 공장에서 어느 정도의 스마트 제조를 구현하거나 단순히 생산성을 향상시키고자 한다면, 가장 먼저 필요한 것은 장비의 동작을 추적하는 능력입니다. 수집 이벤트가 바로 이를 제공합니다. 장비 가동률, 자재 이동, 공정 단계별 진행 상황, 예측 정비를 위한 활동 주기 계수, 소모품 사용량 등 공개된 수집 이벤트와 관련된 모든 사항을 추적할 수 있습니다. 이러한 정보의 활용 가능성은 무궁무진합니다.
때로는 수집 이벤트가 장비가 진행하기 전에 호스트로부터 정보를 필요로 하거나 진행 허가를 받아야 하는 시나리오를 구현하는 데에도 사용됩니다. 수집 이벤트는 장비가 호스트의 지시나 허가를 받을 준비가 되었음을 호스트에 알립니다.
수집 이벤트 알림은 어떻게 작동하나요?
장비의 GEM 인터페이스는 다양한 수집 이벤트를 게시할 수 있습니다. 호스트는 일반적으로 모든 이벤트를 동시에 수신할 필요가 없으며, 그렇게 할 필요도 없습니다. 수집 이벤트는 두 가지 방식으로 게시/구독 디자인 패턴을 사용합니다.
기본 게시/구독 알림
호스트는 특정 수집 이벤트가 발생할 때 알림을 받기 위해 해당 이벤트를 구독합니다. 이 구독 기능을 통해 호스트는 GEM 인터페이스에서 제공되는 각 수집 이벤트의 보고를 활성화하거나 비활성화할 수 있습니다. 장비는 수집 이벤트가 발생할 때마다 이를 게시합니다.
이벤트 리포트 퍼블리시/서브스크라이브 데이터 수집
기본적으로 수집 이벤트 메시지에는 데이터가 포함되지 않습니다. 구독을 통해 호스트는 활성화된 각 수집 이벤트 메시지에 포함할 데이터를 결정할 수 있습니다. 호스트는 보고서를 정의하고 이를 수집 이벤트에 연결함으로써 해당 데이터에 대한 구독을 설정합니다. 각 수집 이벤트는 서로 다른 보고서를 가질 수 있습니다. 보고서는 여러 수집 이벤트 간에 공유될 수도 있습니다. 보고서에는 해당 수집 이벤트와 연관된 모든 데이터 변수, 상태 변수 및 장비 상수를 포함할 수 있습니다. 장비는 요청된 데이터를 포함한 수집 이벤트를 게시합니다.
식별
장비가 게시하는 각 수집 이벤트에는 식별을 위한 고유 ID 번호가 부여됩니다. 호스트 소프트웨어는 수집 이벤트를 활성화하거나 비활성화할 때 이 ID 번호를 사용합니다. 장비는 수집 이벤트 메시지를 전송할 때 이 ID 번호를 사용합니다. 사용 가능한 각 데이터 변수, 상태 변수 및 장비 상수에도 고유 ID 번호가 있습니다. 호스트가 보고서를 정의할 때 해당 보고서에 고유 ID 번호를 할당합니다.
중개인
모든 수집 이벤트 게시/구독을 처리하는 브로커는 장비의 GEM 인터페이스에 내장되어 있습니다. 이는 장비 시스템의 일부입니다. 호스트(클라이언트)와 GEM 인터페이스 간의 통신은 SECS/GEM 통신을 사용하여 표준화됩니다. GEM 인터페이스와 장비의 나머지 하드웨어 및 소프트웨어(장비 수집 이벤트 및 데이터의 원천) 간의 통신은 적절한 기술이라면 어떤 것이든 가능하며, GEM 인터페이스가 제대로 기능하고 충분히 성능을 발휘하는 한 중요하지 않습니다.
이는 호스트가 구독한 경우에만 장비에서 호스트로 메시지가 전송됨을 의미합니다. 브로커를 장비 및 GEM 인터페이스의 일부로 포함함으로써 GEM 인터페이스는 매우 효율적이며, 모든 메시지와 데이터를 항상 브로커로 전송해야 하는 외부 브로커를 사용하는 프로토콜보다 훨씬 적은 대역폭을 사용합니다.

지속성
컬렉션 이벤트 구독 설정은 GEM 인터페이스에 저장됩니다. 따라서 호스트가 연결을 끊었다가 다시 연결하거나 장비가 재시작되더라도 GEM 인터페이스가 모든 구독 설정을 기억합니다.
어떤 메시지가 사용됩니까?
수집 이벤트와 관련된 주요 메시지 각각에 대한 요약입니다. "S"는 "스트림(stream)"을, "F"는 "함수(function)"을 나타냅니다. 스트림 번호와 함수 번호를 함께 사용하면 메시지를 고유하게 식별할 수 있습니다.
| 메시지 ID | 방향 | 설명 |
| S2F37 | 호스트 -> 장비 | 일련의 수집 이벤트에 대한 보고 기능을 활성화하거나 비활성화합니다.
빈 목록은 모든 수집 이벤트에 대한 보고 기능을 활성화하거나 비활성화합니다. 모든 수집 이벤트 보고를 활성화하는 것은 GEM 인터페이스를 특성화할 때 유용합니다. 원하는 수집 이벤트 보고를 활성화하기 전에 모든 수집 이벤트를 비활성화하는 것이 유용합니다. |
| S2F33 | 호스트 -> 장비 | 하나 이상의 보고서를 정의하십시오.
빈 목록은 모든 보고서와 수집 이벤트에 연결된 보고서 링크를 삭제합니다. 모든 보고서를 삭제하는 것은 구독을 재설정할 때나 GEM 인터페이스에 처음 연결하여 기본 구독을 재정의할 때 유용합니다. |
| S2F35 | 호스트 -> 장비 | 하나 이상의 보고서를 일련의 수집 이벤트에 연결합니다.
보고서가 이미 수집 이벤트에 연결된 경우, 해당 보고서를 제거한 후 모든 수집 이벤트를 하나의 메시지로 연결해야 합니다. 빈 목록은 수집 이벤트에서 보고서 연결을 제거합니다. |
| S1F23 | 호스트 -> 장비 | 사용 가능한 수집 이벤트 목록과 각 수집 이벤트에 대한 사용 가능한 데이터를 요청합니다. |
| S6F11 | 장비 -> 호스트 | 수집 이벤트 메시지.
보고서가 연결되지 않은 경우 메시지에는 수집 이벤트 ID 번호만 포함됩니다. 하나 이상의 보고서가 수집 이벤트에 연결된 경우, 연결된 각 보고서의 데이터가 메시지에 포함됩니다. |
수집 행사에 관한 자주 묻는 질문
수집 이벤트에는 얼마나 많은 대역폭이 필요합니까?
이는 여러 요인에 따라 달라집니다.
- 호스트가 활성화한 수집 이벤트의 수.
- 수집 이벤트와 연결된 데이터 보고서의 크기.
- 장비에 의해 활성화된 수집 이벤트가 트리거되는 빈도입니다. 이는 수집 이벤트의 의미에 따라 달라집니다.
수집 이벤트는 얼마나 빠르게 트리거될 수 있나요?
GEM 표준은 수집 이벤트 빈도를 제한하지 않으며 표준 통신 하드웨어를 사용합니다. 즉, 하드웨어를 개선함으로써 더 빠른 수집 이벤트를 가능하게 할 수 있습니다.
GEM은 두 가지 프로토콜을 지원합니다: SECS-I와 HSMS. SECS-I는 RS-232 직렬 통신을 기반으로 하므로 현재는 거의 사용되지 않습니다. 이러한 구현 방식은 수집 이벤트를 매우 빠르게 트리거할 수 없습니다.
HSMS는 네트워크 통신을 기반으로 합니다. 직렬 통신은 속도가 느리기 때문에, 현재까지 대부분의 GEM 구현체는 HSMS를 사용합니다. GEM은 TCP/IP를 매우 효율적으로 활용합니다. 수집 이벤트의 가능한 빈도는 네트워크 하드웨어 속도, 장비 컴퓨터 성능 및 호스트 컴퓨터 성능에 따라 달라집니다. 대부분의 프로토콜과 마찬가지로, 일반적으로 메시지를 생성하는 것보다 소비하는 데 더 많은 컴퓨터 자원이 소요됩니다.
수집 이벤트 생성 속도는 수집 이벤트에 연결된 데이터 보고서의 규모에도 영향을 받습니다. 예를 들어, 데이터 보고서가 10MB처럼 큰 경우 성능에 영향을 미칩니다.
수집 이벤트 메시지를 받지 못하는 이유는 무엇인가요?
호스트가 수집 이벤트 메시지를 수신하지 못하는 데에는 몇 가지 이유가 있습니다.
- 호스트와 장비는 성공적인 S1F13/S1F14 교환을 통해 GEM 통신을 설정해야 합니다.
- GEM 제어 상태는 온라인 상태여야 합니다. 호스트 오프라인 상태나 장비 오프라인 상태일 수 없습니다.
- GEM 스풀링은 비활성화 상태여야 합니다. 스풀링이 활성화된 상태에서 비활성화를 시도해도 스풀링 상태가 비활성화되지 않습니다. 스풀된 메시지가 필요하지 않다면 메시지 S6F23을 사용하여 스풀링을 삭제하십시오. 스풀된 메시지가 필요하다면 스풀링 상태가 비활성화될 때까지 S6F23을 반복적으로 요청하여 메시지를 수신하십시오.
- 수집 이벤트가 활성화되어야 합니다. S1F3 메시지를 사용하여 "EventsEnabled" 상태 변수를 확인하여 수집 이벤트가 활성화되었는지 확인하십시오. S2F37 메시지를 사용하여 수집 이벤트를 활성화하십시오.
- 수집 이벤트 활동이 발생해야 합니다. 예를 들어, 자재가 실제로 도착하지 않으면 자재 도착 시점을 보고하는 수집 이벤트는 절대 발생하지 않습니다. 해당 활동이 발생하고 위 조건이 충족된다면, 장비의 GEM 인터페이스에 결함이 있는 것입니다.
장비의 GEM 인터페이스가 필요한 수집 이벤트를 게시하지 않으면 어떻게 해야 합니까?
장비 공급업체에 원하는 수집 이벤트를 추가하도록 요청하십시오. 장비 공급업체가 공장에서 요구할 모든 수집 이벤트를 정확히 예측하기는 어렵습니다. 장비 공급업체는 공장에서 GEM 인터페이스 소프트웨어를 업그레이드해야 합니다.
수집 이벤트에 연결될 때 데이터 보고서는 얼마나 커질 수 있나요?
GEM은 단일 데이터 변수 값 또는 상태 변수 값이 부동 소수점, 문자열 또는 정수를 포함한 모든 데이터 유형의 배열 또는 구조체일 수 있도록 허용합니다. 단일 배열은 16.777215MB로 제한됩니다. 총 메시지 크기는 4.294967295GB로 제한됩니다.