このブログはもともとcimetrix.comに掲載されていました。
PLCベースの設備制御システムでSEMI E30 GEM(汎用装置モデル)通信規格を実装する方法について疑問に思ったことがあるなら、ぜひ読み進めてください。この投稿はあなたのためにあります!
GEM OPC コネクタ アプリケーションはどのような問題を解決しますか?
Cimetrix CIMConnect製品は、多様な製造業の機器サプライヤーがGEM標準を自社機器制御システムおよび関連アプリケーションに統合するために使用するソフトウェアライブラリを提供します。これらのアプリケーションは通常、C#、VB.NET、またはC++で記述され、Microsoft Windowsオペレーティングシステム上で動作する必要があります。
このソリューションはWindows上で動作する機器コントローラには非常に有効ですが、Windowsベースの制御システムを使用しない機器の場合はどうでしょうか?特に、一部の機器コントローラはPLCベースであるため、CIMConnectライブラリを直接使用できません。ではどうすればよいのでしょうか?GEM OPC Connectorアプリケーションは、この特定の状況に非常に効果的に対応します。
GEM OPC コネクタ アプリケーション説明
以下のスクリーンショットは、GEM OPC コネクタアプリケーションによって実装された GEM インターフェースの GEM 状態設定と現在の状態を示しています。

GEM OPCコネクタはCIMConnectのサンプルアプリケーションとして提供されています。当社のお客様の多くが、PLCベースの設備アプリケーション向けにGEMインターフェースを実装するためにこれを利用しています。CIMConnectと同じコンピュータ上で動作するためWindowsオペレーティングシステムが必要ですが、幸いなことに、PLCベースのコントローラを搭載したほとんどの設備タイプでは、制御システム全体内のどこかにWindowsコンピュータが存在します。 例えば、こうした機器の多くではHMI(ヒューマンマシンインターフェース)がWindowsコンピュータ上で動作し、HMIとPLCコントローラ間でデータを共有するためにOPC UA(またはOPC Classic)を使用しています。この構成では、CIMConnectとGEM OPCコネクタアプリケーションをHMI用Windowsコンピュータにインストールし、HMIが使用するのと同じOPC UAサーバーに接続できます(下図のブロック図参照)。 もちろん、装置コントローラにWindowsコンピュータが既に存在しない場合、このソリューションを利用するにはコントローラにWindowsコンピュータを追加する必要があります。

仕組みは?
GEM OPC Connectorアプリケーションは、CIMConnectアプリケーションであると同時にOPCクライアントでもあります。GEMの機能はCIMConnectによってサポートされ、OPCサーバーで定義された変数を使用してCIMConnect内のメソッド呼び出しを実行したり、CIMConnectからの通知を受信したりできます。OPC変数は以下の目的で使用できます:
- 更新ステータス変数(SVID)および機器定数(ECID)
- トリガー収集イベント (CEID)
- アラームを設定または解除する。
- ホストからのリモートコマンド通知を受信する。
- カスタムメソッドを呼び出す。例えば、以下の事前定義済みメソッドが存在する:
- オフライン/オンラインの切り替えを設定する
- ローカル/リモート切替スイッチを設定する
- ホストとのGEM通信を有効/無効にする
- GEM通信設定を変更する。
OPC UAタグがPLCやHMIによって更新されると、GEM OPCコネクタはこれらのタグ値の変更を監視し、各OPC UAタグの機能に応じてCIMConnect内の適切なメソッドを呼び出します。
データ更新と制御信号は逆方向にも伝達可能です。例えば、ホストが機器にリモートコマンドを送信する場合、GEM OPCコネクタは当該リモートコマンドのパラメータに関連付けられたOPC UAタグを更新し、ブール値のOPC UAタグを「True」に設定することでリモートコマンドを処理します。これにより、ホストによってリモートコマンドが呼び出されたことをPLCベースの制御アプリケーションに通知します。
XML構成ファイルは、OPC UAタグとGEMアーティファクト間の様々なリンクタイプを定義します。各リンクは特定の機能を記述し、その機能を実行するために必要な追加情報を提供します。以下のセクションでは、いくつかの一般的なリンクタイプの例を示します。
可変リンク
可変リンクは、GEM変数とOPC UA変数を同期させるために使用されます。XMLファイル内ではリンクは次のように記述されます:
この例では、GEM EstablishCommTimeout 機器定数(VID = 4000)を OPC UA タグ = “Channel1.Device1.Standard ECs.EstablishCommTimeout” にリンクします。機器定数はオペレーターまたはホストによって更新される可能性があるため、方向属性は「両方」です。
アラームリンク
アラームリンクは、GEMアラームの設定とクリアに使用されます。アラームリンクはXMLファイル内で以下のようになります:
この例では、GEMアラーム(ALID = 20045)をブール型OPC UAタグ「Channel1.Device1.Alarms.PMTempTooHigh」にリンクします。 PLCソフトウェアは、アラーム状態が変化した際にこの値を設定します。GEM OPCコネクタはこのタグの値変化を監視し、CIMConnectのSetAlarm()またはClearAlarm()メソッドを呼び出して、関連するアラーム状態を適宜更新します。
イベントリンク
イベントリンクはGEM収集イベントをトリガーするために使用されます。XMLファイル内でのイベントリンクの記述例は以下の通りです:
この例では、GEMコレクションイベント(CEID = 5000)をブール値のOPC UAタグ「Channel1.Device1.Events.LoadLockDoorOpened」にリンクします。GEM OPCコネクタはこのタグの値変更を監視し、値が0から1に変化した際にCIMConnectのメソッドを呼び出し、関連するイベントをトリガーします。
リモートコマンドリンク
リモートコマンドリンクは、ホストによって開始されたリモートコマンドをPLC機器アプリケーションに通知するために使用されます。リモートコマンドリンクはXMLファイル内で以下のように記述されます:
この例では、GEM「PP-SELECT」リモートコマンドをブール型OPC UAタグ「Channel1.Device1.RemoteCommands.PP-SELECT」にリンクします。パラメータ値はオプションです。この場合、OPC UAタグ「Channel1.Device1.RemoteCommands.PP-SELECT_PPID」に単一のパラメータがリンクされています。 ホストがS2F41「ホストコマンド送信」を使用してPP-SELECTリモートコマンドを送信すると、GEM OPCコネクタはメッセージを次のように処理します:処理状態の値が機器がこのリモートコマンドを受け入れ可能な状態である場合、まずパラメータ値が更新され、その後PP-SELECT値が「True」に設定され、PLCアプリケーションにリモートコマンドが呼び出されたことを通知します。
メソッドリンク
メソッドリンクは、GEM OPC Connector自体でカスタムメソッドを呼び出すために使用されます。いくつかの事前定義されたメソッドが利用可能であり、カスタムメソッドを追加することもできますが、後者はGEM OPC Connectorアプリケーションのソースコード変更を必要とします。メソッドリンクはXMLファイル内で以下のように記述されます:

この例では、「PPChange」というメソッドをブール型OPC UAタグ「Channel1.Device1.Methods.PPChange」にリンクしています。メソッドにはパラメータが存在する場合があり、この例では2つのパラメータがOPC UAタグにリンクされています。1つは変更されたプロセスプログラム名用、もう1つは変更の種類(作成、編集、削除)を記述するためのものです。 このメソッドを呼び出すには、PLCがまずパラメータ値を更新し、次にPPChange OPC UAタグの値を0から1に変更して、GEM OPCコネクタにメソッドが呼び出されたことを通知する必要があります。GEM OPCコネクタはその後、名前でメソッドを検索し、コードを実行します。この例では、GEMデータ変数PPChangeNameとPPChangeStatusを更新し、PPChangeコレクションイベントをトリガーします。
結論
GEM OPC コネクタアプリケーションのこの簡単な概要は、この機能への関心を喚起し、さらに多くのことを学ぶ方法について当社にお問い合わせいただくきっかけとなることを目的としています。