6721 fix.md 5.4 KB

~={green}Замечания от заказчика=~

  1. В логе фигурируют аварии, которых не может быть. "Срабатывание EPO", "Ош. подкл. вх. напряжения" ~={yellow}Question.=~ Отключить функции.

Событие "Срабатывание EPO" формируется в модуле ups_monitor.c В отдельной функции UPS_EPOMonitor. Нужно ли ее отключить?

#define EPO_MONITOR

Событие "Ош подкл вх напр" формируется в модуле ups_monitor.c В отдельной функции UPS_PhaseFailMonitor. Нужно ли ее отключить?

#define PHASE_FAIL_MONITOR
  1. При запуске теста АКБ в логе информация о смене режима работы, но не о тесте. В syslog правильно. ~={yellow}Question.=~ В логе в событиях контроллера не отображается режим работы "тест АКБ" (Вход в тест, выход из теста.)

  2. В веб-интерфейсе отображается входная частота, в случае оффлайн ИБП особого смысла не имеет. Логичнее указывать только частоту выходного напряжения. ~={yellow}Question.=~

Существует множество режимов работы контроллера ИБП.

  • Power on
  • Standby
  • Bypass
  • OnLine
  • Battery
  • Battery test
  • Fault
  • ECO
  • Converter
  • Shutdown

Необходимо уточнить в каких режимах показывать входную частоту и какое значение выводить? Во всех режимах кроме Bypass выводить 0 в параметре "входная частота".

  1. Проблема IAP. ~={red}Open.=~

  2. Полная мощность ИБП 400, а не 500. ~={green}Fixed.=~

    RoTeK-swt-BT-BT-6721-signals-MIB::upsFullPower.0 = STRING: "400"
    
    // Этот параметр формируется в функции:
    
    /**
      * @brief Полная мощность АКБ
      */
    void GetUPSPowerStr(char *str, uint8_t *len)
    {
        sprintf(str, "%d", (int32_t)sSettings.UPS_Setting.ups_power);
        *len = strlen(str);
    }
    
    // Решение. Изменил значение параметра sSettings.UPS_Setting.ups_power в settings_api_bt6721.c
    
    /**
      * @brief  Настройки ИБП по умолчанию
      */
    void SETTINGS_SetUPSSettingsDef(void)
    {
      sSettings.UPS_Setting.Ucellmin = 1.89;
      sSettings.UPS_Setting.Ucellmax = 2.36;
      sSettings.UPS_Setting.Uakb = 12;
      sSettings.UPS_Setting.common_capacity = 15;
      sSettings.UPS_Setting.ups_power = 400;
      sSettings.UPS_Setting.set_data = 0;
      sSettings.UPS_Setting.life_time = 5;
      sSettings.UPS_Setting.type_ups = ups_kestar;
    }
    
  3. Убрать отправку fault в конце разряда АКБ. ~={yellow}Question.=~ Не понял. Отправку куда? Это трап.

  4. Сообщение в лог "авария входного напряжения 220В авария" при возобновлении питания. ~={red}Open.=~

    // Запись в журнал формируется в функции:
    
    /**
      * @brief  Мониторинг бита LainFail
      */
    
    void UPS_LineFailMonitor(void)
    {
    #ifdef LINE_FAIL_MONITOR
      static bool isValueRecv = false;
      static uint8_t lineFailOldState = 0;
      uint8_t lineFailCurrent;
      char log_string[50];
      uint8_t len;
    
    #if defined RELAY_AC_PRESENT
      uint8_t i = 0;
      static uint8_t OldROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
      uint8_t CurrROtype_Sourse[OUTPUTS_TOTAL_COUNT] = {0};
    
      for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++)
        CurrROtype_Sourse[i] = sSettings.sRelays[i].ro_type_source;
    #endif
    
    #ifdef VAC_IN_MONITOR
      lineFailCurrent = ((UPS.Status >> 7) & 0x01);
      lineFailCurrent |= UPS_VACinputRangeAlarm();
    #else
      lineFailCurrent = (UPS.Status >> 7) & 0x01;
    #endif
    
      if (!isValueRecv) {
        isValueRecv = true;
        lineFailOldState = lineFailCurrent;
    
        if (lineFailCurrent != 0){
          memset(log_string, 0, sizeof(log_string));
          strcat(log_string, "Авария");
          len = strlen(log_string);
          sprintf(&log_string[len], " (%0.1f В)", UPS.VAC_in);  
          log_event_data(LOG_ALARM_LINE, log_string);
          SNMP_SendUserTrap(LINE_ALARM);
          syslog(SYSLOG_ERROR, "Авария сети (%0.1f В)", UPS.VAC_in);
          flUpdateLog = true;
    #if defined RELAY_AC_PRESENT
          relay_setup_log(CurrROtype_Sourse, AC_PRESENT, 1);
    #endif
        }
        else{
    #if defined RELAY_AC_PRESENT
          relay_setup_log(CurrROtype_Sourse, AC_PRESENT, 0);
    #endif
          log_event_data(LOG_ALARM_LINE, "Норма");
          SNMP_SendUserTrap(LINE_NORM);
          syslog(SYSLOG_NOTICE, "Сеть в норме (%0.1f В)", UPS.VAC_in);
          flUpdateLog = true;
        }
        return;
      }
    
  5. В syslog именует выходное напряжение входным. ~={green}Fixed.=~

    // ups_monitor.c
    //  Поменял "входное" на "выходное"
    SNMP_SendUserTrap(VAC_HIGH_OUTPUT_ALARM);
    syslog(SYSLOG_ERROR, "Высокое выходное напряжение (%0.1f В)", VACoutputCurrent);
    

Для решения этой проблемы нужен ИБП и контроллер в режиме отладки.