恭喜,你发布的帖子
发布于 2022-07-04 16:56:40
6楼
那第三次的调用结果为什么刚好输出给第三次呢?难道块知道同一周期被调用的次数?
这个MB_CLIENT功能块的背景数据块,可以认为是Modbus TCP通讯处理器的数据缓冲块。
当REQ上升沿出现时,将所有输入接口参数,传送到背景数据块中;然后激活此协议的通讯处理过程。
这是异步通讯,BUSY=1;经过N个扫描周期,内部通讯任务才能完成。即:BUSY=0;Done/ERR=1(仅置位1个扫描周期。你必须在此周期内,处理、移动完成了的数据。)
若此时,REQ仍然=1;将开始下一次完全相同的通讯过程。(连续读或写);
此例中,利用上一次的Done/ERR,将此MB_CLIENT的REQ置一,把输入传送到它的背景数据块;启动通讯过程。BUSY=1;经过数个扫描周期等待,直到完成Done或者出错ERR。
早期的MB_CLIENT这样写法是不允许的。它要求在通讯期间,REQ上升沿激活后 - Done/ERR完成前,功能块的调用期间,输入应保持不变。
可能新版本有所改变?
请填写推广理由:
分享
只看
楼主