Modbus通讯Fehler.常用检测方式

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

Modbus通讯Fehler.常用检测方式缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 一、Fehler.检测的三层架构
  2. 2. 二、Charaktere层:奇Zufällige Prüfungen
  3. 3. 2.1 原理
  4. 4. 2.2 BerechnungBeispiel
  5. 5. 2.3 奇Zufällige Prüfungen的局限
  6. 6. 三、帧层(一):LRC Prüfungen —— Modbus ASCII 模式
  7. 7. 3.1 LRC Was ist das?
  8. 8. 3.2 Modbus ASCII 帧结构
  9. 9. 3.3 LRC 算法
  10. 10. 3.4 LRC 的 C 语言实现
  11. 11. 3.5 LRC 的局限
  12. 12. 四、帧层(二):CRC-16 Prüfungen —— Modbus RTU 模式
  13. 13. 4.1 CRC-16 Modbus 的数学定义
  14. 14. 4.2 CRC-16 Modbus 算法流程(逐位Berechnung法)
  15. 15. 4.3 CRC-16 Modbus C 语言实现
  16. 16. 4.4 查表法 —— EingebettetAusrüstung上的标准实现
  17. 17. 4.5 验证你的 CRC 实现
  18. 18. 4.6 CRC 的检错能力
  19. 19. 五、应用层:Ungewöhnliche Reaktion码
  20. 20. 5.1 Ungewöhnliche Reaktion的帧Das Format
  21. 21. 5.2 标准Ungewöhnlicher Code速查表
  22. 22. 5.3 Ungewöhnlicher Code的实际Tests用法
  23. 23. 六、超时机制:Hauptstation的最后一道防线
  24. 24. 七、vollständig排障流程

Quelle:Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft

本文:Modbus 通讯Fehler.的检测与诊断:从奇Zufällige PrüfungenzuUngewöhnlicher Code的vollständig体系 · Der Autor:Technisches Team von Modbus · 发布于 2026-07-01

摘要:Das Modbus-Protokoll的Fehler.检测Unterteilung为三个层次——Charaktere级的奇Zufällige Prüfungen、帧级的 LRC/CRC-Prüfung、以及应用层的Ungewöhnliche Reaktion码和超时机制。本文逐一拆解每种检测方式的工作原理、算法实现(含可Betrieb的 C/Python 代码)和实际Tests用途,并给出vollständig的Ungewöhnlicher Code速查表和排障流程。关键词:Modbus CRC、LRC Prüfungen、奇Zufällige Prüfungen、Modbus Ungewöhnlicher Code、Modbus Fehler.检测、CRC16 Modbus。


在 RS-485 总线上传输一个 Modbus 帧,就像在嘈杂的车间里喊话——喊出去的是 01 03 00 00 00 01,对端收zu的可能变成了 01 03 00 00 00 03。一个比特翻转,Temperatur读数就从 25°C 变成 26°C,或者某台阀门「为什么不动」的原因就埋在这里。

Modbus 从 1979 Jahr诞生就带着一套Unterteilung层Fehler.检测机制:每个Charaktere用奇Zufällige Prüfungen挡住比特Fehler.,整帧Daten用 CRC(RTU 模式)或 LRC(ASCII 模式)兜底,应用层再通过Ungewöhnliche Reaktion码告诉Hauptstation「你的Bitte有问题」。这三层机制配合超时重发策略,构成了 Modbus 在Industrie-Standort存活近五十Jahr不倒的可靠性基础。

坦率说,Modbus 的Fehler.检测不是密码学级别的——CRC16 不能防篡改,LRC 对连续偶数位Fehler.可能漏检。但在一个 9600bps、几十米 RS-485 总线的物理环境下,这些机制已经够用了。它们的价值不在于理论完美,而在于实现简单、Berechnung开销低——一个 8 位单片机用不zu 100 Bytes的代码就能abgeschlossen. CRC16 Berechnung。


一、Fehler.检测的三层架构

Modbus 串行Kommunikation的Fehler.检测Unterteilung成三个层级,从上zu下覆盖整个Kommunikation栈:

应用层:Ungewöhnliche Reaktion码 + 超时重发
   ↓
帧层  :CRC-16(RTU)或 LRC(ASCII)
   ↓
Charaktere层:奇Zufällige Prüfungen(Even/Odd/None)

Charaktere层保护每个Bytes的传输Richtig.性——一个 UART 帧里的 8 个Datenplatz加上一个Prüfstand.,硬件自动abgeschlossen.Prüfungen。

帧层保护整条 Modbus 消息的vollständig性——von der Station Adressezu最后一个DatenBytes,Alles参与Berechnung。如果帧Prüfungen不通过,从Ausrüstung静默丢弃这条消息,不回复任何内容。

应用层处理「物理层没问题,但逻辑上有问题」的情况——比如你Bitte的FunktionscodeAusrüstung不支持、Register-Adressenicht existiert.、Daten值超出范围。这些Fehler.通过Ungewöhnliche Reaktion码告知Hauptstation。

三层各司其职,但Tests的时候工程师更容易看zu应用层的Ungewöhnlicher Code,而忽略了物理层的奇Zufällige PrüfungenFehler.——因为奇Zufällige PrüfungenFehler.在从Ausrüstung硬件层面就被丢弃了,你根本看不zu。


二、Charaktere层:奇Zufällige Prüfungen

2.1 原理

奇Zufällige Prüfungen是在每个 UART Charaktere帧中附加一个Prüfstand.,使得整个帧中「1」的总数为奇数(Seltsame Tests,Odd)或偶数(Zufällige Prüfungen,Even)。

Modbus 的Charaktere帧定义因模式而异:

模式Anfang位DatenplatzPrüfstand.Stoppen Sie Platz总位数
RTU(有Prüfungen)181111
RTU(无Prüfungen)180211
ASCII171110

注意 RTU 无Prüfungen时用 2 个Stoppen Sie Platz来凑总位数——这是硬性要求,很多人在配置Serienparameter时选了 No Parity 但忘了把Stoppen Sie Platz从 1 改成 2,ErgebnisKommunikation不稳定但又不至于完全不通,非常难查。

2.2 BerechnungBeispiel

取一个Bytes:11000101。Von denen 1 的个数是 4(偶数)。

  • Zufällige Prüfungen → Prüfstand. = 0,保持 1 的总数为偶数(4 个)
  • Seltsame Tests → Prüfstand. = 1,使 1 的总数为奇数(5 个)

硬件 UART 在Senden Sie时自动Berechnung并填入Prüfstand.,Empfang时自动Prüfungen。如果Empfang端Prüfungen不通过,UART 硬件会标记一个奇Zufällige PrüfungenFehler.(Parity Error),但不会自动丢弃Daten——要不要丢弃由软件决定。

2.3 奇Zufällige Prüfungen的局限

奇Zufällige Prüfungen只能检测奇数个比特Fehler.。如果传输中恰好翻转了 2 个比特,奇偶性不变,Prüfungen通过,但Daten已经错了。在 RS-485 上,电磁干扰导致单比特翻转的概率远高于多比特同时翻转,所以奇Zufällige Prüfungen在实际中还是有用的——但它绝不是万能的。

Tests建议:如果你怀疑线路质Quantität有问题,用逻辑Unterteilung析仪抓 UART 帧看每个Charaktere的奇Zufällige PrüfungenFehler.标记。Die SerieAssistenten.(如 SSCOM)可以显示奇偶Fehler.次数,这个计数器如果一直在涨,说明你的物理线路有电磁干扰问题——可能是电缆不屏蔽、和变频器走zu一个桥架里了、或者终端电阻没接导致信Nr.反射。


三、帧层(一):LRC Prüfungen —— Modbus ASCII 模式

3.1 LRC Was ist das?

纵向冗余Prüfungen(Longitudinal Redundancy Check,LRC)是 Modbus ASCII 模式使用的帧Prüfungen算法。它是一个 8 位(1 Byte)的Prüfcode,位于帧的末尾,Prüfungen范围是von der Station AdressezuDatenzone的所有Bytes,不包括帧头(冒Nr. :)和帧尾(回车换行符 CR/LF)。

3.2 Modbus ASCII 帧结构

:   01  03  21  02  00  02  D7  CR  LF
│   └─────────┬────────────┘   │
帧头       LRC Prüfungen范围      LRC码

一个vollständig的 Modbus ASCII BitteFrame:

:0103020002F8rn

3.3 LRC 算法

算法极其简单——三步:

  1. 将Adresse码zuDatenzone的所有Bytes相加求和
  2. 取和的低 8 位(模 256)
  3. 取其补码(256 减去这个值,或者按位取反后加 1)

Beispiel:Meldung : 01 03 21 02 00 02

求和:0x01 + 0x03 + 0x21 + 0x02 + 0x00 + 0x02 = 0x29
低 8 位:0x29
补码:256 - 0x29 = 0xD7
LRC Prüfcode = D7

vollständig帧为:: 01 03 21 02 00 02 D7 rn

3.4 LRC 的 C 语言实现

/**
 * Berechnung Modbus ASCII LRC Prüfcode
 * buf: 需要Prüfungen的Daten(从Adresse码zuDatenzone的所有Bytes)
 * len: Anzahl der Bytes
 * 返回值: 1 Byte LRC Prüfcode
 */
unsigned char LRC(unsigned char *buf, unsigned short len)
{
    unsigned char lrc = 0;
    while (len--) {
        lrc += *buf++;
    }
    // 取补码:256 - lrc,等效于 (-lrc)
    return (unsigned char)(-lrc);
}

用 Python 验证:

def calc_lrc(data: bytes) -> int:
    """Berechnung Modbus ASCII LRC Prüfcode"""
    return (256 - (sum(data) & 0xFF)) & 0xFF

# 测试
msg = bytes([0x01, 0x03, 0x21, 0x02, 0x00, 0x02])
lrc = calc_lrc(msg)
print(f"LRC: 0x{lrc:02X}")  # 输出: LRC: 0xD7

3.5 LRC 的局限

LRC 只能检测zu一定比例的Fehler.。如果两个Bytes的同一个比特位同时翻转(比如Bytes A 的Die 3 位从 0 变 1,Bytes B 的Die 3 位从 1 变 0),求和Ergebnis不变,LRC Prüfungen通过。这也是为什么 Modbus RTU 使用更强的 CRC-16 而不是 LRC——RTU 模式用于BinärsystemDaten传输,对可靠性要求更高,而 ASCII 模式主要用于Tests和兼容老Ausrüstung。


四、帧层(二):CRC-16 Prüfungen —— Modbus RTU 模式

4.1 CRC-16 Modbus 的数学定义

Modbus RTU 使用 CRC - 16 - Algorithmus,Parameter如下:

ParameterWert
宽度16 位
生成多项式0x8005(x¹⁶ + x¹⁵ + x² + 1)
实际运算多项式0xA001(0x8005 位反转形式)
初始值0xFFFF
输入Bytes反射
输出 CRC 反射是(最终Ergebnis高低Bytes交换)
输出Unterschiedlich oder值0x0000

这里的「位反转」是 CRC Parameter体系中很容易搞混的概念。Modbus 的Berechnung实际上是按位处理的、从 LSB 方向移位,使用反转多项式 0xA001,Berechnungsergebnisse自然就是反转的——所以最终不需要再做一次全局反转,只需要高低Bytes交换。Senden Sie时低Bytes在前,hohe Bytes在后。

4.2 CRC-16 Modbus 算法流程(逐位Berechnung法)

逐位Berechnung虽然慢,但能让人看清每一步发生了什么:

  1. 预置 16 位 CRC Register.为 0xFFFF
  2. 将Meldung的Die一个Bytes与 CRC Register.的低 8 位Unterschiedlich oder,Ergebnis存回 CRC Register.
  3. CRC Register.右移 1 位,最高位补 0,检查移出的最低位
  4. 移出位 = 1 → CRC Register.与 0xA001 Unterschiedlich oder;移出位 = 0 → 不做Operationen
  5. 重复步骤 3~4,共 8 次(处理完一个Bytes的 8 个位)
  6. 重复步骤 2~5,处理Meldung中下一个Bytes
  7. 所有Bytes处理abgeschlossen.后,CRC Register.的低Bytes在前、hohe Bytes在后,即为 CRC-16 Prüfcode

4.3 CRC-16 Modbus C 语言实现

/**
 * Berechnung Modbus RTU CRC-16 Prüfcode(逐位Berechnung法)
 * buf: 需要Prüfungen的Daten(从Adresse码zuDatenzone的所有Bytes)
 * len: Anzahl der Bytes
 * 返回值: 16 位 CRC 值(低Bytes在前)
 */
unsigned short CRC16_Modbus(unsigned char *buf, unsigned short len)
{
    unsigned short crc = 0xFFFF;
    unsigned short i, j;

    for (i = 0; i < len; i++) {
        crc ^= buf[i];               // 步骤 2
        for (j = 0; j < 8; j++) {    // 步骤 3~5 循环 8 次
            if (crc & 0x0001) {
                crc = (crc >> 1) ^ 0xA001;  // 移出位为 1
            } else {
                crc >>= 1;                  // 移出位为 0
            }
        }
    }
    // 注意:Modbus CRC Senden Sie时低Bytes在前
    return crc;
}

4.4 查表法 —— EingebettetAusrüstung上的标准实现

逐位Berechnung每个Bytes要做 8 次循环,对Eingebettet MCU 开销太大。工程上用的是查表法,预先Berechnung 256 个Bytes的 CRC 值,每Bytes只做一次查表 + 一次Unterschiedlich oder + 一次移位。

高位表查表法(am häufigsten verwendet):

/* CRC hoch位表 */
static const unsigned char auchCRCHi[] = {
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    /* ... vollständig 256 项,此处省略 */
};

/* CRC niedrig位表 */
static const unsigned char auchCRCLo[] = {
    0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
    0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
    0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
    /* ... vollständig 256 项,此处省略 */
};

unsigned short CRC16_Modbus_Table(unsigned char *buf, unsigned short len)
{
    unsigned char crcHi = 0xFF;
    unsigned char crcLo = 0xFF;
    unsigned short index;

    while (len--) {
        index = crcLo ^ *buf++;
        crcLo = crcHi ^ auchCRCHi[index];
        crcHi = auchCRCLo[index];
    }
    return (crcHi << 8) | crcLo;
}

vollständig的高低位表共 512 Bytes,可直接从 Modbus-Protokollspezifikation附录中抄过来,Modbus.org V1.1b3 规范的Die 40 页给出了vollständig的Beispiel表。

4.5 验证你的 CRC 实现

用已知Meldung测试:

Meldung: 01 03 00 00 00 01
Richtig.的 CRC: 84 0A(低Bytes在前)

验证步骤:
crc = 0xFFFF
crc ^= 0x01 → 0xFFFE
  bit0=0, crc>>1 → 0x7FFF
  bit1=1, (0x3FFF) ^ 0xA001 → 0x9FFE
  ...
最终 crc = 0x0A84
Senden Sie时低Bytes在前: 84 0A

整个MeldungSenden SieSequenz:01 03 00 00 00 01 84 0A

你也可以用 Modbus Poll 或 Modbus 小程序直接算 CRC,和你的代码实现交叉验证。

4.6 CRC 的检错能力

CRC-16 可以检测zu以下Fehler.Typus:

  • 所有单比特Fehler.
  • 所有双比特Fehler.(在Meldung不超过 32767 位的条件下)
  • 所有奇数个比特Fehler.
  • 所有突发Fehler.,Länge ≤ 16 位
  • 99.998% 的更长突发Fehler.

简单说,在 Modbus 帧通常不超过 256 Bytes的前提下,CRC-16 可以捕捉几乎所有物理层传输Fehler.。用 CRC-Prüfung通过的Daten帧,基本可以信任。


五、应用层:Ungewöhnliche Reaktion码

物理层和帧Prüfungen都通过了,从Ausrüstung收zu了一个vollständigWirksam的 Modbus 帧——但逻辑上是错的。这时候从Ausrüstung不是沉默,而是返回一个Ungewöhnliche Reaktion,告诉Hauptstation「你让我做的事我做不了」。

5.1 Ungewöhnliche Reaktion的帧Das Format

正常Antwort和Ungewöhnliche Reaktion的区别只有一个:Funktionscode的最高位

  • 正常Antwort:Funktionscode = 原始Funktionscode(如 0x03 Lesen Sie das Register)
  • Ungewöhnliche Reaktion:Funktionscode = 原始Funktionscode + 0x80(如 0x83),然后跟一个Bytes的Ungewöhnlicher Code

Beispiel:HauptstationBitte读Register. 01 03 00 00 00 01 84 0A

正常Antwort:01 03 02 00 7B F9 8D(读回 2 BytesDaten 00 7B

Ungewöhnliche Reaktion(假设Register existiert nicht.):01 83 02 C0 F1

  • 83 = 0x03(原Funktionscode)+ 0x80
  • 02 = Ungewöhnlicher Code,表示「Illegale Datenadressen」

5.2 标准Ungewöhnlicher Code速查表

Ungewöhnlicher CodeName含义Häufig原因
0x01Illegal Function非法的FunktionscodeAusrüstung不支持该Funktionscode(如给只读Ausrüstung发写指令)
0x02Illegal Data Address非法的DatenAdresseRegister-Adresse超出范围,或Ausgang Adresse+Anzahl越界
0x03Illegal Data Value非法的Daten值写入的值超出了Register.的允许范围
0x04Slave Device Failure从Ausrüstung故障从Ausrüstung在执行Operationen时发生了不可恢复的Fehler.
0x05AcknowledgeBestätigen(正在处理中)Bitte已接受但需要较长Zeit处理,Hauptstation应等待
0x06Slave Device Busy从Ausrüstung忙Ausrüstung正在处理另一个Befehl,暂时无法Antwort
0x07Negative Acknowledge否定Bestätigen从Ausrüstung不能执行该Funktion(通常是非特定Fehler.)
0x08Memory Parity Error内存奇Zufällige PrüfungenFehler.扩展文件区一致性Prüfungen失败

0x01 zu 0x04 是最容易遇zu的,0x05 zu 0x08 在常规 Modbus Ausrüstung上比较少见——很多Ausrüstung厂商只实现了前 4 个Ungewöhnlicher Code。

5.3 Ungewöhnlicher Code的实际Tests用法

「为什么Ausrüstung不回Daten?」排除物理层和 CRC 问题后,看Ungewöhnlicher Code:

收zu 0x01(Illegale Funktionen):你发了一Ein Gerät不支持的Funktionscode。最Häufig的Szene是——你用 0x03(Lesen Sie das Register)去读了一个只能通过 0x04(Eingangsregister lesen)访问的模拟Quantität输入。去翻Ausrüstung手册的Registerabbildung表,Bestätigen该Adresse对应的访问Funktionscode。

收zu 0x02(非法Adresse):你的Ausgang Adresse加上BitteAnzahl超出了Ausrüstung支持的Adresse范围。比如Ausrüstung只有 10 个保持Register.(Adresse 0-9),你Bitte了从Adresse 0 开始的 12 ein Register.——跨过了边界。解决方法:减小每次Bitte的Anzahl der Register,或者在读之前先用 0x11(报告Von der Station ID)BestätigenAusrüstungTypus。

收zu 0x03(Illegale Datenwerte):你要写入的值对Ausrüstung没有意义。比如Ausrüstung支持 0-100 的Daten范围,你写入了 200。或者写入时的DatenAnzahl der Bytes与Funktionscode要求的Länge不匹配。

完全没有Antwort:不是Ungewöhnlicher Code,而Was ist das?都没有。可能的原因:CRC Fehler.(从Ausrüstung静默丢弃)、帧间隔(3.5 个CharaktereZeit)没有Richtig.实现、Geräte Adresse不匹配。这时候需要用逻辑Unterteilung析仪抓总线,Bestätigen从Ausrüstung收zu了什么、UART 硬件上有没有奇Zufällige PrüfungenFehler.标记。


六、超时机制:Hauptstation的最后一道防线

Modbus 规范要求Hauptstation配置一个超时Zeit。在以下情况下,超时会触发:

  1. Hauptstation发出Bitte后,Von der Station在规定Zeit内没有任何Antwort
  2. Von der Station检测zu帧Fehler.(CRC/LRC 失败),静默丢弃帧,Hauptstation收不zu回复
  3. von der Station Adressenicht existiert.——Meldung发zu了空Adresse上

超时Zeit的设置有一个约束:必须größer als从Ausrüstung最长可能的AntwortZeit。Berechnung方式为:

超时Zeit > 传输延迟 × 2 + Von der Station处理Zeit

在 9600bps 下,一个典型的 Modbus RTU Bitte(读 1 ein Register.)约 8 Bytes = 64 位,传输Zeit = 64 / 9600 ≈ 6.7ms。Antwort约 7 Bytes = 56 位,传输Zeit ≈ 5.8ms。加上Von der Station处理Zeit(假设最慢 50ms),双向总Zeit约 6.7 + 50 + 5.8 ≈ 62.5ms。留一倍余Quantität,超时设 100-200ms 比较合理。

如果总线上有多个Von der Station,要把轮询最慢Die Ausrüstung(比如有些老 PLC 处理一个Bitte要 100ms)考虑进去。Modbus 规范建议的默认超时是 1 秒——这个值对于现代Ausrüstung偏大,但作为初始值启动Tests是稳妥的。


七、vollständig排障流程

当你面对「Modbus Kommunikation失败」时,按这个顺序逐层排查:

检查项Werkzeuge判断方法
物理层RS-485 接线(A/B、共地、终端电阻)万用表导通、总线空闲电平 ≥ 200mV
Charaktere层Serienparameter(Porter Rate、Datenplatz、Prüfstand.、Stoppen Sie Platz)逻辑Unterteilung析仪实测位宽 = 1/baud
Charaktere层奇Zufällige PrüfungenFehler.逻辑Unterteilung析仪 / Die SerieAssistenten.奇偶Fehler zählen = 0
帧层CRC-PrüfungModbus 小程序 / 自写代码Empfang CRC = Berechnung CRC
帧层帧间隔(≥ 3.5 CharaktereZeit)逻辑Unterteilung析仪帧间空闲 ≥ 3.6ms @ 9600bps
应用层von der Station AdresseAusrüstung手册 / 拨码Schalter!BitteAdresse = Von der Station实际Adresse
应用层Funktionscode + Adresse范围AusrüstungRegisterabbildung表Funktionscode和Register-Adresse在Ausrüstung支持范围内
应用层Ungewöhnliche Reaktion码Die SerieAssistenten. / 抓包Funktionscode最高位为 1 时检查Ungewöhnlicher Code
应用层超时抓包看Zeit戳AntwortZeit < 超时配置

特别注意:用 「01 03 00 00 00 01」 这类标准 Modbus Bitte去交互时,不要直接用 ASCII Charaktere串Senden Sie——必须Senden SieBinärsystem帧。初学者在Die SerieAssistenten.里用 ASCII 模式发了 0x31 0x30 0x33 0x30 0x30 0x30 0x30 0x30 0x30 0x31(ASCII Charaktere串的 “010300000001”),而不是 01 03 00 00 00 01 这 6 个Bytes。这个Fehler.几乎每个学 Modbus 的人都犯过。


CRC-Prüfung码的Richtig.Berechnung是 Modbus Kommunikation可靠的基石。但工程现场的问题九成不在 CRC 本身——在接线、在Parameter、在Adresse范围越界、在Funktionscode选错。CRC 更像一个安全网,在你说「Daten应该是对的」的时候给你信心。当Daten确实不对的时候,先查前面几层。

把这篇Artikel里的代码放zu你的工程里交叉验证一下,别指望网上随便抄一段 CRC 代码就能直接用——我见过太多因为Befehlseite搞反导致 CRC 永远Prüfungen不通过的案例。有兴趣可以翻一下 Modbus.org V1.1b3 规范的附录部Unterteilung,那里有 CRC 查找表的vollständigDaten和高低位两种实现方式的官方Beispiel。

有问题再聊。

Techniken术语(共 8 个)—— Klick auf展开
Modbus RTU基于串行链路的ModbusVereinbarung,使用BinärsystemCodierung和CRC-Test
Modbus ASCII使用ASCIICharaktere传输的ModbusVereinbarung,以冒Nr.开头、CR/LF结尾
FunktionscodeModbusFunktionscode指定读/写OperationenTypus,如01读线圈、03Lesen Sie das Register
Register.Modbus Register.存储Daten单元,Unterteilung线圈/离散输入/保持/输入Register.四类
PLC可编程逻辑Der Controller,Industrielle Automatisierung控制的核心Ausrüstung
Porter Rate串行Kommunikation每秒传输符Nr.数,Modbus RTU常用9600/19200
Die SerieBerechnung机与外部Ausrüstung进行串行Kommunikation的物理Schnittstelle
保持Register.Modbus 16位可读Schreiben von Daten,Adresse从40001开始
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Technische Dokumentation von Modbus 字数 7431 字 · 阅读约 19 Unterteilung钟 更新 2026-08-20 永久链接 https://www.modbus.cn/6525.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

《“Modbus通讯Fehler.常用检测方式”》 有 1 条Kommentare

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.