「Modbus simulator」と「Modbus_Tool」でRS485/Modbus RTU通信テストをする方法について紹介します。
「Modbus Slave」と「Modbus_Tool」でRS485/Modbus RTU通信テスト
Modbus(モドバス)とは、Modicon社がPLC (プログラマブルロジックコントローラ) 用途に開発したシリアル通信プロトコルです。 通信方式はマスタ・スレーブ方式で、マスターからのクエリー(コマンド:通信の開始)とスレーブからの応答メッセージで通信します(詳細は以下記事参照)。
「ModRSsim」とは、Modbusのスレーブ機用シミュレータソフトです。
「Modbus_Tool」は、Modbusのマスタ機用シミュレータソフトです。
両方とも無料で使用できます。
今回は、以下のフローで「ModRSsim」「Modbus_Tool」を対抗させて通信し、その動作検証を行いました。
● 「ModRSsim」「Modbus_Tool」を以下のリンクから入手します。
ModRSsim:https://sourceforge.net/projects/modrssim2/
Modbus_Tool:https://www.fa.hdl.co.jp/jp/html/app/Modbus_Tool/index.html
● 1台のWindows PCにUSB/RS485変換器(CH340)を2台USBで接続します。
(Windows10だとネットに繋がっていれば自動でドライバをインストールしてくれます)
そして、2台の「USB/RS485変換器(CH340)」のAとBをそれぞれ接続します。
● 「ModRSsim」を起動し、[Dsubのアイコン]をクリックして以下の通信設定を行います。
項目 | 設定値 |
---|---|
Port | USB/RS485変換器のCOMポートを選択(Modbus simulatorで選択したポートと異なる方を選びます) |
Boud rate | 9600bps |
Data bits | 8bit |
Parity | なし |
Stop bits | 1 |
RTU Control | Enable |
● 「ModRSsim」のトップ画面でAddress:0001-0001の+0に「226」、+1に「498」を入力します。
[Prot:]からプロトコルを[MODBUS RS-232]に変更し、[Hex]のラジオボタンをOnにして[Save all register values]をクリックします。
● 「Modbus_Tool」を起動し、接続設定を以下のようにします。
項目 | 設定値 |
---|---|
USB | ポートを選択(Modbus simulatorで選択したポートと異なる方を選びます) |
通信速度 | 9600bps |
データ | 8bit |
パリティー | なし |
ストップビット | 1 |
フロー制御 | なし |
● 「Modbus_Tool」の送信クエリ欄に以下の内容を入力し[送信]をクリックし、下画像のようにメッセージが返ってきたら通信成功です。
●送信クエリ(Tx)
01 03 00 00 00 02
項目 | 概要 |
---|---|
スレーブID | 01 |
ファンクションコード | 03 |
レジスタアドレス | 00 00 |
読み出すデータの長さ(データ数) | 00 02 |
【補足】
※1 C4 0B(CRCチェック)が送信クエリの末尾に自動的に付加されるので送信ボックスには入力しません
※2 RS485 Modbus-RTU での測定データの読み出しは Read Holding Register function で、開始アドレス 0x0000 から2 つのレジスター値を取得する方法を使います。
●受信メッセージ(Rx)
01 03 04 00 E2 01 F2 DA 10
項目 | 概要 |
---|---|
スレーブID | 01 |
ファンクションコード | 03 |
データ長さ(byte数) | 04 |
データ1 | 00 E2(10進数:226) |
データ2 | 01 F2(10進数:498) |
CRC | DA 10 |
なお、このクエリと応答メッセージは「温度湿度センサ(WTR10-E)とModbus_ToolでRS485/Modbus RTU通信テスト」での検証結果を模擬したものです(このときと同じ送信クエリと受信メッセージを、同じ通信設定でやり取りしています)。
これで、温度湿度センサ(WTR10-E)のModbusスレーブとしての機能をシミュレーションすることができました。
コメント