Parcourir la source

新三相4线bug处理!

liyi il y a 1 an
Parent
commit
ea12965c2f

+ 9 - 9
truing_control/PDU-Triphasic_IO/HARDWARE/Hlw8110/Hlw8110.c

@@ -1008,23 +1008,23 @@ void read_Hlw8110(uint8_t cs_x,uint8_t read_kWh_flag)
 	{
 		case 0:				//111
 		{
-			SEL_0_H;
-			SEL_1_H;
-			SEL_2_H;
+			SEL_0_L;
+			SEL_1_L;
+			SEL_2_L;
 		}
 		break;
 		case 1:				//110
 		{
-			SEL_0_L;
-			SEL_1_H;
-			SEL_2_H;
+			SEL_0_H;
+			SEL_1_L;
+			SEL_2_L;
 		}
 		break;
 		case 2:				//101
 		{
-			SEL_0_H;
-			SEL_1_L;
-			SEL_2_H;
+			SEL_0_L;
+			SEL_1_H;
+			SEL_2_L;
 		}
 		break;
 		default:

+ 1 - 1
truing_control/PDU-Triphasic_IO/HARDWARE/I2c/I2c.c

@@ -23,7 +23,7 @@ static  void  ConfigI2CGPIO(void)
 {
 	//WP
 	// gpio_deinit(GPIOC);
-	rcu_periph_clock_disable(RCU_GPIOC); 
+	//rcu_periph_clock_disable(RCU_GPIOC); 
   rcu_periph_clock_enable(RCU_GPIOC);                                            //使能GPIOC的时钟
   gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_15);           //设置GPIO模式
   gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_15); //设置GPIO输出模式及速度

+ 2 - 2
truing_control/PDU-Triphasic_IO/HARDWARE/IO/key_io.c

@@ -15,7 +15,7 @@
 #define KEY_IO_DETECTION				GPIOA
 
 
-#define KEY_RST  				GPIO_PIN_13
+#define KEY_RST  				GPIO_PIN_14
 #define KEY_TEST				GPIO_PIN_2
 #define KEY_DETECTION    GPIO_PIN_11
 
@@ -41,7 +41,7 @@ void key_io_init(void * value)
 	gpio_mode_set(KEY_IO_TEST, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST);
 	
 	
-	ConfigDetection();
+	//ConfigDetection();
 }
 
 static void   ConfigDetection(void)

+ 2 - 1
truing_control/PDU-Triphasic_IO/HARDWARE/Led/Led.c

@@ -9,7 +9,8 @@ static void ConfigLEDGPIO(void)
   rcu_periph_clock_enable(USR_LED_RCU);                                        
   gpio_mode_set(USR_LED_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, USR_LED);           
   gpio_output_options_set(USR_LED_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, USR_LED); 
-  gpio_bit_set(USR_LED_IO, USR_LED);                                            
+  gpio_bit_reset(USR_LED_IO, USR_LED); 
+ 
 }
 
 void InitLED(void)

+ 3 - 3
truing_control/PDU-Triphasic_IO/USER/board_cfg.h

@@ -4,8 +4,8 @@
 
 
 
-#define PRJ_3_P_4_LINE  0
-#define PRJ_3_P_3_LINE  1
+#define PRJ_3_P_4_LINE  1
+#define PRJ_3_P_3_LINE  0
  
 
 #if PRJ_3_P_3_LINE
@@ -15,7 +15,7 @@
 #elif PRJ_3_P_4_LINE
 	#define SUPPORT_ZERO_LINE			1
 	#define SUPPORT_KEY_CTRL      0
-	#define SUPPORT_DETECTION     1
+	#define SUPPORT_DETECTION     0
 
 #endif
 

+ 28 - 16
truing_control/PDU-Triphasic_IO/USER/main.c

@@ -129,23 +129,23 @@ static bool select_channel(uint8_t ch_x)
 	{
 		case CH1_out:
 		{
-				SEL_0_H;
-				SEL_1_H;
-				SEL_2_H;
+				SEL_0_L;
+				SEL_1_L;
+				SEL_2_L;
 		}
 			break;
 		case CH2_out:
 		{
-				SEL_0_L;
-				SEL_1_H;
-				SEL_2_H;
+				SEL_0_H;
+				SEL_1_L;
+				SEL_2_L;
 		}
 			break;
 		case CH3_out:
 		{
-				SEL_0_H;
-				SEL_1_L;
-				SEL_2_H;
+				SEL_0_L;
+				SEL_1_H;
+				SEL_2_L;
 		}
 			break;
 		default:
@@ -493,6 +493,7 @@ static void key_io_control()
 
 int main(void)
 {
+	AC3PPDU_active_chn = Output_ChN_default;
 	app_init(&meta_data);
 	InitSysTick();
 	InitLED();
@@ -511,10 +512,9 @@ int main(void)
 	{
 		hlw8110_init(i);
 	}
-	
-	
+
 	ReadEeprom();
-	AC3PPDU_active_chn = Output_ChN_default;
+	
 	strcpy(infomation.date,__DATE__);
 	strcat(infomation.date," ");
 	strcat(infomation.date,__TIME__);
@@ -553,13 +553,13 @@ int main(void)
 	AC3PPDU_RL_N_time.RL_ontime = AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_TonN_Addr];					// add by liyi
 	orderFlag_N = true;
 #endif
-	AC3PPDU_active_chn = Output_ChN_default;   //bug
 
 
 	AC3PPDU_Modbus_Reg[Mb_Dbuff_FT_ST_Addr] = AC3PPDU_APlack_Fault + AC3PPDU_BPlack_Fault;
 	AC3PPDU_Modbus_Reg[Mb_Dbuff_FT_ST_Addr] += AC3PPDU_CPlack_Fault;
+#if SUPPORT_DETECTION
 	detection_value = get_detection();
-	
+#endif
 	Fwdgt_Init();
 
 	uint32_t write_eep_count = 0;
@@ -574,7 +574,9 @@ int main(void)
 		if(flash_flag == 1){
 			LEDFlicker2();
 			flash_flag = 0;
+#if SUPPORT_DETECTION
 			detection_value = get_detection();
+#endif
 			for(int j = 0 ; j < Hlw8110_CS;j++)
 				read_Hlw8110(j,0);
 			normal_running_time+=2;
@@ -749,10 +751,13 @@ static void MODbus_CMD_New(void)
 					temp_addr = i << 1; 
 					Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x41;
 					AC3PPDU_RL_time[i + CH1_out].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
+					orderFlag[i]=true;
 				}		
+				orderFlag_N = true;
 				AT24CxxWrite(ERom_CH1LT_ST_Addr,(Eeprom_Rbuf + ERom_CH1LT_ST_Addr),(2*Output_ChN_default));
 				Eeprom_Rbuf[ERom_CHNLT_ST_Addr] = Eeprom_Rbuf[ERom_CHNLT_ST_Addr] | 0x41;
 				AC3PPDU_RL_N_time.LT_state = Eeprom_Rbuf[ERom_CHNLT_ST_Addr];
+				
 				AT24CxxWrite(ERom_CHNLT_ST_Addr,(Eeprom_Rbuf + ERom_CHNLT_ST_Addr),2);
 			}
 				break;
@@ -765,7 +770,9 @@ static void MODbus_CMD_New(void)
 					Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x80;
 					Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] & 0xfe;
 					AC3PPDU_RL_time[i + CH1_out].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
+					orderFlag[i]=true;
 				}
+				orderFlag_N = true;
 				AT24CxxWrite(ERom_CH1LT_ST_Addr,(Eeprom_Rbuf + ERom_CH1LT_ST_Addr),(2*Output_ChN_default));
 				Eeprom_Rbuf[ERom_CHNLT_ST_Addr] = Eeprom_Rbuf[ERom_CHNLT_ST_Addr] | 0x80;
 				Eeprom_Rbuf[ERom_CHNLT_ST_Addr] = Eeprom_Rbuf[ERom_CHNLT_ST_Addr] & 0xfe;
@@ -788,6 +795,7 @@ static void MODbus_CMD_New(void)
 
 				if(temp_addr == 9) {					//Ch N
 					AC3PPDU_RL_N_time.LT_state = data;
+					orderFlag_N = true;
 				}else{
 
 					if(AC3PPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + temp_addr] <= THRESHOULD_JUDGMENT)
@@ -812,7 +820,7 @@ static void MODbus_CMD_New(void)
 					}
 					
 					AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
-					
+					orderFlag[temp_addr]=true;
 					LimiT_enable_check((temp_addr + CH1_out),AC3PPDU_RL_time[temp_addr + CH1_out].LT_state);
 
 				}
@@ -852,7 +860,11 @@ static void MODbus_CMD_New(void)
 				AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
 				AC3PPDU_RL_time[temp_addr + CH2_out].LT_state = data;
 				AC3PPDU_RL_time[temp_addr + CH3_out].LT_state = data;
-				
+				for(int i=0;i<Output_ChN_default;i++)
+				{
+					orderFlag[i]=true;
+				}
+				//orderFlag_N = true;
 				LimiT_enable_check((temp_addr + CH1_out),AC3PPDU_RL_time[temp_addr + CH1_out].LT_state);
 				LimiT_enable_check((temp_addr + CH2_out),AC3PPDU_RL_time[temp_addr + CH2_out].LT_state);
 				LimiT_enable_check((temp_addr + CH3_out),AC3PPDU_RL_time[temp_addr + CH3_out].LT_state);