~={green}Замечания от заказчика=~
Событие "Срабатывание EPO" формируется в модуле ups_monitor.c В отдельной функции UPS_EPOMonitor. Нужно ли ее отключить?
#define EPO_MONITOR
Событие "Ош подкл вх напр" формируется в модуле ups_monitor.c В отдельной функции UPS_PhaseFailMonitor. Нужно ли ее отключить?
#define PHASE_FAIL_MONITOR
При запуске теста АКБ в логе информация о смене режима работы, но не о тесте. В syslog правильно. ~={yellow}Question.=~ В логе в событиях контроллера не отображается режим работы "тест АКБ" (Вход в тест, выход из теста.)
В веб-интерфейсе отображается входная частота, в случае оффлайн ИБП особого смысла не имеет. Логичнее указывать только частоту выходного напряжения. ~={yellow}Question.=~
Существует множество режимов работы контроллера ИБП.
Необходимо уточнить в каких режимах показывать входную частоту и какое значение выводить? Во всех режимах кроме Bypass выводить 0 в параметре "входная частота".
Проблема IAP. ~={red}Open.=~
Полная мощность ИБП 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;
}
Убрать отправку fault в конце разряда АКБ. ~={yellow}Question.=~ Не понял. Отправку куда? Это трап.
Сообщение в лог "авария входного напряжения 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;
}
В syslog именует выходное напряжение входным. ~={green}Fixed.=~
// ups_monitor.c
// Поменял "входное" на "выходное"
SNMP_SendUserTrap(VAC_HIGH_OUTPUT_ALARM);
syslog(SYSLOG_ERROR, "Высокое выходное напряжение (%0.1f В)", VACoutputCurrent);
Для решения этой проблемы нужен ИБП и контроллер в режиме отладки.