技术论坛

 回复:报警是怎么做的

返回主题列表
作者 主题
你以为你是谁
至圣

经验值:26014
发帖数:4601
精华帖:11
楼主    2015-09-19 07:38:48
主题:报警是怎么做的

我在程序中,模拟量用上升沿触发报警,但是在临界点,报警触发的很频繁。大家都是怎么做这个报警的,有没有更好的办法?

PCS7系统爱好者,技术交流:617522577@qq.com
宁超
至圣

经验值:11563
发帖数:1009
精华帖:39
2楼    2015-09-21 14:56:24
精华帖  主题:回复:报警是怎么做的

 设置报警的一些相关参数:

  

    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; 


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。