CODESYSでOPC UAのPub Subを使った通信を試みました。
ただドキュメントが揃っていない、また他手段も少し手間のため一旦放置中です。
筆者自身の忘備録のためにも検討したメモ残しておきます。
OPC UAのPub SubをCODESYSで検討したメモ
CODESYSでOPC UAのPub Subが使えないか検討してみました。
ただ細かいパラメータなど設定方法が分からず、一旦放置しています。
あくまで検討途中のメモレベルの記事です。ご参考程度にお願いします。
CODESYSのOPC UA
CODESYS(PLCソフト)でOPC UAの使い方に関しては下記記事で紹介しています。
OPC UAでPLC(シーケンサ)と接続!サーバーの環境構築してみた
CODESYSではOPC UAの機能を簡単に使うことができます。
「OPC UA機能をサポート」にチェックを入れて、設定するだけでOKでした。
OPC UA PubSubのライブラリ
CODESYSでOPC UA PubSubのライブラリがあります。
https://store.codesys.com/en/opc-ua-pubsub-sl.html
パッケージをダウンロードするか、インストーラーで使えるようになります。
下記記事で紹介していますが、最新のCODESYSではインストーラーを使います。
PLC(シーケンサ)・ラダーがフリーで使える!おすすめ入門ソフト
但し、PubSubのパッケージ自体も特に更新されていないようです。
(2020年頃にVer1.00 が出てからは更新無し…)
まずは一度インストールして、正常動作できるか確認してみました。
PubSubの参考となるサンプルプロジェクト
PubSubのライブラリをインストールすると、サンプルプロジェクトも入ります。
恐らく、デフォルトだと下記フォルダが出来ていると思います(***はユーザ名です)
C:\Users\***\CODESYS OPC UA PubSub SL\1.0.0.0
ただ、このプロジェクトと概要が掛かれたデータシートしか資料がありませんでした。
(細かいアドレス・パラメータ設定などの情報が少ない…)
Publishのプロジェクトを作ってみる
まずはPubSubのパッケージを使って、Publish側を作ってみました。
プロジェクトはCFCで作成しています。(パッケージがFB(ファンクションブロックのため))
(多分FBのプロジェクトでも出来ると思いますが、そこまでは確認できておらず)
ライブラリマネージャ→ライブラリの追加→PubSubのパッケージを追加します。
Pubと検索すれば、OPC UA PubSub SLのパッケージが出てくるはずです。
あとはUADPのブロックをCFCで繋げていきます。
OPC UAのPubSubにはUADPのメッセージマッピングが必要です。
データシート・サンプルを見る限り、基本的なPubの形は下記になると思われます。
PubSub型のメッセージ(UADP)の設定するには多くの対応が必要になります。
- UADP.Configuration;
- UADP.Connection;
- UADP.WriterGroup;
- UADP.Writer;
- UADP.DataSet;
但しDatasetに関しては直接使えず、拡張してファンクションブロックを作りました。
(そのまま使ってビルドするとインスタンスの関係でエラーになります。)
Application→POU→ファンクションブロックでUADP.DataSetを拡張。
一応ビルドは通ったのでOPC UA PubSubのブロックのつなぎ方としては良さそうです。
ただこれ以降の設定方法の情報が少なすぎてギブアップしました。
- コンフィグレーション含めてUADPブロックをEnableにする手順
- IPアドレス・ポート・IDなどの設定
サンプルプログラムはメインプログラムCFCに記述する形で対応していました。
ただそれを真似してもエラーが出て、ちょっと分からずです。
open62541のCから実装した方が速いかも…
現時点ではCODESYSでのOPC UA PubSubの実行は少し難しそうです。
(誰か上手くできた人がいましたら教えてほしい…ぐらい)
どうしてもOPC UA PubSubをテストしたいのであれば、
OPC UAのオープンソース元であるopen62541 のCで実装した方が速そうです。
PubSub含めてソースのExampleは数多くあります。
まとめ
今回はCODESYSでのOPC UAのPubSubに関して紹介させていただきました。
記事をまとめますと下記になります。
CODESYSのOPC UA PubSubのパッケージはあります
ただ現時点ではPubSubの細かい設定が分からず、一旦ギブアップです
OPC UAの使い方の例に関しては下記記事でまとめています。
よろしければご覧ください。(リンク先はこちら)
コメント