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ゲートウェイ経由のCommunicationをサポート
- 機能コードのカバー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/modpollARM /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]: 1002. Modbus RTUシリアルCommunication
# 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 33.継続ポーリングモード監視用
#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 12346. 32ビット浮動小数点数の読み込みFloat
多くの産業機器(temperatureトランスミッタ、流量計など)は、IEEE 75 4 32ビット浮動小数点を格納するために2つの連続した16ビット保持レジスタを使用します。
#アドレス0から始まる2つのレジスタをfloat形式で読み込む
modpoll -m t-a1-r1-c2-t4 float 192.168.1.1007.バルチ书き込みマルチレジスタFC16
#プロトコルアドレス0から始まり、100、200、30 0、400を順に書き込む。
modpoll -m t-a 1 -r 1 192.168.1.100 100 200 300 4008.読み取りと書き込みの組み合わせ(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ツール、ビジュアルOperation、手動デバッグに適しています。公式サイト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)、およびStopビットがスレーブデバイスと一致していることを確認します。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を習得することで効率が大幅に向上します。
Leave a Reply