学习Modbus的第三天

具体功能码
image
一般用RTU模式进行开发,接下来实现一个示例:读取设备地址为3的从设备B的线圈状态寄存器,线圈地址为19到55(37个地址)
主站发送的请求包格式为--"设备地址+功能码+寄存器起始地址(高位+低位)+寄存器数量(高位+低位)+CRC校验位"
设备地址为0X03,功能码为0X01,寄存器的起始地址为0X13(19的16进制),寄存器数量为0X25(37的16进制)
而从站的响应包格式为--"设备地址+功能码+数据长度+数据+CRC校验位"
假设从站的数据为
image

这样响应包的设备地址为0X03,功能码为0X01,数据长度为5个字节(0X05),然后根据图片得到19~26位是1100 1010,但高位在前,所以是0101 0011--0X53,其余一样
接下来就是主站从站的调试设计:
image
image
从站设计好了大概就是这样的
image
然后主站也是和从站一样设计好,设计好了会自动连接(不要忘记打开VSPD),效果图是这样的
image
然后我们点击主站工具栏的communication,可以看到主站实时对从站发送的请求包,以及从站发送给主站的响应包
image
可以看到和我们设计的发送包一样--03 01 00 13 00 25 F6(校验位不用管)
响应包也是一样的--03 01 05(数据长度) 53 6B 01 F4 1B +两个字节的校验

这只是一个示例,对于其他的功能码的调试也是差不多,只不过格式上有些差别

posted @ 2026-02-01 16:53  dd_l  阅读(0)  评论(0)    收藏  举报