|
@@ -31,6 +31,7 @@
|
|
|
|
|
|
bool flCriticalAlarm = false;
|
|
|
bool flNonCriticalAlarm = false;
|
|
|
+bool flLedAlarm = false;
|
|
|
|
|
|
/**
|
|
|
* @brief Общая структура настроек
|
|
@@ -49,13 +50,14 @@ void UPS_Monitor(void *params)
|
|
|
{
|
|
|
flCriticalAlarm = false;
|
|
|
flNonCriticalAlarm = false;
|
|
|
+ flLedAlarm = false;
|
|
|
|
|
|
#define XMONITOR(monitor_func, present) if (present) { monitor_func(); }
|
|
|
MONITOR_TABLE
|
|
|
#undef XMONITOR
|
|
|
|
|
|
#ifdef LED_ALARM
|
|
|
- if(flCriticalAlarm){
|
|
|
+ if(flLedAlarm){
|
|
|
if (UPS.Present)
|
|
|
LED_On(LED_ALARM);
|
|
|
else
|
|
@@ -104,9 +106,10 @@ void UPS_DI0Monitor(void)
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- /*if (DI0StateCurrent)
|
|
|
- flCriticalAlarm = true;*/
|
|
|
-
|
|
|
+ if (DI0StateCurrent) {
|
|
|
+ flLedAlarm = true;
|
|
|
+ }
|
|
|
+
|
|
|
// Значение параметра изменилось
|
|
|
if (DI0StateCurrent != DI0OldState[i])
|
|
|
{
|
|
@@ -398,10 +401,11 @@ void UPS_LineFailMonitor(void)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- if (lineFailCurrent)
|
|
|
- flCriticalAlarm = true;
|
|
|
-
|
|
|
+ if (lineFailCurrent){
|
|
|
+ flCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
+ }
|
|
|
+
|
|
|
// Значение параметра изменилось
|
|
|
if (lineFailCurrent != lineFailOldState)
|
|
|
{
|
|
@@ -472,7 +476,6 @@ void UPS_VACoutputLowRangeMonitor(void)
|
|
|
/* Отслеживается переход через нижнию границу */
|
|
|
if (VACoutputCurrent < sSettings.sAlarmManager.ac_output_range.low)
|
|
|
{
|
|
|
- flCriticalAlarm = true;
|
|
|
if (stateCurrentVACoutput == HYST_IDLE)
|
|
|
{
|
|
|
UPS.Alarm |= (1 << 7);
|
|
@@ -505,6 +508,9 @@ void UPS_VACoutputLowRangeMonitor(void)
|
|
|
// SNMP_SendUserTrap(POWER_NORM);
|
|
|
flUpdateLog = true;
|
|
|
}
|
|
|
+ }
|
|
|
+ if (UPS.Alarm & 0x80) {
|
|
|
+ flLedAlarm = true;
|
|
|
}
|
|
|
#if defined HARDWARE_BT6707
|
|
|
for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++){
|
|
@@ -539,7 +545,6 @@ void UPS_VACoutputHighRangeMonitor(void)
|
|
|
/* Отслеживается переход через верхнюю границу */
|
|
|
if (VACoutputCurrent > sSettings.sAlarmManager.ac_output_range.high)
|
|
|
{
|
|
|
- flCriticalAlarm = true;
|
|
|
if (stateCurrentVACoutput == HYST_IDLE) {
|
|
|
UPS.Alarm |= (1 << 7);
|
|
|
stateCurrentVACoutput = HYST_UP;
|
|
@@ -571,6 +576,9 @@ void UPS_VACoutputHighRangeMonitor(void)
|
|
|
flUpdateLog = true;
|
|
|
}
|
|
|
}
|
|
|
+ if (UPS.Alarm & 0x80) {
|
|
|
+ flLedAlarm = true;
|
|
|
+ }
|
|
|
#if defined HARDWARE_BT6707
|
|
|
for(i = 0; i < OUTPUTS_TOTAL_COUNT; i ++){
|
|
|
OldROtype_Sourse[i] = CurrROtype_Sourse[i];
|
|
@@ -667,12 +675,14 @@ void UPS_LowBatMonitor(void)
|
|
|
if(!flag_alarm_time){
|
|
|
if (lowBatCurrent){
|
|
|
flNonCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
}
|
|
|
lowBatOldState = lowBatCurrent;
|
|
|
}
|
|
|
else{
|
|
|
if (lowBatOldState){
|
|
|
flNonCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
@@ -692,8 +702,7 @@ void UPS_PowerMonitor(void)
|
|
|
/* Отслеживается переход через верхнюю границу */
|
|
|
if (load > sSettings.sAlarmManager.load_range.high)
|
|
|
{
|
|
|
- flCriticalAlarm = true;
|
|
|
- UPS.Alarm = (UPS.Alarm & 0xfffffffe) | (1 << 0);
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffffe) | (1 << 0);
|
|
|
if (stateCurrent == HYST_IDLE)
|
|
|
{
|
|
|
#ifdef LED_RED_MINOR
|
|
@@ -714,7 +723,7 @@ void UPS_PowerMonitor(void)
|
|
|
else if (load < (sSettings.sAlarmManager.load_range.high - sSettings.sAlarmManager.load_range.hyst))
|
|
|
{
|
|
|
UPS.Alarm = (UPS.Alarm & 0xfffffffe);
|
|
|
- if (stateCurrent == HYST_UP)
|
|
|
+ if (stateCurrent == HYST_UP)
|
|
|
{
|
|
|
#ifdef LED_RED_MINOR
|
|
|
LED_Off(LED_RED_MINOR);
|
|
@@ -730,6 +739,11 @@ void UPS_PowerMonitor(void)
|
|
|
flUpdateLog = true;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (UPS.Alarm & 0x00000001) {
|
|
|
+ flCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
+ }
|
|
|
#endif
|
|
|
}
|
|
|
|
|
@@ -747,17 +761,19 @@ void UPS_TemperatureHighRangeMonitor(void)
|
|
|
if(temperature == 85) {
|
|
|
UPS.Alarm = (UPS.Alarm & 0xfffffffd) | (1 << 1);
|
|
|
return;
|
|
|
+ } else {
|
|
|
+ if (stateCurrent == HYST_IDLE) {
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffffd);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* Отслеживается переход через верхнюю границу */
|
|
|
if (temperature > sSettings.sAlarmManager.Temprature_range.high)
|
|
|
{
|
|
|
- flCriticalAlarm = true;
|
|
|
- UPS.Alarm = (UPS.Alarm & 0xfffffffd) | (1 << 1);
|
|
|
if (stateCurrent == HYST_IDLE)
|
|
|
- {
|
|
|
- stateCurrent = HYST_UP;
|
|
|
-
|
|
|
+ {
|
|
|
+ stateCurrent = HYST_UP;
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffffd) | (1 << 1);
|
|
|
|
|
|
log_event_data(LOG_ALARM_HIGH_TEMP, "Авария");
|
|
|
// Отправка трапа о завышении
|
|
@@ -768,16 +784,19 @@ void UPS_TemperatureHighRangeMonitor(void)
|
|
|
/* Отслеживается нормализация */
|
|
|
else if (temperature < (sSettings.sAlarmManager.Temprature_range.high - sSettings.sAlarmManager.Temprature_range.hyst))
|
|
|
{
|
|
|
- UPS.Alarm = (UPS.Alarm & 0xfffffffd);
|
|
|
if (stateCurrent == HYST_UP)
|
|
|
- {
|
|
|
- stateCurrent = HYST_IDLE;
|
|
|
-
|
|
|
- log_event_data(LOG_ALARM_HIGH_TEMP, "Норма");
|
|
|
+ {
|
|
|
+ stateCurrent = HYST_IDLE;
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffffd);
|
|
|
+ log_event_data(LOG_ALARM_HIGH_TEMP, "Норма");
|
|
|
// Отправка трапа о нормализации
|
|
|
- SNMP_SendUserTrap(BATTERY_HIGH_TEMPERATURE_NORM);
|
|
|
- flUpdateLog = true;
|
|
|
- }
|
|
|
+ SNMP_SendUserTrap(BATTERY_HIGH_TEMPERATURE_NORM);
|
|
|
+ flUpdateLog = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (UPS.Alarm & 0x00000002) {
|
|
|
+ flCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -794,17 +813,19 @@ void UPS_TemperatureLowRangeMonitor(void)
|
|
|
if(temperature == 85) {
|
|
|
UPS.Alarm = (UPS.Alarm & 0xfffffeff) | (1 << 8);
|
|
|
return;
|
|
|
+ } else {
|
|
|
+ if (stateCurrent == HYST_IDLE) {
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffeff);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* Отслеживается переход через нипжнюю границу */
|
|
|
if (temperature < sSettings.sAlarmManager.Temprature_range.low)
|
|
|
{
|
|
|
- flCriticalAlarm = true;
|
|
|
- UPS.Alarm = (UPS.Alarm & 0xfffffeff) | (1 << 8);
|
|
|
if (stateCurrent == HYST_IDLE)
|
|
|
{
|
|
|
stateCurrent = HYST_DOWN;
|
|
|
-
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffeff) | (1 << 8);
|
|
|
|
|
|
log_event_data(LOG_ALARM_LOW_TEMP, "Авария");
|
|
|
// Отправка трапа о занижении
|
|
@@ -815,17 +836,20 @@ void UPS_TemperatureLowRangeMonitor(void)
|
|
|
/* Отслеживается нормализация */
|
|
|
else if (temperature > (sSettings.sAlarmManager.Temprature_range.low + sSettings.sAlarmManager.Temprature_range.hyst))
|
|
|
{
|
|
|
- UPS.Alarm = (UPS.Alarm & 0xfffffeff);
|
|
|
if (stateCurrent == HYST_DOWN)
|
|
|
{
|
|
|
stateCurrent = HYST_IDLE;
|
|
|
-
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffeff);
|
|
|
log_event_data(LOG_ALARM_LOW_TEMP, "Норма");
|
|
|
// Отправка трапа о нормализации
|
|
|
SNMP_SendUserTrap(BATTERY_LOW_TEMPERATURE_NORM);
|
|
|
flUpdateLog = true;
|
|
|
}
|
|
|
}
|
|
|
+ if (UPS.Alarm & 0x00000100) {
|
|
|
+ flCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
+ }
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -843,15 +867,19 @@ void Cabinet_TemperatureHighRangeMonitor(void)
|
|
|
if(temperature == 85) {
|
|
|
UPS.Alarm = (UPS.Alarm & 0xfffffdff) | (1 << 9);
|
|
|
return;
|
|
|
+ } else {
|
|
|
+ if (stateCurrent == HYST_IDLE) {
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffdff);
|
|
|
+ }
|
|
|
}
|
|
|
/* Отслеживается переход через верхнюю границу */
|
|
|
if (temperature > sSettings.sAlarmManager.Temprature_cabinet_range.high)
|
|
|
{
|
|
|
- flCriticalAlarm = true;
|
|
|
- UPS.Alarm = (UPS.Alarm & 0xfffffdff) | (1 << 9);
|
|
|
+
|
|
|
if (stateCurrent == HYST_IDLE)
|
|
|
- {
|
|
|
- stateCurrent = HYST_UP;
|
|
|
+ {
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffdff) | (1 << 9);
|
|
|
+ stateCurrent = HYST_UP;
|
|
|
|
|
|
|
|
|
log_event_data(LOG_ALARM_HIGH_CABINET_TEMP, "Авария");
|
|
@@ -863,10 +891,10 @@ void Cabinet_TemperatureHighRangeMonitor(void)
|
|
|
/* Отслеживается нормализация */
|
|
|
else if (temperature < (sSettings.sAlarmManager.Temprature_cabinet_range.high - sSettings.sAlarmManager.Temprature_cabinet_range.hyst))
|
|
|
{
|
|
|
- UPS.Alarm = (UPS.Alarm & 0xfffffdff);
|
|
|
if (stateCurrent == HYST_UP)
|
|
|
- {
|
|
|
- stateCurrent = HYST_IDLE;
|
|
|
+ {
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffdff);
|
|
|
+ stateCurrent = HYST_IDLE;
|
|
|
|
|
|
log_event_data(LOG_ALARM_HIGH_CABINET_TEMP, "Норма");
|
|
|
// Отправка трапа о нормализации
|
|
@@ -874,6 +902,9 @@ void Cabinet_TemperatureHighRangeMonitor(void)
|
|
|
flUpdateLog = true;
|
|
|
}
|
|
|
}
|
|
|
+ if (UPS.Alarm & 0x00000200) {
|
|
|
+ flLedAlarm = true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -889,17 +920,19 @@ void Cabinet_TemperatureLowRangeMonitor(void)
|
|
|
if(temperature == 85) {
|
|
|
UPS.Alarm = (UPS.Alarm & 0xfffffbff) | (1 << 10);
|
|
|
return;
|
|
|
+ } else {
|
|
|
+ if (stateCurrent == HYST_IDLE) {
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffbff);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* Отслеживается переход через нипжнюю границу */
|
|
|
if (temperature < sSettings.sAlarmManager.Temprature_cabinet_range.low)
|
|
|
{
|
|
|
- flCriticalAlarm = true;
|
|
|
- UPS.Alarm = (UPS.Alarm & 0xfffffbff) | (1 << 10);
|
|
|
if (stateCurrent == HYST_IDLE)
|
|
|
- {
|
|
|
- stateCurrent = HYST_DOWN;
|
|
|
-
|
|
|
+ {
|
|
|
+ stateCurrent = HYST_DOWN;
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffbff) | (1 << 10);
|
|
|
|
|
|
log_event_data(LOG_ALARM_LOW_CABINET_TEMP, "Авария");
|
|
|
// Отправка трапа о занижении
|
|
@@ -910,10 +943,10 @@ void Cabinet_TemperatureLowRangeMonitor(void)
|
|
|
/* Отслеживается нормализация */
|
|
|
else if (temperature > (sSettings.sAlarmManager.Temprature_cabinet_range.low + sSettings.sAlarmManager.Temprature_cabinet_range.hyst))
|
|
|
{
|
|
|
- UPS.Alarm = (UPS.Alarm & 0xfffffbff);
|
|
|
if (stateCurrent == HYST_DOWN)
|
|
|
- {
|
|
|
- stateCurrent = HYST_IDLE;
|
|
|
+ {
|
|
|
+ UPS.Alarm = (UPS.Alarm & 0xfffffbff);
|
|
|
+ stateCurrent = HYST_IDLE;
|
|
|
|
|
|
log_event_data(LOG_ALARM_LOW_CABINET_TEMP, "Норма");
|
|
|
// Отправка трапа о нормализации
|
|
@@ -921,6 +954,9 @@ void Cabinet_TemperatureLowRangeMonitor(void)
|
|
|
flUpdateLog = true;
|
|
|
}
|
|
|
}
|
|
|
+ if (UPS.Alarm & 0x00000400) {
|
|
|
+ flLedAlarm = true;
|
|
|
+ }
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -953,8 +989,10 @@ void UPS_ConnectMonitor(void)
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
- if (!connectCurrent)
|
|
|
- flCriticalAlarm = true;
|
|
|
+ if (!connectCurrent){
|
|
|
+ flCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
+ }
|
|
|
// Значение параметра изменилось
|
|
|
if (connectCurrent != connectOldState)
|
|
|
{
|
|
@@ -1063,13 +1101,15 @@ void UPS_BatteryConnectMonitor(void)
|
|
|
|
|
|
if(!flag_alarm_time){
|
|
|
if (AKBconnectCurrent){
|
|
|
- flCriticalAlarm = true;
|
|
|
+ flCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
}
|
|
|
AKBconnectOldState = AKBconnectCurrent;
|
|
|
}
|
|
|
else{
|
|
|
if (AKBconnectOldState){
|
|
|
- flCriticalAlarm = true;
|
|
|
+ flCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
@@ -1093,6 +1133,7 @@ void AKB_Change_Monitor(void)
|
|
|
UPS.Alarm |= (1 << 6);
|
|
|
curr_status_change_akb = 1;
|
|
|
flCriticalAlarm = true;
|
|
|
+ flLedAlarm = true;
|
|
|
}
|
|
|
else {
|
|
|
UPS.Alarm &= 0xffffffbf;
|