Browse Source

Merge branch 'master' of http://jiecheng2024.tpddns.cn:3000/liyuezong/SmartPDCode

liyuezong 1 year ago
parent
commit
8d48c05d61

+ 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();
+
 	} 
 }
 

+ 1 - 1
control/voltmeter/ADC/adc.c

@@ -54,7 +54,7 @@ void AdcInit(void)
 	rcu_periph_clock_enable(RCU_GPIOA);
 	rcu_periph_clock_enable(RCU_DMA);
 	rcu_periph_clock_enable(RCU_ADC);
-	rcu_adc_clock_config(RCU_ADCCK_APB2_DIV6);
+	rcu_adc_clock_config(RCU_ADCCK_APB2_DIV8);
 	gpio_mode_set(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, U_max | U_min | I_max | I_min);
 	adc_deinit();
 	ADC_dma_config();

+ 4 - 4
control/voltmeter/DISPLAY/display.c

@@ -281,8 +281,8 @@ void display_num_list(uint8_t *list,float num)
 void display_voltage(float num_f,float num_i)
 {
 	int i, t;
-	uint8_t num[8] = {0};
-	uint8_t channel[8] = {0};
+	uint8_t num[9] = {0};
+	uint8_t channel[9] = {0};
 	display_num_list(num,num_i);
 	display_num_list(&num[4],num_f);
 
@@ -324,11 +324,11 @@ void display_voltage(float num_f,float num_i)
 	
 //	for(t=0;t < 10;t++)
 //	{
-		for(i = 0; i < 8;i++)
+		for(i = 0; i < 9;i++)
 		{
 			if(channel[i] == 0)
 				show_num(i,num[i]);
-			for(int j = 0; j <4000;j++);
+			for(int j = 0; j <1000;j++);
 		}
 //	}
 }

+ 0 - 1
control/voltmeter/DISPLAY/display.h

@@ -12,6 +12,5 @@ void display_voltage(float num_f,float num_i);
 //void display_voltage(float num_f);
 void display_current(float current);
 
-
 #endif
 

+ 47 - 15
control/voltmeter/TIMER/timer.c

@@ -86,27 +86,59 @@ void TIMER14_IRQHandler(void)
   {
     timer_interrupt_flag_clear(TIMER14, TIMER_INT_FLAG_UP);       //清除定时器更新中断标志
   }
-//	adc_original_value[0] = adc_channel_sample_V_P();
-//	adc_original_value[1] = adc_channel_sample_V_S();
-//	adc_original_value[2] = adc_channel_sample_I_P();
-//	adc_original_value[3] = adc_channel_sample_I_S();
-	if(adc_original_value[0]>0x20 )
-		voltage_s[index] = adc_original_value[0] -5;
-	else
-		voltage_s[index] = 0;
-	if(adc_original_value[2] > 0x10 )
-		current_s[index++] = adc_original_value[2]-4;
-	else
-		current_s[index++] = 0;
+	
+	if((adc_original_value[0] - adc_original_value[1]) >= 0x10)
+	{
+		voltage_s[index] = adc_original_value[0] - adc_original_value[1]-5;
+	}else
+	{
+		voltage_s[index] = 0;  
+	}
+	
+	if((adc_original_value[2] - adc_original_value[3]) >= 0x4)
+	{
+		current_s[index] = adc_original_value[2] - adc_original_value[3]-3;
+	}else
+	{
+		current_s[index] = 0;  
+	}
+//	if(adc_original_value[0] > adc_original_value[1])
+//	{
+//		if(adc_original_value[0] - adc_original_value[1] >= 10)
+//			voltage_s[index] = adc_original_value[0] - adc_original_value[1] - 5;
+//		else
+//			voltage_s[index] = 0;
+//		//voltage_s[index] = voltage_s[index] > 20 ? voltage_s[index]- 5: 0;
+//	}else
+//	{
+//		voltage_s[index] = 0;
+//	}
+//	if(adc_original_value[2] > adc_original_value[3])
+//	{
+//		if(adc_original_value[2] - adc_original_value[3] >= 4)
+//			current_s[index] = adc_original_value[2] - adc_original_value[3] -4;
+//		else
+//			current_s[index] = 0;
+//		//current_s[index] = current_s[index] > 10 ? current_s[index]- 4: 0;
+//	}else
+//	{
+//		current_s[index] = 0;
+//	}
+	index++;
+//	if(adc_original_value[0]>0x20 )
+//		voltage_s[index] = adc_original_value[0] -5;
+//	else
+//		voltage_s[index] = 0;
+//	if(adc_original_value[2] > 0x10 )
+//		current_s[index++] = adc_original_value[2]-4;
+//	else
+//		current_s[index++] = 0;
 	if(index == 200)
 	{
 		index = 0;
 		ADC_TimerDisable();		//close timer and calculate
 		read_flag = 1;
 	}
-	//adc_channel_sample()
-	//read_flag = 1;
-	//ADC_TimerDisable();
 }
 
 void TIMER15_IRQHandler(void)

+ 1 - 0
pub

@@ -96,6 +96,7 @@ function do_copy()
 
     if [ $ip_flag -eq 1 ]; then
         cp -f $custdir/qt/IP/Qt_Test     $appdir/
+	cp -f $custdir/db/pdu_dat_ip.db  $appdir/pdu_dat.db
     else
         cp -f $custdir/qt/Qt_Test        $appdir/
     fi