Modbusユーティリティキット:RTU/TCPパーサ、シリアルスキャナ、コマンドラインテストテクニック

freeFree Technical Resource

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

Modbusユーティリティキット:RTU/TCPパーサ、シリアルスキャナ、コマンドラインテストテクニック

Modbusデバッグにおける“スイスアーミーナイフ”

Modbusデバイスの日常的なデバッグでは、Wiresharkパケットを開いたり、Pythonスクリプトを書いたりする必要はありません。16進メッセージのシーケンスをデコードしたり、Unknownのデバイスのレジスタ範囲をスキャンしたり、コマンドラインで読み書きリクエストをテストしたりするなど、1つの機能をすばやく検証する必要がある場合があります。この記事では、modbus.orgが推奨する最も軽量で実用的なModbusガジェットをまとめました。

Modbus RTU/TCPメッセージオンラインパーサ

シリアルアシスタントからModbusメッセージの文字列を受信したり、コードのデバッグ中にModbusバイナリデータを表示したりすると、そのデータの意味をすばやく知る必要があります。オンラインModbusメッセージパーサは最速のソリューションです-ソフトウェアをインストールする必要はなく、ブラウザが開いているときに使用できます。

オンラインModbus RTU Parser

推奨ツールCAS Modbus RTU Parser(チプキン·オートメーション·システムズ)

訪問者:store.chipkin.com/products/tools#modbus-rtu-parser

これは純粋なウェブツールです。16進Modbus RTUメッセージの列を貼り付けるだけです。

01 03 00 00 00 0A C5 CD

クリックすると、ツールが自動的に表示されます。

  • スレーブアドレスSlave ID = 1
  • ファンクションコード= 03 Read Holding Registers
  • 開始アドレス= 0
  • リクエスト数= 10レジスタ
  • CRCチェック= 0 x CDC 5(正しいことを確認する✓)

オンラインModbus TCP Parser

訪問者:store.chipkin.com/products/tools#modbus-tcp-parser

RTUバージョンと似ているが、MBAPヘッダ(Transaction ID、Protocol ID、Length、Unit ID)のParseが追加されている。以下のTCPメッセージを送信します:

00 01 00 00 00 06 01 03 00 00 00 0A

トランザクションID=1、プロトコル=Modbus、スレーブ=1、ファンクションコード= 0 3、開始アドレス=0、Quantity=10の結果となります。

Modbusデバイスアドレス空間スキャンツール

CAS Modbus Scanner

アドレスをダウンロード:store.chipkin.com/products/tools/cas-modbus-scanner

完全なレジスタマッピングマニュアルがないModbusデバイスを入手した場合、最も簡単な方法は“スキャン”です。Modbusスキャナを使用してデバイスのアドレス空間を横断し、どのアドレスが有効なデータを返したかを記録します。

使用方法は

  1. 接続方式の設定(TCP入力IP Port、RTU選択シリアルポート)
  2. スキャンするアドレス范囲を选択します0-100の小范囲を推奨
  3. スキャンするデータの種類を選択します:コイル、ディスクリート入力、ホールドレジスタ、入力レジスタ
  4. 開始スキャンをクリックして結果を確認
  5. 有効なデータを返すアドレスを記録する
  6. 機器実物と合わせて検証(物理量の変更,対応レジスタ変化の観察)

スキャン技術。

  • ほとんどのデバイスの設定と測定データがここにあるため、最初にホールドレジスタ(4 xxxx)をスキャンします。
  • アドレスが例外コード0 2(不正データアドレス)を返す場合、そのアドレスは無効です。
  • 0が返されても例外がない場合、値=0がtrueか、デバイスがアドレスを実装していないかを判断する必要があります(スキャンだけでは区別できません)。
  • 物理的な励起(加熱、ロータリーエンコーダなど)を変更した後、繰り返し掃引し、どのアドレス値が変化するかを確認します。

コマンドラインプロトコルテスト:modbus-cliトリック

特殊なツールに加えて、Modbusテストには多くの汎用コマンドラインツールが使用できます。

NetcatによるTCP接続のテスト

Modbus TCPデバイスがオンラインかどうかテストする
nc -zv 192.168.1.100 502

#“Connection to 192.168.1.100 502 port [tcp/*] succeeded!”と出力された場合オンラインで説明します

Pythonでの1行コマンドテスト

#pymodbusをインストールした後、1行のテストが保持レジスタを読み取る
Python 3-C“
from pymodbus.client import modbusTcpClient
c = ModbusTcpClient('192.16 8.1.100')
c.connect
= c.read_h
print 'Values' r.registers if not r.isError else rr
c. cl
"

xxdによるバイナリModbusデータのParse

#Modbusバイナリデータファイルがある場合は、xxdで確認できます。
xxd modbus_d.bin

#またはhexdumpフォーマットで表示する
hexdump -C modbus_dump.bin|ヘッド-20

Modbusプロトコル関数早見表

デバッグはしばしば機能コード対応表をチェックする必要がありますが、以下は一般的な機能コードのクイックチェックです。

関数コードの特徴名前はデータ型オペレーション·オペレーション
01 (0x01)Read Coilsコイル(0 xxxx)1-bitを読む
02 (0x02)Read Discrete Inputsショップ型入力(1 xxxx)1-bitを読む
03 (0x03)Read Holding Registers保持レジスタ(4 xxxx)16-bitを読む
04 (0x04)Read Input Registers入力レジスタ(3 xxxx)16-bitを読む
05 (0x05)Write Single Coilコイルコイルコイル1-bitを書く
06 (0x06)Write Single Registerレジスタを保持する。16-bitで書く
15 (0x0F)Write Multiple Coilsコイルコイルコイル書き込みは1ビット。
16 (0x10)Write Multiple Registersレジスタを保持する。16-bitの書き込み
23 (0x17)Read/Write Multiple Registersレジスタを保持する。読み取りと書き込みの組み合わせ

Modbus例外コードの高速チェック

異常コード。意味の意味よくある原因
01違法な機能コードデバイスは機能コードをサポートしていません。
02違法なデータアドレス要求されたアドレス範囲がデバイスの使用可能範囲を超えている
03不正なデータ値書き込みされた値が許容範囲外です
04スレーブ機器の障害デバイス内部エラー、要求を処理できません
05Confirm(ACK)リクエストは受理されたが処理に時間がかかる
06駅の設備が忙しいデバイスはビジーです。後で再試行してください。

概要まとめ

Modbusデバッグは毎回重いツールを必要としない。メッセージの迅速なデコードに適したオンラインパーサ、Unknownのデバイスのレジスタマッピングをリバースするスキャナ、自動テストに適したコマンドラインツール。これらの“ガジェット”をマスターすることで、Modbusデバッグの効率が2倍になります。問題が発生した場合は最も軽量なツールを使用し、詳細な分析が必要な場合はWiresharkのような重いツールを使用してください。

この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

Leave a Reply

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