ModBus TCP
2023-12-20 07:12:34
一、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
三、通信过程
- 主站设备主动向从站设备发送请求
- 从站设备处理主站的请求后,向主站返回结果
- 如果从站设备处理请求出现异常,则向主站设备返回异常功能码
例如:03读保存寄存器
????????主机发送:03? 寄存器起始地址? 读取数量 CRC校验
????????从机正常响应:03? ?数据长度(是请求报文中的读取数量的2倍)? ? 保持寄存器数据,n个字节(是请求报文中的读取数量的2倍)CRC校验
????????从机异常响应报文:131(0x83)? 异常码?CRC校验
文章来源:https://blog.csdn.net/m0_61973119/article/details/135078972
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!