Procházet zdrojové kódy

1)add define alarm connection UPS
2)color for monitoring

balbekova před 7 roky
rodič
revize
a95a019ab3

+ 1 - 1
modules/Ethernet/private_mib.c

@@ -361,7 +361,7 @@ static void signals_get_object_def (u8_t ident_len, s32_t *ident, struct obj_def
         od->v_len = paramLength;
         break;	
       case 17: /* ConnectMonitor */
-		GetConnectMonitorStr(paramStr, &paramLength);
+	//	GetConnectMonitorStr(paramStr, &paramLength);
         od->instance = MIB_OBJECT_SCALAR;
         od->access = MIB_OBJECT_READ_ONLY;
         od->asn_type = SNMP_ASN1_OC_STR;

+ 2 - 2
modules/Ethernet/trap_api.c

@@ -145,13 +145,13 @@ void SNMP_InitTrapsBase(void)
   traps[CONNECT_MONITOR_ALARM].trapId = CONNECT_MONITOR_ALARM;
   traps[CONNECT_MONITOR_ALARM].varbindId = 17;
   traps[CONNECT_MONITOR_ALARM].trapEnable = true;
-  traps[CONNECT_MONITOR_ALARM].handle = GetConnectMonitorStr; /* ConnectMonitor */
+  traps[CONNECT_MONITOR_ALARM].handle = GetPowerStr;//GetConnectMonitorStr; /* ConnectMonitor */
   
   /* 18. ConnectMonitorNorm */ //
   traps[CONNECT_MONITOR_NORM].trapId = CONNECT_MONITOR_NORM;
   traps[CONNECT_MONITOR_NORM].varbindId = 17;
   traps[CONNECT_MONITOR_NORM].trapEnable = true;
-  traps[CONNECT_MONITOR_NORM].handle = GetConnectMonitorStr; /* ConnectMonitor */
+  traps[CONNECT_MONITOR_NORM].handle = GetPowerStr;//GetConnectMonitorStr; /* ConnectMonitor */
 
   /* 19. BatteryConnectAlarm */ // +
   traps[BATTERY_CONNECT_ALARM].trapId = BATTERY_CONNECT_ALARM;

+ 5 - 5
modules/HTTP_Server/web_params_api.c

@@ -108,13 +108,13 @@ void HTTP_GetParamsPage1(char *buf)
     // load_monitor (нагрузка, 0 - норма, 1 - fail)
     // temp_monitor (внутренняя температура, 0 - норма, 1 - fail)
     // connect_monitor (связь с UPSом, 0 - норма, 1 - fail)
-
-  GetConnectMonitorStr(str, &len);
-  strcat(buf, "\",\"connect_monitor\":\"");
-  strncat(buf, str, len);
   
+  GetAlarmMonitorStr(str, &len);
+  strcat(buf, "\",\"m_alarm\":\"");
+  strncat(buf, str, len);
+
   GetAlarmStr(str, &len);
-  strcat(buf, "\",\"alarm\":\"");
+  strcat(buf, "\",\"u_alarm\":\"");
   strncat(buf, str, len);
 
   // Признак изменения сетевых настроек 

+ 35 - 0
modules/MegaTec/megatec.c

@@ -66,6 +66,9 @@ void init_UPS_value(void)
 	UPS.SOC = 0;
 	UPS.work_time = 0;
 	UPS.Status = 0;
+	UPS.Alarm = 0;
+	UPS.cnt_err_ups = 0;
+	UPS.Flag_Present = false;
 	UPS.Present = false;
 
 	memset(UPS.model, 0, 11);
@@ -127,6 +130,10 @@ void ups_status_response(char *data)
 	if(data[0] != '(')
 		return;
 
+	UPS.Present = true;
+	UPS.Flag_Present = true;
+	UPS.cnt_err_ups = true;
+
 	data++;
 
 	memset(value, 0, 10);
@@ -199,6 +206,10 @@ void ups_info_response(char *data)
 	if(data[0] != '#')
 		return;
 
+	UPS.Present = true;
+	UPS.Flag_Present = true;
+	UPS.cnt_err_ups = true;
+
 	data++;
 
 	data += 16;
@@ -267,8 +278,31 @@ void request_task(void)
 
 		for(;;)
 		{
+			if(UPS.Present == true){
+				if(UPS.Flag_Present == false)
+				{
+					if(UPS.cnt_err_ups != 2)
+						UPS.cnt_err_ups++;
+					else{
+						UPS.Freq_in = 0;
+						UPS.VAC_in = 0;
+						UPS.VAC_out = 0;
+						UPS.Temp = 0;
+						UPS.Load = 0;
+						UPS.SOC = 0;
+						UPS.work_time = 0;
+						UPS.Status = 0;
+						UPS.Alarm = 0;
+						UPS.Present = false;
+
+						memset(UPS.model, 0, 11);
+						memset(UPS.vertion, 0, 11);
+					}
+				}
+			}
 			if(megatec_send){
 				megatec_send= false;
+				UPS.Flag_Present = false;
 				send_MegaTec_cmd(ups_status_req);
 				if (ups_megatec_rx_pdu())
 					ups_megatec_process_pdu(ups_status_req);
@@ -278,6 +312,7 @@ void request_task(void)
 			//vTaskDelay(100);
 			if(megatec_send){
 				megatec_send = false;
+				UPS.Flag_Present = false;
 				 send_MegaTec_cmd(ups_info);
 				if (ups_megatec_rx_pdu())
 					ups_megatec_process_pdu(ups_info);

+ 3 - 0
modules/MegaTec/megatec.h

@@ -37,9 +37,12 @@ typedef struct{
 	uint8_t SOC;
 	uint8_t work_time;
 	uint8_t Status;
+	uint8_t Alarm;
 	char model[11];
 	char vertion[11];
+	uint8_t cnt_err_ups;
 	bool Present;
+	bool Flag_Present;
 }UPS_value_t;
 
 UPS_value_t UPS;

+ 22 - 6
modules/monitor/ups_monitor.c

@@ -208,14 +208,14 @@ void UPS_NonCriticalAlarmMonitor(void)
   // Значение параметра изменилось
   if (NonCriticalAlarmCurrent != NonCriticalAlarmOldState)
   {
-	  if(OldRO0type_Sourse == CRITICAL){
+	  if(OldRO0type_Sourse == NON_CRITICAL){
 		  if(NonCriticalAlarmCurrent)
 			  SetROInt(1, 0);
 		  else
 			  SetROInt(0, 0);
 		  SNMP_SendUserTrap(DO0_TOGGLED);
 	  }
-	  if(OldRO2type_Sourse == CRITICAL){
+	  if(OldRO2type_Sourse == NON_CRITICAL){
 		  if(NonCriticalAlarmCurrent)
 			  SetROInt(1, 1);
 		  else
@@ -225,14 +225,14 @@ void UPS_NonCriticalAlarmMonitor(void)
   }
   else
   {
-	  if(OldRO0type_Sourse == CRITICAL && OldRO0type_Sourse != OldRO0type_Sourse){
+	  if(OldRO0type_Sourse == NON_CRITICAL && OldRO0type_Sourse != OldRO0type_Sourse){
 		  if(NonCriticalAlarmCurrent)
 			  SetROInt(1, 0);
 		  else
 			  SetROInt(0, 0);
 		  SNMP_SendUserTrap(DO0_TOGGLED);
 	  }
-	  if(OldRO2type_Sourse == CRITICAL && OldRO2type_Sourse != OldRO2type_Sourse){
+	  if(OldRO2type_Sourse == NON_CRITICAL && OldRO2type_Sourse != OldRO2type_Sourse){
 		  if(NonCriticalAlarmCurrent)
 			  SetROInt(1, 1);
 		  else
@@ -260,6 +260,8 @@ void UPS_LineFailMonitor(void)
   if (!isValueRecv) {
     isValueRecv = true;
     lineFailOldState = lineFailCurrent;
+    if (lineFailCurrent)
+          SNMP_SendUserTrap(LINE_ALARM);
     return;
   }
 
@@ -294,6 +296,8 @@ void UPS_LowBatMonitor(void)
   if (!isValueRecv) {
     isValueRecv = true;
     lowBatOldState = lowBatCurrent;
+    if (lowBatCurrent)
+          SNMP_SendUserTrap(LOW_BAT_ALARM);
     return;
   }
   if (lowBatCurrent)
@@ -324,6 +328,7 @@ void UPS_PowerMonitor(void)
   if (load > UPS_LOAD)
   {
 	flCriticalAlarm = true;
+	UPS.Alarm = (UPS.Alarm & 0x0e) | (1 << 0);
     if (stateCurrent == HYST_IDLE)
 	{
       LED_On(LED_MINOR_R);
@@ -337,6 +342,7 @@ void UPS_PowerMonitor(void)
   /* Отслеживается нормализация */
   else if (load < (UPS_LOAD - UPS_LOAD_HIST))
   {
+	UPS.Alarm = (UPS.Alarm & 0x0e);
     if (stateCurrent == HYST_UP)
 	{
     	LED_Off(LED_MINOR_R);
@@ -363,6 +369,7 @@ void UPS_TemperatureMonitor(void)
   if (temperature > UPS_TEMPERATURE)
   {
 	flCriticalAlarm = true;
+	UPS.Alarm = (UPS.Alarm & 0x0d) | (1 << 1);
     if (stateCurrent == HYST_IDLE)
 	{
 	  stateCurrent = HYST_UP;
@@ -374,6 +381,7 @@ void UPS_TemperatureMonitor(void)
   /* Отслеживается нормализация */
   else if (temperature < (UPS_TEMPERATURE - UPS_TEMPERATURE_HIST))
   {
+	  UPS.Alarm = (UPS.Alarm & 0x0d);
     if (stateCurrent == HYST_UP)
 	{
 	  stateCurrent = HYST_IDLE;
@@ -395,12 +403,16 @@ void UPS_ConnectMonitor(void)
   
   connectCurrent = UPS.Present;
   
+  UPS.Alarm = (UPS.Alarm & 0x0b) | ((connectCurrent^1) << 2);
+
   if (!isValueRecv) {
     isValueRecv = true;
     connectOldState = connectCurrent;
+    if (!connectCurrent)
+    	SNMP_SendUserTrap(CONNECT_MONITOR_ALARM);
     return;
   }
-  if (connectCurrent)
+  if (!connectCurrent)
   	  flCriticalAlarm = true;
   // Значение параметра изменилось
   if (connectCurrent != connectOldState)
@@ -429,9 +441,13 @@ void UPS_BatteryConnectMonitor(void)
 	  AKBconnectCurrent = 0;
   }
 
+  UPS.Alarm = (UPS.Alarm & 0x07) | (AKBconnectCurrent << 3);
+
   if (!isValueRecv) {
     isValueRecv = true;
     AKBconnectOldState = AKBconnectCurrent;
+    if (AKBconnectCurrent)
+	  SNMP_SendUserTrap(BATTERY_CONNECT_ALARM);
     return;
   }
   if (AKBconnectCurrent)
@@ -439,7 +455,7 @@ void UPS_BatteryConnectMonitor(void)
   // Значение параметра изменилось
   if (AKBconnectCurrent != AKBconnectOldState)
   {
-    if (AKBconnectCurrent)
+    if (!AKBconnectCurrent)
       SNMP_SendUserTrap(BATTERY_CONNECT_NORM);
     else
       SNMP_SendUserTrap(BATTERY_CONNECT_ALARM);

+ 3 - 35
modules/parameters.c

@@ -164,42 +164,10 @@ void GetInternalTempStr(char *str, uint8_t *len)
 /**
   * @brief  
   */
-void GetLoadMonitorStr(char *str, uint8_t *len)
+void GetAlarmMonitorStr(char *str, uint8_t *len)
 {
-/* // if (upsParams.monitor_power)
-    *str = '1';
-  else
-    *str = '0';*/
-	*str = '0';
-  *len = 1;
-}
-
-/**
-  * @brief  
-  */
-void GetTempMonitorStr(char *str, uint8_t *len)
-{
- /*// if (upsParams.monitor_temperature)
-    *str = '1';
-  else
-    *str = '0';*/
-	*str = '0';
-  *len = 1;
-}
-
-/**
-  * @brief  
-  */
-void GetConnectMonitorStr(char *str, uint8_t *len)
-{
-  // В WEB флаг коннекта инвернысный!!!
-  // 0 - коннект есть, 1 - нет
-/*  if (upsParams.connect)
-    *str = '0';
-  else
-    *str = '1';*/
-	*str = '0';
-  *len = 1;
+	sprintf(str, "%d", UPS.Alarm);
+	*len = strlen(str);
 }
 
 // ************************************************************************** //

+ 4 - 3
modules/parameters.h

@@ -29,9 +29,10 @@ void GetPowerStr(char *str, uint8_t *len);
 void GetBatCapacityStr(char *str, uint8_t *len);
 void GetRuntimeStr(char *str, uint8_t *len);
 void GetInternalTempStr(char *str, uint8_t *len);
-void GetLoadMonitorStr(char *str, uint8_t *len);
-void GetTempMonitorStr(char *str, uint8_t *len);
-void GetConnectMonitorStr(char *str, uint8_t *len);
+/**
+  * @brief
+  */
+void GetAlarmMonitorStr(char *str, uint8_t *len);
 
 /**
   * @brief  Режим работы