CODESYS搭載装置は今回開発環境がインストールされているWindows PCを使用しております。
使用しているCODESYSのバージョンです。

WindowsPCにて動作確認を行いました。
CONPROSYS nanoは、対応が謳われていないためか、どうやってもコンパイルを通すことができませんでした。
CODESYSをスレーブ、RaspberryPiのNode-REDをマスタとします。
CODESYSの設定
はじめに、プロジェクトを作成して、CODESYS Control Win V3 x64を選択してプロジェクトを作成します。
Ethernet IPのデバイスを追加します。



以下選択する際に1点注意です。
デフォルトの選択肢の4.7を選択するとコンパイルに失敗するため
すべてのバージョンを表示からバージョン4.5を選択します。

アダプタが追加されました。

ネットワークインターフェースの設定を行います。
Ethernetをクリックして全般を開きます。
もしパスワードなどの認証を聞かれた場合はPCのログイン情報を入力します。

ネットワークインターフェィスを選択して、PCのラズパイに対して通信を行うネットワークインターフェースを選択します。

入力/出力モジュールの追加を行います。
先ほど追加したAdapterを選択して右クリックからデバイスの追加を選択します。

追加しましょう。

追加後のツリーです。

追加したモジュールを選択して、IN,OUTの点数を指定します。

CODESYSでEtherNet/IPアダプタを設定する際に出てくる「コンシューミング(Consuming)」と「プロデューシング(Producing)」の用語は、データ通信の方向を示しています。
用語 | 役割 | データの方向 (自デバイス視点) | I/O区分 | 設定画面の表記例 |
コンシューミング (Consuming) | データを受信する(消費する) | 他のデバイス → 自デバイス | IN (入力) | O -> T |
プロデューシング (Producing) | データを送信する(生産する) | 自デバイス → 他のデバイス | OUT (出力) | T -> O |
EtherNet/IPの設定では、データの方向を T->O
や O->T
といった略語で表現することがあります。これは通信の始点(Originator)と終点(Target)を示しており、以下のように対応します。
- O -> T (Originator to Target):
- 通信の起点(多くはスキャナ/マスタ)から宛先(多くはアダプタ/スレーブ)へのデータの流れ。
- アダプタ(自デバイス)から見ればデータを受信するので、コンシューミング (入力) にあたります。
- T -> O (Target to Originator):
- 宛先(アダプタ/自デバイス)から起点へのデータの流れ。
- アダプタ(自デバイス)から見ればデータを送信するので、プロデューシング (出力) にあたります。
■ CODESYSの画面上での意味
- Consumed Data(コンシューミング)
→ 他の機器(スキャナなど)から送られてくるデータを、このデバイスが受信します。
→ たとえば、上位PLCから送られてくる制御コマンドなど。 - Produced Data(プロデューシング)
→ このデバイスが他の機器に送信するデータです。
→ たとえば、センサーデータやIO状態などを送る場合。
■ 具体例(例:FA機器とPLC)
たとえば、CODESYSがPLCとしてIOユニットに接続されていると仮定します。
- IOユニットの状態(入力信号)を読みたい ⇒ IOユニットが「Produced」、CODESYSは「Consumed」
- PLCから出力信号(リレーON/OFF)を送りたい ⇒ CODESYSが「Produced」、IOユニットが「Consumed」
■ 補足:Instance ID
16#64
や16#65
は、アセンブリインスタンスIDを示しており、これもEtherNet/IP通信において非常に重要です。16#64
(100) ⇒ 入力アセンブリ(Consumed)16#65
(101) ⇒ 出力アセンブリ(Produced)
これらの値は、相手デバイスの仕様書に書かれているアセンブリ構成に一致させる必要があります。
今回は、IN,OUTそれぞれBYTE型の変数を1個ずつ宣言しました。

EDSファイルの出力
設定が完了すればEDSファイルを書き出しましょう。

EDSのファイルのエクスポートを押します。
このEDSファイルは後で使用するため保存しておきます。
変数の使用
変数を使用しないと現在値の参照ができないためプログラムにて変数を使用しておきます。
まずEthernet IPモジュールに変数を割り付けます。

次にプログラム側で使用します。

デバイスとの通信確立
オンライン→ログインを選択します。

認証を聞かれますので、PCのアカウントとパスワードを入力します。
緑色になり、通信が確立されればOKです。

Ethernet IPアダプタは△マークのままでかまいません、まだ未接続なので。
以上でアダプタ側の設定は完了です。次はラズパイ(スキャナー側の設定です。)
ラズパイ(スキャナー側)の設定
Widowsおよびファイアウォールの設定がある場合は
UDPポート2222 (サイクリック通信用)
TCPポート44818 (メッセージ通信用)
を受信の規則で受信許可にしておきましょう。

Node-REDはインストール済みとします。
以下のノードを追加します。
@serafintech/node-red-contrib-eip-io
eip-io in を追加し、CODESYSに関する接続設定を行います。

順に設定を行います。
以下はラズパイ(スキャナー側)のインターフェースとなるIPアドレスを入力します。

以下にCODESYSで設定したインターフェースのIPアドレスを指定します。
設定値については、EDSファイルを解析して設定していきます。最初に設定済みの設定値を以下に示し、その後設定値の意味を説明します。


Outノードです。

EDSファイルの解析
EDSファイルがダウンロードできましたら、中身を解析します。
以下からEZ-EDSをダウンロードします。

このEntryNameが、Node-REDのノードの設定値に対応します。
注意したいのは、Input,OutputのAssemblyの対応です。
アダプタでは、Input =Consumed Data=100, Output =Product Data = 101ですが、スキャナから見ると逆になります。
なので、 Input Assembly =Produced Data =101 , Output Assembly =Consumed Data = 100 となります。
次に各AssemblyのサイズはEDSファイル内のSize of the Datas …を参照します。



これらから以下が出来上がります。

以下はデータタイプのみ変更します。CODESYSで宣言した変数の型に合わせます。
以下の設定ですと、0Byte目から1Byte分SINT型で取り出します。

OUT側はUSINT型です。

ノードの接続

上記のように結線します。

実際に実行した例です。OUTノードには20を書き込み、INノードからは12を受け取っています。
接続ができると緑色になります。

CODESYS側も同様に値が入ってきています。

以上がEthernet IPによる通信の例でした。
コメント