用这个指令时,踩了坑,希望这个帖子能对大家避开此坑有所帮助。
首先,要说明的是对于扫描操作数的信号上升沿指令,与其他三种上升沿扫描指令不同,它检测的是P触点上方变量地址的(本例为上、下平层信号)上升沿,而不是流入P触点的能流!
本例(图1)重复调用了同一个扫描操作数的信号上升沿指令两次,因为指令扫描的时P触点上方的地址,所以不管能流有没有通,它都会改变P触点下方、用于储存P触点上方的地址上一个周期状态的变量(上、下平层信号上升沿),如果是在一个扫描周期内第二次调用该指令,那么第二次调用就会导致错误的结果。
在本例中接通的是“下行接触器”变量,且“下平层信号”变量接通一个周期,但并没有产生预想的输出。原因是,P触点下方的变量“下平层信号上升沿”在第一条语句中已经被改变,由0变1,导致在第二条语句中,第二次使用扫描操作数的信号上升沿指令时未能检测到“下平层信号”上升沿指令。
如果我们调转两条语句(如图2),再重复同样的操作,发现,P指令能够检测到“下平层信号上升沿”。
总结:如果在程序中要重复使用扫描操作数的信号上升沿指令,P触点下方的变量不要用同样的变量。
个人经验,不足之处还请多多指正。
图1
图2