Intern

Modbus Master/Slaveをシュミレータで学ぶ

はじめに

今回はModbusについてModbustoolというシュミレータを使って勉強をしていきます

目次

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から複数の情報を取っていきます

SIZEの設定がありますがMAX127となっています
検証で127番まで取れるのではなく127/16=7で7番まで読み取り可能です

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

Masterで取り込んでみます
「Read Coils」を押して反映させていきます

0から7まではSlaveに打ち込んだ数字が取れました

まとめ

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