Beckhoff CX5140-TwinCAT3(Client) & Schneider ModiconM221(Server) :  Modbus/TCP

PLC

Beckhoff CX5140-TwinCAT3(Client)とSchneider ModiconM221(Server)をModbus/TCPで接続します。

1 構成

 

2 TF6250-Modbus-TCP.exeのインストール

下記リンク先から“TF6250-Modbus-TCP.exe“をダウンロードします。
https://www.beckhoff.com/ja-jp/products/automation/twincat/tfxxxx-twincat-3-functions/tf6xxx-tc3-connectivity/tf6250.html

Beckhoff CX5140内で“TF6250-Modbus-TCP.exe“を起動しインストールを開始します。
“OK”

“NEXT”

“NEXT”

“NEXT”

“NEXT”

“NEXT”

“Install”

“Finish”

Beckhoff CPUのWindowsを再起動します。

3 TF6250-Modbus-TCPのTrialライセンス有効化

TF6250-Modbus-TCPのライセンスを購入していない場合、Trialライセンスを有効化します。
パソコンとCX5140をオンライン接続した状態で“License”を開き“Manage Licenses”タブで“TF6250-Modbus-TCP”の“Add License”チェックを入れます。

“Order Information(Runtime)”タブで“7 Days Trial License”を選択します。

セキュリティコードを入力します。

“OK”

4 プログラムの作成

TwinCAT3プロジェクトに“Standard PLC Project”を追加し、“References”で“Add Library”から“Tc2_ModbusSrv”を追加します。

下記リンク先のファンクションブロック“FB_MBReadRegs (Modbus function 3)”のヘルプ記載のサンプルプログラムを参考に読出しプログラムを作成します。

https://infosys.beckhoff.com/english.php?content=../content/1033/tf6250_tc3_modbus_tcp/192755467.html&id=2806111451295813695

下記リンク先のファンクションブロック“FB_MBWriteRegs(Modbus function 16)”のヘルプ記載のサンプルプログラムを参考に書込みプログラムを作成します。

https://infosys.beckhoff.com/english.php?content=../content/1033/tf6250_tc3_modbus_tcp/192763147.html&id=8232391801438361415

5 動作確認

“FB_MBReadRegs”を実行して、ModiconM221のワードメモリー“%MW0~1”の値を、Beckhoffの配列“arrReadData[1]~[2]”に読み出します。
“FB_MBWriteRegs”を実行して、Beckhoffの配列“arrWriteData[1]~[3]”の値を、ModiconM221のワードメモリー“%MW4~6”に書き込みます。

6 Beckhoff ModbusTCP Server機能のテスト

BeckhoffをModbusTCP Serverとした場合、アドレスのDefault仕様は以下のリンク先のようになっています。
https://infosys.beckhoff.com/english.php?content=../content/1033/tf6250_tc3_modbus_tcp/192746507.html&id=1423485921933630094

グローバル変数に以下のような名称の変数を作成してTwinCAT3をRunします。

テスト用のModbusTCP Clientとして“ModbusTool”を利用します。
https://github.com/ClassicDIY/ModbusTool/releases/tag/2.1.0.0
“Modbus Master”を起動し、“Communication”を以下のように設定して“Connect”を選択します。

Beckhoffの“Input registers”のアドレスは16進数で“0x8000 – 0x80FF”となっており、上記で作成したグローバル変数“mb_Input_Registers”と紐付いています。
CX5140とオンライン接続してグローバル変数“mb_Input_Registers[0]~[3]”に以下のように値を設定します。

パソコンの“Modbus Master”のアドレス指定欄の“Start”に16進数“8000”に相当する10進数“32768”を、“Size”に“4”を入力して“Apply”を選択します。
“Read input regster”を選択するとBeckhoff CX5140のグローバル変数“mb_Input_Registers[0]~[3]”に設定した値を読み出します。

“Read input regster”を選択するとBeckhoff CX5140のグローバル変数“mb_Input_Registers[0]~[3]”に設定した値を読み出します。

なお、“Read Holding register”を実行すると、Beckhoffの“mb_Input_Registers”の値を読み出します。

7 参考文献

Beckhoff:TF6250 | TwinCAT 3 Modbus TCP

ModbusTool 2.1.0.0 :https://github.com/ClassicDIY/ModbusTool/releases/tag/2.1.0.0

以上。