Modbusエンジニアは必須! RTU/TCP/ASCIIメッセージ生成パーサ、10 倍効率的

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

Modbusエンジニアは必須! RTU/TCP/ASCIIメッセージ生成パーサ、10 倍効率的

Modbusエンジニアは必須! RTU/TCP/ASCIIメッセージ生成パーサ、10 倍効率的

Modbusメッセージを手動で計算する?RTU/TCP/ASCI Iの3つのプロトコルをサポートし、リクエスト/レスポンスメッセージ、CRC/LRCチェック、メッセージParse、履歴をワンクリックで自動生成します。


前の記事:Modbusデバッグの痛み、エンジニアは知っている

私は産業オートメーションに20年間携わってきましたが、Modbusデバッグの痛みをよく知っています。

あなたもよくありますか?

シナリオ1:手動でメッセージを計算するとエラーが発生しやすい

保持レジスタを読み出すには、スレーブアドレス01、開始アドレス40001、Quantity 10個
計算機を使って:

  • 駅からのアドレス:0 1
  • 機能コード:0 3
  • 開始アドレス:0 0 0 0(40001-1=40000= 0 x 9 C 40など、正しくない。
  • サイズ:0 0 A
  • CRCチェック????

半分計算した後、顧客から電話があって、戻ってきてどこを数えたか忘れた
再計算、CRCは正しくない
再算,还是不对。。。。。

シナリオ2:メッセージを受信しても解決しない

機器の返却:01 03 14 00 0A 00 0B 00 0C 00 0D 00 0E xx xx
見てください:

  • これはコード03の応答です。
  • 14はバイト数(20バイト)
  • 各レジスタの値は何ですか?
  • エンディアンはABかBAか?

シナリオ3:3つの合意、混乱

  • RTUによるCRCチェック
  • ASCII LRCチェック
  • TCPはMBAPヘッダを持つ。

RTU方式でTCPパケットをParseしてもうまくいかない

シナリオ4:デバッグレコード、見つかりません

昨日用意した伝言が,今日は見つからなかった
同僚に尋ねると、“私も忘れていました。
再計算して1時間かかる

この痛みはminかっています

そこでこれを開発しましたModbusメッセージ生成パーサ

サポートします。RTU/TCP/ASCIIの3つのプロトコルリクエスト/レスポンスの自動生成。

手動計算も数式もなく、数回で生成されます。


コア機能:なぜエンジニアは良いと言うのか?

1.1 3つの協定をカバー

Modbusは3つの伝送モードをサポートする。

協定の締結検証方式の検証フレーム形式適用可能なシーン
Modbus RTUCRC16BinaryシングルシリアルCommunicationRS485/RS232
Modbus ASCIILRCASCIIテキスト古いデバイス/モデム
Modbus TCP検証なしTCP保証MBAPヘッダ+ADUイーサネットCommunication

すべてのModbusデバッグシナリオを処理する1つのツール。


1.2コマンドビルダーのリクエスト

機能の説明

12種類の機能をサポート。

関数コードの特徴名前は目的は
01コイル状態の読み取り読み取りスイッチ量出力
02離散入力の読み取り読み取りスイッチ量入力
03リードホールドレジスタ最もよく使用されるアナログ出力
04読み取り入力レジスタ読取り専用シミュレーション入力
05シングルコイルを書く。スイッチ制御
06単一レジスタの書き込みパラメータの設定
0F複数のコイルを書く。バッチスイッチ制御
10複数のレジスタを書く。バッチパラメータ設定
17複数のレジスタの読み取り/書き込み同時に読む。
2BデバイスIDの読み取りデバイス情報クエリ

②パラメータ設定

関数コード03(リードホールドレジスタ)を例にとると:

駅からのアドレス:0 1(0- 24 7)
機能コード:0 3
開始アドレス0000(16進数または10進数)
数:0010(10レジスタを読み込む)

③メッセージの自動生成

パラメータを入力すると、次のように自動的に生成されます。

RTUモード:

0 1 0 3 0 0 0 0 0 A C 4 0 B
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ ― ― ― ― CRCローバイト
│ │ │ │ │ │ ── ── ── ── ── ── CRCハイバイトCRC
│ │ │ │ │ │ │ ── ── ── ── ― ― ― ― ― ― ―
│ │ │ │ │ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
│ │ │ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
│ │ ‥ ‥ ‥ ‥ ‥ ‥ ‥ ‥ ‥ ‥ ‥ ‥アドレスハイバイト
│--------------------機能コード
ゞ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ASCIIモード:

0103000000AFB
│ │ │            │ │ │ │
│ │ │            LRC検証(FB)
│ │ │            WIT----データ部分(ASCIIコード)
└ ── ── ── ── ── ── ── ── ──起始符(:)

TCPモード:

0 0 0
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ ── ── ── ── ── ── ― ― ― ― ― ― ― ― ―
│ │ │ │ │ │ │ │ │ │ │ │----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
│ │ │ │ │ │ │ │ │ │ │ │----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ──
│ │ │ │ │ │ │ │ │ │ │ │----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
│ │ │トランザクション識別子ハイバイト
8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888

④ 特殊機能コードのサポート

関数コード05(単一コイルを書き込む):

  • スイッチの選択:ON/OFF
  • FF00/0000に自動変換

関数コード0F(複数のコイルを書き込む):

  • コイル数量入力
  • コイル选択を视覚化するドットボタン
  • タップ切り替え状態(グレー =オフ、ブルー =オン)
  • バイト数の自動計算

関数コード10(複数のレジスタを書き込む):

  • レジスタリスト(追加可能)
  • 各レジスタの設定:
    • 住所(自動計算)
    • データ型UINT16/INT16/UINT32/INT32/FLOAT
    • エンディアンAB/BA
    • 数値10進入力
  • レジスタ値への変换

1.3応答メッセージジェネレータ

機能の説明

①アナログ機器の応答

ホストコンピュータソフトウェア(Kingview、Win CCなど)またはPLCプログラムのテストに使用されます。

正常応答と異常応答のサポート

通常の応答(関数コード0 3):

駅からのアドレス:0 1
機能コード:0 3
バイト数:20(10レジスタ×2)
レジスタの値:
  - Reg 0 10 0x000A
  - Reg 1 20 0x0014
  - Reg 2 30 0x001E
  - ...

異常な反応:

駅からのアドレス:0 1
機能コード:83(0 3 +80)
異常なコード:
  - 0 1.違法な機能
  - 0 2:違法なデータアドレス
  - 0 3:違法なデータ値
  - 0 4:スレーブ機器の故障
  - 0 5.承認
  - 0 6:デバイスがビジー

データ型のサポート

のデータ型をサポートし、

タイプの種類Bytesの数範囲はバイトエンディアン
UINT1620-65535固定された
INT162-32768~32767固定された
UINT3240-4294967295AB/BA
INT324-2147483648~2147483647AB/BA
FLOAT4IEEE 75 4単精度AB/BA/CDAB/BADC

例:例

10进値を入力します25.5 FLOAT型

レジスタ値への変换:

  • Reg 0 0 x 41CC(上位16ビット)
  • Reg 1 0x0000(下位16ビット)

1.4メッセージパーサー

機能の説明

①メッセージ貼り付け、自動解析

デバイスから返されたメッセージを受信し、貼り付けて自動的にParseします。

入力(RTUモード):

01 03 14 00 0A 00 0B 00 0C 00 0D 00 0E 7A 3B

自動解析:

�������������
アドレス:0 1。                        │ │ │
機能コード:0 3(読み取り保持レジスタ)          │ │ │
サイズ:20(0 x 14)                  │ │ │
│データの内容:                          │ │ │
│ │ │   Reg 0 0x000A = 10                │ │ │
│ │ │   Reg 1 0x000B = 11                │ │ │
│ │ │   Reg 2 0x000C = 12                │ │ │
│ │ │   Reg 3 0x000D = 13                │ │ │
│ │ │   Reg 4 0x000E = 14                │ │ │
CRCチェック:7 A 3 B ✓(正しい)            │ │ │
└─────────────────────────────────────┘

3つのプロトコルをサポートする。

  • RTU:CRC16チェック
  • ASCII LRCチェック
  • TCP MBAPヘッダ

③エラー検出

  • CRC/LRC検证エラーヒント
  • メッセージの長さ異常警告
  • 不正な関数コード警告

1.5履歴書の作成

機能の説明

①自動保存

生成されたメッセージは自動的に保存されます。

  • メッセージの内容
  • 時間の生成
  • メッセージの種類(リクエスト/レスポンス)

②迅速なOperation

  • レプリケーションメッセージをコピーする。
  • マイクロシェア。同僚に送る。
  • 空にする:履歴の消去

③分類管理について

  • 要求コマンド履歴
  • 応答の履歴
  • 別々の管理、明確。

1.6メッセージ構造の可視化

機能の説明

生成された各メッセージには構造解析が含まれます:

例(RTUリクエスト):

�������������
│メッセージ構造のParse                        │ │ │
├─ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┤
│スレーブアドレスSlave Address 01        │ │ │
“ファンクションコード”Function Code 03          │ │ │
開始アドレスStart Address 0000      │ │ │
“Quantity”Quantity 000A               │ │ │
CRCチェックCRC Check C40B          │ │ │
└─ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┘

例TCP要求

�������������
│メッセージ構造のParse                        │ │ │
├─ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┤
トランザクション識別子Transaction ID 0001   │ │ │
│プロトコル識別子Protocol ID 0000      │ │ │
長さLength 0006                 │ │ │
“ユニット識別子”Unit ID 01            │ │ │
“ファンクションコード”Function Code 03          │ │ │
開始アドレスStart Address 0000      │ │ │
“Quantity”Quantity 000A               │ │ │
└─ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┘

第二に、実際のケース:エンジニアの実際の使用シナリオ

ケース1:temperatureセンサデータの読み取り

シーンはこちら

  • 機器:ブランドのtemperatureトランスミッタ
  • CommunicationRS485 Modbus RTU
  • 需要10チャネルの温度値の読み取り

伝統的な方法

  1. チェックマニュアル:保持レジスタアドレス40001-40010
  2. 手動計算メッセージ:
    • 駅からのアドレス:0 1
    • 機能コード:0 3
    • 開始アドレス:40001-1=40000= 0 x 9 C 40
    • Quantity:10= 0 x 000A
    • CRCチェック:手動またはオンラインツール
  3. シリアルポートデバッグアシスタントで送信
  4. 応答を受信し、手動で解決

時間がかかる15-20分。

ツールの使用後

  1. Modbus RTUを選択する
  2. 入力パラメータ:
    • 駅からのアドレス:0 1
    • 機能コード:0 3
    • アドレス:9 C 40
    • 背番号は10。
  3. “要求コマンドの生成”をクリックします。
  4. コピー、送信。
  5. 応答を受信し、パーサーに貼り付けます
  6. 10個のtemperatureを自動的にParse

時間がかかる2-3分。

効率の向上6 〜 10回


ケース2:周波数コンバータのパラメータを一括設定する

シーンはこちら

  • 機器:ブランドの周波数変換器
  • Communication:Modbus RTU
  • 需要20個のパラメータを一括設定

伝統的な方法

  1. パラメータごとに単一のレジスタを書き込む(関数コード0 6)
  2. 20回、毎回計算します。
  3. ミスや重複作業

ツールの使用後

  1. 選択機能コード10(複数のレジスタを書き込む)
  2. 20個のレジスタを追加:
    • アドレス:自動計算
    • データ型:選択
    • タグ:Input
  3. メッセージの生成。
  4. 送信、完了。

時間がかかる1時間から5分


ケース3:ソフトウェアのデバッグ

シーンはこちら

  • King View/Win CCプロジェクトの開発
  • アナログModbusスレーブデバイスが必要
  • ホストプログラム論理のテスト

ツールの使用

  1. Response Message Generatorについて
  2. シミュレーション·データの設定
  3. 応答メッセージの生成
  4. 上位機に送信
  5. 検証プログラムの論理

利点は

  • 本物の装備なし
  • 様々な異常をシミュレートできる
  • 開発効率の向上

技術的な詳細:エンジニアが気にする

3.1 CRC16チェック

Modbus RTUはCRC16(巡回冗長検査)を使用する。

// CRC16計算(下位バイトが先)
function calcCRC16 bytes {
  let crc = 0 x FFFF;
  for let i = 0; i b.; i++{
    crc ^=バイト[i];
    for let j = 0; j 8; j++{
      if crc 0x0001 {
        crc = crc1 ^ 0xA001;
      (エルゼ)
        CRC = 1;
      }
    }
  }
  return crc; //下位バイトが先行
}

例:例

メッセージ:0 1 0 3 0 0 0 0 0 0 A
CRC C 4 0B下位バイトが前面
フルサイズ:0 1 0 3 0 0 0 0 0 A C 4 0B

3.2 LRC検証アルゴリズム

Modbus ASCIIはLRC(垂直冗長検査)を使用します。

// LRC計算
function calcLRC bytes {
  sum = 0;
  for let i = 0; i b.; i++{
    sum +=バイト[i];
  }
  const lrc =~sum + 1 0xFF;
  LRCを返します
}

例:例

メッセージ:0 1 0 3 0 0 0 0 0 0 A
タグ:FB
フル01030000000AFB

3.3バイトオーダー問題

32ビットデータUINT32/INT32/FLOATのエンディアン

バイトエンディアン名前は例0 x 12345678
ABBig Endian12 34 56 78
BALittle Endian34 12 78 56
CDABMixed56 78 12 34
BADCMixed78 56 34 12

自動変換をサポートするツール:

  • エンディアンの選択
  • 10進値の入力
  • レジスタ値への変换

3.4 Modbus TCPのMBAPヘッダ

Modbus TCPメッセージ構造:

�������������
│ MBAPヘッダ(7バイト)                   │ │ │
├─────────────────────────────────────┤
│トランザクション識別子(2バイト)                │ │ │
│プロトコル識別子(2バイト)=0              │ │ │
│の長さ(2バイト)                      │ │ │
ユニット識別子(1バイト)=スレーブアドレス       │ │ │
├─────────────────────────────────────┤
│ PDU(機能コード+データ)                │ │ │
└─────────────────────────────────────┘

例:例

0 0 0
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ ── ── ── ── ── ── ― ― ― ― ― ― ― ― ―
│ │ │ │ │ │ │ │ │ │ │ │----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
│ │ │ │ │ │ │ │ │ │ │ │----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ──
│ │ │ │ │ │ │ │ │ │ │ │----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ― ― ― ― ― ― ―長さ(6バイト)
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
│ │ │トランザクション識別子ハイバイト
3---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ユーザーフィードバック:エンジニアが言うこと

フィードバック1:オートメーションエンジニア(経験5 year)

以前はModbusメッセージを手動で計算していました。今、このツールを使用して、数回クリックすると、CRCが自動的に計算され、とても便利です!効率は少なくとも5 倍です。"

フィードバック2:電気エンジニア(経験10 year)

“ツールを切り替えることなく、3つのプロトコルをサポートします。特にTCP MBAPヘッダは、以前は混乱していましたが、現在は自動的に生成され、間違いはありません。"

フィードバック3:PLCエンジニア(経験8 year)

応答メッセージジェネレータは非常に使いやすく、ステーション機器テストPLCプログラムをシミュレートし、実際の機器を必要とせず、開発効率が大幅に向上します。"

フィードバック4:デバッグエンジニア(経験3 year)

履歴機能は非常に実用的で、昨日調整されたメッセージは、再計算せずに今日直接コピーされます。WeChat共有も非常に便利で、同僚とデバッグします。"


5.最後に書く

エンジニアを置き換えるためではありません

人間を解放するためです

エンジニアが手動でメッセージを計算したり、複雑な数式を覚えたり、CRCチェックを心配したりする必要はありません。

より価値のあることに時間を費やす:

  • システムアーキテクチャ設計
  • 制御ロジック最適化
  • 現場での問題解決

道具は敵ではなく、ヘルパーです。

ツールを使うエンジニアはツールを使わないエンジニアを排除します

このツールがより多くの人々を助けることを願う。


付録:利用方法

使用方法1:マイクロチップ

 

Modbusエンジニアは必須! RTU/TCP/ASCIIメッセージ生成パーサ、10 倍効率的插图

方法2:マイクロ検索

Modbusデバッグアシスタントの検索


著者について

産業オートメーションの20 yearの経験、機器メーカー、インテグレーター、甲。

産業用モノのインターネット、エッジコンピューティング、インテリジェント制御に焦点を当てています。

交換へようこそ:

  • Centeraメールボックス:support@modbus.cn
  • サブグループ:アシスタントを追加する

役に立つなら歓迎します。見る+見る+送る応援して!

より多くの電気エンジニアに転送し、ツールを一緒に改善!

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.