modbus.parse_rtu

modbus.parse_rtu

modbus.parse_rtu

功能

解析 Modbus RTU 响应帧,校验 CRC 并提取常见响应字段。

语法

参数

参数类型必填默认值说明
dataBytes/Array/String是无RTU 响应帧。

返回值

类型说明
Object返回 RTU 响应解析对象。字段见下方“返回对象字段”。

返回对象字段

字段类型必定存在说明
protocolString是协议类型,固定为 rtu。
unit_idInt是RTU 从站地址。
crcInt是响应帧尾部携带的 CRC16 值,按低字节在前解析。
crc_expectedInt是根据响应负载重新计算得到的 CRC16 值。
valid_crcBool是crc 是否等于 crc_expected。CRC 不匹配时仍会继续解析 PDU。
function_codeInt是响应功能码。异常响应会带最高位,例如 0x83。
exceptionBool是是否为 Modbus 异常响应。
exception_codeInt/Empty否异常响应的异常码;仅 exception 为 true 时写入,响应中缺失异常码时为 empty。
dataBytes是PDU 中去掉功能码后的原始数据。异常响应时包含异常码字节。
byte_countInt否读线圈、读离散输入、读保持寄存器、读输入寄存器响应中的数据字节数。其它响应不写入该字段。
coilsArray否读线圈或读离散输入响应解析出的布尔数组。其它响应不写入该字段。
registersArray否读保持寄存器或读输入寄存器响应解析出的 16 位无符号寄存器整数数组。其它响应不写入该字段。
addressInt否写单个线圈、写单个寄存器、写多个线圈、写多个寄存器确认响应中的起始地址。其它响应不写入该字段。
valueInt否写入确认响应中的数量或写入值。功能码 5/6 表示写入值,功能码 15/16 表示写入数量。

代码示例

注意事项

  • CRC 不匹配时不会丢弃数据,valid_crc 返回 false,脚本可自行决定是否丢弃。
  • 异常响应会返回 exception: true 和 exception_code。