PLCnextStoreからダウンロードできるModbus_TCP Libraryを使用し、PLCnextとリモートI/OをModbus TCPで通信させる例をご紹介します。
このライブラリをPCにインストールすると、下記のフォルダにサンプルプロジェクトが保存されます。
ここでは、このうち、MB_TCP_9_EXA_TCP_Client.pcwexを一部修正して通信させる方法について記載します。このサンプルを使うと、PLCnextコントローラをModbusクライアントに設定し、FC3(Read holding registers)により、任意のModbusサーバからデータを読み込むことができます。 ライブラリの入手方法、使用方法についてはこちらの資料をご参照ください。
使用する製品
PLCnextコントローラ : AXC F 2152 ×1台
リモートI/Oバスカプラ: AXL F BK ETH ×1台
IO バックプレーン :AXL F BP SE4 ×1台
デジタル入力 : AXL SE DI16/1 ×1台
デジタル出力 : AXL SE DO16/1 ×1台
アナログ入力 : AXL SE AI4 I 4-20 ×1台
バックプレーンスロットカバー : AXL SE SC-A ×1台
構成
参考:Modbus I/Oテーブルは、AXL F BK ETHのWEB設定画面で確認できます。
手順
- MB_TCP_9_EXA_TCP_Client.pcwexをダブルクリックして開きます。開いたプロジェクトは、名前を変更して保存しておきます。
- PLCnextコントローラのIPアドレスを修正します。
- オンラインコントローラを認識させます。
- Modbusサーバ(リモートI/O)のIPアドレスを設定します。
- 8000から8004までのレジスタを読み込むように設定します。
- プロジェクトをダウンロードし、実行します。
- ExampleMachine_1のxStartをTRUEにします。
- MB_TCP_FC3_3のarrRegisterValue[1]~[5]の値をウォッチウィンドウで確認します。
arrRegisterValue[1]~[4]にはAXL SE AI4のアナログ入力1~4、arrRegisterValue[5]にはAXL SE DI16の値が入力されることが確認できます。
この例では、データの読み込みについて紹介しましたが、Modbus_TCP LibraryにはFC6(Write single registers)やFC16(Write multiple registers)など、書き込みに使用するFunction Codeも含まれています。これらを使用すれば、デジタル出力やアナログ出力への書き込みも可能です。