OPCクライアント-C#.NETサンプル
.NET系の開発言語からOPCサーバーにアクセスするには、COMと.NETの変換を行うラッパーが必要になります。
ここではRCW(Runtime Callble Wrapper)を使って、OPCサーバーにアクセスするC#.NETの実装方法を説明します。
OPCサーバーへのCOM接続
OPCサーバーのクラスIDを指定してCOM接続のインスタンスを生成し、OPCサーバーオブジェクトやブラウズオブジェクト等、OPCの各インフェーフェイスポインタを取得します。
OPCグループオブジェクトの生成とタグ登録
外部からOPCサーバー経由で実データを取得するためには、OPCサーバー内にグループオブジェクトを生成する必要があります。グループオブジェクトにはデータ更新周期を設定することができ、通常、同一周期でアクセスするデバイスを一括して、同じグループに登録します。なお、OPCサーバー内ではグループ毎にスレッドが生成されますので、細分化のし過ぎによるCPU負荷増加には注意してください。
同期(Sync)と非同期(ASync)
OPCグループオブジェクトによる交信には、同期と非同期の2種類あります。同期交信では、呼び出し直後から通信処理が完了するまでクライアント側は実行を停止させられますが、サーバー側で全ての通信処理が完了したタイミングで、その結果(リターン値)がクライアントに返されますので、通信が正常完了したかどうか確認することができます。一般的なプロシージャコールのスタイルです。それに対して、非同期交信は、処理要求を受け付けると即座に、クライアント側へ実行を移し、サーバー側プロセスでバックグランド処理を行い、通信完了時にコールバックハンドラを呼び出す仕組みになります。非同期方式は、通信によるウェイト時間を少なくし、高速にクライアントアプリケーションを実行させることができます。(注:非同期機能はアドバイスモード時のみ有効です)