目录
一、ModBus TCP 一帧数据格式
二、0x01 读线圈状态
三、0x03读保持寄存器
四、0x05写单个线圈
五、0x06 写单个寄存器
六、0x0f写多个线圈
七、0x10:写多个保持寄存器
八、通信过程
九、不同modbus通信模式的应用场景
一、ModBus TCP 一帧数据格式
其中MBAP报文头有7个字节,分别是:
域 | 长度 | 描述 |
---|---|---|
事物处理标识符 | 2个字节 | 用于事务处理配对,他是Modbus的事务处理码,每次通信后就要加一 |
协议标识符 | 2个字节 | 用于系统内的多路复用,当值为0是,表示使用ModBus协议 |
长度 | 2个字节 | 用于说明接下来还有多少字节的数量 |
单元标识符 | 1个字节 | 当ModBus客户端在请求设置这个域是,在响应中服务器必须利用相同的值返回这个域(同设备地址) |
二、0x01 读线圈状态
注意:每次请求事物处理标识都应该不一样,例如每次通信后事物处理标识加1;线圈的单位是位,一个线圈只占一位
起始地址0x0013(0019)读取16个线圈的值
返回的3C 25(0011 1100 0010 0101)分别对应的就是(0019--0034)
三、0x03读保持寄存器
四、0x05写单个线圈
五、0x06 写单个寄存器
六、0x0f写多个线圈
七、0x10:写多个保持寄存器
modbus tcp发送数据的格式起始和modbus rtu类似
modbus tcp:mbap报文头+功能码+数据
modbus rtu:设备地址+功能码+数据+CRC校验
八、通信过程
- 主站设备主动向从站设备发送请求
- 从站设备处理主站的请求后,向主站返回结果
- 如果从站设备处理请求出现异常,则向主站设备返回异常功能码
九、不同modbus通信模式的应用场景
modbus ASCII模式:主要用来调试,故障排查,数据量小(ASCII码字符可以用字母形式显示,可以显示更多的调试信息,更直观)