이 블로그는 원래 cimetrix.com에 게시되었습니다.
사용 중이던 애플리케이션이 갑자기 종료되고 재시작 후 모든 작업 내용이 사라진 상황을 경험해 본 적이 있나요? (아직 없다면 언젠가는 겪게 될 것입니다!) 이 블로그에서는 CimetrixCimControlFrameworkTM가 이러한 상황을 어떻게 처리하는지 설명합니다.
지속성이란 무엇이며 왜 사용해야 할까요?
문제:
모든 애플리케이션 실행 중에는 항상 실행 종료 위험이 존재합니다: 애플리케이션의 조기 종료, 컴퓨터 전원 손실 또는 프로그램 오작동 등이 그 예입니다. 일반적으로 프로그램은 해당 시점까지의 애플리케이션 핵심 데이터와 상태를 나타내는 데이터를 메모리에 보유합니다. 예상치 못한 실행 중단 시, 메모리에 저장된 정보는 본질적으로 비영구적이므로 그 시점까지 축적된 모든 정보가 손실되거나 복구 불가능한 위험에 처합니다. 프로그램이 종료된 후에는 메모리에 저장된 모든 데이터가 사라집니다.
해결책:
일반적인 해결책은 필수 데이터가 생성되거나 변경될 때 즉시 디스크에 데이터를 기록하는 것입니다. 완전한 지속적 저장 메커니즘을 구현하기 위해 이러한 데이터를 하나 이상의 파일에 저장하는 것이 일반적입니다. 이는 각 데이터 항목을 효과적으로 "지속적"으로 만들어 프로그램이 종료되더라도 필수 정보가 절대 손실되지 않도록 합니다. 그러면 애플리케이션이 재시작될 때 지속적 파일을 읽고 각 데이터 항목을 마지막으로 저장된 값으로 복원함으로써 예기치 않은 종료로부터 복구할 수 있습니다.
CCF에서의 지속성:
다음 섹션에서는 CCF에서 지속성의 두 가지 사례를 설명합니다.
NVS (비휘발성 저장장치)
도구 관리자 애플리케이션 또는 GEM 호스트가 지속 변수의 값을 변경하면, 새 값은 CCF의 NVS(비트 저장소) 시설 내 해당 파일에 저장됩니다. 도구 관리자가 재시작될 때, 장비 애플리케이션 초기화 과정에서 NVS 파일의 값들이 읽혀져 영향을 받는 변수들에 적용됩니다.
자재 추적
CCF 제품은 재료(기판)에 대한 데이터 지속성을 포함하므로, 장비 애플리케이션이 종료될 경우 재료에 대한 지속된 정보와 마지막으로 알려진 이동 경로가 로드되어 GUI에 시각화됩니다.
재료 추적 패키지는 장비 내 재료의 현재 상태를 저장하는 특정 서비스를 제공합니다. 활성화 시, 각 재료 이동은 디스크상의 "재료 맵" 파일에 기록됩니다.
유지보수 GUI 화면도 제공되어 사용자가 더 이상 존재하지 않거나 마지막 저장 위치와 다른 장소에 있는 재료를 식별할 수 있습니다. 장비에서 재료를 이동시키는 기능이 제공되어 복구 과정을 용이하게 합니다.


작업 데이터 지속성
이제 작업 데이터 지속성을 구현하는 방법에 대해 논의해 보겠습니다. 작업 데이터는 장비가 각 재료 항목을 어떻게 이동하고 처리할지 알려주는 값들의 집합입니다. 작업에는 제어 작업(Control Jobs)과 공정 작업(Process Jobs) 두 가지 유형이 있습니다.
- 작업 처리: 재료 목록을 레시피와 연결합니다.
- 제어 작업: 공정 작업의 집합. 또한 자재 목적지 정보를 포함합니다.
CCF에서 작업 데이터 지속성 구현:
1. 무엇을 고수할 것인가
Cimetrix CIM300 제품(CCF와 함께 설치됨)은 ProcessJobs 및 ControlJobs에 대한 SEMI E39 객체의 수명 주기를 관리합니다. CCF는 런타임에 작업 관련 데이터를 생성하고 이 데이터를 ControlJobData 및 ProcessJobData 클래스에 저장합니다. 또한 객체 속성과 상태도 영구 저장된 후 나중에 복원되어야 합니다. CCF와 CIM300 모두 인스턴스화된 ControlJob 및 ProcessJob의 목록을 유지합니다.
CCF 객체 직렬화/역직렬화

CIM300 객체 및 직렬화/역직렬화 API

2. 지속성 패키지 생성
CCF에는 재료와 위치에 대한 지속성을 제공하기 위해 개발된 재료 추적 패키지가 포함되어 있습니다. 디스크에 기록될 직렬화된 문자열을 포함할 클래스(AllJobs)로 유사한 코드 패키지를 정의해 보겠습니다.
2.a ALLJobs 데이터를 디스크에 기록하는 시기:
- SerializedJobsChanged 이벤트 발생 시 (처리되지 않은 경우 추가)
- 시작 시 즉시 로드 시도를 수행하여 지속성 파일을 처음으로 강제 작성합니다.
- CIM300에서 발생하는 모든 CIM40 콜백 시
- CIM300에서 발생하는 모든 CIM94 콜백 시
- SchProcessJob 인스턴스화 시
아래 그림은 지속화된 데이터가 어떻게 기록되는지 보여줍니다.
2.b 디스크에서 ALLJobs 데이터를 읽어야 하는 시점:
- StartFactoryAutomation() 실행 후, EquipmentControlSystem() 시작 전에 Tool Supervisor가 시작되면.
아래 그림은 저장된 데이터가 어떻게 읽히고 적용되는지 보여줍니다.

결론
데이터 지속성은 예기치 않은 종료 시 필수 정보 손실을 방지하기 위해 모든 애플리케이션에서 중요한 요소입니다. 데이터를 즉시 디스크의 지속적 파일에 기록함으로써 애플리케이션은 이러한 상황에서 복구하여 데이터를 마지막 저장된 값으로 복원할 수 있습니다. Cimetrix CCF 소프트웨어의 경우 지속성은 NVS 및 재료 추적을 통해 구현되어 장비 애플리케이션 종료 후에도 변수와 재료 이동이 저장되고 시각화될 수 있도록 보장합니다.