シリアル通信の1つであるModbusとは?RTU/ASCII/TCPの違い・ライブラリについて解説します。
【Modbusとは】RTU/ASCII/TCPの違い
Modbus(モドバス)とは、Modicon社がPLC (プログラマブルロジックコントローラ) 用途に開発したシリアル通信プロトコルです。 通信方式はマスタ・スレーブ方式で、マスターからのクエリー(コマンド:通信の開始)とスレーブからの応答メッセージで通信します。
このように、通信プロトコルは規定されていますが、物理レイヤ(RS-232-C、RS-485、イーサネットなどの通信媒体)は規定されておらず、通信媒体の違いで主に以下の3つに別れます。
種別 | 概要 |
---|---|
Modbus/RTU | ●1byte(8bit)のデータをそのまま伝送(ASCIIより伝送効率が良いため、RTUが主流) ●エラーチェック:CRC法 |
Modbus/ASCII | ●1byte(8bit)のデータを2文字のASCIIコードに変換して伝送(RTUより伝送効率が悪い) ●エラーチェック:LRC法 |
Modbus/TCP | ●ModbusメッセージをTCP/IPネットワークに乗せて送信 ●マスタ/スレーブ通信だけでなく、1対1通信も可能 ●産業用イーサネットで最も一般的 |
【Modbus/RTU】データフレームの構成
項目 | 概要 |
---|---|
開始 | 3.5文字分のサイレントインターバル。 |
スレーブアドレス | 1byte。マスタが要求するスレーブアドレス(1~247)を表す。「0」はブロードキャストクエリを表し、ファンクションによって指定可能。 |
ファンクションコード | 1byte。要求の種類を示す。 |
クエリデータ | Nbyte。ファンクションに対応するデータフォーマットが定められている。 |
エラーチェック | Nbyte。CRCチェック法。 |
終了 | 3.5文字分のサイレントインターバル。 |
ファンクションコードの例
Modbus通信では、一般的に「コイル」「入力ステータス」「入力レジスタ」「保持レジスタ」の4種類のデータ領域に対してコマンドで読み書きします。
各データに対する読み書き用のファンクションコードは固定で用意されています。
固定で用意されたファンクションコード以外に、独自に定義したファンクションコードを使用することもできます。
ファンクションコード | 機能 |
---|---|
01 | コイル読み出し |
02 | 入力読み出し |
03 | 保持レジスタ読み出し |
04 | 入力レジスタ読み出し(Read Input Register) |
例えば、ファンクションコードが04の場合、マスタから送信される要求メッセージとスレーブから送信される応答メッセージのフォーマットは以下のようになります。
●マスタからの要求メッセージ
項目 | 概要 |
---|---|
0x00 | スレーブアドレス |
0x01 | ファンクションコード |
0x02 | 開始アドレス(上位バイト) |
0x03 | 開始アドレス(下位バイト) |
0x04 | レジスタ数(上位バイト) |
0x05 | レジスタ数(下位バイト) |
0x06 | CRC |
●スレーブからの応答メッセージ
項目 | 概要 |
---|---|
0x00 | スレーブアドレス |
0x01 | ファンクションコード |
0x02 | バイト数 |
0x03 | データ1(上位バイト) |
0x04 | データ1(下位バイト) |
0x05 | データ2(上位バイト) |
0x06 | データ2(下位バイト) |
︙ | ︙ |
0xN-2 | データN(上位バイト) |
0xN-1 | データN(下位バイト) |
0x0N | CRC |
【応用例】実機検証、プログラミング
Modbusの通信を実機検証、プログラミングした結果を以下にまとめました。
ライブラリ名 | 概要 |
---|---|
動作検証① | マスタ側はシミュレータソフト(Modbus_Tool)、スレーブ側は実機(温度湿度センサ:WTR10-E)でModbus/RTU通信テストを行いました。 |
動作検証② | マスタ側はシミュレータソフト(Modbus_Tool)、スレーブ側もシミュレータソフト(Modbus Slave)でModbus/RTU通信テストを行いました。 |
動作検証③ | マスタ側はシミュレータソフト(Modbus_Tool)、スレーブ側もシミュレータソフト(ModRSsim)でModbus/RTU通信テストを行いました。 |
libmodbus | C/C++言語向けのオープンソースライブラリ |
pymodbus | Python向けのオープンソースライブラリ |
【製品】Modbusシミュレータ、機器
製品名 | 概要 |
---|---|
Modbus Poll/Slave | Modbus Pollはマスターのシミュレータソフト、Modbus Slaveはスレーブのシミュレータソフトです。有償ソフトですが、起動後10分間は無料で使えます。 |
Diagslave Modbus Simulator | Windows/Linuxに対応したModbus slave/masterの無料ソフトです(ただしCUIアプリ)。 |

【情報処理入門】用語解説・資格試験対策まとめ
情報処理分野の用語・原理・資格試験対策について解説します。
コメント