尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Modbus TCP报文解析

Modbus TCP报文解析 Modbus TCP 协议组成MBAP 头 PDUMBAP Modbus Application Protocol HeaderModbus 应用协议头PDUProtocol Data Unit协议数据单元MBAP 固定 6 个字节3 个字段顺序有些是7个字节4个字段标准划分把从站号也划分到MBAP都没问题不用纠结字段偏移字段长度名称说明0-1Transaction ID2 字节事务标识符主站发多少从站回复就带回多少。用来匹配哪一条请求对应哪一条应答。多请求并发的时候靠这个区分。2-3Protocol ID2 字节协议标识符ModbusTCP 固定 00 004-5Length2 字节长度字段后面 PDU 部分一共有多少个字节。PDUN 字节字段长度说明从站号1字节从站站号功能码1字节功能码其他N字节比如读取“指定地址读几个”比如写入“指定地址写入总数写入业务数据”场景使用Modbus TCP 通讯 RFID1 读RFID到位标志表示RFID电子芯片是否进入读写头可交互范围内发送00 00 00 00 00 06 01 03 60 08 00 01序号数据含义第1、2字节00 00事务标识符第3、4字节00 00Modbus TCP 固定格式第5、6字节00 06代表报文后面还有6个字节即第7、8、9、10、11、12字节第7字节01从站站号第8字节03功能码读保持寄存器(读Word)第9、10字节60 08代表读RFID起始地址该地址存储到位信号第11、12字节00 01代表从起始地址开始读1个寄存器2个字节正常响应00 00 00 00 00 05 01 03 02 XX XX序号数据含义第1、2字节00 00事务标识符和请求报文保持一致第3、4字节00 00Modbus TCP 协议标识固定00 00第5、6字节00 05MBAP后续PDU长度代表后面还有5个字节7‑11字节第7字节01从站站号和请求一致第8字节03功能码读保持寄存器(读Word)第9字节02字节计数后面携带2字节1Word2Byte第10、11字节XX XX读到的寄存器值RFID到位标志例如0001表示芯片到位0000无芯片异常响应00 00 00 00 00 03 01 83 02序号数据含义第1、2字节00 00事务标识符第3、4字节00 00Modbus TCP协议标识第5、6字节00 03PDU长度3字节第7字节01从站号第8字节83异常功能码 原功能码030x80第9字节02异常码 02非法数据地址补充异常code码code码含义01非法功能从站不支持该功能码02非法数据地址请求的寄存器地址不存在/越界03非法数据值报文内的数据范围非法例如写寄存器数值超限04从站设备故障从站内部发生异常硬件/处理出错2 读取RFID电子芯片的UID每块RFID都有出厂定死的唯一ID发送00 00 00 00 00 06 01 03 60 00 00 04序号数据含义第9、10字节60 00代表读RFID起始地址该地址存储UID第11、12字节00 04代表从起始地址开始 读4个寄存器数量8个字节注表格前面几位字节含义相同不重复了…正常响应00 00 00 00 00 0B 01 03 08 XX XX XX XX XX XX XX XX序号数据含义第1、2字节00 00事务标识符和请求报文保持一致第3、4字节00 00Modbus TCP 协议标识固定00 00第5、6字节000B代表报文后面还有11个字节PDU长度第7字节01从站站号第8字节03功能码读保持寄存器(读Word)第9字节08Byte Count字节计数这个字段不是寄存器数量是后续数据的总字节数。第10‑11字节XX XXUID第1个Word第12‑13字节XX XXUID第2个Word第14‑15字节XX XXUID第3个Word第16‑17字节XX XXUID第4个Word3 读取用户数据案例从RFID中读取出4个产品码每个14Word一个112字节00 00 00 00 00 06 01 03 00 00 38序号数据含义第1、2字节00 00事务标识符第3、4字节00 00Modbus TCP 固定格式第5、6字节00 06代表报文后面还有6个字节即第7、8、9、10、11、12字节第7字节01从站站号第8字节03功能码读保持寄存器(读Word)第9、10字节00 00代表读RFID起始地址这里是我们自己存储在RFID中业务数据的起始地址不一定非这个地址看你怎么存第11、12字节00 38代表从起始地址开始读38个寄存器0x3856个Word112字节(正好是4个产品码每个产品码14个Word)4 写入用户数据比如载具码产品码批次码时间戳等…案例往RFID写入4个产品码每个14Word一个112字节发送00 00 00 00 00 77 01 10 00 00 00 38 70 [112字节业务数据]序号数据含义第5、6字节00 77ox77119表示后面还有119个字节第7字节01从站站号第8字节10功能码写保持寄存器(写Word)第9、10字节00 00代表写RFID起始地址从头开始写入第11、12字节00 38代表写入寄存器数量ox3856个Word112字节第13字节[不算业务数据格式上比读报文多1个字节]70ox70 111 000 112字节表示后续业务数据总字节数第 14 ~ 第 125 字节[业务数据][112字节业务数据]业务数据4个14Word产品码总计112字节正常响应00 00 00 00 00 06 01 10 00 00 00 38序号数据含义第1、2字节00 00事务标识符和请求报文保持一致第3、4字节00 00Modbus TCP 协议标识固定00 00第5、6字节00 06代表报文后面还有6个字节PDU长度第7字节01从站站号第8字节10功能码写多个保持寄存器第9、10字节00 00确认写入起始地址第11、12字节00 38确认写入寄存器数量56个Word异常响应00 00 00 00 00 03 01 90 02序号数据含义第1、2字节00 00事务标识符第3、4字节00 00Modbus TCP固定格式第5、6字节00 03PDU长度后面共3字节第7字节01从站站号第8字节90异常功能码原功能码0x10 0x80第9字节01/02/03/04异常码参考异常码表5 Modbus TCP 异常码code码含义01非法功能从站不支持该功能码02非法数据地址请求的寄存器地址不存在/越界03非法数据值报文内的数据范围非法例如写寄存器数值超限04从站设备故障从站内部发生异常硬件/处理出错注意事项Modbus TCP通常采用大端模式这个自己研究就是高位字节和低位字节对调一下例如寄存器值0x1234在报文中以12 34顺序发送高字节在前。若PLC解析为34 12则需在程序中执行高低字节交换。PLC 指令TCP_Client建立连接返回hConnectionTCP_Send发送报文TCP_Receive接收请求反馈的数据调用TCP_Send之后使用其他相关指令BMOV字节拷贝指令
返回列表