Browse Source

老三相死机问题

liyi 1 year ago
parent
commit
24972acebb
2 changed files with 43 additions and 157 deletions
  1. 3 6
      control/PDU-Triphasic_IO/App/Hlw8110/Hlw8110.c
  2. 40 151
      control/PDU-Triphasic_IO/App/Main/Main.c

+ 3 - 6
control/PDU-Triphasic_IO/App/Hlw8110/Hlw8110.c

@@ -1059,12 +1059,10 @@ void read_Hlw8110(uint8_t cs_x,uint8_t read_kWh_flag)
 	{
 		AC3PPDU_Output[temp0].AC_U = ((F_AC_P / F_AC_PF)-F_AC_PS) *1000;
 	}
-	if(read_kWh_flag)
-	{
-		Read_HLW8110_EA();
 
-	}else
-		F_AC_E = 0.0;
+	Read_HLW8110_EA();
+
+
 	//AC3PPDU_Output[temp0].AC_kWh = F_AC_E *1000;
 	hlw8110_store[cs_x + CH1_out] += F_AC_E;
 	
@@ -1085,7 +1083,6 @@ void read_Hlw8110(uint8_t cs_x,uint8_t read_kWh_flag)
 	AC3PPDU_Modbus_Reg[Mb_Dbuff_Out1Para_Addr + temp1 + 6] = (hlw8110_base[cs_x + CH1_out] + hlw8110_store[cs_x + CH1_out] *1000);
 	AC3PPDU_Modbus_Reg[Mb_Dbuff_Out1Para_Addr + temp1 + 7] = AC3PPDU_Output[cs_x + CH1_out].AC_Q;
 	
-	// 
 	
 }
 

+ 40 - 151
control/PDU-Triphasic_IO/App/Main/Main.c

@@ -961,6 +961,38 @@ static void RL_Over_Func()
 
 
 
+static void read_ele(void)
+{
+	static uint8_t channel = 0;
+	read_Hlw8110(channel,0);
+	channel ++;
+	if(channel == Output_ChN_default)
+	{
+			channel = 0;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] = AC3PPDU_Output[CH1_out].AC_V;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] = AC3PPDU_Output[CH2_out].AC_V;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] = AC3PPDU_Output[CH3_out].AC_V;
+			
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] = AC3PPDU_Output[CH1_out].AC_I;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] = AC3PPDU_Output[CH2_out].AC_I;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr] = AC3PPDU_Output[CH3_out].AC_I;
+			
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] = AC3PPDU_Output[CH1_out].AC_P;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] = AC3PPDU_Output[CH2_out].AC_P;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr] = AC3PPDU_Output[CH3_out].AC_P;
+			
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] = AC3PPDU_Output[CH1_out].AC_kWh;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] =	AC3PPDU_Output[CH2_out].AC_kWh;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] = AC3PPDU_Output[CH3_out].AC_kWh;
+			for(int i = 0;i < (Output_ChN_default + 1);i++)
+			{
+				Fault_state_process(i);
+			}		
+		}	
+}
+
+
+
 /*********************************************************************************************************
 * 函数名称:main
 * 函数功能:主函数 
@@ -1055,6 +1087,12 @@ int main(void)
 			LEDFlicker2();
 			Clr1SecFlag();  //清除1s标志
 		}
+		//////////////////////////
+		if(Start_Read_Flag)//读数据
+		{
+			Start_Read_Flag = false;
+			read_ele();
+		}
 		if(write_kwh2Eeprom_flag)			// 10 second recode
 		{
 			write_kwh2Eeprom_flag = 0;
@@ -1069,158 +1107,9 @@ int main(void)
 			AT24CxxWrite(ERom_TotalWh1_Addr,(Eeprom_Rbuf + ERom_TotalWh1_Addr),4*Output_ChN_default);
 		}
 		
-        ////故障指示处理/////
-		
-		if(Fault_state_Reg > 0)
-		{
-			if(Fault_state_Reg != Fault_state_Last)
-			{
-				//RL_now_state = RL_now_state & (~Fault_state_Reg);
-//				Write_74hc573(LK_FalseLed_D,Fault_state_Reg);
-//				Fault_state_Last = Fault_state_Reg;
-			}
-		}
-		else
-		{
-			
-		}
-		//////////////////////////
-		if(Start_Read_Flag)//读数据
-		{
-			Start_Read_Flag = false;
-//			for(i = 0;i < HT7032_CS;i++)
-//			{
-//			//	Read_HT7032_data(i);
-//				//read Hlw8110 eche one data;
-//				
-//				
-//			}
-			if(kwh_200ms_read_flag)
-			{
-				for(int j = 0 ; j < Hlw8110_CS;j++)
-				{
-					//if(!reset_hlw8110_flag[j])
-						read_Hlw8110(j,1);
-				}
-				kwh_200ms_read_flag = 0;
-			}else
-			{
-				for(int j = 0 ; j < Hlw8110_CS;j++)
-				{
-					//if(!reset_hlw8110_flag[j])
-						read_Hlw8110(j,0);
-				}
-			}
-			//输入A相电压,平均
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] = AC3PPDU_Output[CH1_out].AC_V;
-			
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] += AC3PPDU_Output[CH4_out].AC_V;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] += AC3PPDU_Output[CH7_out].AC_V;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] /= 3;
-			//输入B相电压,平均
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] = AC3PPDU_Output[CH2_out].AC_V;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] += AC3PPDU_Output[CH5_out].AC_V;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] += AC3PPDU_Output[CH8_out].AC_V;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] /= 3;
-			//输入C相电压,平均
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] = AC3PPDU_Output[CH3_out].AC_V;
-			
-			uint32_t Vmax = AC3PPDU_Output[CH1_out].AC_V > AC3PPDU_Output[CH2_out].AC_V ? AC3PPDU_Output[CH1_out].AC_V : AC3PPDU_Output[CH2_out].AC_V;
-			Vmax = Vmax > AC3PPDU_Output[CH3_out].AC_V ? Vmax : AC3PPDU_Output[CH3_out].AC_V;
-			AC_BASE[0] = Vmax;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] += AC3PPDU_Output[CH6_out].AC_V;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] += AC3PPDU_Output[CH9_out].AC_V;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] /= 3;
-			//输入A相电流,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] = AC3PPDU_Output[CH1_out].AC_I;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] += AC3PPDU_Output[CH4_out].AC_I;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] += AC3PPDU_Output[CH7_out].AC_I;
-			//输入B相电流,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] = AC3PPDU_Output[CH2_out].AC_I;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] += AC3PPDU_Output[CH5_out].AC_I;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] += AC3PPDU_Output[CH8_out].AC_I;
-			//输入C相电流,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr] = AC3PPDU_Output[CH3_out].AC_I;
-			AC_BASE[1] = AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr];
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr] += AC3PPDU_Output[CH6_out].AC_I;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr] += AC3PPDU_Output[CH9_out].AC_I;
-			//输入A相功率,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] = AC3PPDU_Output[CH1_out].AC_P;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] += AC3PPDU_Output[CH4_out].AC_P;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] += AC3PPDU_Output[CH7_out].AC_P;
-			//输入B相功率,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] = AC3PPDU_Output[CH2_out].AC_P;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] += AC3PPDU_Output[CH5_out].AC_P;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] += AC3PPDU_Output[CH8_out].AC_P;
-			//输入C相功率,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr] = AC3PPDU_Output[CH3_out].AC_P;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr] += AC3PPDU_Output[CH6_out].AC_P;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr] += AC3PPDU_Output[CH9_out].AC_P;
-			//输入A相电量,求和
-			
-			AC_BASE[2] = AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr];
-			
-			
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] = hlw8110_base[CH1_out] + (hlw8110_store[CH1_out]*1000);
-			//AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] += AC3PPDU_Output[CH1_out].AC_kWh;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] += AC3PPDU_Output[CH4_out].AC_kWh;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] += AC3PPDU_Output[CH7_out].AC_kWh;
-			//输入B相电量,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] =	hlw8110_base[CH2_out] + (hlw8110_store[CH2_out]*1000);
-			//AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] += AC3PPDU_Output[CH2_out].AC_kWh;
-			
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] += AC3PPDU_Output[CH5_out].AC_kWh;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] += AC3PPDU_Output[CH8_out].AC_kWh;
-			//输入C相电量,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] = hlw8110_base[CH3_out] + (hlw8110_store[CH3_out]*1000);
-			//AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] += AC3PPDU_Output[CH3_out].AC_kWh;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] += AC3PPDU_Output[CH6_out].AC_kWh;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] += AC3PPDU_Output[CH9_out].AC_kWh;
-			
-			AC_BASE[3] =  AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] + 	AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr];
-			
-//			for(i =0; i < Output_ChN_default;i++)
-//		{
-//			temp0 = i << 2;
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+0] << 24);
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+1] << 16);
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+2] << 8);
-//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+3]);
-//		}
-			// jugement is or not lack pose
-			
-
-			for(i = 0;i < (Output_ChN_default + 1);i++)
-			{
-				Fault_state_process(i);
-			}
-			
-			RL_Over_Func();
-			//
-//			if(((AC3PPDU_Modbus_Reg[Mb_Dbuff_FT_ST_Addr] & AC3PPDU_APlack_Fault) > 0) || ((AC3PPDU_Modbus_Reg[Mb_Dbuff_FT_ST_Addr] & AC3PPDU_BPlack_Fault) > 0) || ((AC3PPDU_Modbus_Reg[Mb_Dbuff_FT_ST_Addr] & AC3PPDU_CPlack_Fault) > 0))
-//			{
-//				Fault_lack_phase_flag = true;
-//			}
-//			else
-//			{
-//				Fault_lack_phase_flag = false;
-//			}
-			
-//			for(i = 0;i < Output_ChN_default;i++)
-//			{
-//				if(AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1FT_ST_Addr + i] > 0)
-//				{
-//					Fault_state_Reg = Fault_state_Reg | (0x0001 << i);
-//				}
-//				else
-//				{
-//					Fault_state_Reg = Fault_state_Reg & (~(0x0001 << i));
-//				}
-//			}
-		}
-		//////////////////////////
+		RL_Over_Func();
 	 	MODbus_CMD_New();
-		//MODbus_CMD();
+
 	} 
 }