S7-400简单程序
刘玉蓉
发布于2014-10-28 17:43
202
0
标签:
A I0.1
ON I0.1
= I0.1
为什么模拟运行的结果I0.1=0?
日系欧姆龙和三菱的结果都是=1?
请帮忙分析。
问题补充:
我查过了,确实没在其他程式段中调用,我的原来程序是这样的
AN M0.0
S M0.0
A M0.0
=I0.6
用模拟运行测试I0.6=0
经过多次测试,发现只有在组态中没有组态的数字输入通道如I44时,I44.0=1.
佳答案
A I0.1 // I0.1为常开触头,其信号状态为“1”表示触头闭合(动作),为“0”表示触点打开)(不动作)
ON I0.1//IO.1为常闭触点,其信号状态为“1”时,表示触点打开(动作),为“0”时表示触点闭合(不动作)
你不可能给I0.1赋值,它是将其之前的逻辑串语句的逻辑运算结果RLO写入指定的寻址为(ON I0.1为或非指令,检查被寻址位I0.1的状态是否为“0”或“1”,并将检查结果与逻辑运算结果A I0.1(RLO)进行“或”运算:
A I0.1 0 1
ON I0.1 1 0
RLO逻辑结果 1 1
可以看出上述两条指令的执行结果都是“1”,但不能执行赋值指令= I0.1,如果你模块运行的结果I0.1=0,可能你的程序中I0.1被其他程序置位,你需要利用生成的“交叉参考表”检查存储器位I0.1 由用户程序使用的地方。
西门子PLC的输入端接线采用PNP接法,而日系欧姆龙和三菱多为NPN输入,所以两者运行结果正好相反。