发布于 2012-02-21 19:15:04
78楼
1. 用一个报警位DB块,前1000个字用于存储实时报警,后1000个字用于存储上一个扫描周期的报警
2. 用两个地址寄存器进行寻址
A #Alarm_acknowledge_button //报警复位按钮
R #Light_alarm
R #Buzzer_alarm
A #Buzzer_acknowledg_button //报警消音按钮
R #Buzzer_alarm
OPN #Alarm_bit_DB //打开报警位数据块
L P#0.0 //指针初始化
LAR1
L P#1000.0
LAR2
Loop: L DBW [AR1,P#0.0] //检查报警位数据块
L W#16#0
OW
L 0
==I
JC _001 //无报警,跳转
S #Light_alarm //有报警,置位
L DBW [AR1,P#0.0]
L DBW [AR2,P#0.0]
XOW //检查有无新报警产生
L DBW [AR1,P#0.0]
AW //屏蔽多个报警,因某个报警消失而产生报警音
L 0
==I
JC _001
S #Buzzer_alarm //有新报警产生,则蜂鸣器响
_001: L DBW [AR1,P#0.0] //储存上个周期的报警位
T DBW [AR2,P#0.0]
TAR1 //继续查询下一个报警字
+AR1 P#2.0
TAR2
+AR2 P#2.0
TAR1
L P#1000.0
< D
JC Loop
工控生活、精彩人生