modbus.parse_tcp

modbus.parse_tcp

modbus.parse_tcp

功能

解析 Modbus TCP 响应帧,校验 MBAP length 并提取常见响应字段。

语法

参数

参数类型必填默认值说明
dataBytes/Array/StringTCP 响应帧。

返回值

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

返回对象字段

字段类型必定存在说明
protocolString协议类型,固定为 tcp
transaction_idIntMBAP 事务编号。
protocol_idIntMBAP 协议编号,标准 Modbus TCP 通常为 0
lengthIntMBAP length 字段,表示 unit_id + pdu 的字节数。
valid_lengthBool输入字节长度是否和 MBAP length 精确一致。输入更长时仍按 MBAP length 解析当前帧。
unit_idIntMBAP 单元标识。
function_codeInt响应功能码。异常响应会带最高位,例如 0x83
exceptionBool是否为 Modbus 异常响应。
exception_codeInt/Empty异常响应的异常码;仅 exceptiontrue 时写入,响应中缺失异常码时为 empty
dataBytesPDU 中去掉功能码后的原始数据。异常响应时包含异常码字节。
byte_countInt读线圈、读离散输入、读保持寄存器、读输入寄存器响应中的数据字节数。其它响应不写入该字段。
coilsArray读线圈或读离散输入响应解析出的布尔数组。其它响应不写入该字段。
registersArray读保持寄存器或读输入寄存器响应解析出的 16 位无符号寄存器整数数组。其它响应不写入该字段。
addressInt写单个线圈、写单个寄存器、写多个线圈、写多个寄存器确认响应中的起始地址。其它响应不写入该字段。
valueInt写入确认响应中的数量或写入值。功能码 5/6 表示写入值,功能码 15/16 表示写入数量。

代码示例

注意事项

  • valid_length 表示输入长度是否和 MBAP length 精确一致;输入更长时仍按 MBAP length 解析当前帧。