Make it inspiring
 

Modbus

概要

モドバスは1980年代から長く利用されているプログラマブルロジカルコントローラー(PLC)向けのシリアル通信プロトコルです。仕様が公開され,ライセンスフリーなプロトコルのため、産業用電子機器の通信ではもっとも一般的な接続手段として、さまざまなアプリケーションで利用されています。

物理層についての定義はなく、Modbusプロトコルで定義されるのは通信プロトコルのみで、物理接続には主にEIA-485(RS485)のインフラが利用されます。シリアル接続のタイプには、Modbus ASCIIとModbus RTUの2種類があり、通信の際にはどちらのモードを使うかを選択します。一般にデータがコンパクトなバイナリー形式のRTUが利用されます。

Modbus プロトコルの開発と更新は、2004 年 シュナイダー エレクトリックが Modbus Organization に権利を譲渡して以来、Modbus Organizationによって管理されています。 Modbus Organization はModbus 準拠デバイスのユーザーとサプライヤーの団体であり、テクノロジーの継続的な使用を提唱しています

Modbusの通信はシングルマスターに対してマルチスレーブの構成で行います。1つのマスター(情報を要求する装置)だけがクエリー(通信の開始)を行うことができ、スレーブ機器(情報を提供する装置)はマスターから送られるメッセージに従い、指定された機能を実行して応答メッセージを返します。このマスターとスレーブという名称は表現が露骨なため、最近はマスター装置を情報を要求する装置としてクライアントと表現し、スレーブを情報提供する側としてサーバーと表現するようになりました。ここでは以下この表現を用います。

 

 

Modbusネットワークに繋がるノード(サーバー)はそれぞれに固有のアドレスをもち、クライアントは指定したアドレスのサーバーに対してクエリーを送ることができるほか、ネットワークにつながる全ての機器にブロードキャストクエリーを送ることができます。ブロードキャストのメッセージの場合サーバーは指定された命令を実行するのみで応答を返しませんが、固有のアドレスに送られるメッセージの場合、つまり自分へのメッセージの場合だけ応答を返します。

標準の Modbus ネットワークには、1 つのクライアントと最大 247 のサーバーがあり、それぞれに 1 ~ 247 の一意のサーバー アドレスが割り当てられます。クライアントはサーバーに情報を書き込むこともできます。

 

物理接続はRS485のインフラを利用し、RS485の規定に従います。そのためツイステッドペアのケーブルでクライアントからサーバーに接続した以降はディジーチェーンで複数のサーバーをつなぐ方式になります。

コマンド(クエリー)フォーマット

Modbus は機器の監視または制御およびデータ収集 の用途でよく使用されます。 データ型の多くは、リレーの駆動に使用されるラダー ロジックなど、工場のデバイスの産業用制御に基づいて名前が付けられています。シングル ビットの物理出力はコイルと呼ばれ、シングル ビットの物理入力はディスクリート入力と呼ばれます。

 

クライアントがサーバーに対して通信を行う場合、サーバーの固有アドレスを指定し、またファンクションコードと呼ばれるデータテーブルを指定し、それぞれのテーブル内のアドレス空間のアドレスを指定して、データを読み取るまたは書き込む方法を取ります。

下記はシンプルなクエリーメッセージの構成です。

メッセージの種類 サーバーID ファンクションコード   (テーブルのタイプ) 読み取るアドレスの場所 読み出すレジスターの数 エラーチェック16bit
例 0x01 0x04 0x01 0x01
解説 サーバー個々にIDがあり、ここでデータを取得したいターゲットのIDを指定します データを格納するテーブルは主に4種類あり、そのテーブルを指定 テーブルそれぞれにアドレス空間があり、どこのデータを読み出すのかを指定する レジスターを何個読み出すのか、その数を指定する

このメッセージに対してサーバーが応答するメッセージの例

メッセージの種類 サーバーID ファンクションコード        (テーブルのタイプ) データサイズ.    (バイト) データ上位 データ下位 エラーチェック16ビット
例 0x01 0x04 0x02 0x00 0xFE

下記、Modbusテストツールで通信を行なった例