你问的这个问题就涉及到程序的时序问题了,从头开始说吧!
[1]当M2第一次由OFF变为ON时,程序扫描到第一行时,M2=ON,调用子程序P1,由于子程序中M2=ON,因此执行DDRVI指令,PLC开始发送脉冲给伺服驱动器,[2]在DDRVI指令执行过程中,M2由ON变为OFF,程序扫描第一行时,M2=OFF,不再执行P1子程序,所以DDRVI的条件接点虽然ON变为OFF,但PLC并不会检测到这一状态的变化,因为子程序已经不被执行了。[3]当DDRVI指令已经执行完毕,再将M2由OFF变为ON时,当扫描到第一行时,M2=ON,调用子程序P1,而此时子程序中M2=ON,而PLC并没有检测到M2由OFF变为ON,所以,DDRVI指令仍然不会被执行。