シーケンサで MODBUS を使うのはとっても簡単!
取説の通りにするだけで、あっという間に数値の取り込みが完了します。
RS-485 で繋ぐ MODBUS_RTU を見て行きましょう。
ところで、MODBUS_RTUって何でしたっけね?
もちろん、
MODBUS は 通信プロトコル
RTU というのは バイナリ伝送
MODBUS RTU とくれば、一般的には RS-485
の事ですよね。
どうも!ズブです。今回はシーケンサでMODBUS RTU通信の基礎知識
主にMODBUSのルール的な話展開です。
すぐ使いた~い!って人は、こちらから↓
シーケンサでMODBUS通信をしよう
MODBUS RTU
復習がてら、要点を見ていきましょう。
RS-485
ラインに 差動信号 を乗せます。
レシーバは 32台 接続できます。
信号反射を消滅させる為に、終端抵抗(100~120Ω)が必要です。
ケーブルはCAT5以上の ツイストペアケーブル
とはいえ、調達を忘れてVCTFで繋いでしまったりする事もあるんですけど (´・ω・`)
後からノイズ等で患う位なら、最初からキッチリ仕上げておくべきですよね。
↓こんな格好良いのもあります。
富士電線工業株式会社
よく見かける 32台 というのは、差動ドライバの一般性能に掛かってきているのですね。
全二重 / 半二重
2線式、4線式 と呼ばれてる奴ですね。
TXD で送ったデータを RXD で受け取ります。
シーケンサだと、SDA RDA、SDB RDB と表記されています。
SENDER(送り)と RECEIVE(受取り)の事ですね。
図から分かるように
全二重 は、送信ラインと受信ライン同時に信号を乗せることができます。
半二重 は、ラインに1つの信号しか乗りません。
全二重は同時通信とはいえ、結局スレーブが信号を乗せるタイミングを制御しないと 信号が衝突 する事となります。
マスタ の タイミング だけで制御できる 半二重(2線式)がシンプル で一般的なのですね。
マスタ―スレーブ方式
共通ラインに信号を流すので、みんなの会話は筒抜けですが、
マスタ しか 要求(クエリ)を出しませんし、
スレーブ は名指しされないと 返答(レスポンス)しません。
ライン に 要求 を出せるのは、マスタだけ と決まっているのですから、返答の時間を待つだけで、ライン上の信号衝突が避けられるのです。
設定の タイムアウト や リトライ回数 って、ここで効いてくるのですね。
全スレーブに一括で要求を出す ブロードキャスト 時はスレーブからの返答はありません。
MODBUSプロトコル
通信フレーム
RTUの通信フレームです。
マスタからの要求は、この形に沿ってライン上に上げられているのですね。
ざっとの意味は
START ゴミ掃除時間
アドレス スレーブの号機番号
ファンクションコード スレーブに対しての操作
データ 操作に必要なデータ
エラーチェック CRC-16
ファンクションコードはMODBUSの様式で決まっていて
こちらから、行いたいコードを入力します。
クエリ/レスポンス
名指しされたスレーブは
OK なら ファンクションコードとレスポンスデータ を
NG なら エラーファンクションコードとエラー番号 を返します。
もちろん、名指しされていない スレーブ達は沈黙 です。
例えば、
マスタが
[ 01H 03H 00H 0012H ] このようなデータを上げると
1号機から
[ 03H 4DH 0021H ] このようなデータが返ってくる訳です。
※CRCの箇所は適当です
それらをイメージすると
この様な動きになる訳です。
まとめ
シーケンサへの MODBUS RTU 導入時に必要な知識を纏めました。
勿論、マニュアル片手に装置を作り上げて行くのでしょうが、当たりは付けやすくなったのではないでしょうか。
差別的だという理由から マスタースレーブという言葉は無くなりつつあるようです。
メイン / レプリカ、プライマリ / レプリカ、ペアレント / ワーカー
どの言葉に落ち着くかは分かりませんが、扱う機器によっては記述が違うかもしれませんね。
合わせて読みたい
シリアル通信の基本
シーケンサでシリアル通信をしよう
GOTタッチパネルでModbus通信をしてみよう
最近のコメント