- 1. 前言:Modbus Tests的痛,工程师都懂
- 2. 一、核心Funktion:为什么工程师都说好?
- 3. 1.1 三种Vereinbarung全覆盖
- 4. 1.2 BitteBefehl生成器
- 5. 1.3 AntwortMeldung生成器
- 6. 1.4 Nachrichten analysieren器
- 7. 1.5 历史记录
- 8. 1.6 Meldung结构可视化
- 9. 二、实战案例:工程师的真实使用Szene
- 10. 案例 1:LesenTemperatur-SensorDaten
- 11. 案例 2:批Quantität设置变频器Parameter
- 12. 案例 3:Tests上位机软件
- 13. 三、Techniken细节:工程师关心的
- 14. 3.1 CRC16 Prüfungen算法
- 15. 3.2 LRC Prüfungen算法
- 16. 3.3 Befehlseite问题
- 17. 3.4 Modbus TCP 的 MBAP 头
- 18. 四、用户反馈:工程师怎么说
- 19. 五、写在最后
- 20. 附录:使用方式
Modbus 工程师必备神器!RTU/TCP/ASCII Meldung生成Analyse器,效率提升 10 倍
还在手动Berechnung Modbus Meldung?这个Werkzeuge支持 RTU/TCP/ASCII 三种Vereinbarung,自动Anfrage generieren/AntwortMeldung,CRC/LRC Prüfungen、Nachrichten analysieren、历史记录一键搞定
前言:Modbus Tests的痛,工程师都懂
我做了 20 JahrIndustrielle Automatisierung,太懂 Modbus Tests的痛苦。
你是不是也经常遇zu这些情况?
Szene 1:手动BerechnungMeldung,容易错
要Lesen und halten Register,von der Station Adresse 01,Ausgang Adresse 40001,Anzahl 10 个
你拿着Rechner算:
- von der Station Adresse:01
- Funktionscode:03
- Ausgang Adresse:00 00(40001-1=40000=0x9C40,等等,不对…)
- Anzahl:00 0A
- CRC-Prüfung:???
算了一半,客户打Telefon.来,回来忘了算zu哪了
重新算,CRC 算出来不对
再算,还是不对…
Szene 2:收zuMeldung,不会Analyse
Geräte zurück.:
01 03 14 00 0A 00 0B 00 0C 00 0D 00 0E xx xx
你盯着看:
- 这是Funktionscode 03 的Antwort
- 14 是Anzahl der Bytes(20 Bytes)
- 但每个Registerwert是多少?
- Befehlseite是 AB 还是 BA?
Szene 3:三种Vereinbarung,搞混了
- RTU 用 CRC-Prüfung
- ASCII 用 LRC Prüfungen
- TCP 有 MBAP 头
一着急,用 RTU 的方式Analyse TCP Meldung,怎么都对不上
Szene 4:Tests记录,找不zu
昨天调好的Meldung,今天找不zu了
问同事要,同事说”我也忘了”
重新算,又花 1 小时
这些痛点,我都知道。
所以,我开发了这个 Modbus Meldung生成Analyse器。
它支持 RTU/TCP/ASCII 三种Vereinbarung,自动Anfrage generieren/AntwortMeldung。
不用手动Berechnung,不用记公式,点几下就生成。
一、核心Funktion:为什么工程师都说好?
1.1 三种Vereinbarung全覆盖
支持 Modbus 三种传输模式:
| Vereinbarung | Prüfungen方式 | 帧Das Format | 适用Szene |
|---|---|---|---|
| Modbus RTU | CRC16 | Binärsystem | Serielle Kommunikation(RS485/RS232) |
| Modbus ASCII | LRC | ASCII Text | 老旧Ausrüstung/调制解调器 |
| Modbus TCP | 无Prüfungen(TCP Garantie) | MBAP 头 +ADU | EthernetKommunikation |
一个Werkzeuge,搞定所有 Modbus TestsSzene。
1.2 BitteBefehl生成器
Funktion说明:
① 支持 12 种Funktionscode
| Funktionscode | Name | 用途 |
|---|---|---|
| 01 | Lesen Sie den Zustand | LesenSchalter!Quantität输出 |
| 02 | Lesen Sie getrennte Eingabe | LesenSchalter!Quantität输入 |
| 03 | Lesen Sie das Register | am häufigsten verwendet(模拟Quantität输出) |
| 04 | Eingangsregister lesen | 只读(模拟Quantität输入) |
| 05 | Schreiben Sie eine einzelne Schleife. | Schalter!控制 |
| 06 | Schreiben eines einzelnen Registers | Parameter设置 |
| 0F | Schreiben Sie mehrere Schleife. | 批QuantitätSchalter!控制 |
| 10 | Schreiben mehrerer Register | 批QuantitätParameter设置 |
| 17 | 读/Schreiben mehrerer Register | 同时读写 |
| 2B | LesenAusrüstung标识 | Ausrüstung信息查询 |
② Parameter配置
以Funktionscode 03(Lesen Sie das Register)为例:
von der Station Adresse:01(0-247) Funktionscode:03 Ausgang Adresse:0000(16. System或Das Dekimalsystem) Anzahl:0010(Lesen 10 ein Register.)
③ 自动生成Meldung
输入Parameter后,自动生成:
RTU 模式:
01 03 00 00 00 0A C4 0B │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ CRC niedrigBytes │ │ │ │ │ │ └──── CRC hochBytes │ │ │ │ │ └─────── Anzahl低Bytes │ │ │ │ └────────── Anzahlhohe Bytes │ │ │ └───────────── Ausgang Adresse低Bytes │ │ └──────────────── Ausgang Adressehohe Bytes │ └─────────────────── Funktionscode └────────────────────── von der Station Adresse
ASCII 模式:
:01030000000AFB │ │ │ │ │ └── LRC Prüfungen(FB) │ └───── Daten部Unterteilung(ASCII Codierung) └────────────────── Anfang符(:)
TCP 模式:
00 01 00 00 00 06 01 03 00 00 00 0A │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ Anzahl低Bytes │ │ │ │ │ │ │ │ │ └─────── Anzahlhohe Bytes │ │ │ │ │ │ │ │ └────────── Ausgang Adresse低Bytes │ │ │ │ │ │ │ └───────────── Ausgang Adressehohe Bytes │ │ │ │ │ │ └──────────────── Funktionscode │ │ │ │ │ │ └──────────────── Einheitenidentifikator(von der Station Adresse) │ │ │ │ │ └─────────────────── Länge(后续Anzahl der Bytes) │ │ │ │ └────────────────────── Protokoll-Bezeichner(0=Modbus) │ │ │ └───────────────────────── Transaktionsidentifikator低Bytes │ │ └──────────────────────────── Transaktionsidentifikatorhohe Bytes └─────────────────────────────────── MBAP 头(7 Bytes)
④ 特殊Funktionscode支持
Funktionscode 05(Schreiben Sie eine einzelne Schleife.):
- Schalter!Auswahl:Öffnen (ON) / Schließen (OFF)
- 自动转换为 FF00/0000
Funktionscode 0F(Schreiben Sie mehrere Schleife.):
- 线圈Anzahl输入
- 可视化Auswahl der Schleife(圆点Knopf)
- KlickenWechselnStatus(灰=OFF,蓝=ON)
- 自动BerechnungAnzahl der Bytes
Funktionscode 10(Schreiben mehrerer Register):
- Register.列表(可添加多个)
- 每ein Register.设置:
- Adresse(自动Berechnung)
- Datentyp(UINT16/INT16/UINT32/INT32/FLOAT)
- Befehlseite(AB/BA)
- Zahlenwert(Das Dekimalsystem输入)
- 自动转换为Registerwert
1.3 AntwortMeldung生成器
Funktion说明:
① 模拟AusrüstungAntwort
用于测试上位机软件(如Strukturen王、WinCC)或 PLC 程序。
② 支持正常Antwort和Ungewöhnliche Reaktion
正常Antwort(Funktionscode 03):
von der Station Adresse:01 Funktionscode:03 Anzahl der Bytes:20(10 ein Register.×2) Registerwert: - Reg 0: 10(0x000A) - Reg 1: 20(0x0014) - Reg 2: 30(0x001E) - ...
Ungewöhnliche Reaktion:
von der Station Adresse:01 Funktionscode:83(03+80) Ungewöhnlicher Code: - 01:Illegale Funktionen - 02:Illegale Datenadressen - 03:Illegale Datenwerte - 04:Ausfall aus der Station - 05:认可 - 06:从属Ausrüstung忙
③ Datentyp支持
支持多种Datentyp,自动转换:
| Typus | Anzahl der Bytes | 范围 | Befehlseite |
|---|---|---|---|
| UINT16 | 2 | 0-65535 | 固定 |
| INT16 | 2 | -32768~32767 | 固定 |
| UINT32 | 4 | 0-4294967295 | AB/BA |
| INT32 | 4 | -2147483648~2147483647 | AB/BA |
| FLOAT | 4 | IEEE 754 单精度 | AB/BA/CDAB/BADC |
Beispiel:
输入Dezimalwert:25.5(FLOAT Typus)
自动转换为Registerwert:
- Reg 0: 0x41CC(高 16 位)
- Reg 1: 0x0000(低 16 位)
1.4 Nachrichten analysieren器
Funktion说明:
① 粘贴Meldung,自动Analyse
收zuGeräte zurück.的Meldung,粘贴进去,自动Analyse:
输入(RTU 模式):
01 03 14 00 0A 00 0B 00 0C 00 0D 00 0E 7A 3B
自动Analyse:
┌─────────────────────────────────────┐ │ von der Station Adresse:01 │ │ Funktionscode:03(Lesen Sie das Register) │ │ Anzahl der Bytes:20(0x14) │ │ Daten内容: │ │ Reg 0: 0x000A = 10 │ │ Reg 1: 0x000B = 11 │ │ Reg 2: 0x000C = 12 │ │ Reg 3: 0x000D = 13 │ │ Reg 4: 0x000E = 14 │ │ CRC-Prüfung:7A3B ✓(Richtig.) │ └─────────────────────────────────────┘
② 支持三种VereinbarungAnalyse
- RTU:CRC16 Prüfungen
- ASCII:LRC Prüfungen
- TCP:MBAP 头Analyse
③ Fehler.检测
- CRC/LRC PrüfungenFehler.提示
- MeldungLänge异常提醒
- Illegale Funktionen码警告
1.5 历史记录
Funktion说明:
① 自动保存
每次生成的Meldung自动保存,包含:
- Meldung内容
- 生成Zeit
- Typ der Nachricht(Bitte/Antwort)
② 快捷Operationen
- Kopieren.:Eine KopieMeldung
- 微信Teilen:Senden Sie给同事
- Leeren:Beseitigung历史记录
③ Klassifizierung管理
- BitteBefehl历史
- AntwortMeldung历史
- Unterteilung别管理,清晰明了
1.6 Meldung结构可视化
Funktion说明:
生成的每个Meldung,都附带结构Analyse:
Beispiel(RTU Bitte):
┌─────────────────────────────────────┐ │ Meldung结构Analyse │ ├─────────────────────────────────────┤ │ von der Station Adresse (Slave Address): 01 │ │ Funktionscode (Function Code): 03 │ │ Ausgang Adresse (Start Address): 0000 │ │ Anzahl (Quantity): 000A │ │ CRC-Prüfung (CRC Check): C40B │ └─────────────────────────────────────┘
Beispiel(TCP Bitte):
┌─────────────────────────────────────┐ │ Meldung结构Analyse │ ├─────────────────────────────────────┤ │ Transaktionsidentifikator (Transaction ID): 0001 │ │ Protokoll-Bezeichner (Protocol ID): 0000 │ │ Länge (Length): 0006 │ │ Einheitenidentifikator (Unit ID): 01 │ │ Funktionscode (Function Code): 03 │ │ Ausgang Adresse (Start Address): 0000 │ │ Anzahl (Quantity): 000A │ └─────────────────────────────────────┘
二、实战案例:工程师的真实使用Szene
案例 1:LesenTemperatur-SensorDaten
Szene:
- Ausrüstung:某品牌Temperatur变送器
- Kommunikation:RS485(Modbus RTU)
- 需求:Lesen 10 个通道的Temperatur值
传统方式:
- 查手册:保持Register-Adresse 40001-40010
- 手动BerechnungMeldung:
- von der Station Adresse:01
- Funktionscode:03
- Ausgang Adresse:40001-1=40000=0x9C40
- Anzahl:10=0x000A
- CRC-Prüfung:手动算或用Online-Tools
- 用Serien-TestAssistenten.Senden Sie
- 收zuAntwort,手动Analyse
耗时:15-20 Unterteilung钟
使用Werkzeuge后:
- Öffnen Sie das Werkzeug,Auswahl Modbus RTU
- 输入Parameter:
- von der Station Adresse:01
- Funktionscode:03
- Ausgang Adresse:9C40
- Anzahl:10
- Klicken”Anfrage generierenBefehl”
- Kopieren.Meldung,Senden Sie
- 收zuAntwort,粘贴zuAnalyse器
- 自动Analyse出 10 个Temperatur值
耗时:2-3 Unterteilung钟
效率提升:6-10 倍
案例 2:批Quantität设置变频器Parameter
Szene:
- Ausrüstung:某品牌变频器
- Kommunikation:Modbus RTU
- 需求:批Quantität设置 20 个Parameter
传统方式:
- 逐个ParameterSchreiben eines einzelnen Registers(Funktionscode 06)
- 写 20 次,每次BerechnungMeldung
- 容易出错,重复劳动
使用Werkzeuge后:
- AuswahlFunktionscode 10(Schreiben mehrerer Register)
- 添加 20 ein Register.:
- Adresse:自动Berechnung
- Datentyp:Auswahl
- Zahlenwert:输入
- 一次生成Meldung
- Senden Sie,abgeschlossen.
耗时:从 1 小时 → 5 Unterteilung钟
案例 3:Tests上位机软件
Szene:
- 开发Strukturen王/WinCC 项目
- 需要模拟 Modbus Von der StationAusrüstung
- 测试上位机程序逻辑
使用Werkzeuge:
- 用AntwortMeldung生成器
- 设置模拟Daten
- Erstellen von ReaktionenMeldung
- Senden Sie给上位机
- 验证程序逻辑
好处:
- 无需真实Ausrüstung
- 可模拟各种异常
- 提高开发效率
三、Techniken细节:工程师关心的
3.1 CRC16 Prüfungen算法
Modbus RTU 使用 CRC16(循环冗余Prüfungen):
// CRC16 Berechnung(低Bytes在前)
function calcCRC16(bytes) {
let crc = 0xFFFF;
for (let i = 0; i < bytes.length; i++) {
crc ^= bytes[i];
for (let j = 0; j < 8; j++) {
if (crc & 0x0001) {
crc = (crc >> 1) ^ 0xA001;
} else {
crc >>= 1;
}
}
}
return crc; // 低Bytes在前
}
Beispiel:
Meldung:01 03 00 00 00 0A CRC:C4 0B(低Bytes在前) vollständig:01 03 00 00 00 0A C4 0B
3.2 LRC Prüfungen算法
Modbus ASCII 使用 LRC(纵向冗余Prüfungen):
// LRC Berechnung
function calcLRC(bytes) {
let sum = 0;
for (let i = 0; i < bytes.length; i++) {
sum += bytes[i];
}
const lrc = ((~sum) + 1) & 0xFF;
return lrc;
}
Beispiel:
Meldung:01 03 00 00 00 0A LRC:FB vollständig::01030000000AFB
3.3 Befehlseite问题
32 位Daten(UINT32/INT32/FLOAT)的Befehlseite:
| Befehlseite | Name | Beispiel(0x12345678) |
|---|---|---|
| AB | Big Endian | 12 34 56 78 |
| BA | Little Endian | 34 12 78 56 |
| CDAB | Mixed | 56 78 12 34 |
| BADC | Mixed | 78 56 34 12 |
Werkzeuge支持自动转换:
- AuswahlBefehlseite
- 输入Dezimalwert
- 自动转换为Registerwert
3.4 Modbus TCP 的 MBAP 头
Modbus TCP Meldung结构:
┌─────────────────────────────────────┐ │ MBAP 头(7 Bytes) │ ├─────────────────────────────────────┤ │ Transaktionsidentifikator(2 Bytes) │ │ Protokoll-Bezeichner(2 Bytes)=0 │ │ Länge(2 Bytes) │ │ Einheitenidentifikator(1 Byte)=von der Station Adresse │ ├─────────────────────────────────────┤ │ PDU(Funktionscode + Daten) │ └─────────────────────────────────────┘
Beispiel:
00 01 00 00 00 06 01 03 00 00 00 0A │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ Anzahl低Bytes │ │ │ │ │ │ │ │ │ └─────── Anzahlhohe Bytes │ │ │ │ │ │ │ │ └────────── Ausgang Adresse低Bytes │ │ │ │ │ │ │ └───────────── Ausgang Adressehohe Bytes │ │ │ │ │ │ └──────────────── Funktionscode │ │ │ │ │ │ └──────────────── Einheitenidentifikator │ │ │ │ │ └─────────────────── Länge(6 Bytes) │ │ │ │ └────────────────────── Protokoll-Bezeichner(0=Modbus) │ │ │ └───────────────────────── Transaktionsidentifikator低Bytes │ │ └──────────────────────────── Transaktionsidentifikatorhohe Bytes └─────────────────────────────────── MBAP 头
四、用户反馈:工程师怎么说
反馈 1:自动化工程师(5 Jahr经验)
“以前手动算 Modbus Meldung,经常算错。现在用这个Werkzeuge,点几下就生成,CRC 自动Berechnung,太方便了!效率至少提升 5 倍。”
反馈 2:电气工程师(10 Jahr经验)
“支持三种Vereinbarung,不用WechselnWerkzeuge了。特别是 TCP 的 MBAP 头,以前老是搞混,现在自动生成,不会错。”
反馈 3:PLC 工程师(8 Jahr经验)
“AntwortMeldung生成器很好用,模拟Von der StationAusrüstung测试 PLC 程序,无需真实Ausrüstung,开发效率提高很多。”
反馈 4:Tests工程师(3 Jahr经验)
“历史记录Funktion很实用,昨天调好的Meldung,今天直接Kopieren.,不用重新算。微信Teilen也很方便,发给同事一起Tests。”
五、写在最后
我做这个Werkzeuge,不是为了取代工程师。
而是为了解放人力。
让工程师不再手动BerechnungMeldung,不再记复杂的公式,不再为 CRC-Prüfung发愁。
让大家把Zeit花在更有价值的事情上:
- Das System架构设计
- 控制逻辑优化
- 现场问题解决
Werkzeuge不是敌人,而是帮手。
善用Werkzeuge的工程师,会淘汰不用Werkzeuge的工程师。
希望这个Werkzeuge能帮zumehr.同行。
附录:使用方式
使用方式 1:微信扫码

使用方式 2:Mikro-Suche
Suche nach”Modbus TestsAssistenten.”
关于Der Autor
20 JahrIndustrielle Automatisierung经验,待过Ausrüstung厂商、集成商、甲方。
现专注于Das industrielle Internet der Dinge、边缘Berechnung、智能控制。
欢迎交流:
- 📧 Mailbox.:support@modbus.cn
- 💬 微信群:扫码添加Assistenten.入群
如果觉得有用,欢迎 点赞 + 在看 + 转发 支持一下!
转发给mehr.电气工程师,一起用Werkzeuge提效!
Antwort veröffentlichen