发布于 2008-01-09 16:30:08
0楼
局部变量在没有赋值以前是一个随机值,如果你的主程中只调用了一个功能(块),那么在模拟时可能这个局部变量的值一直为零或者为一,程式会输出一个稳定的值,但如果有多个功能(块)同时调用,局部变量的值就会发生变化而成为一个随机值;至于FN它是根据逻辑运算结果及FN线圈的当前值来判断本个扫描周期是否允许电流通过(或者说是否接通),如果逻辑运算结果为1,而FN线圈的当前值为0,它就允许电流流过,同时将FN线圈的值置为1;下个周期继续检查,如果线圈当前值为1,它就禁止电流流过,并且保持线圈当前值不变.现在的问题是,你使用了一个临时的局部变量来保存FN的线圈值,而在程式退出后这个值将无法保存,并且在下次调用这个功能时系统并不初始化局部寄存器,因此,当罗辑结果为1时,你的程输出就有可能出现变化的情况.
一定要注意,PLC并不初始化局部存储器的值,如果你自己也没有初始化(或者说赋值),就不要去使用,除非你想得到一个随机数
请试一下下面的程
set
= L0.0
clr
= L0.1
a m0.0
fn l0.0
= m0.1
a m0.0
fn L0.1
= m0.2
set
= l1.0
= l1.1
not
= l1.2
a l1.0
fn l 1.1
= m0.3
a l1.0
fn l1.2
= m0.4