Modbus RTU複数レジスタの書き込み

1.プロトコルの概要
Modbus RTUは、産業オートメーションにおけるデバイス間通信に使用されるシリアル通信プロトコルです。主な特徴はシンプルで安定性です。このモードでは、データはバイナリ形式で送信されます。
2.複数のレジスタを書く。
1つのデバイス(モータドライバやセンサなど)の複数のパラメータを変更する必要がある場合は、“複数のレジスタを書き込む”機能を使用できます。
3.リクエスト形式
標準的なModbus RTUが複数のレジスタに書き込む要求は以下の部分を含む。
- デバイスアドレス1バイト。通信するターゲット·デバイスを
- 関数コードの特徴1バイト、
0x10。 - 開始レジスタアドレス2バイト。最初に书き込むレジスタのアドレスを指定します。
- レジスタの数2バイト。书き込むレジスタの
- バイトカウント1バイト。これ以降に书き込むデータの
- データはは、书き込む必要のあるレジスタ数に応じて変化し、1レジスタあたり2バイトである。
- CRCチェックメッセージの整合性を検証するための2バイト。
4.例を挙げる
アドレスを指定したいとします。0x01レジスタアドレスからのデバイス書き込み0x3000スタート、連続した4つのレジスタ。書き込みたいデータは:0x1234,0x5678,0x9ABC,0xDEF0。
構築されたメッセージは:
01 デバイスアドレス 10 関数コード 30 0 0 開始レジスタアドレス 0 0 4。 - レジスタ数- 08 (バイト数、4レジスタ *2バイト/レジスタ) 12 3 4 5 6 7 8 9 A BC DE F 0(データ) ?? ?? (CRC検証、実際の値はcrc16-modbusを使用して計算する必要があります
CRCチェック値は、メッセージ全体(CRCを除く部分)に基づいて計算されることに留意されたい。Modbus RTUのCRCアルゴリズムを使用してこの値を取得し、メッセージの末尾に追加する必要があります。
5.送信して待つ。
メッセージが完了したら、適切なシリアル通信インタフェース(RS-485など)を介して送信し、スレーブデバイスからの応答を待ちます。レスポンスのフォーマットはリクエストと似ていますが、バイト数とデータ部分は含まれません。
嘉
嘉