发布于 2008-03-21 19:05:09
0楼
OB100: "Complete Restart";OB101: "Restart";OB102: "Cold Restart"。讲起来是比较复杂了一些,所以你还是去参考一下S7-300/400PLC系统维护手册,用心去理解一下。你没有测试成功的原因可能是因为还没有理解OB100的执行过程,OB100是在事件发生的时候执行一次,事件结束的时候又执行了一次。而你用的延时3ms在OB100里面可能是行不通的,因为OB100并不是每个程序周期都执行,而且OB100执行的时间你是无法把握的。而且你的3ms的延时也太短了,一般情况下OB1执行一个循环需要几十ms,或者上百ms。建议你把下面的程序放到你的OB100,OB101,OB102里面试试看。具体程序如下:
在OB100/OB101/OB102里面的程序:
SET //置位RLO
= M 10.0 //把RLO赋给M10.0;CUP从STOP到RUN,置位初始化标志位
L “常数A” //载入常数A到累加器1
T MW 0 //将累加器1的当前值赋给MW0
在OB1的最后写程序如下:
A M 10.0 //判断初始化标志位是否被复位。
JC M001 //如果初始化标志位没有被复位,那么掉转到M001
L “常数B ” //载入常数B到累加器1
T MW 0 //将累加器1的当前值赋给MW0
JU END //无条节跳转到END
M001:A M 10.0 //判断初始化标志位是否被复位。
R M 10.0 //如果初始化标志位没有被复位,那么复位初始化标志位
END: NOP 0
这段程序表达的意思是:在PLC的CPU从STOP到RUN第一个OB1循环周期将“常数A”赋给MW10,从第二个OB1循环结束前,就一直把常数B赋给MW10。我还不知道你具体的程序,所以你可以先用这段程序试试看。看看能不能满足你的要求。
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”