上一篇博客已经完成 C#ModBus Tcp Master的实现
本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文)
读操作
功能码 0x01 读一组线圈 读取站号为1 从地址12开始的10个线圈
测试结果
上一篇博客已经总结了读操作报文格式,就按照格式划分
报文解析:
注意:报文中线圈起始地址 00000 对应设备中 10001 地址,其他顺延
功能码0x02 报文格式与功能码0x01一致,只是第八字节的功能码变为02 其他完全一致,不再重复解析
功能码0x03 读一组保持寄存器 读取站号为1 从地址12开始的10个值
报文解析:
功能码0x04 报文格式与功能码0x03一致,只是第八字节的功能码变为04 其他完全一致,也不再重复解析
写操作
操作码:0x05 写单个线圈 将站号为1 地址为21的线圈置为On
注意:在报文中 指定线圈通断标志 FF00 置线圈为ON 0000置线圈为OFF
报文解析:
功能码0x0F 写一组线圈 将站号1 起始地址21 的连续五个线圈置为 通,断,断,通,通
测试结果:
报文解析:
功能码 0x06 写单个保持寄存器 将6666写入从站1 地址为21 的保持寄存器中
测试结果
报文解析:
功能码0x10 写一组保持寄存器 例如 将12 23 34 45 56 67 78 分别写入从站1 起始地址为21的7个连续的保持寄存器中
测试结果
报文解析:
到此为止,我们常用的几个ModBus功能码报文都解析完毕了 有错误之处 希望大家不吝赐教,感谢(抱拳~)