QModMasterはQtフレームワークに基づいて開発された無料でオープンソースのModbusマスターデバッグツールで、Modbus TCPとModbus RTUの2つのプロトコルをサポートし、内蔵のバスモニタ(Bus Monitor)はリアルタイムで元のHEXデータパケットを表示でき、産業オートメーションエンジニアがModbus機器をデバッグするために必要なツールです。この記事では、QModMasterのダウンロードインストール、インターフェイス操作、TCP/RTU接続設定、レジスタの読み書き、データフォーマット設定、バス監視、よくある問題のトラブルシューティングについて詳しく説明し、エンジニアがこの強力なModbusデバッグツールをすばやく習得できるようにします。
I. QModMasterの概要
1.1 QModMasterとは
QModMasterは、libmodbus通信ライブラリに基づいてQtフレームワークによって開発された無料のオープンソースのModbusマスターシミュレーションソフトウェアです。直感的なグラフィカルインターフェイスを提供し、コードを記述せずにModbusスレーブデバイスと通信テストを実行でき、読み書きコイル、ディスクリート入力、ホールドレジスタ、入力レジスタの4つの標準Modbusデータタイプをサポートしています。
1.2 核心功能特性
- デュアルプロトコルサポート:同时サポートModbus TCP(イーサネット(イーサネット))和Modbus RTU(シリアルポートRS485/RS232)
- 全機能コードカバー機能コード0 1 - 0 6、15、16などのすべての標準Modbus機能コードをサポートします。
- バスモニター Bus Monitor生のHEXパケットをリアルタイムで表示し、スレーブID、機能コード、データ負荷、CRCチェックを自動的に解析します。
- 複数のデータ形式10进数、16进数、符号付き/符号なし16ビット整数、32ビット整数、32ビット整数、32ビット
- 連続スキャン。:可設定扫描間隔,自动周期性読み取り設備のデータ
- クロスプラットフォームWindows、Linux、macOSオペレーティングシステムをサポート
- 完全に無料。:开源無料,无功能限制,无使用时长限制
- 軽量軽量化:単一ファイルグリーンバージョン、インストール不要、解凍すぐに使用
1.3他のModbusデバッグツールとの比較
| 工具 | オープンソースソース | TCP | RTUは | バスの監視 | データ形式 | 価格は |
|---|---|---|---|---|---|---|
| QModMaster | はい。 | サポート | サポートする。 | サポートする。 | Int/Float/Hex | 無料です。 |
| Modbus Poll | いいえ、いいえ | サポートする。 | サポートする。 | サポートする。 | 豊かな豊かさ | 支払い($129) |
| Modbus Slave | いいえ、いいえ | サポートする。 | サポートする。 | サポートする。 | 豊かな豊かさ | 支払い($129) |
| ModScan | いいえ、いいえ | サポートする。 | サポートする。 | サポートなし。 | 一般 | 支払いは |
| CAS Modbusスキャナ | いいえ、いいえ | サポートする。 | サポート | サポートなし。 | 一般に | 無料です。 |
| pymodbus REPL | 是 | サポートする。 | サポートする。 | サポートなし。 | コードコード。 | 無料です。 |
二、下载与インストール
2.1公式ダウンロードアドレス
- 公式サイトqmodmaster.com/
- SourceForge下载:https://sourceforge.net/projects/qmodmaster/
- GitHubのソースコードgithub.com/mirror/qmodmaster
2.2 Windowsインストール
# Windowsのインストール手順
1. https://sourceforge.net/projects/qmodmaster/を参照
2.“Download”をクリックして最新バージョンをダウンロードします通常はqmodmaster-x.x.x.zip
3.任意のディレクトリCToolsQModMasterなどに解凍します。
4. qmodmaster.exeをダブルクリックしてプログラムを起動する
5. VC++ランタイムが見つからない場合は、Microsoft Visual C++ Redistributableをインストールします。
# 注意:QModMasterはグリーンソフトウェアで、インストールは不要で、解凍することができます。
2.3 Linuxのインストール
# Ubuntu/Debianインストール依存関係
sudo apt-get updateをする
sudo apt-get install libqt5core 5a libqt5gui5 libqt5widgets5 libmodbus 5
#ダウンロードと解凍
wget https://sourceforge.net/projects/qmodmaster/files/latest/download-O qmodmaster.zip
unzip qmodmaster.zip-d qmodmaster
CD QModmaster
#実行します
chmod +x qmodmaster
./ Qmodmasterさん
#またはソースコードからコンパイル
sudo apt-get install qt 5-default libmodbus-dev
git clone https://github.com/mirror/qmodmaster.git
CD Qmodmaster
Qmakeは
makeする
sudo make installを実行
3.インターフェースの詳細
QModMaster主界面分为四个主要エリア,了解各エリア功能是高效使用的基础。
3.1 Menu Barの
| Menuメニュー | 機能性は |
|---|---|
| File | 新建连接、保存設定、加载設定、退出 |
| オプションオプション | Modbus TCPまたはModbus RTUモードを選択し、接続パラメータを設定する |
| Viewビュー | 表示/非表示Bus Monitor、設定データ表示格式 |
| 助けてください | 概要、バージョン情報 |
3.2ツールバーツールバー
- 接続/切断Modbusデバイスの接続/切断
- Read/Write:読み取りまたは書き込み操作を1回実行
- Scanスキャン連続スキャンモードのオン/オフ
- アイコンの設定:接続設定ダイアログをすばやく開く
3.3データ表示エリア
メイン領域には、レジスタデータが表形式で表示され、以下の列があります。
- アドレスアドレスレジスタアドレス(0ベース)
- Value Hex:16進値
- Value Dec:10進数の値
- Value Float:浮動小数点値(手動で有効にする必要があります)
- Description:説明ユーザー定義の説明
3.4 Bus Monitor(バス监视器)
下部領域には、QModMasterの最も強力な機能の1つであるリアルタイム通信パケットが表示されます。View → Bus Monitorを起動します。各レコードの内容:
- タイムスタンプタイム:ミリ秒までの正確な送受信時間
- 方向Tx(送信)またはRx(受信)
- オリジナルHEXデータ:完全なModbus ADUパケット
- 自動解析です。:スレーブID、機能コード、データフィールド、CRCチェックコード
4. Modbus TCP接続構成
4.1設定手順
# Modbus TCP接続の設定手順
1.オプション→ Modbus TCP..。
2.ポップアップしたダイアログボックスで次のように入力します。
- IPアドレス:デバイスのIPアドレス(例:192.168.1.100)
- Portポート番号、デフォルト502
- Slave IDスレーブアドレスUnit ID、通常は1
- Timeoutタイムアウト時間ミリ秒、デフォルトは1000
3. OKをクリックして保存
4.ツールバーのConnectボタンをクリックして接続を
5.接続が成功すると、ステータスバーに“Connected”と表示されます。
# 注意事項
- コンピュータと機器が同じネットワークにあることを確認する
- ファイアウォールを閉じるかポート502を解放する
- デバイス側でModbus TCP機能を有効にする必要があるデバイスもあります。
- Slave ID Unit IDは通常、プレーンTCPデバイスのは0または1で、
ゲートウェイを介してRTU機器を接続する場合、対応するRTUスレーブアドレスを記入する
4.2 TCP接続のトラブルシューティング
| 障害現象 | 考えられる原因 | チェック方法 |
|---|---|---|
| 接続タイムアウト | IPエラー/ネットワーク障害 | デバイスIPをpingし、ネットワークケーブルとスイッチを確認します |
| 接続拒否です。 | ポートエラー/サービスがしません | telnetでポート502をテストする:telnet 192.168.1.100 502 |
| 接続は成功したがデータなし | Slave IDエラー | Slave ID= 0,1,255を試して、デバイスマニュアルを見る |
| 背番号は0 2。 | 範囲外のアドレス | デバイスでサポートされているレジスタ·アドレス範囲の確認 |
| 背番号は0 1。 | 機能コード未対応 | デバイスが機能コードをサポートすることを確認する |
5. Modbus RTU接続構成
5.1ハードウェアの準備
Modbus RTU需要USB转RS485変換器です。(如CH340、FT232芯片的モジュール),将电脑的USB接口转换为RS485バス信号。
#ハードウェア配(USBから485モジュールへ)
USB-RS 485モジュールA端子--デバイスRS 485 A端子(D+ / + / 非反転)
USB-RS485モジュールB端子--デバイスRS485 B端子D-/ - /反転
USB-RS 485モジュールGND--デバイスGND(推奨接続、コモンモード干渉低減)
#ご注意
- A/Bラインは反転しないでください。反転すると応答がなくなります。
- バスの両端に120Ωの終端抵抗
- シールド付きツイストペアを使用したシールド層シングルエンドアース
- 複数のデバイスがバス上に並列に接続され、手をつないでデイジーチェーントポロジ
5.2ソフトウェアの構成
# Modbus RTU连接設定步骤
1. 插入USB转RS485変換器です。,在デバイスマネージャ(device manager)中表示COM口号
(Windows:デバイスマネージャ(device manager) → ポート(COM和LPT))
(Linux:ls /dev/ttyUSB* 或 /dev/ttyACM*)
2. 打开 Options → Modbus RTU...
3. 設定シリアルパラメータ:
- Port:COMポート番号,例如 COM3 或 /dev/ttyUSB0
- Baud Rate:ボーレート,必须与デバイス一致(9600/19200/38400/115200)
- Data Bits:データ·ビット,通常为 8
- Stop Bits:ストップ·ビット,通常为 1
- Parity:チェックビット,None/Even/Odd,必须与デバイス一致
- Slave ID:駅からの住所,1-247
- Timeout:タイムアウト時間,建议 1000-3000ms
4. 点击 OK 保存
5. 点击 Connect 连接
# 常见シリアルパラメータ组合
- 9600, 8, N, 1(最も一般的な)
- 9600, 8, E, 1(部分PLC)
- 19200, 8, N, 1
- 38400, 8, N, 1
- 115200, 8, N, 1(短距離·高速)
5.3 RTU接続のトラブルシューティング
| 障害現象 | 考えられる原因 | 解決策は |
|---|---|---|
| シリアルポート打不开 | COMポート占有/未搭載 | 他のシリアルポートソフトウェアを閉じてCH340ドライバを再インストールする |
| 完全に無反応。 | A/Bラインバック | A/Bラインの交換 |
| 完全に無反応。 | アドレスの誤り。 | デバイスのダイヤルスイッチまたはソフトウェア設定の表示 |
| CRCエラー | ボーレート/チェックビットの不一致 | シリアル·パラメータを項目ごとにチェックし、設備と完全に一致する |
| 時折の損失。 | 干渉/終端抵抗なし | バスの両端に120Ω抵抗、シールド線を使用 |
| データの文字化け | ストップビットの不一致 | 停止ビットが1か2かを確認する |
六、リードホールドレジスタ(機能コード03)
保持レジスタ(Holding Registers)はModbusで最も一般的に使用されるデータ型であり、関数コード03であり、アドレス範囲は通常40001 〜 49999(0 − basedアドレス0 〜 9998に対応)である。
#読み込みホールドレジスタ操作手顺
1.デバイスに接続されていることを確認しますステータスバーにConnectedが表示されます
2.メイン·インタフェースで読み取りパラメータを設定するには、次の手順に従います。
- スレーブID:スレーブアドレス(接続設定で設定されている場合は省略可能)
- Function Code“Read Holding Registers 03”を選択します。
- 開始アドレス:開始アドレス(0ベース、例:0)
- Quantity読取り数量(10など)
3. Read/Writeボタンをクリックして読み取りを実行します。
4.データテーブルに読み込まれたレジスタ値を表示
#アドレスの説明
- QModMasterは0ベースのアドレスを使用します(0から始まる)
- デバイスマニュアルの40001はQModMasterアドレス0に対応します。
- デバイスマニュアルの40010はQModMasterアドレス9に対応しています。
- 変换式QModMasterアドレス=マニュアルドレス- 40001
#例を挙げる
温度センサーデータの読み取り:
- マニュアルの説明:温度は40101で、2レジスタ、浮動小数点
- QModMasterの設定Start Address=100、Quantity=2
- 読み取り後のアドレス100と101は元の値を表示
- Floatビューに切り替えて実際の温度値を確認する
7.リードコイルと離散入力
7.1リードコイル(機能コード0 1)
#コイルの読み取りCoils-关数コード01
#コイルは読み書き可能なブール値で、アドレス範囲は00001- 0 9999です。
操作手順:
1.“Function Code”“Read Coils 01”
2.開始アドレス:開始アドレス(0ベース)
3. Quantity:読み取り数(最大2,000個)
4. Read/Writeを選択
5.各コイルのON/OFFを表に表示
#アドレスの変換
- マニュアル00001 → QModMasterアドレス0
- マニュアル00010 → QModMasterアドレス9
7.2離散入力の読み取り(機能コード0 2)
# 離散入力の読み取り(Discrete Inputs)- 機能コード02
# ショップ型入力是読み取り専用布尔量,アドレス範囲10001-19999
操作步骤:
1. Function Code 選択 "Read Discrete Inputs (02)"
2. Start Address:開始アドレス
3. Quantity:読み取り数
4. 点击 Read/Write
# 典型用途
- 読み取り开关ステータス、按钮ステータス、限位开关
- 読み取りデバイス运行/故障ステータス
- 読み取り门禁、センサーは触发ステータス
# アドレス変換
- 手册10001 → QModMasterアドレス0
- 手册10005 → QModMasterアドレス4
7.3入力レジスタの読み出し(コード04)
#入力レジスタの読み出しRegisters-コード04
入力レジスタは読み取り専用の16ビットデータで、アドレス範囲は300 01 ~ 39999です。
操作手順:
1.“コード选択”“Read Registers 04”
2. Start Address:開始アドレス
3. Quantity読取り数量
4. Read/Writeを選択
# 典型的な利用
- アナログ入力(AI)の読み取り:温度、圧力、トラフィック
- ADCサンプル値の読み込み
- デバイス内部ステータスパラメータの読み取り
#アドレスの変換
- マニュアル300 01 → QModMasterアドレス0
- マニュアル30100 → QModMasterアドレス99
8.書き込み操作
8.1単一コイルの書き込み(関数コード0 5)
#シングルコイルを書くForce Single Coil-ファンクションコード05
操作手順:
1.“Code选択”“Single Coil 05”
2. Start Address:コイルアドレス
3.データテーブルで対応するアドレス行を見つけました
4. Value 列をダブルクリックして、次のように入力します。
- 0 x FF 00はON(吸引)を意味します。
- 0 x 0000はオフを意味する。
5. Read/Writeを選択します
6.書き込み要求とデバイス応答をBus Monitorで確認
#ご注意
- QModMasterの書き込みコイルは0 x FF 00/0 x 0000を使用します。
Modbusプロトコル規格で定められた値
- 書き込みが成功すると、デバイスは同じ要求フレームをエコーする
8.2単一レジスタへの書き込み(関数コード0 6)
#単一レジスタへの書き込みPreset Single Register-機能コード06
操作手順:
1.“Function Code選択”“Write Single Register 06”
2. Start Address:レジスタのアドレス
3.データテーブル内の対応する行のValue 列をダブルクリックします
4.书き込む値を入力します10进数または16进数
5. Read/Writeを選択します
#例:温度の設定
- 温度設定値は40100、範囲0-100、分解能0.1
- 25.5°Cに設定するには、書き込み値=255
- 開始アドレス=99、値=255
- 書き込みをクリック。
8.3複数のコイルを書く(関数コード15)
#複数のコイルを書き込むForce Multiple Coils-機能コード15
操作手順:
1. Function Code選択“Write Multiple Coils 15”
2. Start Address:開始アドレス
3. Quantity書込み数量
4.各コイルの値をデータテーブルで1つずつ設定します(0 x FF 00/0 x 0000)
5. Read/Writeをクリックする
#ご注意
- 一度に最大1968個のコイルを書き込む
- すべてのコイル値が一度にデバイスに送信される
8.4複数のレジスタを書き込む(関数コード16)
# 複数のレジスタを書く。(Preset Multiple Registers)- 機能コード16
操作步骤:
1. Function Code 選択 "Write Multiple Registers (16)"
2. Start Address:開始アドレス
3. Quantity:写入数量
4. 在データ表格中逐个設定すべてのレジスタ。的值
5. 点击 Read/Write 一括書き込みき込み入
# サンプル:批量設定PID参数
- P在40200,I在40201,D在40202
- Start Address=199, Quantity=3
- 分别設定P=100, I=50, D=20
- 点击写入,一次性更新三个参数
IX.データフォーマット
QModMasterサポート多种データ表示格式,経由 View 菜单切换。正确設定データ格式是解读設備のデータ的关键。
9.1サポートされるデータ形式
| 格式 | 説明書は | 適用可能なシーン |
|---|---|---|
| Unsigned Int 16 | 16ビット符号なし整数(0-65535) | ステータスワード、カウント、生ADC値 |
| タグ:Int 16 | 16ビット符号付き整数(-32 7 6 8 ~ 32 7 6 7) | 温度、圧力などが负になり得る量 |
| Unsigned Int 32 | 32ビット符号なし整数(2レジスタ) | カウント数、累積量 |
| タグ:Int 32 | 32ビット符号付き整数(占21つのレジスタ) | 大規模なシミュレーション |
| フロート32 | IEEE 75 4単精度浮動小数点数(2レジスタ) | 温度、圧力、トラフィックなどの物理量 |
| ヘックスは | 16進プリミティブ値 | デバッグ、プロトコル解析 |
| Binaryより | 二进制位表示 | ステータスワードのビットごとの解析 |
9.2 浮動小数点数表示方法
#32ビット浮動小数点数を見る
1. 2つの连続する保持レジスタを先に読み込む(コード03).
2.表示メニューを開く
3.“Float”または“32-bit Float”を选択
4.データテーブルは自動的に隣接する2つのレジスタを
1つの浮動小数点数としての結合
#浮動小数点数の順序
浮動小数点数の格納順序は、デバイスによって異なる場合があります。
- ABCDビッグエンディアンreg[0]=上位16ビット、reg[1]=下位16ビット最も一般的
- CDABワードスワップreg[0]=下位16ビット、reg[1]=上位16ビット
- DCBAリトルエンディアン完全反転
Floatが明らかに間違った値を表示した場合(NaN、sumableなど)、
説明エンディアンが一致しないため、次のことが必要です。
1.電卓を使用した手動変換検証
2.またはModbus Pollなどの他のツールを使用してエンディアンを切り替える
3.記録デバイスの正しいエンディアン、その後の開発で使用
10.バスモニターの詳細
Bus MonitorはQModMasterの最も貴重なデバッグ機能であり、バス上で送信される生のパケットを表示し、エンジニアが通信問題を特定するのに役立ちます。View → Bus Monitorを起動します。
10.1 データパケットは解析サンプル
#Modbus RTUパケットの例
送信リクエストの送信(Tx):スレーブ1の保持レジスタ0 - 9を読み込む
Tx 01 03 00 00 00 0A C5 CD
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ ‥ CRCチェックローバイト
│ │ │ │ │ │ │ 6...CRCチェックハイバイト
│ │ │ │ 6---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
│ │ │ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
│--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
######################
ゞ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
受信応答(Rx):ステーションから10個のレジスタ値を返す。
Rx 0 1 0 3 14 0 0 6 4 0 0 C 8 0 1 2 C 0 1 90 0 1 F 4 0 2 5 8 0 2 BC 0 3 20 0 3 8 4 0 3 E 8 7 B 6 E
│ │ │ │
レジスタ0値= 0 x 0 0 64 = 100
│ │ │ │ │ │ ┃ ― ―バイト数= 20(10レジスタ× 2バイト)
│ ‥ ‥ ― ―機能コード0 3
6---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#Modbus TCPパケットの例
TCPモードはRTUよりもMBAPヘッダ(7バイト)が多い
Tx: 00 01 00 00 00 06 01 03 00 00 00 0A
│ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ 数量= 10です。
│ │ │ │ │ │ │ │ ── ── ── ── ── ── ― ― ― ― ― ― ― ―開始アドレス= 0
│ │ │ │ │ │ │ │ │ │ │ │ ── ── ── ── ── ── ── ── ── ── ──機能コード03
│ │ │ │ │ │ │ │ │ │ │ │ │ ― ― ― ― ― ― ― ― ― ― ― ― ―スレーブID = 1
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ― ― ― ―長さ= 6バイト長さ= 6バイト長さ= 6バイト長さ=
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
│ = 0
≪ ≪トランザクションID | Transaction ID | emdw ≫ = ≪リクエスト応答の照合に使用| Transaction ID = 1 | emdw ≫
10.2異常応答の解析
Modbus例外応答形式
#関数コード=元の関数コード+0 x 80
#例外コード= 1バイト
Rx 01 83 02C0 F1
│ │ │ │
│ │ │ CRCチェック| CRCチェック
│ │ │ │ │ │ │ ── ― ― ―例外コード= 0 2(不正なデータアドレス)
│-------例外関数コード= 0 x 83(元0 3 + 0 x 80)
6---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#通常の異常コード
0 1-Illegal Function:デバイスはこの機能コードをサポートしていない
02 - Illegal Data Address不正なデータアドレスアドレスが範囲外です。
03 - Illegal Data Value不正なデータ値不正な値を書き込む
04 - Slave Device Failureスレーブデバイスの障害:デバイスの内部エラー
05 - Acknowledge確認:承認済み、処理中
0 6-Slave Device Busy:後でもう一度試してください
#バスモニターの使い方
- 正確な時刻を表示するには、“Show Timestamp”をチェックします。
- TxとRxの時間差を比較して、デバイスの応答速度を計算する
- 例外応答時に例外コードを重視する
- Rxなしはデバイスが応答しない、配線とアドレスを確認
11.連続スキャンモード
#連続スキャンScan機能
1.読み取りパラメータの設定(機能コード、アドレス、数量)
2.ツールバーのスキャンボタンをクリックする(またはF 5を押す)。
3. QModMasterはで周期的にデータを読み込む
4.データテーブルでーたてーぶる最新値をリアルタイムで更新さいこうしんさいこうしん
5.もう一度スキャンを停止する。
#スキャン間隔設定
- Options →スキャン間隔の設定Scan Rate
- 共通間隔100ms、500ms、1000ms、2000ms
- 間隔が短すぎるとデバイスが応答できなくなる
- デバイスの応答速度に応じて調整される1000msから開始を推奨
#スキャンモードの利用
- センサーデータの変化をリアルタイムで監視
- デバイスの稼働状態の観察
- テスト機器の応答速度と安定性
- データのトレンドを記録する(スクリーンショットまたはサードパーティ製ツールとの併用)
#ご注意
- スキャン中に機能コードやアドレスを頻繁に切り替えないでください。
- RTUモードでのスキャン間隔は500ms以上
- 長時間スキャンすると機器が発熱することがあります。熱に注意
十二、実际の応用事例
12.1ケース1:温度湿度センサのデバッグ
#装置:RS 485温湿度トランスミッタ
#マニュアルのパラメータ:
# - 駅からのアドレス:1
# - ボーレート:96 00、8 N 1
# - 温度:300 01、16ビット符号付き整数、分解能0.1°C
# - 湿度:300 02、16ビット符号なし整数、分解能0.1% RH
# QModMaster操作:
1.オプション→ Modbus RTU → COM 3,96 00,8,N,1,Slave=1
2. Connectと接続
3. Function Code = Read Input Registers 04
4. Start Address = 0、Quantity = 2
5. Read/Write
6.結果を確認:
- アドレス0値=253 → 温度=25.3°C Signed Int 16
- 住所1値=652 → 湿度= 65.2% RH(符号なしInt 16)
7.スキャンをオンにして温度変化をリアルタイムに観察
12.2ケース2:制御リレーモジュール
# デバイス:8路Modbus继电器モジュール
# 手册参数:
# - 駅からの住所:2
# - ボーレート:9600, 8N1
# - 继电器1-8对应コイル0-7
# - 写コイル0xFF00=吸合,0x0000=断开
# QModMaster操作:
1. Options → Modbus RTU → COM3, 9600, 8, N, 1, Slave=2
2. Connect
3. 読み取り继电器ステータス:
Function Code = Read Coils (01)
Start Address = 0, Quantity = 8
Read/Write → 表示8路继电器当前ステータス
4. 控制继电器1吸合:
Function Code = Write Single Coil (05)
Start Address = 0
双击アドレス0的Value列,入力 FF00
Read/Write → 听到继电器吸合声
5. 控制继电器1断开:
Value改为 0000 → Read/Write
6. バッチ制御:
Function Code = Write Multiple Coils (15)
設定前4路为FF00,后4路为0000
Read/Write → 前4路同时吸合
12.3ケース3:周波数コンバータのデバッグ
機器:Modbus TCP周波数コンバータ
#マニュアルのパラメータ:
# - IP:192.16 8.1.50、ポート50 2
# - ステーションID:1
# - 動作周波数40001、16ビット整数、分解能0.01 Hz
# - 出力30001、16ビット整数、分解能0.1A
# - 40100、write 1= start、write 0= stop
# - 周波数設定40101、範囲0-5000 0.00-50.00Hz
# QModMaster操作:
1.オプション→ Modbus TCP → IP= 192.16 8.1.50、ポート= 50 2、スレーブ=1
2. Connectと接続
3.読み取り周波数:
FC=Read Holding Registers 03、Addr=0、Qty=1
値=2500 →周波数=25.00Hz
4.出力電流を読み取る:
FC=Read Registers 04、Addr=0、Qty=1
値=135 →電流= 13.5 A
5.周波数は30Hzです。
FC=Write Single Register 06、Addr=100
値= 300 0 →書き込み
6.周波数変換器の起動:
FC=Write Single Register 06、Addr=99
値=1 →書き込み
7.スキャン監視の開始
13.高度なスキル
13.1プロファイルの保存とロード
# 保存当前設定
File → Save As → 選択保存路径和文件名
設定文件包含:接続パラメータ、機能コード設定、データ格式、説明信息
# 加载設定
File → Open → 選択之前保存的設定文件
快速切换不同デバイス的デバッグ設定
# 建议
为每个项目/デバイス保存独立的設定文件,
命名格式:项目名_デバイス名_日期.qmm
例如:FactoryA_TempSensor_20260917.qmm
13.2アドレススキャンスキル
#デバイスレジスタアドレスがわからないのスキャン方法
方法1:広範囲に読み込む
- Quantity=125(Modbusの最大単一読み取り)を設定します。
- アドレス0から開始し、オフセットごとに125
- どのアドレスが正常に応答したかを記録する(非例外コード0 2)
方法2:バスモニターの観察
- スキャンを開き、広範囲に読み取る
- バスモニタで通常のデータを返すリクエストを確認する
- 例外コード02はアドレス範囲が存在しないことを示す。
方法3:類似の設備を参照
- 同じブランドの同じシリーズのデバイスのレジスタテーブルは通常似ています。
- 既知のアドレスでテストし、徐々に拡張する
#ご注意
- デバイスのフルアドレス空間ブルートフォーススキャンを実行しない
- 一部のデバイスは頻繁な例外要求に対して保護をトリガーする
- 推奨スキャン間隔500ms以上
13.3 Wiresharkとの連携
# Modbus TCPネットワークパケット解析
1. Wiresharkを開き、ネットワークカードを選択してパケットをキャプチャします。
2. QModMasterでの読み取りと書き込みの実行
3. Wiresharkのフィルタリング:modbus
4.完全なTCPパケットを見る
5. WiresharkがModbusプロトコルフィールドを自動的に解析
#シーンの適用
- ネットワーク遅延とパケット損失の分析
- 主な紛争の調査
- ゲートウェイプロトコル変換が正しいことを確認する
- Modbus TCPプロトコルの詳細
# RTUパック
- リスニング機能付きUSBからRS 485モジュールへの接続
- または専用のRS 485バスアナライザを使用する
- QModMasterのバスモニターはほとんどのシナリオで十分です。
14.よくある質問FAQ
Q1:QModMasterサポートModbus ASCII吗?
サポートはなし。QModMasterはModbus TCPとModbus RTUのみをサポートします。Modbus ASCIIは古いプロトコルであり、現在はほとんど使われていない。ASCI IプロトコルにはModbus Pollやその他のツールがあります。
Q 2:なぜすべての値が0なのですか?
考えられる原因:1アドレスエラー、未使用アドレスの読み取り; 2デバイスの電源が入らないか実行されていない; 3データ型の設定エラー、浮動小数点数が整数として表示される; 4スレーブIDが一致しない。回避策:バスモニターで正常な応答があるかどうかを確認し、機器マニュアルのアドレス表を確認します。
Q3 QModMasterはスレーブSlaveシミュレーションを行うことができますか?
ダメだよ。QModMasterは純粋なマスター Masterツールであり、スレーブデバイスのみアクティブに読み書きすることができます。スレーブをエミュレートするには、Modbus Slave(有料)またはpymodbusのサーバーサイド機能(無料)を使用できます。
Q 4:読み取り可能なレジスタは何個ですか?
Modbusプロトコルでは、一度に最大125個の保持レジスタ/入力レジスタ、2,000個のコイル/ディスクリート入力、最大123個のレジスタ/1968個のコイルへの書き込みが可能である。QModMasterはこの制限に従います。
Q 5:Windows 11でQModMasterがフラッシュする方法は?
試してみてください:①管理者として実行する;② VC++ランタイムの最新バージョンをインストールする;③右プロパティ→互換性→Windows 7互換モード;④最新バージョンをダウンロードする。
Q 6:複数のデバイスを同時に接続するには?
QModMasterシングル·インスタンスに接続できるデバイスは1つだけです。複数のQModMasterインスタンスを同時に開くことができ、それぞれが異なるデバイスまたは異なるスレーブアドレスに接続できます。RTUモードでは、複数のスレーブが同じバス上にある場合、スレーブIDを切り替えるだけです。
15.学習資源
- QModMaster公式サイトqmodmaster.com/
- SourceForgeダウンロードsourceforge.net/projects/qmodmaster/
- Modbusプロトコルの公式仕様modbus.org/specs.php
- libmodbusのドキュメントlibmodbus.org/documentation/
- Modbus TCPパケットキャプチャWireshark公式ドキュメント検索“Modbus”
- RS485ハードウェア設計ガイドラインTIアプリケーションノートSLVA 67 7
QModMaster作为一款無料开源的Modbusデバッグツール,凭借其直观的界面、强大的バス监视器和双协议サポート,成为工业自動化エンジニア不可或缺的デバッグ利器。掌握QModMaster的使用,能够快速验证デバイス通讯、トラブルシューティング协议問題、読み取り和写入レジスタのデータ,大大提高オンサイトデバッグ效率。建议配合デバイス手册和Bus Monitor功能,从简单的リードホールドレジスタ开始,逐步掌握すべて関数コードとエキスパートデバッグスキル。
VIP専用:QModMasterのチュートリアルと構成パッケージの使用
Qt+libmodbusグラフィカルデバッグツールの完全なチュートリアル:バスモニタ、RTU/TCP設定、3つの実用的なユースケース。
完全なコードをダウンロードしてロックを解除 30歳以上。 工程実戦パッケージ:デバッグスクリプト、速検表、プロジェクトテンプレート、検査ケース
VIPデータベースからダウンロード 月額9.9ドル/年間199ドル