【Modbus通信とは】RTU/ASCII/TCPの違い・ライブラリ

シリアル通信の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アプリ)。
【情報処理入門】用語解説・資格試験対策まとめ
情報処理分野の用語・原理・資格試験対策について解説します。
ネットワーク
スポンサーリンク

コメント