一个完整的扫描周期包括了通讯和执行程序等部分,请问 :1.程序中的通讯指令在什么时候执行?在下个周期执行吗?比如写指令是不是下个周期发送出去,而读指令也是下个周期把通讯对象的数据接回来,所以要读取的目标数据只能在下个周期使用; 2. 如果是下个周期,那么是通讯结束后才执行程序还是两者同步进行? 3. 通讯是怎么发生的,是执行程序的时候把通讯指令内的数据送到通讯专用存储器还是由通讯处理器直接到程序里边读取? 谢谢
问题补充:
谢谢wwwcwwc,第3个问题明白了。我想再问关于第1和第2个问题.
第1个 .资料上说,每个扫描周期都是先执行通讯,然后执行程序,而指令是在程序中,也就是说执行了通讯指令后,这个周期就结束了,通讯数据怎么能在这个周期发送出去呢?
第2个,一次通讯需要若干周期的话,那么因为每个扫描周期都会有一次通讯,与其相邻的下个通讯怎么办?
以上问题我是针对modbus通讯协议的,通讯完成的标志是主站置1还是通讯对象反馈信号置1?
最佳答案
200的通讯几乎都是异步的。
1.本周期发送出去,要加上通讯链路上的传输时间,加上从站接收后的处理时间,加上返回到主站的通讯链路时间,再后加上主站处理过程时间。
2.异步。通讯自发送到返回需要若干个周期,具体时间与通讯频率,数据长度,程序架构有关,我曾经给200smart与富士仪表测试读温度值的时间,贴子在论坛里
3.是前者。
补充问题回复:
1)你只是理解了一个片面。一个通讯指令比如是MSG指令,完成一次读取或者写入需要若干的plc扫描周期,而不是一个周期就能够完成的。
2)与其相邻的通讯只能等待。
优先执行通讯的含义是指,在一个周期内首先采集完成的那部分,而尚未采集完成的只能是等待了。
我把你的问题理解为一段金属导体,通讯频率的大小就是导体截面的大小,当通讯频率高,在大截面下的载流量当然大(快),通讯频率低,相当于截面小的可想而知。
哦,忘了说最后的问题了。是主站判断MSG指令完成done位输出为1,或者是当指令错误时该位也是1,而非从站反馈的信号置1,从站没有办法在这个点上来置1,通讯是否成功都还是未知数来。
上述回复因为是在手机上,难免有语句问题请见谅。
提问者对于答案的评价:
我有些明白了,非常感谢您的回答。
实际上这个问题是在我的应用中出现,我通过modbus操作两个伺服驱动器,偶尔会无规律的出现一些“失控”现象,现在看来是执行下一步的时机选择有问题,相信我能解决掉它了
最佳答案作者回复:
我有几个modbus 通讯测试,不能够作为参考,但是也是一种方式放在论坛上,如一个数据发送需要多少时间,发送到接收完成需要多少时间,我用的是间隔定时器及标志位捕捉的。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc361093.html