forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-24 1360095f8d64cf607d333d2fc7fd1dcd81d1bd7b
Soft/sizhu_ctrl_word.c
@@ -1,4 +1,8 @@
#include "sizhu_ctrl_word.h"
#include "system_run_fun.h"
FlagStatus   AlarmTriggerWrcFlag = RESET;
uint8_t      AlarmTriggerCLoseValveNum = 0; //´¥·¢¹Ø·§±¨¾¯µÄÊýÁ¿£¬ÓÃÓÚ´ÓÁ´±íÖлñÈ¡±¨¾¯ID½øÐжÔÓ¦µÄ¹Ø·§´¦Àí
SYSTEM_STATUS_WORD_T           system_status_word_g;
SYSTEM_FUNCTION_CTRL_WORD_T    system_function_ctrl_word_g = {        \
@@ -8,7 +12,7 @@
SYSTEM_ALARM_WORD_T            system_alarm_word_for_valve_g; //ÓÃÓÚ·§¿Ø£¬Éϱ¨ÍêÇå³ý
SYSTEM_ALARM_CTRL_WORD_T       system_alarm_ctrl_word_g;
SYSTEM_ALARM_REPORT_CTRL_WORD_T     system_alarm_report_ctrl_word_g;
VALVE_CTL_BYTES_T valve_ctl_bytes_g = {
VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g = {.valve_ctrl_bytes = {
{0},
{0},
{0},
@@ -19,5 +23,155 @@
{0},
{0},
{0},
{0},
{0},}
};
#define   alarm_ctrl_para_array_g_NUM   (sizeof(alarm_ctrl_para_array_g) /sizeof(ALARM_CTRL_PARA_T)   )
//±¨¾¯¿ØÖƲÎÊýÕóÁУ¬Ã¿Ôö¼ÓÒ»¸ö±¨¾¯ÄÚÈÝ£¬´Ë´¦¶¼ÒªÔö¼Ó,ÓÐЩ±¨¾¯Ã»ÓжÔÓ¦¹Ø·§×Ö£¬±ÈÈ縴λÔõô´¦Àí£¿  ÐèÒª¶ÔÓ¦Ôö¼ÓÂð
ALARM_CTRL_PARA_T   alarm_ctrl_para_array_g[] = {
   {ALARM_ID_SYSTEM_START ,                                16*0+8 , 16*10+6 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_EX_POWER_STATUS_CHANGE ,                 16*0+9 , 16*0+4 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_COVER_OPEN ,                                     16*0+11 , 16*0+8 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_MAINBOARD_REMOVAL ,                         16*0+12 , 16*0+10 , DAY_ALARM_TIMES , 0},
//   {ALARM_ID_GPRS_FAILED ,                                  16*2+8 , 16*10+14 , DAY_ALARM_TIMES , 0}, //µ¥´ÎÔ¶´«Ê§°Ü½öÏÔʾ£¬²»¹Ø·§£¬²»±¨¾¯£¬ËùÒÔ´Ë´¦²»ÒªÁË
  {ALARM_ID_LCD_NUMBER_OVERRUN ,                         16*5+1 , 16*9+2 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_LITH_BAT_LOW ,                                  16*2+0 , 16*3+0 , DAY_ALARM_TIMES,0},
  {ALARM_ID_LITH_BAT_DOWN ,                               16*2+1 , 16*3+2 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_LITH_BAT_REMOVAL ,                            16*2+2 , 16*3+4 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_ALKA_BAT_LOW ,                                  16*2+3 , 16*3+6 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_ALKA_BAT_DOWN ,                               16*2+4 , 16*3+8 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_ALKA_BAT_REMOVAL ,                            16*2+5 , 16*3+10 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_VALVE_BAT_LOW ,                               16*2+12 , 16*4+10 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_VALVE_BAT_DOWN ,                               16*2+13 , 16*4+12 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_RTC_BAT_LOW ,                                  16*2+14 , 16*4+14 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_TEM_TRANSMITTER_FAILURE ,                16*3+0 , 16*6+0 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_TEM_EXCEED_UP_LIMIT ,                      16*3+1 , 16*5+0 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_TEM_EXCEED_UP_UP_LIMIT ,                   16*3+2 , 16*5+2 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_TEM_EXCEED_LOW_LIMIT ,                      16*3+3 , 16*5+4 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_TEM_EXCEED_LOW_LOW_LIMIT ,                16*3+4 , 16*5+6 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_PRE_TRANSMITTER_FAILURE ,                16*3+8 , 16*6+2 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_PRE_EXCEED_UP_LIMIT ,                      16*3+9 , 16*5+8 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_PRE_EXCEED_UP_UP_LIMIT ,                   16*3+10 , 16*5+10 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_PRE_EXCEED_LOW_LIMIT ,                      16*3+11 , 16*5+12 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_PRE_EXCEED_LOW_LOW_LIMIT ,                16*3+12 , 16*5+14 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_AMBIENT_TEM_EXCEED_UP_LIMIT ,          16*3+5 , 16*6+4 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_AMBIENT_TEM_EXCEED_LOW_LIMIT ,          16*3+6 , 16*6+6 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_AMBIENT_TEM_SUDDEN_CHANGE ,             16*3+7 , 16*6+8 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_LCD_AMBIENT_TEM_EXCEED_LOW_LIMIT ,    16*5+2 , 16*9+4 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_MEASURE_SONIC_SENSOR_LOSS ,             16*4+7 , 16*7+14 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_MEASURE_FLOW_VELOCITY_ABNORMAL ,       16*4+0 , 16*7+0 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_MEASURE_TIME_DIFF_ABNORMAL ,             16*4+1 , 16*7+2 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_MEASURE_SOUND_VELOCITY_ABNORMAL ,      16*4+2 , 16*7+4 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_MEASURE_SNR_ABNORMAL ,                      16*4+3 , 16*7+6 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_MEASURE_SIHNAL_OVERFLOW_ABNORMAL ,    16*4+4 , 16*7+8 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_MEASURE_THRESHOLD_ABNORMAL ,             16*4+5 , 16*7+10 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_MEASURE_GAIN_ABNORMAL ,                   16*4+6 , 16*7+12 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_MEDIUM_WATER ,                                  16*4+8 , 16*8+0 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_MEDIUM_ABNORMAL ,                            16*4+9 , 16*8+2 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_DISMANTLE_METER_ABNORMAL ,                16*4+10 , 16*8+4 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_METERING_UNIT_ABNORMAL ,                   16*4+11 , 16*8+6 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_MEASURE_CHANNEL_REMOVAL ,                16*4+12 , 16*8+8 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_FLOW_EXCEED_UP_LIMIT ,                      16*5+3 , 16*9+6 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_FLOW_EXCEED_UP_UP_LIMIT ,                16*5+4 , 16*9+8 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_FLOW_EXCEED_UP_UP_LIMIT2 ,                16*5+5 , 16*9+10 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_FLOW_BIDIRECTIONAL ,                         16*0+5 , 16*0+2 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_FLOW_CONSTANT ,                               16*5+7 , 16*9+14 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_FLOW_SMALL ,                                     16*5+6 , 16*9+12 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_GAS_LEAK ,                                        16*5+0 , 16*9+0 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_VALVE_ABNORMAL ,                               16*1+0 , 16*1+0 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_VALVE_CLOSE_GAS_RUNNING_ABNORMAL ,    16*5+8 , 16*10+0 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_FLOW_BAT_LOW ,                                  16*2+6 , 16*4+0 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_FLOW_BAT_DOWN ,                               16*2+7 , 16*4+2 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_BROKEN_LINE ,                                  16*2+11 , 16*4+8 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_E2P_W_ABNORMAL ,                               16*5+9 , 16*10+2 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_E2P_R_ABNORMAL ,                               16*5+10 , 16*10+4 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_READ_485_ABNORMAL ,                         16*2+9 , 16*4+4 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_485_READING_SMALLER_ABNORMAL ,          16*2+10 , 16*4+6 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_EX_TRIGGER_CLOSE_VALVE ,                   16*2+15 , 16*3+14 , DAY_ALARM_TIMES , 0},
   {ALARM_ID_BALANCE_SMALLER1 ,                            16*1+11 , 16*1+2 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_BALANCE_SMALLER2 ,                            16*1+12 , 16*1+4 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_BALANCE_SMALLER3 ,                            16*1+13 , 16*1+6 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_BALANCE_SMALLER4 ,                            16*1+14 , 16*1+8 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_BALANCE_SMALLER5 ,                            16*1+15 , 16*1+10 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_CUMULATIVE_GAS_ARRIVE ,                   16*1+4 , 16*2+0 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_N_DAYS_NO_GAS_ARRIVE ,                      16*1+5 , 16*2+2 , DAY_ALARM_TIMES , 0},
  {ALARM_ID_N_DAYS_NO_REPORT_ARRIVE ,                16*1+6 , 16*2+4 , DAY_ALARM_TIMES , 0}
};
//±¨¾¯´ÎÊý++,  ·µ»ØSET´ú±í´ÎÊýûÓдﵽÉÏÏÞ£¬¿ÉÒÔ´¥·¢Éϱ¨
FlagStatus   AlarmCntIncrease(SYS_ALARM_VALVE_T alarm_id)
{
   uint16_t count_i;
   if(alarm_id == ALARM_ID_NORMAL ) //Õë¶Ô²ÎÊýÐ޸ı¨¾¯µÈ£¬Ã»ÓжÔÓ¦µÄ±¨¾¯ID£¬Ôò²»ÏÞÖÆ´ÎÊý
   {
      return   SET;
   }
   for(count_i = 0;count_i <alarm_ctrl_para_array_g_NUM;count_i++ ){
      if(alarm_ctrl_para_array_g[count_i].alarm_id == alarm_id){
         if((alarm_ctrl_para_array_g[count_i].day_cnt ++ ) < alarm_ctrl_para_array_g[count_i].day_times){
            return   SET;
         }
         break;
      }
   }
   return RESET;
}
void   AlarmCntClearAll(void)
{
   uint16_t count_i;
   for(count_i = 0;count_i <alarm_ctrl_para_array_g_NUM;count_i++ ){
      alarm_ctrl_para_array_g[count_i].day_cnt  = 0;
      if(count_i > 200) //ÔÝʱ»¹Ã»ÓÐ200¸ö±¨¾¯
      {
         break;
      }
   }
}
void   EveryDayClearAlarmCnt(const sClockBCD sys_clockBCD_in )
{
   if((sys_clockBCD_in.hour == 0x06)&&(sys_clockBCD_in.min == 0x10)&&(sys_clockBCD_in.sec == 0x05))
   {
      AlarmCntClearAll();
   }
}
//ϵͳ±¨¾¯¿ØÖÆ
//³õʼ״̬¼ì²â£¬ÔÚwhile֮ǰ¾Í¼ì²âµô£¬³õʼ״̬¼ì²âÓÃÓÚÖÃλ²¿·Ö״̬×Ö£¬ÈçÓб¨¾¯£¬ÐèÒª²åÈëÏÔʾÁ´±í£¬µ«ÊÇÒª²»ÒªÓÃÓÚÉϱ¨ÐèÒª¿¼ÂÇ£»
//ÔÚ¸÷¸ö¹¦ÄÜÄ£¿é´¦Àíʱ£¬ÈçÓб¨¾¯£¨Êܱ¨¾¯¿ØÖÆ×Ö¿ØÖÆ£©£¬µ±³¡°ÑÏàÓ¦µÄ״̬×ÖÖÃλ¡¢ÓÃÓÚÉϱ¨µÄ±¨¾¯×ÖÖÃ루Êܱ¨¾¯Éϱ¨¿ØÖÆ×Ö¿ØÖÆ£©¡¢ÓÃÓÚ·§¿ØµÄ±¨¾¯×ÖÖÃλ£¬Í¬Ê±²åÈëÏÔʾÁ´±í£»Èç¹û±¨¾¯Ïû³ý£¬ÐèÒª´¦Àí£¬Í¬Ê±É¾³ýÏÔʾµÄÁ´±í¡£
//ÓÃÓÚÉϱ¨µÄ±¨¾¯×ַǿգ¬´¥·¢Éϱ¨£¬Èç¹ûÉϱ¨½øÐÐÖУ¬Ôò²»Öظ´´¥·¢£¬ ±¨¾¯×ÖÉϱ¨³É¹¦Ö®ºóÇå¿Õ£»
//ÓÃÓÚ·§¿ØµÄ±¨¾¯×ÖÖ»´¥·¢Ò»´Î£¬Èç¹ûÎÞ¶¯×÷£¬Ôò½öÇå³ý¸Ã±¨¾¯×Ö£»Èç¹ûÐèÒª¶¯×÷£¬ÔòÏàÓ¦¿ØÖÆ·§ÃÅ£¬·§ÃÅÒѾ­¹Ø±Õ״̬»òÕýÔÚ¹ØÊ±Ôò½öÐè´¦ÀíËø¶¨×´Ì¬¡£´¥·¢Ö®ºó±¨¾¯×ÖÇé¿ö¡£  Óжà¸ö±¨¾¯×Öͬʱ´æÔڵģ¬ÒªÒÀ´ÎÅжϣ¬ÒòΪ±¨¾¯×Ö´¥·¢µÄ¹Ø·§ÀàÐͲ»Ò»Ö£¬Ç¿ÖÆÐԹط§µÄÓÅÏȼ¶¸ü¸ß¡£
//·§¿ØËø¶¨×´Ì¬ÒªÓÐ×Ô¶¯½âËø»úÖÆ£¬ÓÃÓÚÂú×ã³äÖµºó¿ÉÖ±½Ó¿ª¹ØµÄÐèÇó£¬Èç¹û֮ǰ´¥·¢¹Ø·§µÄÔ­ÒòÊÇÓà¶îÔì³ÉµÄÇ¿ÖÆÐԹط§£¬ÔòÔÚÓà¶î³ä×ãÖ®ºó×Ô¶¯½âËø£¬Èç¹ûÊÇ·ÇÓà¶îÔì³ÉµÄÇ¿ÖÆÐԹط§£¬Ôò²»ÄÜ×Ô¶¯½âËø£¬Õâ¾ÍÐèÒª¼Ç¼֮ǰ´¥·¢Ç¿ÖÆÐԹط§µÄÔ­Òò¡£
//¼Ç¼µÄÉϴιط§Ô­ÒòÐèÒªÓÐÓÅÏȼ¶¸²¸Ç»úÖÆ£¬ Ç¿ÖÆÐԹط§¸²¸Ç·ÇÇ¿ÖÆÐԹط§£¬ ·ÇÓà¶îÔì³ÉµÄÇ¿ÖÆÐԹط§¸²¸ÇÓà¶îÔì³ÉµÄ¡£
void SysAlarmCtrlPro(void)
{
   EveryDayClearAlarmCnt(sys_clockBCD_g); //ÿÌìÇå³ý±¨¾¯´ÎÊý
   /*±¨¾¯´¥·¢Éϱ¨*/
   if(AlarmTriggerWrcFlag ==SET){
      AlarmTriggerWrcFlag = RESET;
      start_wrc_g = WRC_MEANS_ALARM;//´æÔÚ±¨¾¯
   }
   /*±¨¾¯´¥·¢·§¿Ø*/
}