HOME会社概況業務内容開発分野開発事例CANモジュールソフテックだよりお問い合わせ
HOME > ソフテックだより > 第191号(2013年8月7日発行) 技術レポート「FA-Serverを使用したOPC通信」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより(技術分野別)のページへ
ソフテックだより(シーン別)のページへ


ソフテックだより 第191号(2013年8月7日発行)

技術レポート

「FA-Serverを使用したOPC通信」

私は入社17年目(2013年現在)で、主にPLC(Programmable Logic Controller)を用いた工場設備の制御ソフト開発や、自社開発のFAVIEW・横河電機製ASTMAC/VDS等のSCADA製品構築、Excel/AccessでVBAを使用したツール開発を担当しています。
今回のソフテックだよりでは、私が実際に手がけた案件を元にFA-Server、OPCについて開発の経緯や調査した内容をご紹介します。

1. OPCとは

OPCは、1996年に大手産業メーカー(米ハネウェル、独シーメンス等)と米マイクロソフトにより策定された、データ送受信の手順・形式を標準化し、異なるメーカー間のやり取りを容易にするために考え出された仕様です。
「OPC」は元々「OLE(※1)for Process Control」の略で、その名のとおりプロセス制御をターゲットとしていましたが、現在では自動車や機械などの製造業、ビル監視など分野を問わず広く使われています。

OPCでは様々なデータの取り扱いに応じて、以下のような仕様の種類があります。

  • DA(Data Access)
  • A&E(Alarm & Events)
  • HDA(Historical Data Access)
  • Batch
  • Security
  • 上記仕様の一部を包括した新仕様(XML-DA、UA)

今回は、リアルタイムデータを取得するための「DA」を取り上げます。

2. 実際に対応したシステム

私がOPCを初めて使用し、ソフト製作を行ったシステムを例としてご説明します。

2-1. OPC採用までの経緯

既設システムとしてソフテックが納入したFAVIEWと三菱電機製PLCを使用した監視システムがあり、温度などのアナログデータやアラームメッセージの表示を行っていました。そこへ新たに「他社が納入した海外メーカーの設備の温度等のデータも合わせて表示したい」というお客様の要望がありました。
他社設備には監視・制御を行うためのパソコンと海外製PLCがあり、そこからデータを取得する形として、「PLCからデータを取得する案」と「パソコンからOPC通信によりデータを取得する案」の2案がありました。

信頼性やシステム構成のシンプルさを考慮するとPLCからデータ取得するほうがよいと考えました。
しかし、その海外製PLCには外部との通信機能が標準で備わっておらず、通信ユニットの追加とソフト変更を行う必要がありました。
そのPLCに変更を加えることは可能ではありますが、PLCの制御処理も含めて1つの設備として納入されているため、海外メーカーの保証が受けられなくなることになります。

もう1つの案である、OPC通信を使用してパソコンからデータ取得をすることは、ソフテックではそれまで実績が無いことが不安材料でしたが、システム間の通信として広く使われているOPCであれば、ゼロの状態から通信ソフトを開発するよりも対応を行いやすく、さらにメーカー各社から提供されているデモ版ソフトを使用してOPC通信が可能であることを確認できたため、実際のソフト製作を行う運びとなりました。

2-2. ハードウェア構成

以下のように、FAVIEW(SCADA)とPLCを接続するために設置しているスイッチングHUBへ、他設備監視用のパソコンを接続する形としました。

ハードウェア構成
図1. ハードウェア構成

2-3. ソフトウェア構成

各ソフトの仕様や通信試験の結果をもとに、以下のような構成としました。
矢印はデータの流れを示しています。

ソフトウェア構成
図2. ソフトウェア構成

OPCは「サーバー」(接続を待ち受ける側)と「クライアント」(接続をしにいく側)にわかれて通信を行います。

ロボティクスウェア社製「FA-Server」(今回使用したのはVer.5・Rev.7)は、名前のとおりOPCサーバーとして動作する機能を持っていますが、OPCクライアントとして動作することもできます。
前述したとおりOPC通信はソフテックにとって初の試みとなるため、システム構成の検討時、ソフテック納入システムと他社システムのどちらがサーバーとなっても良いようにFA-Serverを採用しました。
その後の仕様調査の結果、他社システムがOPCサーバー、ソフテック納入システムがOPCクライアントの構成としました。

図2のとおり、他社システムでは米ワンダーウェア(Wonderware)社製のOPCサーバーである「DA Server」が動作していました。
本来であれば、OPCサーバーへ直接接続するべきだと考えましたが、通信試験の結果、同じくワンダーウェア社製のソフトである「FactorySuite Gateway」を通す形でなければ接続することができませんでした。
ネットワークなど何らかの設定に問題があったためか、または元々そういった仕様であるのかなど、ソフテックで採用しているソフトであれば徹底的に不明点を解消するところですが、他社システムであることから断念しました。

FA-Sever経由で取得したデータをFAVIEW画面上に表示するため、VB(VisualBasic6.0)にて通信ソフトを製作しました。
単に画面上に数値を表示するだけであれば、PLCを経由せずVBからFAVIEWへ直接値を書き込むこともできます。
今回は、OPCにて取り込んだデータも、PLCにて既存のアナログ値に対して行っているのと同様に上下限異常の判定を行うため、VB→PLC→FAVIEWというデータの流れとなっています。

DAServer−FA-Server間はOPCによる通信が行われていますが、FA-Server−通信ソフト間もOPCを使用して通信を行う形となっています。
FA-Serverとの通信はDLLファイル(※2)を経由して行うため、特に細かい手順などは必要なくFA-Serverのマニュアルにあるサンプルを参考にして製作を進めることができました。
なお、DLLファイル(ファイル名:OPCDAAuto.dll、名称:OPC DA Automation Wrapper 2.02)はOPC評議会から提供されており、ロボティクスウェア社などOPCサーバーを販売しているメーカーに対して再頒布可能なファイルとして配布されているものであるため、サンプル以外の具体的な使用方法などについては各メーカーへの問い合わせなど詳細なサポートを受けることはできません。
ただ、メーカーによっては細かな機能などをマニュアルに掲載している場合もあり、それらの情報を合わせ読むことによりソフト製作を進めることができました。

3. ソフト製作の準備

通信ソフトを製作するうえで、以下のように事前に様々な設定が必要です。

3-1. ネットワーク設定

私が対応したシステムでは、OPCサーバーパソコン側のファイアーウォールの設定や、クライアントパソコン側のWindowsログオンユーザーの登録などが必要でした。OPCサーバーのメーカーや、動作しているパソコンにより異なると思いますので、事前に確認を行う必要があります。

3-2. ハードウェア構成

FA-Serverの通信設定

  • IPアドレス
    OPCサーバーが動作しているパソコンのアドレスを指定します。
  • サーバー名
    各社のOPCサーバーごとに固有で決められている文字列を指定します。
  • タグ
    ユーザー製作の通信ソフトがFA-Serverからデータ取得する際に使用する文字列を必要な数だけ登録します。それぞれのタグに、同様OPCサーバー側にて決められているデータの名前(アイテム名)を設定することによって、OPCサーバーとFA-Serverが通信することができます。
3-3. FA-Serverの動作設定

その他FA-Server自身の動作設定を行います。
FA-Serverは常駐型のソフトであるため、最低限以下の設定が必要となります。

  • Windowsの起動とともに自動起動(スタートアップ登録)
  • Windowsの通知領域から誤って終了してしまわないためのパスワード設定
3-4. DLLの参照

Visual Basicのメニューの「プロジェクト(P)」-「参照設定(N)…」より、「OPCDAAuto.dll」を指定します。
FA-Serverでは、「C:\Program Files\Roboticsware\FA-Studio5」にあります。

4. ソフト処理の流れ

通信ソフトの処理の流れを大まかにご説明します。
詳細については、FA-Serverマニュアルのサンプルコード等をご覧ください。

4-1. OPC通信オブジェクトの作成

OPCServer、OPCGroups、OPCGroupなど必要なオブジェクトを定義します。

4-2. FA-Serverへの接続

OPCServerオブジェクトのConnect関数により、FA-Serverへ接続します。

4-3. タグの登録

OPCServerオブジェクトへ「3-2. FA-Serverの通信設定」で定義したタグを登録することにより、FA-Serverからのデータ取得が可能となります。

4-4. データの読み出し

データの読み出しは、「イベント発生による読み出し」と「任意タイミングによる読み出し」の2種類があります。

イベント発生による読み出し
OPCサーバーの値が変化すると、タグごとにValueChangeイベントが発生するため、そのイベントプロシージャ内で必要な処理(監視画面への表示等)を行います。
任意タイミングによる読み出し
定期的にOPCGroupsオブジェクトのSyncRead関数を呼び出し、その後、必要な処理を行います。
今回私が手がけたシステムでは、データをまとめてPLCに書き込む必要があったため、こちらの方法を選択しました。
5. まとめ

OPCがどういうものかは、OPC評議会のWebページで公開されている仕様書やプレゼンテーション資料、Web上の情報で理解することができましたが、実際にソフト製作を行おうとすると、試行錯誤の連続でした。
ただ、社内では苦労したものの、実際の通信確認の場ではスムーズに通信確認を終えることができました。
通信相手が独自の通信規格を持っており、それに合わせて通信ソフトを開発する場合、いくらプロトコル仕様書やデータ定義書などで認識を合わせようとしても、どこかで解釈の違いが出てしまい修正が必要になったり、問題が発生した際の切り分けに時間がかかってしまうことがあります。
OPCでは、データ形式や手順が共通仕様として取り決められており細かい仕様のすり合わせが不要であることが、通信確認を無事に終えられた理由の1つであると考えています。
お客様にもご心配をお掛けすることなく現地立ち上げを完了することができ、「社内にも『こんな実績がある』とプレゼンして広めていくよ」とおっしゃっていただきました。

なお、今回はクライアント側のソフトとしてFA-Serverを使用しましたが、確実にこちらがクライアントであることがわかっているのであれば、同じくロボティクスウェア社が販売している「FA-Engine」を使うこともできます。
(ただし、FA-Engineを使用する場合、今回ご紹介した方法とは異なりますのでご注意ください)
FA-Engineはランタイム版(運用環境で必要となるファイル群)の再頒布が可能となっているため、今回のように1対1ではなく、クライアントが複数ある際には有効な選択肢となりそうです。
また、FA-Serverは「常駐型ソフト、運用環境ではライセンスキー(USBポート)が必要」、FA-Engineは「非常駐型ソフト(OCXによる機能提供)、運用環境ではライセンスキーが不要」という違いもありますので、環境・用途によって使い分けが必要です。

OPCは、メーカー問わず汎用的な取り扱いが可能である点が大きなメリットであるため、今回の実績を基にしてお客様へのご提案を行っていきたいと思います。

(S.T.)

[参考サイト/書籍]
日本OPC協議会
http://www.opcjapan.org/
Wikipedia
http://ja.wikipedia.org/wiki/OLE_for_Process_Control
OPCデータアクセス概要
OPC技術概要書 Version 2.0
OPC実践ガイド−SE,SIのためのOPCナビゲーション・ブック(工業技術社 刊)
[注釈]
※1
「Object Linking and Embedding」の略で、マイクロソフトが開発したソフトウェア間のやり取りの仕組み。
※2
DLLは「Dynamic Link Library」の略で、様々な機能を他のプログラムから使える形で格納したファイル。

関連ページへのリンク

関連するソフテックだより