quote:以下是引用403在2013-01-10 09:53:00的发言:
还有一个问题,JMP必须放在LABEL前面或者同行吗?我试试一下,JMP放在LABEL后面,出现死循环,达到最大循环设定值?
用LAD编写的这段程序与前面用STL编写的程序实现的是同样的功能。我给大家解释一下程序:
LAD的网络1:把MW10中的值赋值给MW12;给MW2中赋值为0。
LAD的网络2:如果MW2中的值小于100,就执行程序延时执行20ms。延时20ms后给MW2中的值加1后让程序跳转回到网络2的起始部分重新执行,如此往复让网络2执行100次,也就是让程序延时执行20ms*100=2000ms
。换句话网络2总体让让程序执行延时2s.
LAD的网络3:当程序延时2s后,比较MW10与MW12中的值,如果不相等,就置位M100.1。
也就意味着程序执行一个循环周期就需要2s多的时间。此过程循环执行。若在循环执行的过程中修改MW10中的值。若此修改的时间点正好是在延时的2s这段时间内,就会造成MW10与MW12中的值不相等,M100.1就会被置位。若修改的时间点在程序循环的开始,那么MW10就会与MW20的值相等,M100.1就不会被置位。
现在我们想让大家测试一下此程序在S7-300的CPU与S7-400的CPU里分别执行。从变量监控里会得到同样的结果吗?若不一样,寻找一下原因。(注意,这是个动态的过程,需要大家测试时不断修改MW10中的值,看M100.1是否被置位)。