发布于 2012-06-26 20:07:08
3楼
嘿嘿,俺不是高手,心里没有底,腿发软啊,硬着头皮说说吧。
楼主:OB24是操作系统更新过程映像区超时的中断组织块,当这个事件发生,触发操作系统执行中断OB24(注意:并不是调用)。如果OB24不存在,CPU进入STOP模式QVZ指示灯亮;如果OB24存在,执行OB24里面的程序,执行完退出OB24中断程序,接着执行被中断的程序,CPU依然在RUN模式!如果事件消失QVZ指示灯灭。
你OB24的这段程序我试着注释一下:
JC =M001 //如果进入中断前的RLO=0,往下执行;
//如果进入中断前的RLO=1跳转到M001,JC指令执行后RLO=1
M001: L KT 020.1 //将20×100ms=2s装载到ACCU1
SD T 20 //此时RLO=1启动SD定时器
M002: AN T 20 //此时T20状态为0,扫描取反后状态为1赋给RLO=1
JC =M002 //此时RLO=1,跳转到M002,执行2s的死循环后,往下执行
A T 20 //2s后,扫描T20的状态为1,赋给RLO=1
R T 20 //RLO=1复位T20,此时T20的状态为0
A T 20 //扫描T20的状态=0 ,把状态0赋给RLO=0
L KT 001.0 //将1×10ms=10ms装载到ACCU1
SD T 20 ;VKE 0 //此时RLO=0,T20不启动,后面的";VKE 0"不符合语法
*** // 这个segmengt执行结束, 继续往下执行程序
由此可以理解成:当更新过程映像区超时,CPU延时2秒接着执行被中断的程序。
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”