ModBus TCP

发布时间:2023年12月20日

一、ModBus TCP 一帧数据格式

其中MBAP报文头有7个字节,分别是:

长度描述
事物处理标识符2个字节用于事务处理配对,他是Modbus的事务处理码,每次通信后就要加一
协议标识符2个字节用于系统内的多路复用,当值为0是,表示使用ModBus协议
长度2个字节用于说明接下来还有多少字节的数量
单元标识符1个字节当ModBus客户端在请求设置这个域是,在响应中服务器必须利用相同的值返回这个域(同设备地址)

二、0x10:写多个保持寄存器

在一个远程设备中写连续寄存器块(1~123个寄存器)

请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L 字节长度 寄存器值(13+寄存器数量×2)
响应:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节)
如:向起始地址为0x0000,数量为0x0001的寄存器写入数据,数据长度为0x02,数据为0x000F
00 01 00 00 00 09 01 10 00 00 00 01 02 00 0F
回:写入成功
00 01 00 00 00 06 01 10 00 00 00 01

三、通信过程

  1. 主站设备主动向从站设备发送请求
  2. 从站设备处理主站的请求后,向主站返回结果
  3. 如果从站设备处理请求出现异常,则向主站设备返回异常功能码

例如:03读保存寄存器

????????主机发送:03? 寄存器起始地址? 读取数量 CRC校验

????????从机正常响应:03? ?数据长度(是请求报文中的读取数量的2倍)? ? 保持寄存器数据,n个字节(是请求报文中的读取数量的2倍)CRC校验

????????从机异常响应报文:131(0x83)? 异常码?CRC校验

文章来源:https://blog.csdn.net/m0_61973119/article/details/135078972
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。