天线|RF射频|微波|雷达技术
直播中

刘艳

7年用户 2114经验值
私信 关注
[问答]

Modbus从设备如何回应主机的消息及VB的小问题?

Modbus从设备如何回应主机的消息?就是如何主机发往从设备要求查询地址4001地址的数据,从设备如何获得那个数据呢?
用RTU模式传输,用VB的话如何控制3.5和1.5字符的间隔?
是个新手,请尽量说的详细点,拜托各位大虾了~~

回帖(3)

刘军

2023-5-5 16:11:01
当从机接收到数据后,必须在3.5个字符后至主机超时这段时间内给主机回应对应格式的数据。
你是从机的话,4001地址是数据是什么由你自己决定的。
VB控制3.5个字符间隔不用在意吧?
因为作为从机,在每次串口接收到一个字节时,用一个全局数组(255个成员)的数组缓冲接收每次收到的数据,再用个全局变量记录当前系统Timer时间,在每次退出串口事件前把当前检测时间差,如果时间差大于3.5个字符(1/比特率*40毫秒)的话,就认为前面一帧数据已经完成,则启动Timer控件去执行相关的操作,然后把当前的Timer值给回全局变量为下次检测准备。
举报

刘艳

2023-5-5 16:11:13
我的意思就是那4001地址到底是哪里的地址?
从机是指PLC?如果知道功能码是03H,地址是4001,从机是如何去查询数据呢?
举报

刘军

2023-5-5 16:11:20
在西门子PLC里面定义,4001是从机的寄存器地址。
从机不是指PLC,从机是相对主机来说的,ModbusRTU协议里面明确规定,主机负责读/写从机的数据,从机只能够响应主机对它的请求,其他时间不发送任何数据,否则会导致整个通讯网络数据错乱。
从机跟地址4001的关系只是你做了这样的定义而已,当从机接收到读取4001地址的数据时,从机响应主机的请求,通过间接寻址把4001的数据添加到响应指令缓冲区的数据区里面,接着校验完成后就把数据发回给主机。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分