发布于 2007-09-04 22:15:55
0楼
班主的批评不错,本人得益非浅.其实条件调用功能或功能块时,当条件不满足时,这个功能或功能块,在CPU扫描到这个位置时,是不会进去扫描这个功能或功能里面的程序的,而是跳过直接扫描下一个语句.那你这个功能或功能块里的所有的变量会保持刚调用之前的状态.除非里面的变量给其他的功能或功能块调用并刷新.所以你的定时器及其它变量是保持在刚调用前的状态的.
我以前曾做过一个试验,就是在S7-300CPU的OB100中编了个语句:
AN Q0.7
=Q0.7
只要是这个Q0.7仅在这使用,Q0.7是保持常亮的.
这说明了在S7-300程序中,一个程序块不被扫描时,其中的变量是保持原态的.
班主意思说得很明白了,尽量少用条件调用功量或功量块.调用条件要做在功能或功量块里面.
说白了就是,让系统扫描到你的每个逻辑条件并及时刷新,不要留下死角让系统扫描不到.
楼主的工艺要求每个时期只有一个步骤在进行,这与CPU的扫描是没有冲突的.因为只要逻辑条件满足的才被执行,不满足的就不被执行.扫描时只不过是每个周期不断地刷新你的逻辑结果而已.并不是说扫描到你的程序就一定执行,是不是?
学如逆水行舟,不进则退