以下是引用448187990在2020/2/24 15:39:20的发言:
小弟初学PLC
对于图中这个程序,以下是俺的理解
第一步:读取I0.0的值,这个值由外部电路状态决定,外部电路接通,则为1,断开则为0;
第二步:读取Q0.0的值,这个值究竟是多少?为什么?这个是输出寄存器的值,还没有写!
第三步:将I0.0和Q0.0的值做或运算
第四步:把上面的值与I0.1做与运算
第五步:把结果写给Q0.0,这步完成才有了Q0.0的值,所以第二步就读,感觉矛盾!
看了好多资料,都没有解释的
恳请各位帮忙解释一下,感恩!
[此贴子已经被作者于2020/2/24 15:41:34编辑过]
正确的理解是通过扫描周期去理解:
第一个扫描周期,外部开关接通,所有的状态没有变化。
更新输入输出映像区。
第二个扫描周期,I0.0=1,I0.1=1,做与运算,将结果输出给Q0.0,请注意,此时 Q0.0仍然为0
更新输入输出映像区。
第三个扫描周期,Q0.0为1
所有的输入输出只有在更新输入输出映像区后才改变状态,为啥要这么设计,因此可以确保在整个扫描周期期间,I,Q的状态保持一致性。
如果你希望马上改变I,Q状态,请使用立即更新映像区指令,例如直接输出指令,但是程序员需要清楚2点:
1、I,Q指令在本扫描周期内的状态不一致。
2、直接输出将延长扫描周期时间,因为要更新输入输出映像区。
Good Luck~