「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
私は入社1年目の本社事業所勤務の社員です。
先日OPC UAやPub/Sub通信を用いるシステムの開発案件に携わる機会がありました。
ソフテックだよりでも度々テーマとして取り上げられるOPC UAですが、今回はPub/Sub通信について紹介いたします。
OPC UAとは、OPCを拡張したサービス指向アーキテクチャです。
このOPCとは、産業オートメーション分野にて安全なデータのやり取りを目的とした標準規格で、現在はOPC Classicと呼称することもあります。
2008年にOPC Foundationが発表し、のちに国際標準化(IEC62541)されました。
主に以下の特徴があります。
マルチキャストやBrokerによる1対多の通信を目的とした通信モデルです。PublisherとSubscriberに分かれ、それぞれが以下の役割を持っています。
図1. Pub/Sub通信 例
なお、サーバ内でPublisherとSubscriberを共存させることもできます。
次にPub/Subのメリット、デメリットを表にまとめました。
一般的なUDP通信となりますので、同じ特徴があります。
メリット |
|
デメリット |
|
OPC UAサーバを用いたPub/Subでは、これらに加えて、「2.OPC UAとは」で紹介した特徴を持っています。
Pub/Subを用いるにあたり、設定する項目を紹介いたします。
本来はもっと多くありますが、イメージを掴むために一部分を抜粋しました。
Publisher側
設定項目 | 説明 |
---|---|
PublishingInterval | データを送信する間隔です。 |
NodeID | PublishするNode(※)です。 |
データ型 | Publishするデータ型を指定します(intやDoubleなど) |
PublisherID | Subscribeするときに取捨選択を行うためのIDです。 データ一つ一つに対して設定し、ネットワーク内で一意にする必要があります。 |
IPアドレス | 自サーバのアドレスやデータのPublishに使用するマルチキャストアドレスなどを設定します。 |
※AddressSpaceと呼ばれる構造体内のメンバをNodeと呼びます。NodeIDはNodeを特定するためのIDで、AddressSpace内で一意です。
Subscriber側
設定項目 | 説明 |
---|---|
PublisherID | Publisher側で設定したPublisherIDを設定します。 ネットワーク内にPublishされたデータのうち、この値で指定されたデータをSubscribeします。 |
NodeID | Subscribeしたデータの格納先Nodeを設定します。 |
MessageReceiveTimeout | 前回データなどを受信してから、タイムアウトのエラーとするまでの時間です。 |
IPアドレス | 自サーバのアドレスやデータのSubscribeに使用するマルチキャストアドレスなどを設定します。 |
他にも数多くの設定項目がありますが、Pub/Sub通信のイメージはできるのではないかと思います。
気になる方は参考サイトをご覧ください。
OPC UAサーバのPub/Subの設定を確認するのには、UaExpertを使用しました。
UaExpertはUnified Automation社が無償提供しているOPC UAクライアントソフトです。
まずはPub/Subの設定が表示できるように設定を変更します。
UaExpertを起動したら、上部のメニューからSettingをクリックし、Configure UaExpertをクリックします。
ウィンドウが表示されたら、Filterに「PubSub」と入力します。
「PubSubCofigPlugin.EnableConfigurationViewTab」のValueをtrueにし、OKをクリックします。
続いてOPC UAサーバに接続します。
細かい操作については題意とそれるため、省略いたします。
今回はPubSubTestServerに接続しました。
次にウィンドウ上部のAdd Documentをクリックし、ウィンドウを表示させます。
Document TypeでPubSubConfigViewを選択し、Addをクリックします。
Network Viewが表示され、接続中のサーバの設定が表示されます。
ここではUDP Multicastの設定など、Pub/Subのネットワークに関する設定が見られます。
なお、ここに何も表示が無ければ、サーバのPub/Sub設定が上手くいっていないことになります。
最初に設定を変更したことで、Configuration Viewに切り替えることができます。
左下の「Configuration View」をクリックします。
ここではNodeIDやPublish先アドレス、Publishing Intervalなどの設定が見られます。
UaExpertを用いて、Pub/Sub通信が行われていることを確認します。
2つのサーバ「PublishTestServer」と「SubscribeTestServer」を用意しました。
前者にてPublishしたデータを、後者にてSubscribeする設定となっております。
それぞれPublishとSubscribeに設定したNodeをDataAccessViewに表示させます。
まずはProjectにてPublishTestServerをクリックし、AddressSpaceからPublishの左側の>をクリックします。「PublishNode」が表示されたら、これをData Access Viewにドラッグ&ドロップします。
同様にSubscribeTestServerのSubscribe内にあるSubscribeNodeをDataAccessViewに表示させます。
PublishTestServerのValueに「10」を入力すると……。
SubscribeTestServerのValueが「10」になりました。
今回はOPC UAのPub/Sub通信について、簡単にご紹介いたしました。
私自身は、最初はPub/Subモデルのイメージもよくわかっておりませんでした。
今回では紹介しきれないほどの細かい設定項目やOPC UA機能との連携などまだまだ多くの機能があります。
設定する必要のパラメータが多く、小さなミスでも失敗してしまうなど、扱いや開発が難しい面もあります。
しかしTCP/IPと違い、通信相手がいなくてもよいので、Publisher側の設定だけを確認するなど、やりやすい面もありました。
これからPub/Subに触れる際の足掛かりとして、Pub/Sub通信がどのようなものか知っていただけたら幸いです。
最後までお読みいただきありがとうございました。
(Y.I.)
関連ページへのリンク
関連するソフテックだより