はじめに
今回はModbusについてModbustoolというシュミレータを使って勉強をしていきます
こちらのサイトを見ながら勉強をしていきます
Modbus Master/Slaveのシュミレーターを試してみた|デジタルライト(Digital-light.jp)
目次
- Modbusてなに?
- 動いているイメージ
- 準備
- MasterからSlaveの状態を調べる(Read Coils)
- MasterのPullにチェックを入れてデータ定期的に見る
- 複数の値をslaveに書き込む
- まとめ
Modbusてなに?
Modbusは、産業機器がデータを交換するためのシンプルな通信プロトコルで、マスターが要求を出し、スレーブが応答する仕組みです。シリアル通信(RTU、ASCII)やイーサネット通信(TCP)を使用し、各デバイスには一意のアドレスが割り当てられます。広く使われており、設定や使用が簡単です。
動いているイメージ
①マスターが温度を読み取る:
マスターはスレーブのアドレス(例:1番)に「現在の温度を教えて」という要求を送ります
- スレーブはその要求に応じて「現在の温度は25度です」という応答を返します
②マスターが設定値を送る:
- マスターはスレーブに「設定温度を30度に変更して」という要求を送ります
- スレーブはその設定を受け入れ、「設定を変更しました」と応答します
準備
①MobusMasterとMosbusSlaveをインストールしていきます
下記リンクからmsiファイルをダウンロードしてインストール
Releases · ClassicDIY/ModbusTool · GitHub
インストール方法こちら参考にして下さい
Home · ClassicDIY/ModbusTool Wiki · GitHub
②Masterを立ち上げる
今回はSlaveとはlocalでport502で通信していきます
以下の様な設定にします

③Slaveを立ち上げる
通信方法をTCP設定してPortはMasterと同じ502を設定していきます
その後「Listen」を押します

「Listen」を押した後はメッセージlogに502portで待っている状態とlogが出ます

④Slaveと接続する
Master側で「Connect」を押します

接続したとlogで出ました

MasterからSlaveの状態を調べる(Read Coils)
①Slaveの0番に100と書いてApplyをします

②Master側でRead coilsを押す

成功するとMaster側で0にSlvaeで書いた100が入っています

logを見るとMaster側のRXとSlave側のTXが同じという事が分かる

MasterのPullにチェックを入れてデータ定期的に見る
Pollにチェックを入れると定期的にslaveの状態を見る事が出来ます
*今は2000なので2秒間隔です

複数の値をslaveに書き込む
Slaveから複数の情報を取っていきます

以下のような感じで0から8までランダムに設定します(slave)

Masterで取り込んでみます
「Read Coils」を押して反映させていきます
0から7まではSlaveに打ち込んだ数字が取れました

まとめ
Modbusについて勉強しました
Master/Slaveの通信方法は今まであまり触れて来なかったので動きの
理解が難しかったです
次回はNode-REDで動かしていきます