OPC-UAでPLCと接続して、クライアント側からデータ取集まで試してみました。無料で対応可能です。
汎用的なラズベリーパイで「OPC UAサーバー」かつ「PLC(シーケンサ)」にする手順を紹介します。
OPC UAでPLC(シーケンサ)と接続!サーバーの環境構築してみた
ラズベリーパイ1台で「OPC UAサーバー」かつ「PLC」にすることができます
PLC入出力データをOPC UAクライアントソフト(UaExpert)から確認可能です。
実際にOPC UAでラダーの自己保持回路の入出力を監視したデモ動画が下記になります。
ソフトのダウンロード方法からテスト手順まで紹介していきます。
OPC UAとは
OPC UAに関しては既に多くの記事がネットに上がっていますので概略だけ説明します。
産業機器・産業システムには数多くの産業ネットワークの規格が有ります。(PROFINET,EtherCATなど…)
OPC UAは数多くの規格超えて通信・データ収集・機械制御などが可能になる通信規格です。
(下記図はかなり大雑把なイメージ図です)
また産業ネットワーク(PRFONET,EtherCAT…)もOPC-UA同様にラズパイで試すことができます。
もし興味がある方は下記記事もご覧ください

OPC UAのクライアントとサーバーの環境
今回はOPC UAの環境を構築してサーバー・クライアント間で通信テストを行います。
ラズベリーパイを「PLC」と「OPC UAサーバー」、普通のノートPCを「OPC UAクライアント」として通信します。
OPC UAクライアント(普通のノートPC)側からPLCの入出力データを確認するのがゴールとなります。
CODESYSでOPC UAサーバー環境を構築する
今回OPC UAサーバーの環境をCODESYSというソフトウェアPLCで対応します。
CODESYSはOPC UAサーバー環境が最初から入っており、ラズベリーパイで無料でテストすることが可能です。
ラズベリーパイにCODESYSのインストール方法
最初にラズベリーパイにCODESYSをインストールする必要があります。
CODESYSのダウンロード方法含めて詳細な方法については下記記事をご覧ください。

ラダーの自己保持回路を作る
特にテストプログラムは何でも大丈夫です。筆者はラダーで基本的な自己保持回路を組みました。
もし同様な回路を作る方がいれば下記記事をご参考ください。回路図含めて記載しています。

OPC UAからPLCの入出力にアクセスできるように設定する
CODESYSの中で持っているPLCの入出力データをOPC UAからアクセスできるように設定します。
最初に「Application」を右クリックして「オブジェクトの追加」⇒「シンボルコンフィグレーション」を選択します。
「シンボルコンフィグレーション」の項目で「OPC UA機能をサポート」にチェックがあることを確認して進めていきます。
これで「シンボルコンフィグレーション」の設定ができるようになりました。
一度「ビルド」してOPC UAでアクセスしたい入出力(変数)を選択します。
これで今回のテストでのOPC UAサーバー側での設定は一旦終了です
OPC UAのセキュリティポリシーはCODESYSも対応
OPC UAの特徴として「セキュリティ」機能があります。
産業ネットワークとしての安全性(盗聴・改ざん・攻撃)の対策です。
CODESYSも(Basic256SHA256の暗号化通信で)しっかり対応しています
しかしセキュリティの機能を使うにはサーバー・クライアント間で「証明書」などを発行する必要があります。
作業内容を詳細に説明すると少し手間ですので、今回のOPC UAの通信テストではセキュリティは無し(None)で行います。
もしセキュリティポリシーを使いたい方はCODESYSのオンラインヘルプページをご参考ください。
実施手順が記載されていました。(リンク先はこちらから)
下記記事で実際にセキュリティ有りのOPC UAの通信テストをしています。

UaExpertでOPC UAクライアント環境を構築する
OPC UAクライアントソフト・アプリ・API・SDKは多くのメーカが出しています。
今回筆者は一番代表的なソフトのUaExpertの使いました。無料で使用可能です。
UaExpertのダウンロードから使い方までを下記記事で紹介しています。
よろしければ一緒にご覧ください。(リンク先はこちらから)

OPC UAサーバーとクライアントで通信テストする
OPC UAサーバーの「CODESYS」とOPC UAクライアントの「UaExpert」を立ち上げてテストします。
動画だと分かりやすいと思いますので、冒頭でも紹介しましたが再度貼り付けておきます。
OPC UAクライアント側からPLCのデータが取得できている
OPC UAサーバーに接続後、PLCのデータをOPC UAクライアント側から確認できました。
Statusも「Good」で、データ習得の度にタイムスタンプがしっかり更新されています。
OPC UAのリアルタイム性を確認してみる
今回のテストプログラムではPLCの入力SW_X001を押下⇒Y001に出力してLEDが点灯します。
クライアント側でもY001が「True」になってOPC UA経由でデータが取得できていることが分かります
今回はOPC UAを無線で通信していますが、SW押したらすぐにクライアント側でもデータが動いています。
目で見える範囲内では十分にOPC_UAで反応できていました。
(リアルタイム性という意味では大分薄いと思いますが…、個人的なテストでここまで動けば満足です)
まとめ・感想
ラズベリーパイ(raspberry pi)1台でPLCもOPC UAサーバーも試すことができます。(しかも無料で!)
クライアントソフトも誰でもダウンロードできて、簡単にOPC UAのテストが可能です。
皆様もぜひ試してみてください
コメント
misoji先生の記事でハードが苦手な私でも、何とか
ラズベリーパイとGPIOを理解し、Codesysを用いて
ラダーのプログラムでLED、OPCUAまでたどり着けました。
今回、CODESYSのOPCUA PUBSUB機能を試してみたいのですが
すごく難しいです。
misoji先生の解説を頂けますと大変うれしいです。
お世話になっております。管理人のミソジです。
ご連絡ありがとうございます。
私の方でも一度試してみましたが、情報が足りず細かい設定まで出来ませんでした。
途中までの検討メモレベルですが、下記記事にまとめました。
https://misoji-engineer.com/archives/opc-ua-pub-sub.html
ご参考にしていただければと思います。どうかよろしくお願いいたします。