恭喜,你发布的帖子
发布于 2016-10-14 15:12:02
9楼
W,你别急。这个事情对于你来说不是个问题。
10年前,书店里面满满是30的书的时候,很多新人被30吸引。不知道为什么,我们学校竟然破天荒学s7-200。
30里面经常有两个做法,大概是说,需要off至少一个周期然后再on。和。END指令时刷新。我担心的就是这样的概念会不会影响到大家使用200?
W,你回答和我一致。第三第四种情况是属于所谓的“同时”概念。
第二种情况,2222222222222222222222222222
网络1 m0.0 on
网络2 m0.1 off
下一个周期
网络1 m0.0 off
网络2 m0.1 on
再下一个周期
网络1 m0.0 off
网络2 m0.1 on
如果在30里面的一些指令,被m0.0和m0.1并联驱动的话,那么这个指令完全没有off的时间。
如果在30里面的一些指令,被m0.0和m0.1各自在不同位置驱动的话,那么这个指令就没有off至少一个周期然后再on 。或者说这个指令的两处使用,没有经过END指令刷新就被第二次使用。这两种如果,都是无法正常使用30这些指令的。
而在200里面却没印象什么指令要经过end处理。高速计数器没有,高速输出没有,自由口收发指令没有。
回到modbus上。
用m0.0 m0.1分别去接通两个msg指令的EN端和first端。同时的概念出来了。
用第一种情况产生的M信号,msg指令有一个周期完全没有被调用。
用第二种情况产生的M信号,有一个周期内,两个msg指令都被调用。
用第三种情况,不用说了。死定的。
第四种情况呢?两个msg都没有完整地重合过一个周期。
然而,第二种情况是属于不会报错的使用方法。这是由于第一个msg已经结束了,才驱动后面一个msg的。虽然此时此刻,这个扫描周期同时执行了两个msg指令。如果把上图两个网络换位,就是第四种情况。
那么这么说,就算第三种情况,明明有一个周期完全重合住的,也是执行完前面才执行后面的,是不是说也不算同时啊?
程序的执行有扫描的概念存在,当然没有同时的概念啦。那怎么说?同一个周期两个都执行到了,为何有的是属于正常,有的是属于“同时了”?
我发现,有人为了避开这些不清晰的界限,远远地离开灰色地带。按计时器时差传递流程,时间不够就增加时间一直加到没有出错为止,不知道是不是为了这个?
所以,直指题目《我想修正一下一个公认的概念。我有新的解释。》我的新的解释是:
后面一个开始了执行以后,Done之前,而前面一个仍发生执行,那么就是同时执行。这个“同时”与扫描周期无关。
我主要是指出,与扫描周期无关。
请填写推广理由:
分享
只看
楼主