このブログはもともとcimetrix.comに掲載されていました。
使用中のアプリケーションが突然終了し、再起動後に作業内容がすべて失われていることに気づいた経験はありませんか?(ない方も、いずれ経験するでしょう!)このブログでは、CimetrixCimControlFramework™がこの状況にどう対処するかについて解説します。
永続性とは何か、そしてなぜそれを使うべきなのか?
問題:
あらゆるアプリケーションの実行中、常に実行終了のリスクが存在する:アプリケーションの予期せぬ終了、コンピュータの電源喪失、あるいはプログラムの誤動作などである。通常、プログラムはメモリ内に、その時点までのアプリケーションの本質的なデータと状態を表すデータを保持している。 実行が予期せず停止した場合、メモリ内のデータは永続的でない性質のため、その時点までに蓄積された全ての情報が失われ、回復不能となる危険に晒されます。プログラムが終了すると、メモリに保存されていたデータは消去されます。
解決策:
典型的な解決策は、重要なデータが作成または変更された際に、直ちにディスクへ書き込むことです。完全な永続的ストレージ機構を実現するため、こうしたデータを1つ以上のファイルに保存するのが一般的です。これにより各データ項目が実質的に「永続的」となり、プログラムが終了しても重要な情報が失われることはありません。アプリケーションは再起動時に永続ファイルを読み込み、各データ項目を最後に保存された値に復元することで、予期せぬ終了から回復できます。
CCFにおける持続性:
CCFにおける持続性の二つの例を、次のセクションで説明する。
NVS(不揮発性ストレージ)
ツールスーパーバイザーアプリケーションまたはGEMホストが永続変数の値を変更すると、新しい値はCCFのNVS機能内の対応するファイルに保存されます。ツールスーパーバイザーが再起動すると、NVSファイルから値が読み込まれ、機器アプリケーションの初期化中に影響を受ける変数に適用されます。
資材追跡
CCF製品には材料(基板)のデータ永続化機能が含まれており、装置アプリケーションが終了した場合でも、材料に関する永続化された情報と最終確認された動作履歴がGUIに読み込まれ可視化される。
マテリアル追跡パッケージは、装置内の材料の現在の状態を保存するための特定のサービスを提供します。有効にすると、各材料の動きがディスク上の「マテリアルマップ」ファイルに記録されます。
メンテナンス用GUI画面も提供されており、ユーザーは存在しなくなった資材、または前回保存時と異なる場所にある資材を特定できます。リカバリプロセスを円滑化するため、機器から資材を移動させる機能も備えています。


ジョブデータの永続化
それでは、ジョブデータの永続化機能の実装方法について説明します。ジョブデータとは、各材料アイテムの移動方法や処理方法を装置に指示する一連の値です。ジョブには「制御ジョブ」と「プロセスジョブ」の2種類があります。
- プロセスジョブ:材料のリストをレシピに関連付けます。
- 制御ジョブ:プロセスジョブの集合体。材料の仕向先情報も含まれる。
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() の起動前に、ツールスーパーバイザーが起動した時点。
下図は、永続化されたデータが読み込まれ適用される方法を示しています。

結論
データの永続性は、予期せぬ終了時に重要な情報が失われるのを防ぐため、あらゆるアプリケーションにおいて極めて重要な側面です。永続ファイルにデータを即座にディスクへ書き込むことで、アプリケーションはこうした状況から回復し、データを最後に保存された値に復元できます。Cimetrix CCFソフトウェアの場合、永続性はNVSと材料追跡を通じて実装されており、変数や材料の動きが保存され、装置アプリケーション終了後も可視化できることを保証します。