TECH: Raspberry PiにOPC-UAサーバを立てる
Raspberry Pi上にOPC-UAサーバを立てたい。
最終的にはOPC-UAサーバを介して、EtherCAT Slave Deviceに接続する。
- CODESYS OPC-UA Raspberry Pi Server
ただ、Authentication Settingsはログイン情報入れないとラズパイサーバにつながらない(Raspberry Piのver.のせい?)
古いLinux掘り返すの大変だから、新しいver.でできる方法探したほうが近道かも。
GVLの使い方初めて知った。
(ただ結局変数の階層一緒だからGVLで定義するのが良いのかわからない)
- CODESYS IDE, download page
runtimeはBusterなら4.2.0で良いけど、Bullseyeだと4.4.0以上でないと動かない。
(実際には一時的にラズパイサーバにつながるんだけど、すぐに接続が切れる現象になる)
4.4.0のダウンロードはここから。
CODESYS決め打ちになっちゃってるけど、EtherCAT Masterを作るのがしんどかったのでPLCに頼ることにした。
IDEもruntimeパッケージも基本は無料。
runtimeは通常使用時で2h、フィールドバス使用時は30minの時限式。
解放するにはライセンスキーが必要。
個人利用ライセンス50€=7,000円、商用利用ライセンス100€=14,000円。
ライセンスだけ買うと、ラズパイが壊れた時に無効になる?
ラズパイだし、ドングルキーにライセンスインストールしたほうが安全そう?
pythonのfreeopcuaでOPC-UAサーバを立てる、だとOPC-UAサーバは立てられるけどEtherCATを解決できない。
CODESYSはEthreCAT通信が可能でありながらOPC-UAサーバも立てられる。
クライアント側はfreeopcuaで良い。
接続イメージはこんな感じ。
Raspberry PiがEtherCAT Master。
物理層はLAN。
細かい制御しなければ、ラズパイはただEtherCATを中継してくれれば良いだけ。
- ラズパイサーバ側Certification発行の仕方
暗号化通信Noneで接続してるのに。。。
OPC-UAサーバの構築は簡単だった。
OPC-UAの変数定義するためのオブジェクト持ってきて、サーバ有効にするためのチェックボックスONするだけ。
クライアントソフト側からラズパイサーバ上に定義した変数がOPC-UAサーバ経由で読み取ることができた。
EtherCATにも定義したアドレスにOPC-UA経由で書き込んだ値をパスするだけで書き込めた。
はまったのは、
- ラズパイのディストリビューションとランタイムのバージョンの組み合わせ
- ラズパイサーバの証明書発行しないとサーバログインできない
- インストーラの進捗バーが全く進まなくて不安になる
これぐらいかな。
全部で2日ぐらい使ってしまったけど。。。
はまると時間溶けるし、ブラウザのタブの数がやばくなる。
CODESYS IDEを日本代理店のLINXからダウンロードすると、Start upガイドがついてくる。
けっこう親切に書かれていて、Exampleの導入の仕方もフォローしてくれている(ver.違うと実行できないんだけど、アップグレードの仕方も書いてくれている)。
いくらラズパイといえど、CODESYS IDE基本無料だしruntimeも時限式だけどお試しできるし儲かってるのか(失礼)?
CODESYS自体はPLC, OSにruntime載せて動かすってのが基本スタイルぽいから、ハードウェアに載せてなんぼなのでってことかな。
- CODESYS内記述言語
ソフトウェアPLCというからには、一通りそろっている。
電気回路的な思考で行くならLDで良い。
スルーさせるだけのつもりなので、アセンブラ的なILでも良いかも。
BASICライクで行くならSTか。
SFC、FBDは面白そうだったら手を出してみよう、という感触。
とりあえずCODESYSにSlave DeviceのESIファイルをインストールしてEtherCATは動かせたけど、ENIファイルが作成できない。
あまりよくわかってないけど、Slave 1 ESI + Slave 2 ESI + ... = ENIファイルみたいな感じで、全体のEtherCATネットワークをxmlで記述したのがENIファイルだろうか。