Modpoll Modbusデバッグツールの完全ガイド:コマンドラインマスターシミュレータ入門からマスターまで

無料無料技术资料

这篇内容可直接阅读,适合用于基础学习和検索引流。

Modpoll Modbusデバッグツールの完全ガイド:コマンドラインマスターシミュレータ入門からマスターまで

Modpollとは?

Modpollは、proconXがFieldTalk ®プロトコルスタックをベースに開発したオープンソースのコマンドラインModbusマスターシミュレータである。Windows、Linux、QNXなどのオペレーティングシステム上で動作し、Modbusデバイスのデバッグ、プロトコルテスト、バッチデータ収集を行うエンジニアにとって最適なツールです。GUIを備えたModbus Pollとは異なり、Modpollは完全にコマンドラインパラメータで制御されるため、自動テストスクリプトやCI/CDフローへの統合に最適です。

公式ダウンロードアドレス:http://www.focus-sw.com/fieldtalk/modpoll.html

Modpollサポートされる機能

  • トランスポートモード:Modbus RTU(シリアルポート)およびModbus TCP(イーサネット)、RTU-over-TCPゲートウェイ経由の通信をサポート
  • 機能コードのカバーFC01
  • データ形式HEX、十进符号なし、十进符号付き、32ビット
  • エンディアン構成:Big-EndianとLittle-Endianの2つのエンディアンをサポートし、異なるメーカーのPLCデバイスに適応します。
  • ポーリングモード:シングルリードと連続ポーリングをサポートし、ポーリング間隔を自由に指定できる
  • 出力形式標準テキスト出力モードと16進RAW出力モードをサポート

Modpollのインストール

Windowsプラットフォームのインストール

公式サイトからWindows版のZIP圧縮パッケージをダウンロードして、解凍後に入手できます。modpoll.exe実行可能な文書です任意のディレクトリから簡単に呼び出すために、解凍ディレクトリをシステムのPATH環境変数に追加することをお勧めします。Windows 10/11ユーザーは、WSL経由でLinux版のModpollを直接使用することもできます。

Linuxプラットフォームのインストール

#Linuxバージョンをダウンロードする(例としてバージョン3.10)
wget http://www.focus-sw.com/fieldtalk/modpoll-3.10-linux-x86_64.tar.gz

#解凍する
-xzf modpoll-3.10-linux-x86_64.tar.gz

#ディレクトリへのアクセス
cd modpoll-3.10-linux-x86_64

#テストの実行
./ modpoll--バージョン

#オプション:グローバルコールを容易にするソフトリンクを作成する
sudo-s $pwd/modpoll /usr/local/bin/modpoll

ARM /Embedded Linuxインストール

Raspberry PiなどのARMデバイスで実行する必要がある場合は、公式サイトから対応するARMバージョンを選択するか、ソースコードからクロスコンパイルすることができます。proconXはarmhfやaarch64などのアーキテクチャ用のコンパイル済みパッケージを提供している。

Modpollコマンドラインパラメータの詳細

パラメータ意味の意味例:例
-mトランスポートモードtcp / rtu / ascii-m tcp
-aスレーブアドレスSlave ID-a 1
-rスタートレジスタ/コイルアドレスプロトコルアドレス-r 100
-c読み取り/書き込みのポイント数Count-c 20
-bボーレート(RTUモード)-b 9600
-p検証ビットnone / even / odd-p none
-tデータ型と表示形式-t 4:hex
-1継続的ポーリングモード-1
-oタイムアウト時間(秒)-o 3
-0アドレスは0から始まります既定のPLCアドレスは1から始まります-0

通常の実戦命令

1. Modbus TCPリードホールドレジスタ(FC03)

IPアドレス192.16 8.1.100、ポート502のデバイスから、スレーブアドレス1の保持レジスタ0-9(合計10個)を読み取ります。

modpoll -m tcp -a 1 -r 1 -c 10 192.168.1.100

輸出例:

-- Polling slave 1...
[1]: 1234
[2]: 5678
[3]: 0
[4]: 100

2. Modbus RTUシリアル通信

# Linuxプラットフォーム/dev/ttyUSB0
modpoll-m rtu-a 1-r 1-c 10-b 96 00-p none /dev/ttyUSB 0

WindowsプラットフォームCOM3
modpoll-m rtu-a 1-r 1-c 10-b 96 00-pなしCOM 3

3.継続ポーリングモード監視用

#500ミリ秒ごとにポーリング、無限ループ
modpoll -m t-a 1 -r 1 -c 20 - 1 192.168.1.100 500

#タイムスタンプ付きポーリングデータの出力
modpoll -m t-a 1 -r 1 -c 5 - 1 192.168.1.100 1000|行を読む; do
    echo "$date '+%H %M %S'$line"
Doneたった今

4.リードコイル状態FC01

#アドレス0から始まる8つのコイルを読み取る
modpoll -m t-a 1 -r 1 -c 8 -t 0 192.168.1.100

注意点:-t 0コイルの種類、-t 1離散的な入力、-t 3入力レジスタを表示し、-t 4保持レジスタを示す。

5.シングルレジスタへの書き込み(FC06)

#プロトコルアドレス0のレジスタ値を1234に書き込む
modpoll -m t-a 1 -r 1 192.168.1.100 1234

6. 32ビット浮動小数点数の読み込みFloat

多くの産業機器(温度トランスミッタ、トラフィック計など)は、IEEE 75 4 32ビット浮動小数点を格納するために2つの連続した16ビット保持レジスタを使用します。

#アドレス0から始まる2つのレジスタをfloat形式で読み込む
modpoll -m t-a1-r1-c2-t4 float 192.168.1.100

7.バルチ书き込みマルチレジスタFC16

#プロトコルアドレス0から始まり、100、200、30 0、400を順に書き込む。
modpoll -m t-a 1 -r 1 192.168.1.100 100 200 300 400

8.読み取りと書き込みの組み合わせ(FC23)

#アドレス0-4(5レジスタ)を読み取り、アドレス10-11を99,88に書き込む
modpoll-m tcp-a 1-r 1-c 5-w 11-q 2 192.168.1.100 99 88

自動テスト·スクリプトへの統合

Modpollのコマンドライン機能は、自動テストに最適です。完全なデバイス受け入れテストスクリプトを以下に示します。

#!/ビン/bash
# Modbusデバイスレジスタの読み書き受け入れテスト
#使用方法:./ modbus_test.shデバイスIP>

DEVICE_IP=${1-"192.168.1.100"}
パス=0。
FAIL=0です

echo "=== Modbusデバイス受入テスト==="
echo "ターゲット·デバイス$DEVICE_IP"
echo """

#テスト1 TCP接続
echo "[TEST1] TCPポート502接続"
if out 3 bash -c "echo/dev/t/$DEVICE_IP/502" 2/dev/null; then
    echo " [PASS]ポート502到達可能"
    PASS=$(PASS+1)
elseさん
    echo " [FAIL]ポート502に到達不能"
    FAIL=$FAIL+1
fiは

#テスト2読み出しホールドレジスタFC03
echo "[TEST2]機能コードFC03-“リードホールドレジスタ”
result=$(modpoll-m tcp-a 1-r 1-c 5-o 1 $DEVICE_IP 2 1)
if echo "$result"| grep-qE '[[0-9]+]'; then
    echo " [PASS] FC03は正常に動作します"
    PASS=$(PASS+1)
elseさん
    echo " [FAIL] FC03読み取りに失敗しました$result"
    FAIL=$FAIL+1
fiは

#テスト3ライトホールドレジスタFC06
echo "[TEST3]機能コードFC06-“シングル·レジスタ”
#現在値を読む
before=$modpoll -m t-a1-r1-c1-o 1 $DEVICE_IP 2>& 1| grep -oP /dev/null 2 2
#書き込みの確認
after=$modpoll -m t-a1-r1-c1-o1 $DEVICE_IP 2>& 1| grep -oP /dev/null 2 1
if ['$after'='999']; then
    echo " [PASS] FC06書き込み機能正常"
    PASS=$(PASS+1)
elseさん
    echo " [FAIL] FC06の書き込みに失敗しました予想された9999、実際の$after"
    FAIL=$FAIL+1
fiは

echo """
echo "===テスト結果$PASSパス、$FAIL失敗==="

Modpollと他のModbusツールの比較

  • Modbus Poll:Windows GUIツール、ビジュアル操作、手動デバッグに適しています。公式サイトwww.modbustools.com。
  • Modpoll純粋なコマンドラインツール、クロスプラットフォーム、スクリプト自動化とリモートデプロイメントに適し、完全に無料です。
  • pymodbusプログラミングが必要で、最も柔軟で、カスタムテストフレームワークの構築に適したPythonライブラリ。
  • QModMasterQtはクロスプラットフォームGUIツールを書いており、オープンソースで無料で、機能が比較的シンプルです。

よくある質問チェックガイド

接続タイムアウト

最初に使う。pingネットワーク層の接続を確認する。Modbus TCPでは、デフォルトでポート502が使用されます。telnet 192.168.1.100 502テストです。接続がすぐに切断された場合(タイムアウトではなく)、サーバーは接続を拒否し、ポートが開いていない可能性があります。応答を待っていない場合は、ファイアウォール傍受の可能性がある。

読み取り値はゼロです。

考えられる理由:駅の住所-a設定が実際のデバイスと一致しません。開始アドレス-rPLCアドレスからプロトコルアドレスへの変換エラー(PLCアドレス40001がプロトコルアドレス0に対応するなど);このレジスタが実際に設定されていないか、データが書き込まれていません。

RTUモードが例外/エラーを返した

ボーレート(-b)、データビット(固定8ビット)、チェックビット(-p:none/even/odd)、および停止ビットがスレーブデバイスと一致していることを確認します。RS-485配線は、A(+)/B(-)ラインシーケンスを反転できないことに特に注意してください。オシロスコープまたはロジックアナライザを使用してバス上の信号品質を確認します。

浮動小数点数の読み取り例外

32ビット浮動小数点数は、2つの16ビットレジスタの順序(エンディアン/ワードオーダー)を含む。メーカーによってABCD、CDAB、BADC、DCBAなどの順序が異なる場合があります。ModpollはデフォルトでBig-Endian浮動小数点形式を使用します。測定値が明らかに異常な場合(NaNや完全な誤差など)は、modpoll -t 4:hex元の16進値を見て、エンディアンを手動で計算してから構成を調整します。

概要まとめ

ModpollはModbusプロトコルデバッグツールチェーンに不可欠なスイスアーミーナイフです。その最大の利点は、軽量でクロスプラットフォームのコマンドラインドライバであり、シェルスクリプト、Pythonテストフレームワーク、CI/CDパイプラインにシームレスに統合できることです。組込みエンジニアがMCU Modbusスレーブを検証したり、オートメーションエンジニアがPLC 通信構成をデバッグしたり、QAエンジニアがModbusデバイスの自動受け入れテストを作成したりするなど、Modpollを習得することで効率が大幅に向上します。

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

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

エンジニア会員

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

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

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

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注