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テストツールで通信を行なった例