Modbusとは?
Modbusプロトコル文字通りの意味ではModそして、Bus2つの部分、最初は1つです。busバスプロトコルは、I 2 CやSPIと同様に、バスはホスト、スレーブ、これらのデバイスが同じバス上にあることを意味する。

Modbusは単一ホスト、複数のスレーブ、最大247台のスレーブデバイスをサポートします。AboutについてModこのプロトコルはPLCコントローラで最初に使用されたため、正確にはModicon同社のPLCコントローラもそうです。Mod-Bus名前の由来。
その後、Modiconはシュナイダー(Schneider)に買収され、Modbusプロトコルは産業用コントローラ、HMI、センサに広く使用され、徐々に他のメーカーに受け入れられ、周辺機器と通信するための主流の通信プロトコルとなっています。

Modbusは7層OSI参照モデルデータリンク層には2種類あります。標準シリアルプロトコルとTCPプロトコルに基づいて、物理層は3線232、2線485、4線422、または光ファイバー、ネットワークケーブル、ワイヤレスおよびその他の伝送媒体を使用することができます。

Modbusプロトコルはリクエスト/Responseモードの相互作用プロセスでは、ホストは通信要求を開始し、スレーブはホストの要求に応答し、スレーブはホストの要求を受信していない場合、データを送信しない、スレーブ間の通信はありません。
ちょうど男の子が女の子を追いかけるように、男の子は率先して、女の子はあなたに応答し、女の子があなたを拾うのを待つことはできません。
現在はより権威的。Modbus公式規格ドキュメント2つあります
- modbus_application_protocol_specification_v1.1b3.pdf
- Modbusプロトコルベースの産業オートメーションネットワーク仕様GB-T 1958 2.1 - 2008.pdf
本やウェブ資料の90%はこの2つの文書から翻訳されていると言えます文書末取得標準文書ダウンロード方法。
4種類のデータ
Modbusプロトコルでは、読み書き操作を行うデータの種類は、読み書き属性とタイプによって以下の4種類に分類できると規定されている。
- 量入力
- コイルCoils 1ビット、読み書き
- 入力レジスタInput Registers 16ビット、読み取り専用
- 保持レジスタHolding Registers 16ビット、読み書き

3つの伝送モード
Modiconは1979年にシリアルModbus規格を発表し、その後ネットワークの普及により伝送速度の向上が求められ、1997年にはTCPネットワークをベースにしたModbus規格を策定しました。
一般的に2つの伝送モードに分けることができます。シリアル·リンクベースとベース。イーサネットTCP/IPはい。しかし、私は3つの伝送モードに分かれています。
- シリアルベースのModbus-RTUデータは、CRC-16_Modbus検証アルゴリズムを使用して、最も広く使用されているModbusプロトコルである標準シリアルプロトコルに従って符号化されます。
- シリアルベースのModbus-ASCIIすべてのデータはASCII形式であり、1バイトの生データは2文字で表現する必要があり、非効率でLRC検証アルゴリズムを使用します。
- ネットワークポートベースのModbus-TCPModbus-TCPはTCP/IPプロトコルに基づいており、ポート50 2データフレームは主にMBAP(メッセージヘッダ)+PDU(フレーム構造)の2つの部分で構成され、データブロックはシリアルリンクと一致しています。
したがって、Modbusプロトコルについて話すとき、RTU、ASCI I、TCPのどちらのモードかを決定するために、3つのモードはまだ非常に異なります。

いくつかのデバイスは複数のModbusモードをサポートし、いくつかのデバイスはそれらの1つしかサポートしません。例えば、最も一般的なPLC S 7 - 200はModbus RTUプロトコルのみをサポートし、Modbus ASCIIプロトコルをサポートしません。転送モードは同じであること。
実際の使用方法は、機器のマニュアルに従って選択します。
3種類の機能コード
Modbus関数コードは、ホスト要求データフレームに書き込まれ、ホストが読み取りまたは書き込み操作を行うか、コイル、ディスクリート、レジスタを読み取るか、単一のレジスタまたは複数のレジスタを書き込むかなどを決定し、ホストが要求するデータの種類を決定します。
主に3種類の機能コードを含む。共通機能コード、ユーザ定義機能コード、予約機能コード

最も一般的に使用されるのは、共通機能コードの4つの機能コードです:0 3/0 4/0 6/10

- 0 x 03:複数の保持レジスタを読み込む
- 0 x 0 4:入力レジスタの読み取り
- 0 x 0 6:単一のホールドレジスタを書き込む
- 0 x 10:複数の保持レジスタを書き込む
PLCは主にリレー接点を制御するため,PLC上でコイル(Coils)の読み書きも頻繁に行われる。
ここで必要。特別な注意点1つのポイントは、書き込みホールドレジスタは、0 x 0 6書き込み単一レジスタと0 x 10書き込み複数レジスタを区別する必要がありますが、読み取りホールドレジスタは、読み取りシングルと読み取り複数を区別しません。単一ホールドレジスタを読み取る必要がある場合、読み取り数を1に指定する0 x 0 3命令も使用されます。
データフレームフォーマット
Modbusフレームフォーマットは、3つの伝送モードのいずれであっても同じです。

主な内容:
- アドレスフィールド:1バイト、すなわちスレーブデバイスアドレス、通常1-247が有効アドレス、0がブロードキャストアドレスです。
- 関数コード:ホストが要求するデータの種類を示す1バイト。
- データ:Nバイト,レジスタアドレスやレジスタデータなどを含む.
- エラーチェック:データの冗長チェックの結果、CRCまたはLRC。
各伝送モードのデータフレームフォーマットについては、以下に説明します。
Modbus-RTUデータフレーム
Modbus-RTUデータフレームは、フレーム長が最大256バイトで、以下の4つの部分から構成される。
- 子ノードアドレス1バイト、范囲0 ~ 247
- 機能コード:1 byte
- データブロック:0 ~ 25 2バイト
- CRCチェック値:2バイト、下位8ビットが前

Modbus-RTUフレーム間隔:Modbus-RTUは2つのRTUメッセージフレーム間隔が3.5バイト以上である必要がある。

各メッセージフレーム内のバイト間隔が1.5バイト未満でなければ、受信は不完全とみなされます。

Modbus − RTUは、巡回冗長検査(CRC − Cyclical Redundancy Checking)アルゴリズムを用いて、メッセージフレームの全データを計算し、得られた検査値をメッセージフレームの末尾に付加し、下位が前にする。CRC-16_Modbusの計算方法を参照してください:CRC-16_Modbusチェックアルゴリズム
実際のリクエスト/レスポンス操作の例:
例1の例単一のレジスタに書き込む。0 1アドレスデバイス0 x 0105保持レジスタへの1データ書き込み:0 x 0190
ホスト送信:0 1 0 6 0 1 0 5 0 1 90 99 CB
応答:0 1 0 6 0 1 0 5 0 1 90 99 CB0 1はスレーブアドレス、0 6はシングルホールドレジスタへの書き込み、0 105はレジスタアドレス、0 190はレジスタへの書き込み値、99CBはCRCチェック値です。レジスタデータを1つ書き込むと,スレーブが応答するデータフレームとホストが送信するデータフレームが一致することが分かる.
例2の例複数のレジスタを書く。01アドレスデバイス0 x 0105,0 x 0106,0 x 0107アドレス保持レジスタに、3つのレジスタデータを書き込む:0 x 1102,0 x 03 0 4,0 x 056 6
ホスト送信:0 1 10 0 1 0 5 0 0 3 0 6 11 0 2 0 3 0 4 0 5 6 6 4 a 12
応答:0 1 10 0 1 0 5 0 0 3 9 1 F 5同様に、01スレーブアドレス、10ファンクションコードはのホールドレジスタを书き込むこと、0105はスタートアドレス、0003は3つのレジスタを书き込むこと、06はデータ量が6バイト、1102/0304/0566はそれぞれ3つのレジスタを书き込むこと、4a12はCRCチェック値を示す。
複数のレジスタを書き込む際に10関数コードを使用し,スレーブからのデータ応答も簡素化されていることがわかる.
例3の例単一レジスタを読み取ります。read 0 1アドレスデバイス0 x 0105はレジスタデータを保持する。
ホスト送信:0 1 0 3 0 1 0 5 0 0 0 1 95 f 7
従机:01 03 02 56 78 87 c 603は複数のレジスタを読み取り、0105は開始アドレス、0001は1つのレジスタを読み取ります。
02は2バイト、56 78はレジスタのデータを表す。
例4。複数のレジスタを読み込む。0 1アドレスデバイス0 x 0105、0 x 0106、0 x 0107アドレス保持レジスタ、合計3つのレジスタデータを読み取ります。
ホスト送信:0 1 0 3 0 1 0 5 0 0 3 14 3 6
応答:0 1 0 3 0 6 1 1 22 33 44 5 5 6 6 2 a 1803は複数のレジスタを読み取り、0105は開始アドレスを示し、00 03は3つのレジスタを読み取ります。
06は8バイト、11 22 33 44 55 66はレジスタのデータを表す。
Modbus-ASCIIデータフレーム
Modbus-ASCI I転送モードでは、各バイトはASCIIでエンコードされ、実際のメッセージでは1バイトは2つのASCII文字で送信されるため、Modbus-RTUモードよりも効率が悪い。
例えば、メッセージデータ0x5B = "5" + "B" = 0X35 + 0X42。
データフレームのフォーマットは次のとおりです。

ASCIIメッセージフレームからわかるように、ASCIIモードはフレームの開始(“:”)とフレームの終了フラグ(キャリッジリターン)を増加させ、ASCIIモードでのメッセージデータの各バイトは2文字をエンコードする必要があるため、アプリケーションレベルでのASCIIモードとRTUモードの互換性を確保するために、ASCIIモードデータブロックの最大長は252 x 2であるので、メッセージフレームの最大長は1+2+2+ 2 x 252 +2=513文字と計算することができ、メッセージフレーム内の文字間隔は1秒に達することができる。
Modbus-ASCI Iモード検証方式は、垂直冗長検査 LRC - Longitudinal Redundancy Checking
計算方法も比較的単純で、検証内容を加算して計算し、キャリーを無視し、2の補数に変換します。
例えば、Modbus-ASCIIモードでは、ホストはアドレス1のスレーブの0 x 40 5アドレスに0 x 1234という値を書き込むリクエストを送信します。
:010604051234AA<CR><LF>
つまり、
: 01 06 04 05 12 34 AA <CR><LF>
0 1はデバイスアドレス、0 6は単一のホールドレジスタへの書き込みを表しています。アドレスは0 x 0 405、データは0 x 1234、LRCチェック値は0 x AAです。実際に検証されるデータにはフレームヘッダとフレームテールは含まれません。
0xAA = LRC(01, 06, 04, 05, 12, 34)。

手動のLRC計算方法
元のデータの2文字を1バイトにし、2進数で加算します。0 1 + 0 6 + 0 4 + 0 5 +12+34= 0 x 56は、2の補数を計算します。
0x56 = 0101 0110
背番号は1010。
1:1010 = 0 x AA
または0 x 100- 0 x 56 = 0 x AAModbus-TCPデータフレーム
Modbus-TCPは4種類のパケットに基づいている。
- MODBUSリクエストは、クライアントがトランザクションを開始するためにネットワーク上で送信するメッセージです。
- MODBUSは、クライアント側で受信した応答情報を確認する
- MODBUSは、サーバが受信したリクエストメッセージです。
- MODBUSレスポンスは、サーバーから送信されるレスポンス情報です。
Modbus-TCPメッセージフレーム:

詳細については、州議会でご覧いただけます。GB-T 1958 2.1 -2008 Part 3:TCP/IP上でのModbusプロトコルの実装ガイド』を参照。
2種類のリクエスト
Modbusプロトコルでは、ホストはユニキャストとブロードキャストの2つのモードでスレーブに要求を行うことができます。
ユニキャストモード
ユニキャストモードでは、スレーブアドレスは1-247の範囲で一意でなければなりません。ホストは特定のアドレスで指定されたスレーブにアクセスし、要求データフレームを発行します。このデータフレーム機能は、データの読み取りまたは書き込みであることができ、スレーブが受信して処理が完了すると、読み取りまたは書き込みの成功を示す応答データフレームを返します。

ブロードキャストモード
ブロードキャストモードでは、ホストはすべてのスレーブに要求データフレームを発行し、すべてのスレーブがこのコマンドを処理し、ブロードキャスト要求に対してすべてのスレーブが応答操作を行う必要はありません。一般アドレス0はブロードキャストアドレスを示す。

しかし、ガスセンサデータブックを例に、ブロードキャストアドレスとして0 xFEを使用する特殊なデバイスもあります。デバイスアドレスを変更するために、ブロードキャストアドレスとして0 xFEを使用します。

したがって、実際の機器の使用マニュアルに従う。
Modbusアドレス規則

Modbus拡張バージョン
Modbusは、非同期伝送の使用であり、速度が遅く、アプリケーションには制限があります。特に、2つのPLCが互いにデータを交換する場合、伝送データ量が大きく、非同期モードはシステム全体の応答時間要件を満たすことができません。したがって、Modbus Plusが登場し、同期伝送技術を使用して、データフォーマットはModbusと同じで、このプロトコルはModicon独自であり、Modbusとは異なり、HDLCのような高速トークン回転を処理するための特別なコプロセッサが必要です。1Mbit/sのツイストペアを使用し、各ノードに変換絶縁デバイスを備えており、レベルトリガではなくエッジトリガを使用するデバイスです。Modbus Plusをコンピュータに接続するには特別なインタフェースが必要であり、通常はISA(SA85)、PCI、PCMCIAバスをサポートするボードである。
公式標準ドキュメントのダウンロード
現在、主に以下の2つの標準文書がある。
- Modbus Organizationが2012年4月に発表したもの:modbus_application_protocol_specification_v1.1b3.pdf
- 国家規格の策定《Modbusプロトコルベースの産業オートメーションネットワーク仕様GB-T 1958 2.1 - 2008.pdf》主に3部構成。
- GB-T 1958 2.1 -2008パート1:Modbusアプリケーションプロトコル
- GB-T 1958 2.1 -2008パート2:シリアルリンク上のModbusプロトコル実装ガイド
- GB-T 1958 2.1 -2008 Part 3:TCP/IP上でのModbusプロトコルの実装ガイド
发表回复