发布于 2009-05-25 11:42:03
0楼
给CPU或I/O做诊断有时候很必要,例如分布式I/O可能分布在厂区各车间内,做一个诊断,在人机介面上显示或声光报警,操作人员能及时发现系统运行情况。如下是我给DP3分布式I/O站做的一段程序,供大家参考:
A(
L #OB82_MDL_ADDR
L 512 //Base address
==I
)
A(
L #OB82_IO_FLAG
L W#16#54 //Input
==I
)
JCN n21
A(
L LB 8
L 0
<>I
)
= "Alarm_DATA".DP3_Slot4_FLT
n21: A(
L #OB82_MDL_ADDR
L 528 //Base address
==I
)
A(
L #OB82_IO_FLAG
L W#16#54 //Input
==I
)
JCN n22
A(
L LB 8
L 0
<>I
)
= "Alarm_DATA".DP3_Slot5_FLT
n22: A(
L #OB82_MDL_ADDR
L 544 //Base address
==I
)
A(
L #OB82_IO_FLAG
L W#16#54 //Input
==I
)
JCN n23
A(
L LB 8
L 0
<>I
)
= "Alarm_DATA".DP3_Slot6_FLT
n23: A(
L #OB82_MDL_ADDR
L 560 //Base address
==I
)
A(
L #OB82_IO_FLAG
L W#16#54 //Input
==I
)
JCN n24
A(
L LB 8
L 0
<>I
)
= "Alarm_DATA".DP3_Slot7_FLT
n24: A(
L #OB82_MDL_ADDR
L 576 //Base address
==I
)
A(
L #OB82_IO_FLAG
L W#16#54 //Input
==I
)
JCN n25
A(
L LB 8
L 0
<>I
)
= "Alarm_DATA".DP3_Slot8_FLT
n25: A(
L #OB82_MDL_ADDR
L 592 //Base address
==I
)
A(
L #OB82_IO_FLAG
L W#16#54 //Input
==I
)
JCN n26
A(
L LB 8
L 0
<>I
)
= "Alarm_DATA".DP3_Slot9_FLT
n26: A(
L #OB82_MDL_ADDR
L 608 //Base address
==I
)
A(
L #OB82_IO_FLAG
L W#16#54 //Input
==I
)
JCN n27
A(
L LB 8
L 0
<>I
)
= "Alarm_DATA".DP3_Slot10_FLT
n27: A(
L #OB82_MDL_ADDR
L 624 //Base address
==I
)
A(
L #OB82_IO_FLAG
L W#16#54 //Input
==I
)
JCN n30
A(
L LB 8
L 0
<>I
)
= "Alarm_DATA".DP3_Slot11_FLT