覚えていれば役に立つ!Modbusを知ろう
前回の「タッチパネルは怖くない!?メッセージの処理方法」の「Modbusの通信方式」の続きです。
ModbusはPLC(プログラマブルロジックコントローラ)用の通信規格で、とても普及しているプロトコルです。
物理層はRS485規格に準拠していますので、インターフェース回路を作成するのも簡単です。
Modbus信号波形の例 黄色Data+ 青色Data-
信号D1、D2は反転信号となりスレーブでは差動信号で入力します。
このD1とD2は一般的にData+、Data-と呼び、信号が反転しています。
信号波形をオシロスコープで観測すると何をしているかが分かります。
データは下の図1のように非同期式の連続信号です。
■1バイト構成
スタートビット+データビット+パリティビット+ストップビット=11ビット
データ数はファンクションコードにより変わります。
局番=1、レジスタアドレス=107H ワード数=1レジスタを読み出してみます。 ファンクションコードは 03H を使用します。
1.全体の信号波形
左の固まりがマスター側のクエリです。
右側の固まりはスレーブ側からのレスポンス信号です。
2.マスター側のみを表示して、データを読んでいきます。
1/0反転信号で1ビットの幅が分かります。
1データは11ビットです。
スタートビットは0なので、次から読み出します。
3.スレーブアドレスとファンクション
図1の順序にあてはめると
最初は16進数 01h スレーブアドレス1の意味です。
2番目は16進数 03h ファンクション 3の意味です。
4.読出し先頭レジスタアドレス
3番目は16進数 01h
4番目は16進数 0Fh
この2ワードで レジスタアドレス 010Fh を指定しています。
5.読出しレジスタアドレス数
5番目は16進数 00h
6番目は16進数 01h
この2ワードで 読み込みレジスタ数 0001h を指定しています。
以上、信号波形より表のようなクエリデータを読み取ることが出来ます。
パソコンとRS485-USB変換機を使って簡単に読み取るキャプチャプログラムもできます。
図2 EXSELのマクロプログラムでデータをキャプチャ
Modbusはオープン規格で認証機関が無いのですが、このぐらいの事を知っていれば何かあっても?自分で問題を解決できます!
Modbusについての詳細は
Modbus Organization http://www.modbus.org/
を参照して下さい。