liyi 1 éve%!(EXTRA string=óta)
szülő
commit
5a65fc9822

+ 6 - 2
control/PDU-AC-COMBINE/App/Key/Key.c

@@ -33,6 +33,10 @@
 #elif((RelaySlaveChaNum <= 4) && (!SUPPORT_TWIN_FIRE))
 		#define DERECTION_GPIO   		GPIOB
 		#define DERECTION_IO_1 			GPIO_PIN_10
+#elif ((RelaySlaveChaNum == 8) && (SUPPORT_2_DETECTION))
+		#define DERECTION_GPIO   		GPIOB
+		#define DERECTION_IO_1 			GPIO_PIN_1
+		#define DERECTION_IO_2 			GPIO_PIN_2
 #else
 		#define DERECTION_GPIO   		GPIOA
 		#define DERECTION_IO_1 			GPIO_PIN_1
@@ -58,7 +62,7 @@ static  void  ConfigKeyGPIO(void)
 	gpio_mode_set(KEY_A_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY4);   //ÅäÖÃPA12ΪÉÏÀ­ÊäÈëK3
 	gpio_mode_set(KEY_B_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY5); 
 #if SUPPORT_DETECTION
-	#if (RelaySlaveChaNum == 6)
+	#if (RelaySlaveChaNum == 6 || ((RelaySlaveChaNum == 8) && SUPPORT_2_DETECTION))
 		gpio_mode_set(DERECTION_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, DERECTION_IO_1);
 		gpio_mode_set(DERECTION_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, DERECTION_IO_2);
 	#else
@@ -99,7 +103,7 @@ unsigned char get_detection()
 {
 	uint8_t value = 0;
 	int count = 50;
-	#if (RelaySlaveChaNum == 6)			//six  relay board
+	#if ((RelaySlaveChaNum == 6) || ((RelaySlaveChaNum == 8) && SUPPORT_2_DETECTION))			//six  relay board
 		if(gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_1)==0)
 			value |=(1<<0);
 		if(gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_2)==0)

+ 54 - 74
control/PDU-AC-COMBINE/App/Main/Main.c

@@ -146,7 +146,7 @@ unsigned long int 	AC_LINE_Freq_Total;	//
 
 unsigned int Start_Read_Flag;						//开始读取数据标志
 unsigned char Jlink_Sta_Flag = 0;				//Jlink 是否在线的标志位
-unsigned int StaticCur = 30;						//设置每个通道的静态电流
+unsigned int StaticCur = 500;						//设置每个通道的静态电流
 unsigned char No_Load[RelaySlaveChaNum]={0};
 unsigned char test1;
 extern float   F_AC_V;													// 电压有效值
@@ -165,11 +165,12 @@ static  void  Proc2msTask_Start(void);   	//2ms
 static  void  Proc1SecTask(void);   			//1s处理任务
 
 static void over_RelayState(void);
+static void over_RelayState_ch(uint8_t channel);
 static void all_over_RelayState(void);
 void switch_recode();
 #if SUPPORT_SWITCH_REMENBER
 	bool handle_status[RelaySlaveChaNum] = {0};
-	#if (RelaySlaveChaNum == 6)
+	#if ((RelaySlaveChaNum == 6) || (SUPPORT_2_DETECTION && RelaySlaveChaNum == 8))
 			uint8_t handle_detection[2] = {1,1};
 	#else
 			uint8_t handle_detection[1] = {1};
@@ -254,44 +255,27 @@ static  void  Proc100msTask(void)
   { 
 		select_channel(channel);
 		Calculate_HLW8110_MeterData();
-		AC_Ele_ReadReg[0].AC_V=(F_AC_V*EE_ACDC_Coef_ReadReg[0].ACDC_V_k)+(EE_ACDC_Coef_ReadReg[0].ACDC_V_b/1000);
+		//AC_Ele_ReadReg[0].AC_V=(F_AC_V*EE_ACDC_Coef_ReadReg[0].ACDC_V_k)+(EE_ACDC_Coef_ReadReg[0].ACDC_V_b/1000);
 		if((Start_Read_Flag)&&(channel==0x00))		//只有读完数据之后且现在轮询到通道0才会继续更新电压和频率值
 		{
-			AC_Ele_ReadReg[0].AC_V=(F_AC_V*EE_ACDC_Coef_ReadReg[0].ACDC_V_k)+(EE_ACDC_Coef_ReadReg[0].ACDC_V_b/1000);//实际的电压放大1000倍,实际的K,B值要缩小1000倍
+			Start_Read_Flag = 0;
+		}	
+		AC_Ele_ReadReg[channel].AC_V=(F_AC_V*EE_ACDC_Coef_ReadReg[0].ACDC_V_k)+(EE_ACDC_Coef_ReadReg[channel].ACDC_V_b/1000);//实际的电压放大1000倍,实际的K,B值要缩小1000倍
 			AC_Ele_ReadReg_All.AC_V = AC_Ele_ReadReg[0].AC_V;
-			if(AC_Ele_ReadReg[0].AC_V <= 10000)			//小于10V频率为0
+			if(AC_Ele_ReadReg[channel].AC_V <= 10000)			//小于10V频率为0
 			{
-				AC_Ele_ReadReg[0].AC_LINE_Freq=0;
-				AC_Ele_ReadReg[0].AC_V = 0;
+				AC_Ele_ReadReg[channel].AC_LINE_Freq=0;
+				AC_Ele_ReadReg[channel].AC_V = 0;
 			}
 			else
 			{
-				AC_Ele_ReadReg[0].AC_LINE_Freq=F_AC_LINE_Freq*1000;
+				AC_Ele_ReadReg[channel].AC_LINE_Freq=F_AC_LINE_Freq*1000;
 			}
-			for(chal_num=1;chal_num<RelaySlaveChaNum;chal_num++)
-			{
-				AC_Ele_ReadReg[chal_num].AC_V=AC_Ele_ReadReg[0].AC_V;
-				AC_Ele_ReadReg[chal_num].AC_LINE_Freq=AC_Ele_ReadReg[0].AC_LINE_Freq;
-			}
-			Start_Read_Flag = 0;
-		}	
-//		if((channel==0x00)&&(Start_Read_Flag==0x00))		//只有读完数据之后才会继续更新电压和频率值
-//		{
-//			AC_Ele_ReadReg[channel].AC_V=(F_AC_V*EE_ACDC_Coef_ReadReg[channel].ACDC_V_k)+(EE_ACDC_Coef_ReadReg[channel].ACDC_V_b/1000);//实际的电压放大1000倍,实际的K,B值要缩小1000倍
-//			if(AC_Ele_ReadReg[channel].AC_V <= 10000)			//小于10V频率为0
-//				AC_Ele_ReadReg[channel].AC_LINE_Freq=0;
-//			else
-//				AC_Ele_ReadReg[channel].AC_LINE_Freq=F_AC_LINE_Freq*1000;
-//		}	
-//		else
-//		{
-//			for(chal_num=1;chal_num<RelaySlaveChaNum;chal_num++)
-//			{
-//				AC_Ele_ReadReg[chal_num].AC_V=AC_Ele_ReadReg[0].AC_V;
-//				AC_Ele_ReadReg[chal_num].AC_LINE_Freq=AC_Ele_ReadReg[0].AC_LINE_Freq;
-//			}
-//		}
 		AC_Ele_ReadReg[channel].AC_I=(F_AC_I*EE_ACDC_Coef_ReadReg[channel].ACDC_I_k)+(EE_ACDC_Coef_ReadReg[channel].ACDC_I_b/1000);//实际的电流放大1000倍,实际的K,B值要缩小1000倍
+		if((AC_Ele_ReadReg[channel].AC_I)<=No_Load[channel])
+		{
+			AC_Ele_ReadReg[channel].AC_I = 0;
+		}
 		if((AC_Ele_ReadReg[channel].AC_I)<=No_Load[channel])
 			AC_Ele_ReadReg[channel].AC_P=0;                                                                                //有功功率
 		else
@@ -310,9 +294,9 @@ static  void  Proc100msTask(void)
 	//	ACDC_Total_All_Chn_Read_Reg.ACDC_All_Consumption += EE_ACDC_Total_Consum_Read_Reg[channel].ACDC_Consumption;
 		all_val += EE_ACDC_Total_Consum_Read_Reg[channel].ACDC_Consumption;
 		AC_Ele_ReadReg_All.AC_E += EE_ACDC_Total_Consum_Read_Reg[channel].ACDC_Consumption;
-		WarnState();																																																							//更新状态寄存器的告警阈值
-		over_RelayState();
-		
+		WarnState_ch(channel);																																																							//更新状态寄存器的告警阈值
+		//over_RelayState();
+		over_RelayState_ch(channel);
 		channel=channel+1;
 		if(channel>=RelaySlaveChaNum){
 			ACDC_Total_All_Chn_Read_Reg.ACDC_All_Consumption = all_val;
@@ -373,7 +357,11 @@ static  void  InitHardware(void)
 		}
 	}
 	InitAT24Cxx();			 //初始化24C64模块	
-
+#if SURPPORT_2_2
+	solid_on();
+	BUFF;
+	LOCK;
+#endif
 	ReadEeprom();
 	Delay_Ms_1 = 0;
 #if SUPPORT_DETECTION
@@ -465,69 +453,52 @@ int check_or_control_detection(void)
 void switch_recode()
 {
 #if SUPPORT_SWITCH_REMENBER
-#if (RelaySlaveChaNum == 6)
+#if ((RelaySlaveChaNum == 6) || ((RelaySlaveChaNum == 8) && SUPPORT_2_DETECTION))
 		if((detection_value & 1) == 0)
 		{
 				if(handle_detection[0] == 1)
 				{
-						handle_status[0] = EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State;
-						handle_status[1] = EE_ACDC_State_ReadReg[1].ACDC_Cha_On_Off_State;
-						handle_status[2] = EE_ACDC_State_ReadReg[2].ACDC_Cha_On_Off_State;
+					for(uint8_t k = 0; k < (RelaySlaveChaNum/2);k++)
+						handle_status[k] = EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State;
 				}
 				handle_detection[0] = 0;
-				EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State=false;
-				EE_ACDC_State_ReadReg[1].ACDC_Cha_On_Off_State=false;
-				EE_ACDC_State_ReadReg[2].ACDC_Cha_On_Off_State=false;
-				Relay1State();
-				Relay2State();
-				Relay3State();
-				BUFF;
-				LOCK;
+				for(uint8_t k = 0; k < (RelaySlaveChaNum/2);k++)
+					EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=false;
+				for(uint8_t k = 0; k < (RelaySlaveChaNum/2);k++)
+					RelayState_ch(k);
 		}else
 		{
 			if(handle_detection[0] == 0)
 			{
 				handle_detection[0] = 1;
-				EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State=handle_status[0];
-				EE_ACDC_State_ReadReg[1].ACDC_Cha_On_Off_State=handle_status[1];
-				EE_ACDC_State_ReadReg[2].ACDC_Cha_On_Off_State=handle_status[2];
-				Relay1State();
-				Relay2State();
-				Relay3State();
-				BUFF;
-				LOCK;
+				for(uint8_t k = 0; k < (RelaySlaveChaNum/2);k++)
+					EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=handle_status[k];
+				for(uint8_t k = 0; k < (RelaySlaveChaNum/2);k++)
+					RelayState_ch(k);
 			}
 		}
 		if((detection_value & 2) == 0)
 		{
 			if(handle_detection[1] == 1)
 			{
-					handle_status[3] = EE_ACDC_State_ReadReg[3].ACDC_Cha_On_Off_State;
-					handle_status[4] = EE_ACDC_State_ReadReg[4].ACDC_Cha_On_Off_State;
-					handle_status[5] = EE_ACDC_State_ReadReg[5].ACDC_Cha_On_Off_State;
+				for(uint8_t k = (RelaySlaveChaNum/2); k < RelaySlaveChaNum;k++)
+					handle_status[k] = EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State;
 			}
 			handle_detection[1] = 0;
-			EE_ACDC_State_ReadReg[3].ACDC_Cha_On_Off_State=false;
-			EE_ACDC_State_ReadReg[4].ACDC_Cha_On_Off_State=false;
-			EE_ACDC_State_ReadReg[5].ACDC_Cha_On_Off_State=false;
-			Relay4State();
-			Relay5State();
-			Relay6State();
-				BUFF;
-				LOCK;
+			for(uint8_t k = (RelaySlaveChaNum/2); k < RelaySlaveChaNum;k++)
+				EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=false;
+			
+			for(uint8_t k = (RelaySlaveChaNum/2); k < RelaySlaveChaNum;k++)
+				RelayState_ch(k);
 		}else
 		{
 			if(handle_detection[1] == 0)
 			{
 				handle_detection[1] = 1;
-				EE_ACDC_State_ReadReg[3].ACDC_Cha_On_Off_State=handle_status[3];
-				EE_ACDC_State_ReadReg[4].ACDC_Cha_On_Off_State=handle_status[4];
-				EE_ACDC_State_ReadReg[5].ACDC_Cha_On_Off_State=handle_status[5];
-				Relay4State();
-				Relay5State();
-				Relay6State();
-				BUFF;
-				LOCK;
+				for(uint8_t k = (RelaySlaveChaNum/2); k < RelaySlaveChaNum;k++)
+					EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State=handle_status[k];
+				for(uint8_t k = (RelaySlaveChaNum/2); k < RelaySlaveChaNum;k++)
+					RelayState_ch(k);
 			}
 		}
 #else
@@ -740,6 +711,15 @@ static void over_RelayState(void)
 
 }
 
+static void over_RelayState_ch(uint8_t channel)
+{
+	if(over_Func_flag[channel])
+		{
+			set_channel_status(channel,0);
+			RelayState_ch(channel);
+			over_Func_flag[channel] = 0;
+		}
+}
 
 #if SUPPORT_ALL_ON_OFF
 void check_or_controll_all()

+ 16 - 1
control/PDU-AC-COMBINE/App/Main/board_cfg.h

@@ -11,7 +11,9 @@
 #define   PRJ_1_ALL_O_ALL_C         0
 #define   PRJ_1_SELF_LOCK_SWITCH    0
 #define   PRJ_TWIN_FIRE             0
-#define 	PRJ_ITK_8_CHANNEL					1
+#define 	PRJ_ITK_8_CHANNEL					0
+#define   PRJ_2_2_BASE              0
+#define   PRJ_8_NEW									1
 
 
 
@@ -68,6 +70,19 @@
 	#define   SUPPORT_DETECTION         0
 	#define 	ACSingCurrid 							1 
 	#define 	SUPPORT_DETECTION_SWITCH  0
+#elif 	PRJ_2_2_BASE
+	#define 	RelaySlaveChaNum 					2
+	#define 	SURPPORT_2_2							1
+	#define   SUPPORT_DETECTION         1
+	#define   SUPPORT_SWITCH_REMENBER   1
+	#define 	SUPPORT_ALL_ON_OFF        1
+	#define 	ACSingCurrid 							2 
+#elif    PRJ_8_NEW					
+	#define 	RelaySlaveChaNum 					8
+	#define 	SUPPORT_2_DETECTION       1
+	#define 	SUPPORT_SWITCH_REMENBER		1
+	#define   SUPPORT_DETECTION         1
+	#define 	ACSingCurrid 							1 
 #endif
 
 

+ 41 - 22
control/PDU-AC-COMBINE/App/Modbus/BARE/port/port.c

@@ -271,49 +271,68 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
 								Chal_num = (usAddress-AC_Sing_State_SmaWAddr);             					 				//设置哪个通道的状态
 //								memcpy(&ACDC_State_WriteReg[Chal_num],&usRegHoldBuf[WiRegIndex],WusNRegs);	//将接收的数据放入写结构体中
 								memcpy(&EE_ACDC_State_ReadReg[Chal_num],&usRegHoldBuf[WiRegIndex],WusNRegs*2);//将接收的数据放入读结构体中
-							for(int i =0; i < RelaySlaveChaNum;i++)
-							{
-								if(EE_ACDC_ThresVal_ReadReg[i].ACDC_V_TopThres <= THRESHOULD_JUDGMENT)
-								{
-									EE_ACDC_State_ReadReg[i].ACDC_Vol_Upthr_En = false;
-								}
-								if(EE_ACDC_ThresVal_ReadReg[i].ACDC_V_DownThres <= THRESHOULD_JUDGMENT)
+								for(int i =0; i < RelaySlaveChaNum;i++)
 								{
-									EE_ACDC_State_ReadReg[i].ACDC_Vol_Downthr_En = false;
+									if(EE_ACDC_ThresVal_ReadReg[i].ACDC_V_TopThres <= THRESHOULD_JUDGMENT)
+									{
+										EE_ACDC_State_ReadReg[i].ACDC_Vol_Upthr_En = false;
+									}
+									if(EE_ACDC_ThresVal_ReadReg[i].ACDC_V_DownThres <= THRESHOULD_JUDGMENT)
+									{
+										EE_ACDC_State_ReadReg[i].ACDC_Vol_Downthr_En = false;
+									}
+									if(EE_ACDC_ThresVal_ReadReg[i].ACDC_I_TopThres <= THRESHOULD_JUDGMENT)
+									{
+										EE_ACDC_State_ReadReg[i].ACDC_Cur_Upthr_En = false;
+									}
+									if(EE_ACDC_ThresVal_ReadReg[i].ACDC_P_TopThres <= THRESHOULD_JUDGMENT)
+									{
+										EE_ACDC_State_ReadReg[i].ACDC_Pow_Upthr_En = false;
+									}
+									if(EE_ACDC_ThresVal_ReadReg[i].ACDC_E_TopThres <= THRESHOULD_JUDGMENT)
+									{
+										EE_ACDC_State_ReadReg[i].ACDC_Ele_Upthr_En = false;
+									}
 								}
-								if(EE_ACDC_ThresVal_ReadReg[i].ACDC_I_TopThres <= THRESHOULD_JUDGMENT)
-								{
-									EE_ACDC_State_ReadReg[i].ACDC_Cur_Upthr_En = false;
-								}
-								if(EE_ACDC_ThresVal_ReadReg[i].ACDC_P_TopThres <= THRESHOULD_JUDGMENT)
-								{
-									EE_ACDC_State_ReadReg[i].ACDC_Pow_Upthr_En = false;
-								}
-								if(EE_ACDC_ThresVal_ReadReg[i].ACDC_E_TopThres <= THRESHOULD_JUDGMENT)
-								{
-									EE_ACDC_State_ReadReg[i].ACDC_Ele_Upthr_En = false;
-								}
-							}
 								memcpy(&Eeprom_Wbuf,&EE_ACDC_State_ReadReg[Chal_num],WusNRegs*2);								   			//将数据由16进制转化为无符号数据存入数组 
 								AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+WeeiRegIndex*2,Eeprom_Wbuf, WusNRegs*2); //将数据写入到eeprom中
 							  if((WusNRegs==RelaySlaveChaNum)&&(EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State==true)&&(EE_ACDC_State_ReadReg[0].ACDC_ALLCha_On_State==true))//通过下发的通道数和开关状态可以判断为全开
 								{
 										All_On_Flag = 1;																										//全开标志置1
+										All_Off_Flag = 0;	
 										timer_enable(TIMER14);
 										Delay_Ms_2 = 0;
 								}
 								else if((WusNRegs==RelaySlaveChaNum)&&(EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State==false)&&(EE_ACDC_State_ReadReg[0].ACDC_ALLCha_Off_State==true))//通过下发的通道数和开关状态可以判断为全关
 								{
 										All_Off_Flag = 1;																										//全关标志置1
+										All_On_Flag = 0;	
 										timer_enable(TIMER14);
 										Delay_Ms_2 = 0;
 								}
 								else 
 								{
 #if SUPPORT_DETECTION
+									
+#if ((RelaySlaveChaNum  == 6) || ((RelaySlaveChaNum == 8) && SUPPORT_2_DETECTION))
+									if((detection_value & 0x1) == 0)
+									{
+											uint8_t k = 0;
+											for(k=0;k <(RelaySlaveChaNum)/2;k++)
+												EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State = false;
+									}
+									if((detection_value & 0x2) == 0)
+									{
+											uint8_t k = 0;
+											for(k=(RelaySlaveChaNum)/2;k <RelaySlaveChaNum;k++)
+												EE_ACDC_State_ReadReg[k].ACDC_Cha_On_Off_State = false;
+									}										
+#else									
 									if(detection_value != 0)
 #endif
-										RelayState();
+#endif
+										//RelayState();	
+										RelayState_ch(Chal_num);
 								}
 						}
 						else if((usAddress>=AC_Sing_Thr_SmaAddr)&&(usAddress<=AC_Sing_Thr_SmaAddr+AC_Sing_Thr_SmaQua))//设置通道的阈值

+ 108 - 0
control/PDU-AC-COMBINE/App/ReadEeprom/ReadEeprom.c

@@ -430,6 +430,9 @@ void Relay8State(void)
 }
 #endif
 
+
+
+
 void RelayState(void)
 {
 	BUFF;
@@ -543,6 +546,25 @@ void WarnVolUpthrState(void)
 			EE_ACDC_State_ReadReg[chn_num].ACDC_Vol_Upthr_Warn = false;
 	}
 }
+
+void WarnVolUpthrState_ch(uint8_t channel)
+{
+	if(EE_ACDC_State_ReadReg[channel].ACDC_Vol_Upthr_En)
+	{
+		if(AC_Ele_ReadReg[channel].AC_V>EE_ACDC_ThresVal_ReadReg[channel].ACDC_V_TopThres)
+		{
+ 			EE_ACDC_State_ReadReg[channel].ACDC_Vol_Upthr_Warn = true;
+			if(ACDC_Over_WriteReg[channel].openration & Voltage_Max_Func)
+			{
+				over_Func_flag[channel] = 1;
+			}
+		}
+		else 
+			EE_ACDC_State_ReadReg[channel].ACDC_Vol_Upthr_Warn = false;
+	}
+	else 
+		EE_ACDC_State_ReadReg[channel].ACDC_Vol_Upthr_Warn = false;
+}
 /*********************************************************************************************************
 * 函数名称:WarnVolDownthrState
 * 函数功能:根据读取的数据判断是否触发阈值
@@ -575,6 +597,25 @@ void WarnVolDownthrState(void)
 			EE_ACDC_State_ReadReg[chn_num].ACDC_Vol_Downthr_Warn = false;
 	}
 }
+
+void WarnVolDownthrState_ch(uint8_t channel)
+{
+	if(EE_ACDC_State_ReadReg[channel].ACDC_Vol_Downthr_En)
+	{
+		if(AC_Ele_ReadReg[channel].AC_V < EE_ACDC_ThresVal_ReadReg[channel].ACDC_V_DownThres)
+		{
+			EE_ACDC_State_ReadReg[channel].ACDC_Vol_Downthr_Warn = true;
+			if(ACDC_Over_WriteReg[channel].openration & Voltage_Min_Func)
+			{
+				over_Func_flag[channel] = 1;
+			}
+		}
+		else 
+			EE_ACDC_State_ReadReg[channel].ACDC_Vol_Downthr_Warn = false;
+	}
+	else 
+		EE_ACDC_State_ReadReg[channel].ACDC_Vol_Downthr_Warn = false;	
+}
 /*********************************************************************************************************
 * 函数名称:WarnCurUpthrState
 * 函数功能:根据读取的数据判断是否触发阈值
@@ -607,6 +648,26 @@ void WarnCurUpthrState(void)
 			EE_ACDC_State_ReadReg[chn_num].ACDC_Cur_Upthr_Warn = false;
 	}
 }
+
+void WarnCurUpthrState_ch(uint8_t channel)
+{
+	if(EE_ACDC_State_ReadReg[channel].ACDC_Cur_Upthr_En)
+	{
+		if(AC_Ele_ReadReg[channel].AC_I>EE_ACDC_ThresVal_ReadReg[channel].ACDC_I_TopThres)
+		{
+			EE_ACDC_State_ReadReg[channel].ACDC_Cur_Upthr_Warn = true;
+			if(ACDC_Over_WriteReg[channel].openration & Current_Max_Func)
+			{
+				over_Func_flag[channel] = 1;
+			}
+		}
+		else 
+			EE_ACDC_State_ReadReg[channel].ACDC_Cur_Upthr_Warn = false;
+	}
+	else 
+		EE_ACDC_State_ReadReg[channel].ACDC_Cur_Upthr_Warn = false;
+	
+}
 /*********************************************************************************************************
 * 函数名称:WarnPowUpthrState
 * 函数功能:根据读取的数据判断是否触发阈值
@@ -638,7 +699,25 @@ void WarnPowUpthrState(void)
 			EE_ACDC_State_ReadReg[chn_num].ACDC_Pow_Upthr_Warn = false;
 	}
 }
+void WarnPowUpthrState_ch(uint8_t channel)
+{
 
+	if(EE_ACDC_State_ReadReg[channel].ACDC_Pow_Upthr_En)
+	{
+		if(AC_Ele_ReadReg[channel].AC_P>EE_ACDC_ThresVal_ReadReg[channel].ACDC_P_TopThres){
+			EE_ACDC_State_ReadReg[channel].ACDC_Pow_Upthr_Warn = true;
+			if(ACDC_Over_WriteReg[channel].openration & Power_Max_Func)
+			{
+				over_Func_flag[channel] = 1;
+			}
+		}
+		else 
+			EE_ACDC_State_ReadReg[channel].ACDC_Pow_Upthr_Warn = false;
+	}
+	else 
+		EE_ACDC_State_ReadReg[channel].ACDC_Pow_Upthr_Warn = false;
+	
+}
 /*********************************************************************************************************
 * 函数名称:WarnEleUpthrState
 * 函数功能:根据读取的数据判断是否触发阈值
@@ -671,6 +750,26 @@ void WarnEleUpthrState(void)
 			EE_ACDC_State_ReadReg[chn_num].ACDC_Ele_Upthr_Warn = false;
 	}
 }
+
+void WarnEleUpthrState_ch(uint8_t channel)
+{
+	if(EE_ACDC_State_ReadReg[channel].ACDC_Ele_Upthr_En)
+	{
+		if(AC_Ele_ReadReg[channel].AC_E>EE_ACDC_ThresVal_ReadReg[channel].ACDC_E_TopThres)
+		{
+			EE_ACDC_State_ReadReg[channel].ACDC_Ele_Upthr_Warn = true;
+			if(ACDC_Over_WriteReg[channel].openration & Consumer_Max_Func)
+			{
+				over_Func_flag[channel] = 1;
+			}
+		}
+		else 
+			EE_ACDC_State_ReadReg[channel].ACDC_Ele_Upthr_Warn = false;
+	}
+	else 
+		EE_ACDC_State_ReadReg[channel].ACDC_Ele_Upthr_Warn = false;
+}
+
 /*********************************************************************************************************
 * 函数名称:WarnState
 * 函数功能:根据读取的数据判断是否触发阈值
@@ -690,6 +789,15 @@ void WarnState(void)
 	WarnEleUpthrState();
 }
 
+void WarnState_ch(uint8_t channel)
+{
+	WarnVolUpthrState_ch(channel);
+	WarnVolDownthrState_ch(channel);
+	WarnCurUpthrState_ch(channel);
+	WarnPowUpthrState_ch(channel);
+	WarnEleUpthrState_ch(channel);
+}
+
 void All_Warn_State(void)
 {
 	

+ 1 - 0
control/PDU-AC-COMBINE/App/ReadEeprom/ReadEeprom.h

@@ -49,4 +49,5 @@ void WarnState(void);
 void Bubble_Sort(unsigned short int arr[], unsigned short int len);
 void All_Warn_State(void);
 void RelayState_ch(unsigned char chx);
+void WarnState_ch(unsigned char channel);
 #endif