温度湿度センサ(WTR10-E)とModbus_Tool(Windowsパソコン)でRS485/Modbus RTUの通信テストをする方法について紹介します。
【準備物】スレーブ側(温度湿度センサ)とマスタ側(Modbus_Tool)
Modbus(モドバス)とは、Modicon社がPLC (プログラマブルロジックコントローラ) 用途に開発したシリアル通信プロトコルです。 通信方式はマスタ・スレーブ方式で、マスターからのクエリー(コマンド:通信の開始)とスレーブからの応答メッセージで通信します(詳細は以下記事参照)。
今回は、温度湿度センサ(WTR10-E)とWindowsパソコンでModbus/RTUの通信確認を行いました。
– | 機器 |
---|---|
スレーブ側 | 温度湿度センサ(WTR10-E)・・・2000円 |
マスター側 | Windowsパソコン(Modbus_Toolという無料のマスタシミュレータソフトを使用) + USB/RS485変換器(CH340)・・・6000円 |
温度湿度センサ(WTR10-E)の仕様は以下のとおりです。
仕様 | 概要 |
---|---|
材質 | ABSプラスチック |
温湿度センサ | SHT20 |
電源範囲 | DC8V〜48V(正と負の極性を区別せず、極性を逆にすることもできます) |
電力 | 0.1W |
温度測定範囲 | -40℃〜125℃ |
湿度測定範囲 | 0〜100%RH |
測定精度と分解能 | 温度:±0.3℃、0.1℃湿度:±3.0%、0.1RH |
応答時間 | 2秒 |
通信出力インタフェース | RS485(AとBの2端子) |
シリアルボーレート | 1200,2400,4800,9600bps(2桁のダイヤルスイッチ)、デフォルトは9600bps |
バイトフォーマット | データビット:8、ストップビット:1、チェック不要 |
通信プロトコル | Mobus-RTU |
スレーブアドレス | ID1〜63(ケース内のDIPスイッチで変更可能)、デフォルト1 |
サイズ | 65 * 46 * 28.5mm |
重量 | 42g |
詳細 | KKmoonRS485温度湿度 トランスミッタ RS485 Modbus-TRU データ ロガー 無線 温度 センサ 温度湿度モニタ |
【結果】通信確認
● 「Modbus_Tool」を以下のリンクから入手します。
Modbus_Tool:https://www.fa.hdl.co.jp/jp/html/app/Modbus_Tool/index.html
● USB/RS485変換器をPCに接続します(Windows10だとネットに繋がっていれば自動でドライバをインストールしてくれます)。
● デバイスマネージャーを開き、CH340があることを確認します。
● USB/RS485変換器のAとBを温度湿度センサ(WTR10-E)のAとBに接続し、温度湿度センサ(WTR10-E)のVcc, GND間にDC8V〜48Vを印加します。
● Modbus通信通信確認ソフト「Modbus_Tool.exe」を起動します。
● 接続設定を以下のようにします。
項目 | 設定値 |
---|---|
USB | ポートを選択 |
通信速度 | 9600bps |
データ | 8bit |
パリティー | なし |
ストップビット | 1 |
フロー制御 | なし |
● 送信クエリ欄に以下の内容を入力します。
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 → 温度28.6℃) |
データ2 | 01 F2(10進数:498 → 湿度49.8%) |
CRC | DA 10 |
データ1が温度データ、データ2が湿度で、測定値を 10 倍した値の符号付き整数値となります。
コメント