发布于 2012-03-23 11:15:04
2楼
楼主:真如1楼说的那样,就在OB86里面些点代码判断一下吧。工作原理:当DP从站故障时,操作系统触发执行一次OB86;当DP从站故障消失时,操作系统再次触发执行一次OB86。利用这个特点写点代码,我将OB86的声明表里面与操作系统接口主要参数说明一下,并举一个参考例子:
L #OB86_EV_CLASS //Event class and identifiers:B#16#38=outgoing event;B#16#39=incoming event
L #OB86_FLT_ID //Error code:(possible values B#16#C1, B#16#C2, B#16#C3, B#16#C4, B#16#C5, B#16#C6, B#16#C7, B#16#C8)
L #OB86_MDL_ADDR //Logical base address of the DP master
L LW 8 //logical base address of an S7 slave or diagnostic address of a standard DP slave
L LB 10 //DP master system ID
L LB 11 //No. of the DP SLAVE ID
L #OB86_EV_CLASS //WHEN THE EVENT OUTGOING ,GOTO M001
L B#16#38
==I
JC M001
L LB 11
L 3
==I
S M 16.3 //SET DP SLAVE3 FAULT MEMORY
L LB 11
L 4
==I
S M 16.4 //SET DP SLAVE4 FAULT MEMORY
L LB 11
L 5
==I
S M 16.5 //SET DP SLAVE5 FAULT MEMORY
BEU
M001: L LB 11
L 3
==I
R M 16.3 //RESET DP SLAVE3 FAULT MEMORY
L LB 11
L 4
==I
R M 16.4 //RESET DP SLAVE4 FAULT MEMORY
L LB 11
L 5
==I
R M 16.5 //RESET DP SLAVE5 FAULT MEMORY
这样上位可以读取这些地址做些故障报警,或者在程序的其它地方再写点报警代码。
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”