签到有奖
消息提醒
运维工程师专区
官方商城
点击复制链接
关注该帖后,有多人参加探讨会对您通知与提示!
帖子
精华
被关注
论坛等级:侠士
注册时间:2016-08-10
普通 如何晋级?
发布于 2022-07-05 11:12:59
17楼
如果输入参数完全一致(包括数据发送接收区),它就与REQ一直保持=1是一样的。
连续读/写。逐一执行。
引用12楼详细内容:
yming大神说的有道理,我看了关于异步指令的帮助部分,里面也明确说明
“使用指令的作业标识输入参数。在异步指令的执行过程中,这些输入参数必须与执行
过程中的各调用相匹配。”
还有个疑问是第一个调用和第三个调用的参数是一样的,但是结果仍然可以正常完成,说明程序块不止使用参数做比较。
如果前三个调用块的参数都一样的,也是以上一个Done来顺序调用,就只有第三个块有输出。猜测还使用了参数堆栈之类的方法,而且程序还知道每次的执行是不是在同一个周期内。
引用11楼详细内容:
内部有个机制,每次调用,需要比较所有输入。
只有所有输入没有变化的那个被激活的调用,才会执行输出。
这也是要求调用期间,输入保持一致性的一个原因吧。
引用8楼详细内容:
那第三次调用被触发之后,怎么输出不落在第一个调用引脚,而刚好输出在第三个呢?
引用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完成前,功能块的调用期间,输入应保持不变。
可能新版本有所改变?
引用3楼详细内容:
那第三次的调用结果为什么刚好输出给第三次呢?难道块知道同一周期被调用的次数?
引用2楼详细内容:
指令执行之后要几个周期才会给出完成信号
我觉得不一样,否则就应该输出在第一个块,而不是第三个块。
请填写推广理由:
AI 小西智伴登场,7×24 小时权威支援,让技术支持告别等待!
助你技有所长,论有所获
首次发帖探讨工控技术话题 立获新人礼包,100中奖哦! (包含周边、书籍、兑奖西币)
共有10587条技术帖
恭喜,你发布的帖子
快扫描右侧二维码晒一晒吧!
再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!
分享
只看 楼主
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!