| 作者 | 主题 |
|---|---|
|
你以为你是谁 至圣
经验值:26014 发帖数:4601 精华帖:11 |
楼主
主题:报警是怎么做的 我在程序中,模拟量用上升沿触发报警,但是在临界点,报警触发的很频繁。大家都是怎么做这个报警的,有没有更好的办法?
PCS7系统爱好者,技术交流:617522577@qq.com
|
|
宁超 至圣 经验值:11563 发帖数:1009 精华帖:39 |
2楼
主题:回复:报警是怎么做的设置报警的一些相关参数:
PV : REAL := 0.0; //Process Value PV_Unit {S7_m_c:='true'} : INT:=1001 ; // Unit PVHR {S7_m_c:='true'} : REAL := 100.0; // high range PVLR {S7_m_c:='true'} : REAL := 0.0; // low range HHA {S7_m_c:='true'} : REAL := 95.0; // H limit Alarm HW {S7_m_c:='true'} : REAL := 90.0; // H limit Warning LW {S7_m_c:='true'} : REAL := 10.0; // L limit Warning LLA {S7_m_c:='true'} : REAL := 5.0; // L Limit Alarm HHA_EN : BOOL := TRUE; // H Alarm Message Enable HW_EN : BOOL := TRUE; // H Warning Message Enable LW_EN : BOOL := TRUE; // L Warning Message Enable LLA_EN : BOOL := TRUE; // L Alarm Message Enable Hys {S7_m_c:='true'} : REAL:=0.0; // Hysterese value Deadband {S7_m_c:='true'} : REAL:=0.0 ; // Width of Dead band ADCT : REAL:=0.0; // Alarm delay coming time WDCT : REAL:=0.0; // Warning delay coming time ADGT : REAL:=0.0; // Alarm delay going time WDGT : REAL:=0.0; // Warning delay going time // Set hysteresis value 设置滞后,滞后是百分比 QHys := Hys * (PVHR - PVLR) / 100.0; //Hys滞后,PV_HR,PV_LR 过程值上下限 // Deadband 零区小信号切除 IF ABS(PV_OUT) <= Deadband THEN PV_OUT:=0.0 ; END_IF; 如高高报警: //high - high alarm 高高报警
//当过程值PV_Out大于高高报警值HHA时,开始启动报警延迟到达计时,如果ADCT(报警延迟达到时间)设置为0秒,立即输出报警,置位QHHA
//当过程值PV_Out小于高高报警值HHA-滞后,开始启动报警延迟到达计时,如 果ADGT(报警延迟离开时间)设置为0秒,立即复位报警,复位QHHA ,减去滞后是为了防止ADCT和ADGT设置为0秒时,频繁触发报警 IF HHA_EN THEN //如果报警消息使能 IF (PV_OUT >= HHA) AND NOT QHHA AND PULSE AND NOT FP_Pulse THEN ADCT1:=ADCT1+SAMPLE_T; //开始计时 IF ADCT1 > ADCT THEN //计时大于设定值 QHHA := TRUE; //报警置位 ADCT1:= 0.0; //复位计时 END_IF; ELSIF (PV_OUT < (HHA - QHys))AND QHHA AND PULSE AND NOT FP_Pulse THEN ADGT1:=ADGT1+SAMPLE_T; //开始计时 IF ADGT1 > ADGT THEN //计时大于报警延迟离开的时间设定 QHHA := FALSE; //复位报警 ADGT1:= 0.0; END_IF; END_IF; ELSE QHHA:=FALSE; // 抑制高高报警消息时,复位报警 END_IF; |