请教关于S7-200modbus通讯的问题。

cpu为221与托利多ind331称重控制器通讯5个字,因为ind331最快1s扫7次也就是143ms一次,如果我用mbus_msg指令通讯,读的完成位激活写然后写的完成位激活读,如此轮询,每读一次就是286ms!我cpu扫描周期是13ms,因为读一次286ms实在太长,所以我决定只读取ind331数据,不写入。
有两个问题问一下
1.如果我每cpu扫描周期都发读取指令,而ind331响应速度慢10倍,总有mbus_msg超时的报警,但数据能过来,能保证我是以最快速度读到的吗
2或者我用读的mbus_msg完成位去激活自己的请求位,这样是不是不会报警?这么写对吗?如图
请指教,因为我没有测试环境。

问题补充:
对,正常是脉冲值,但是我用完成位1去激活first,因为开始等待返回马上就变0,完成又变1,如此循环呢。我个人的想法

图片说明:

请教关于S7-200modbus通讯的问题。   

最佳答案

通讯应该和PLC周期是异步执行的,可能通讯完成需要几个周期。所以通讯是可以完成的。
可以加一个短时间的延时再次触发。
补充:因为只使用一个mbus_msg块,所以当接通时done位变为0,在下一周期中断开。因为没有这样使用过,所以不能保证一定可以,但分析感觉是可以的。为确保使用,在M2.3后面加个上升沿指令。

提问者对于答案的评价:

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc186099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年7月25日 下午10:12
下一篇 2017年7月25日

相关推荐