modbus.parse_tcp

modbus.parse_tcp

modbus.parse_tcp

功能

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

语法

参数

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

返回值

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

返回对象字段

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

代码示例

注意事项

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