Ver código fonte

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

chenyuanjie 1 ano atrás
pai
commit
faaabcd365

+ 31 - 57
control/PDU-AC_ADA_OLD8/common/common.c

@@ -1,13 +1,7 @@
 #include "common.h"
 #include "board_cfg.h"
-
-#if EEPROM_TEST		
-
-#define TEST_ADDR  (120 * 32)
-#define LENTH      (32)
-
-#endif
-
+#include "systick.h"
+#include "string.h"
 
 
 void reset_config_for_eeprom(void)
@@ -15,12 +9,12 @@ void reset_config_for_eeprom(void)
 	board_t *board = get_board();
 	if(board)
 	{
-			for(int i = 0; i < MAX_CHANNEL;i++)
+			for(uint8_t i = 0; i < MAX_CHANNEL;i++)
 			{
-				board->md_data.rw_data.open.delay_open[i]  = (1+i) *100;
-				board->md_data.rw_data.close.delay_close[i] = (1+i) *100;
+				board->md_data.rw_data.open.delay_open[i]  = (1+i) *1000;
+				board->md_data.rw_data.close.delay_close[i] = (1+i) *1000;
 			}
-		memset(&board->md_data.rw_data.thr.th[0].v_top,0,sizeof(ac_rw_data_t)-sizeof(ac_delay_open_t)-sizeof(ac_delay_close_t));
+		memset((void*)&board->md_data.rw_data.thr.th[0].v_top,0,sizeof(ac_rw_data_t)-sizeof(ac_delay_open_t)-sizeof(ac_delay_close_t));
 		board->write_eeprom_page(EEPROM_OTHER_ADDR,(uint8_t *)&board->md_data.rw_data.open.delay_open[0], sizeof(ac_rw_data_t));
 	}
 }
@@ -33,36 +27,25 @@ void read_config_from_eeprom(void)
 	{
 		uint16_t device = 0;
 		board->read_eeprom(EEPROM_DEVICES_ADDR,(uint8_t *)&device,EEPROM_DEVICES_LENTH);
-
-#if EEPROM_TEST		
-		uint8_t test_buff[32] ={0};
-		for(int i =0;i < 32;i++)
-			test_buff[i]=i;
-		board->write_eeprom_page(TEST_ADDR,test_buff,LENTH);
-		
-		for(int i =0;i < 32;i++)
-			test_buff[i]=0;
-		board->read_eeprom_page(TEST_ADDR,test_buff,LENTH);
-		
-#endif
-		
-		
 		if(device != board->md_data.r_data.dev_chn)
 		{
 			//default write eeprom
 			board->write_eeprom_page(EEPROM_DEVICES_ADDR,(uint8_t *)&board->md_data.r_data.dev_chn,EEPROM_DEVICES_LENTH);
 			board->write_eeprom_page(EEPROM_STATUS_ADDR,(uint8_t *)&board->relay_staging_staus[0],2*RelaySlaveChaNum);
-			
-			for(int i = 0; i < RelaySlaveChaNum;i++)
+			board->feed_dog();
+			for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
 			{
-				board->md_data.rw_data.open.delay_open[i]  	= (1+i) *100;
-				board->md_data.rw_data.close.delay_close[i] = (1+i) *100;
+				board->md_data.rw_data.open.delay_open[i]  	= (1+i) * 1000;
+				board->md_data.rw_data.close.delay_close[i] = (1+i) * 1000;
 			}
 			
 			board->write_eeprom_page(EEPROM_OTHER_ADDR,(uint8_t *)&board->md_data.rw_data.open.delay_open[0], sizeof(ac_rw_data_t));
 			iic_data chache={0};
-			for(int i = 0 ; i < MAX_ROW;i++)
+			for(uint8_t i = 0 ; i < MAX_ROW;i++){
 				board->write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),(uint8_t*)&chache.data[0],CONSUM_PAGE);
+				board->feed_dog();
+				DelayNms(7);
+			}
 		}
 		{
 			//channel open or close
@@ -78,19 +61,19 @@ void read_config_from_eeprom(void)
 					}
 				}
 			}
+			board->feed_dog();
 			board->read_eeprom_page(EEPROM_OTHER_ADDR,(uint8_t *)&board->md_data.rw_data.open.delay_open[0],sizeof(ac_rw_data_t));
-						//get phase information
-//			uint8_t buff[EEPROM_CHANNEL_LENTH] = {0};
-//			board->read_eeprom_page(EEPROM_CHANNEL_PHASE,buff,EEPROM_CHANNEL_LENTH);
-			for(int i = 0 ; i < RelaySlaveChaNum;i++)
+
+			for(uint8_t i = 0 ; i < RelaySlaveChaNum;i++)
 			{
 				board->check_threshold(THRESHOLD_OUT,i);
 			}
-
+			
 			iic_data chache={0};
-			for(int i = 0 ; i < MAX_ROW;i++)
+			for(uint8_t i = 0 ; i < MAX_ROW;i++)
 			{
-				board->read_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),&chache,sizeof(iic_data));
+				board->feed_dog();
+				board->read_eeprom_page(EEPROM_CONSUMER_ADDR + (CONSUM_PAGE*i),(uint8_t*)&chache,sizeof(iic_data));
 				if(board->con_da.index > chache.iic_con.recode_index1)
 				{
 					
@@ -100,8 +83,9 @@ void read_config_from_eeprom(void)
 					board->con_da.row = i;
 				}
 			}	
-			board->read_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*(board->con_da.row)),&chache,sizeof(iic_data));
-			for(int i = 0 ; i < RelaySlaveChaNum;i++)
+			board->read_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*(board->con_da.row)),(uint8_t*)&chache,sizeof(iic_data));
+			board->feed_dog();
+			for(uint16_t i = 0 ; i < RelaySlaveChaNum;i++)
 			{
 					board->ele_restore[i] = chache.iic_con.iic_consumer[i];
 			}
@@ -112,14 +96,16 @@ void read_config_from_eeprom(void)
 				board->con_da.row = 0;
 			}
 			board->con_da.index++;		//point next write consumer index
-			if(board->con_da.index > 0XFFFFFFFFFFFFFFFF)
+			if(board->con_da.index >= UINT64_MAX)
 			{
 				iic_data chache1={0};
 				board->con_da.index = 0;
-				for(int i = 0 ; i < MAX_ROW;i++)
-					board->write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),&chache1,CONSUM_PAGE);
+				for(uint8_t i = 0 ; i < MAX_ROW;i++){
+					board->feed_dog();
+					board->write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),(uint8_t*)&chache1,CONSUM_PAGE);
+					DelayNms(7);
+				}
 			}
-			//read chn ctrl
 		}
 	}
 }
@@ -134,7 +120,6 @@ void set_relay_sta_async(async_data *data)
 	{
 		if(data->fire_or_zero == _FIRE)
 		{
-			//if(board->md_data.rw_data.rw_d.chn_ctrl[data->channel] != 0)  goto failed;
 			if(data->w_eep_flag == FLAG_W_EEP)
 			{
 				w_eeprom_data_t da = {0};
@@ -146,18 +131,7 @@ void set_relay_sta_async(async_data *data)
 		}
 		else if(data->fire_or_zero == _ZERO)
 		{
-	#if (ZERO_CONTRL == ZERO_LINE_CTRL_YES)
-			if(data->w_eep_flag == FLAG_W_EEP)
-			{
-				w_eeprom_data_t da = {0};
-				da.lenth =2;
-				memcpy(&da.data,&data->status,2);
-				da.start_addr = (EEPROM_STATUS_ADDR+((data->channel+13)*2));
-				board->q_cache.en_queue(&da);	
-			}			
-	#else
-				goto failed;
-	#endif			
+				goto failed;			
 		}
 		else
 		{

+ 18 - 24
control/PDU-AC_ADA_OLD8/common/common.h

@@ -369,7 +369,8 @@ typedef struct
 	uint16_t 			p_top_en        :1;             
 	uint16_t 			p_top_wanning   :1;           
 	uint16_t 			e_top_en				:1;             
-	uint16_t 			e_top_wanning   :1;          
+	uint16_t 			e_top_wanning   :1;
+	uint16_t    									:5;
 }old_state_t; 
 
 
@@ -398,6 +399,7 @@ typedef struct{
 	uint16_t          v_min_func    :      1;
 	uint16_t          p_max_func    :      1;
 	uint16_t          c_max_func    :      1;
+	uint16_t                        :      3;
 }ac_over_func_t;
 
 
@@ -411,6 +413,7 @@ typedef struct{
 	uint16_t         total_i_wanning_max     :   1;
 	uint16_t         total_p_waning_max      :   1;
 	uint16_t         total_c_waning_max      :   1;
+	uint16_t                        			:      3;
 }total_waning_t;
 
 
@@ -624,12 +627,12 @@ typedef struct {
 
 
 typedef struct {
-#define QUEUE_MAX     15
+#define QUEUE_MAX     25
 	uint8_t  front;
 	uint8_t  rear;
 	w_eeprom_data_t data[QUEUE_MAX];
-	uint8_t (*is_empty)();
-	uint8_t (*is_full)();
+	uint8_t (*is_empty)(void);
+	uint8_t (*is_full)(void);
 	uint8_t (*en_queue)(w_eeprom_data_t *d);
 	uint8_t (*de_queue)(w_eeprom_data_t *d);
 }queue_t;
@@ -662,22 +665,19 @@ typedef struct {
 	mod_data_t md_data;
 	uint8_t 	flag_1s;
 	uint8_t	  flag_10s;
+	uint8_t   flag_100ms;
 	uint8_t   clear_flag; 															/* erase consumer and all successful this flag is 0 */
 	uint8_t   out_wanning_en[8];
 	uint8_t   in_wanning_en[MAX_INPUT_CAHNNEL];
 	uint8_t   in_over_func[3];
 	uint8_t   over_func[MAX_CHANNEL];
 	uint16_t  relay_staging_staus[MAX_CHANNEL];
-	//uint16_t  relay_combin_staging_status[4];
-	//uint16_t  relay_zero_staging_status[3];
 	uint16_t  relay_limit_counter[MAX_CHANNEL];
-	//uint16_t  relay_zero_limit_counter[3];
 	consumer_data con_da;
 	uint32_t ele_restore[MAX_CHANNEL];
 	uint8_t   haddr;
 	uint8_t   detection_1_value;
 	uint32_t  detection_1_count;
-	uint32_t  timer_count;
 	queue_t    q_cache;
 #if SURPPORT_2_PT
 	uint8_t   detection_2_value;
@@ -706,12 +706,6 @@ typedef struct {
 	uint8_t handle_status[MAX_CHANNEL];  						/* Save the state before the power failure  */
 	#if SURPPORT_2_PT
 		uint8_t  handle_input_pt[2];										/* recode input status  */
-		uint8_t  count1;
-		uint8_t  count2;
-		uint8_t  input_1_en;
-		uint8_t  input_2_en;
-		uint16_t input_1_10ms_count;
-		uint16_t input_2_10ms_count;
 	#else
 		uint8_t  handle_input_pt[1];
 	#endif
@@ -735,27 +729,27 @@ typedef struct {
 	void (*open)(uint8_t channel);
 	void (*close)(uint8_t channel);
 	void (*read_ele)(uint8_t channel);
-	void (*led_flash)();
+	void (*led_flash)(void);
 	void (*read_eeprom)(uint16_t addr,uint8_t *r_buff,uint16_t lenth);
 	void (*write_eeprom)(uint16_t addr,uint8_t *w_buff,uint16_t lenth);
 	void (*check_wanning)(uint8_t in_out, uint8_t channel);
-	void (*detection)();
-	void (*opt_detection)();
-	void (*erase_consumer)();
+	void (*detection)(void);
+	void (*opt_detection)(void);
+	void (*erase_consumer)(void);
 	void (*opt_overfunc)(uint8_t channel);
 	void (*opt_alloverfunc)(uint8_t input);
-	void (*break_uboot)();
-	void (*feed_dog)();
-	void (*lock)();
-	void (*unlock)();
+	void (*break_uboot)(void);
+	void (*feed_dog)(void);
+	void (*lock)(void);
+	void (*unlock)(void);
 	void (*check_threshold)(uint8_t in_out,uint8_t channel);
-	void (*relay_sync)();
+	void (*relay_sync)(void);
 	void (*read_eeprom_page)(uint16_t addr,uint8_t *r_buff,uint16_t lenth);
 	void (*write_eeprom_page)(uint16_t addr,uint8_t *r_buff,uint16_t lenth);
 }board_t;
 
 
-board_t *get_board();
+board_t *get_board(void);
 void set_relay_status_async(uint16_t *reg,uint8_t method,uint16_t status);
 void read_config_from_eeprom(void);
 void reset_config_for_eeprom(void);

+ 3 - 9
control/PDU-AC_ADA_OLD8/hardware/electricity/electricity.c

@@ -25,12 +25,6 @@ float elec[RelaySlaveChaNum] = {0.0};
 void electricity_init(void)
 {
 	board = get_board();
-#if (POWER_TYPE == POWER_DC)
-	che442e_Init();
-	Init_ADC();
-	uart1_config(115200);
-
-#else
 	uart1_config(9600);
 	ch448f_config();
 	
@@ -39,7 +33,7 @@ void electricity_init(void)
 		select_channel(i);
 		Init_HLW8110();
 	}
-#endif
+
 	board->read_ele = read_ele;
 	board->check_wanning = check_wanning;
 	board->opt_overfunc = opt_over_func;
@@ -64,14 +58,14 @@ static void read_ele(uint8_t channel)
 		elec[channel] += F_AC_E;
 		board->md_data.r_data.ac_ele.ele_info[channel].consumer = board->ele_restore[channel] + elec[channel] * 1000;
 
-		if(board->md_data.r_data.ac_ele.ele_info[channel].voltage < 100)
+		if(F_AC_V < 0.5)
 		{
 			board->md_data.r_data.ac_ele.ele_info[channel].voltage = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].current = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].power = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].factor = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].freq = 0;
-		}else if(board->md_data.r_data.ac_ele.ele_info[channel].factor < 1)
+		}else if(F_AC_PF < 0.1 || F_AC_PF >= 1)
 		{
 			board->md_data.r_data.ac_ele.ele_info[channel].current = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].power = 0;

+ 5 - 4
control/PDU-AC_ADA_OLD8/hardware/flash/flash.c

@@ -1,5 +1,6 @@
 #include "flash.h"
 #include "gd32e23x.h"
+#include "string.h"
 
 void flash_erase_meta()
 {
@@ -62,9 +63,9 @@ void flash_get_meta_data(META_DATA_S *meta)
 		meta->app2_size = *(uint32_t*)(APP2_SIZE);
 }
 
-void flash_get_infomation(board_info_t *info)
+void flash_get_infomation(ac_information_t *info)
 {
-	info->uniq_3 						= *(uint32_t*)(UNIQU_3);
-	info->uniq_2 						= *(uint32_t*)(UNIQU_2);
-	info->uniq_1 						= *(uint32_t*)(UNIQU_1);
+	info->uniq_ID_64_95 						= *(uint32_t*)(UNIQU_3);
+	info->uniq_ID_32_63 						= *(uint32_t*)(UNIQU_2);
+	info->uniq_ID_00_31 						= *(uint32_t*)(UNIQU_1);
 }

+ 1 - 1
control/PDU-AC_ADA_OLD8/hardware/flash/flash.h

@@ -19,7 +19,7 @@ void flash_write_meta(const META_DATA_S *meta_data);
 
 void flash_get_meta_data(META_DATA_S *meta);
 
-void flash_get_infomation(board_info_t *info);
+void flash_get_infomation(ac_information_t *info);
 
 #endif
 

+ 4 - 0
control/PDU-AC_ADA_OLD8/hardware/fwdgt/fwdgt.c

@@ -19,6 +19,7 @@ static void feed_dog(void);
 void fwdgt_Init(void)
 {
 	board_t * board = get_board();
+#if OPEN_WATCH_DOG
 	uint16_t timeout = 0xFFFFU;
 	rcu_osci_on(RCU_IRC40K);
 	while(SUCCESS != rcu_osci_stab_wait(RCU_IRC40K))
@@ -32,12 +33,15 @@ void fwdgt_Init(void)
 	fwdgt_config(2000,FWDGT_PSC_DIV64);			//800ms
 	fwdgt_write_disable();
 	fwdgt_enable();
+#endif
 	board->feed_dog = feed_dog;
 }
 
 
 static void feed_dog(void)
 {
+#if OPEN_WATCH_DOG
 	fwdgt_write_enable();
 	fwdgt_counter_reload();	
+#endif
 }

+ 2 - 2
control/PDU-AC_ADA_OLD8/hardware/quere/query.c

@@ -5,9 +5,9 @@
 
 static board_t *board = 0;
 
-static uint8_t is_empty();
+static uint8_t is_empty(void);
 
-static uint8_t is_full();
+static uint8_t is_full(void);
 
 static uint8_t en_queue(w_eeprom_data_t *d);
 

+ 17 - 0
control/PDU-AC_ADA_OLD8/hardware/quere/query.h

@@ -0,0 +1,17 @@
+#ifndef _QUERY_H
+#define _QUERY_H
+
+
+
+
+
+
+
+
+
+
+
+void query_init(void);
+
+
+#endif

+ 1 - 18
control/PDU-AC_ADA_OLD8/hardware/relay/relay.c

@@ -135,7 +135,7 @@ void relay_init(void)
 	#endif	
 
 		board->unlock();
-		board->lock;
+		board->lock();
 
 	board->open = relay_open;
 	board->close = relay_close;
@@ -249,21 +249,4 @@ static void relay_close(uint8_t channel)
 		board->md_data.r_data.state.state[channel].state = RELAY_CLOSE;
 }
 
-static void relay_sync(void)
-{
-	board_t * board = get_board();
-	for(int i = 0; i < RelaySlaveChaNum;i++)
-	{
-		if(board->relay_staging_staus[i] == RELAY_CLOSE)
-		{
-			relay_close(i);
-		}else if(board->relay_staging_staus[i] == RELAY_OPEN)
-		{
-			relay_open(i);
-		}else
-		{
-			;
-		}
-	}
-}
 

+ 9 - 2
control/PDU-AC_ADA_OLD8/hardware/timer/timer.c

@@ -14,11 +14,12 @@
 
 
 static board_t *board = 0;
-static timer14_config(uint16_t arr,uint16_t psc);
+static void timer14_config(uint16_t arr,uint16_t psc);
 static void relay_remember(void);
 
 static  uint16_t count_1s = 0;
 static  uint16_t count_10s = 0;
+static  uint16_t count_100ms = 0;
 
 uint16_t rl_delay_cnt[RelaySlaveChaNum] = {0};
 
@@ -28,7 +29,7 @@ void time_init(void)
 	timer14_config(9999,71);
 }
 
-static timer14_config(uint16_t arr,uint16_t psc)
+static void timer14_config(uint16_t arr,uint16_t psc)
 {
 	board = get_board();
 	
@@ -84,6 +85,12 @@ void TIMER14_IRQHandler(void)
 				count_10s = 0;
 			}
 		}
+		count_100ms++;
+		if(count_100ms == 10)
+		{
+			count_100ms = 0;
+			board->flag_100ms = 1;
+		}
 	}
 	
 }

+ 5 - 4
control/PDU-AC_ADA_OLD8/user/board_cfg.h

@@ -13,6 +13,10 @@
 #define __BOARD_CFG_H_
 
 
+
+
+#define OPEN_WATCH_DOG  0
+
 #define  POWER_DC           0
 #define  POWER_AC           1
 #define  POWER_AC_3_3       4
@@ -28,10 +32,7 @@
 #define  ZERO_LINE_CTRL_NO       0
 #define  ZERO_LINE_CTRL_YES      1
 
-#define  ZERO_LINE_NONE        0
-#define  ZERO_LINE_1           1
-#define  ZERO_LINE_2           2
-#define  ZERO_LINE_2           3
+
 
 
 #define OUTPUT_CTRL_NO         0      /*  */

+ 45 - 55
control/PDU-AC_ADA_OLD8/user/main.c

@@ -14,14 +14,13 @@
 #include "flash.h"
 #include "electricity.h"
 #include "gd32e23x.h"
+#include "string.h"
+#include "query.h"
 
 
 
 
-board_t  ac_board = 		{0};
-META_DATA_S meta_data = {0};
-
-float TotalWh[RelaySlaveChaNum] ={0.0};
+static board_t  ac_board = 		{0};
 
 board_t *get_board()
 {
@@ -29,20 +28,22 @@ board_t *get_board()
 }
 
 extern uint16_t rl_delay_cnt[RelaySlaveChaNum];
-extern uint16_t rl_delay_zero_cnt[ZERO_CTRL_NUM];
+
 
 
 
 static void task_query(void);
 static void task_1s(void);
 static void task_10s(void);
+static void task_100ms(void);
 static void relay_ctrl(void);
-static void app_init(META_DATA_S *meta);
+
 
 
 int main(){
 	
 	InitSysTick();
+	fwdgt_Init();
 	led_init();
 	lock_init();
 	detection_init();
@@ -54,16 +55,17 @@ int main(){
 	query_init();
 	eMBInit(MB_RTU, ac_board.haddr, 0, 115200, MB_PAR_NONE);
 	eMBEnable();
+	ac_board.feed_dog();
 	//device
-	ac_board.md_data.r_data.dev_chn =   ACSingCurrid << 8 | RelaySlaveChaNum;   // DEIVECE(POWER_TYPE,INPUT_PT_NUM,ZERO_CONTRL,ZERO_CTRL_NUM,OUTPUT_CONTRL,RelaySlaveChaNum);
+	ac_board.md_data.r_data.dev_chn =   ACSingCurrid << 8 | RelaySlaveChaNum;
 	//
 	ac_board.md_data.r_data.info.channels = RelaySlaveChaNum;
 	read_config_from_eeprom();
-	
-	strcpy(&(ac_board.md_data.r_data.info.date),__DATE__);
-	strcat(&(ac_board.md_data.r_data.info.date)," ");
-	strcat(&(ac_board.md_data.r_data.info.date),__TIME__);
-	strcpy(&(ac_board.md_data.r_data.info.ver),VERSION);
+	ac_board.feed_dog();
+	strcpy((char*)&(ac_board.md_data.r_data.info.date),__DATE__);
+	strcat((char*)&(ac_board.md_data.r_data.info.date)," ");
+	strcat((char*)&(ac_board.md_data.r_data.info.date),__TIME__);
+	strcpy((char*)&(ac_board.md_data.r_data.info.ver),VERSION);
 	
 	flash_get_infomation(&ac_board.md_data.r_data.info);
 	
@@ -71,44 +73,33 @@ int main(){
 	ac_board.detection();
 
 
-	#if SURPPORT_2_PT
-		if(ac_board.md_data.r_data.detection & 0x1)
+	
+	if((ac_board.md_data.r_data.detection & 0x1) == 0)
+	{
+		for(uint8_t i = 0; i < PT_SUB_COUNT;i++)
 		{
-			for(uint8_t i = 0; i < PT_SUB_COUNT;i++)
-			{
-				ac_board.handle_status[i] = ac_board.relay_staging_staus[i];
-			}
+			ac_board.handle_status[i] = ac_board.relay_staging_staus[i];
+			ac_board.relay_staging_staus[i] = 0;
 		}
-		
-		if(ac_board.md_data.r_data.detection & 0x2)
+	}
+#if SURPPORT_2_PT		
+		if((ac_board.md_data.r_data.detection & 0x2) == 0)
 		{
 			for(uint8_t i = PT_SUB_COUNT; i < RelaySlaveChaNum;i++)
-			{
-				ac_board.handle_status[i] = ac_board.relay_staging_staus[i];
-			}
-		}
-	#else
-
-		if((ac_board.md_data.r_data.detection & 0x1) == 0)
-		{
-			ac_board.handle_input_pt[0] = 0;
-			for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
 			{
 				ac_board.handle_status[i] = ac_board.relay_staging_staus[i];
 				ac_board.relay_staging_staus[i] = 0;
-//				CLEAR_RL_ON_DELAY_FLAG(ac_board.relay_staging_staus[i]);
-//				CLEAR_RL_OFF_DELAY_FLAG(ac_board.relay_staging_staus[i]);
-//				CLEAR_RL_ORDER_FLAG(ac_board.relay_staging_staus[i]);				
 			}
-		}		
+		}
 #endif
 	
 	
 	
 	while(1)
 	{
-		
+		ac_board.feed_dog();
 		task_query();
+		task_100ms();
 		task_1s();
 		task_10s();
 		eMBPoll();
@@ -120,32 +111,36 @@ int main(){
 			reset_config_for_eeprom();
 		}
 	}
-	return 0;
 }
 
-static uint16_t _count = 0;
 
 static void task_query(void)
 {
 	w_eeprom_data_t data = {0};
 	if(ac_board.q_cache.de_queue(&data))
 	{
-		ac_board.write_eeprom_page(data.start_addr,&data.data,data.lenth);
+		ac_board.write_eeprom_page(data.start_addr,(uint8_t*)&data.data,data.lenth);
 	}
 }
 
 static void task_1s(void)
 {
-	static uint8_t channel = 0;
 	if(ac_board.flag_1s)
 	{
-			ac_board.md_data.r_data.info.runing_time++;
-			
 			ac_board.flag_1s = 0;
+			ac_board.md_data.r_data.info.runing_time++;
 			ac_board.led_flash();
 			ac_board.detection();
-	
 
+	}
+}
+
+static void task_100ms(void)
+{
+	static uint8_t channel = 0;
+	if(ac_board.flag_100ms)
+	{
+			ac_board.flag_100ms = 0;
 			ac_board.read_ele(channel);
 			ac_board.check_wanning(ELE_OUTPUT,channel);
 			ac_board.opt_overfunc(channel);		
@@ -155,10 +150,11 @@ static void task_1s(void)
 				//check input wanning
 				//calculate input
 				channel = 0;
-			}
+			}	
 	}
 }
 
+
 static void task_10s(void)
 {
 	if(ac_board.flag_10s)
@@ -172,32 +168,26 @@ static void task_10s(void)
 		{
 			ac_board.con_da.row = 0;
 		}
-		if(ac_board.con_da.index > 0xFFFFFFFFFFFFFFFF)
+		if(ac_board.con_da.index >= UINT64_MAX)
 		{
 			iic_data chache1={0};
 			ac_board.con_da.index = 0;
-			for(int i = 0 ; i < MAX_ROW;i++)
-				ac_board.write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),&chache1,CONSUM_PAGE);
+			for(uint8_t i = 0 ; i < MAX_ROW;i++)
+				ac_board.write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),(uint8_t*)&chache1,CONSUM_PAGE);
 			ac_board.con_da.row = 0;
 		}
 		ac_board.con_da.iic_da.iic_con.recode_index1 = ac_board.con_da.index;
-		ac_board.write_eeprom_page(EEPROM_CONSUMER_ADDR+(CONSUM_PAGE*ac_board.con_da.row),&ac_board.con_da.iic_da.iic_con,CONSUM_PAGE);
+		ac_board.write_eeprom_page(EEPROM_CONSUMER_ADDR+(CONSUM_PAGE*ac_board.con_da.row),(uint8_t*)&ac_board.con_da.iic_da.iic_con,CONSUM_PAGE);
 		ac_board.con_da.index++;
 		ac_board.con_da.row++;
 
 	}
 }
-static void app_init(META_DATA_S *meta)
-{
-	flash_get_meta_data(meta);
-	nvic_vector_table_set(NVIC_VECTTAB_FLASH,meta->rom_addr - NVIC_VECTTAB_FLASH);
-	__enable_irq();
-}
 
 
 static void relay_ctrl(void)
 {
-	for(int i = 0; i < RelaySlaveChaNum;i++)
+	for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
 	{
 		if(IS_RL_ORDER_FLAG_EN(ac_board.relay_staging_staus[i]))
 		{
@@ -246,7 +236,7 @@ static void relay_ctrl(void)
 			CLEAR_RL_ORDER_FLAG(ac_board.relay_staging_staus[i]);
 		}
 	}
-	for(int i = 0; i < RelaySlaveChaNum;i++)
+	for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
 	{
 		if(IS_RL_COUNTER_END_FLAG_EN(ac_board.relay_staging_staus[i]))
 		{

+ 31 - 35
truing_control/PDU-AC_ADA_NEW_6/common/common.c

@@ -1,5 +1,7 @@
 #include "common.h"
 #include "board_cfg.h"
+#include "systick.h"
+#include "string.h"
 
 #if EEPROM_TEST		
 
@@ -15,12 +17,12 @@ void reset_config_for_eeprom(void)
 	board_t *board = get_board();
 	if(board)
 	{
-			for(int i = 0; i < MAX_CHANNEL;i++)
+			for(uint8_t i = 0; i < MAX_CHANNEL;i++)
 			{
-				board->md_data.rw_data.open.delay_open[i]  = (1+i) *100;
-				board->md_data.rw_data.close.delay_close[i] = (1+i) *100;
+				board->md_data.rw_data.open.delay_open[i]  = (1+i) *1000;
+				board->md_data.rw_data.close.delay_close[i] = (1+i) *1000;
 			}
-		memset(&board->md_data.rw_data.thr.th[0].v_top,0,sizeof(ac_rw_data_t)-sizeof(ac_delay_open_t)-sizeof(ac_delay_close_t));
+		memset((void*)&board->md_data.rw_data.thr.th[0].v_top,0,sizeof(ac_rw_data_t)-sizeof(ac_delay_open_t)-sizeof(ac_delay_close_t));
 		board->write_eeprom_page(EEPROM_OTHER_ADDR,(uint8_t *)&board->md_data.rw_data.open.delay_open[0], sizeof(ac_rw_data_t));
 	}
 }
@@ -34,35 +36,25 @@ void read_config_from_eeprom(void)
 		uint16_t device = 0;
 		board->read_eeprom(EEPROM_DEVICES_ADDR,(uint8_t *)&device,EEPROM_DEVICES_LENTH);
 
-#if EEPROM_TEST		
-		uint8_t test_buff[32] ={0};
-		for(int i =0;i < 32;i++)
-			test_buff[i]=i;
-		board->write_eeprom_page(TEST_ADDR,test_buff,LENTH);
-		
-		for(int i =0;i < 32;i++)
-			test_buff[i]=0;
-		board->read_eeprom_page(TEST_ADDR,test_buff,LENTH);
-		
-#endif
-		
-		
 		if(device != board->md_data.r_data.dev_chn)
 		{
 			//default write eeprom
 			board->write_eeprom_page(EEPROM_DEVICES_ADDR,(uint8_t *)&board->md_data.r_data.dev_chn,EEPROM_DEVICES_LENTH);
 			board->write_eeprom_page(EEPROM_STATUS_ADDR,(uint8_t *)&board->relay_staging_staus[0],2*RelaySlaveChaNum);
-			
-			for(int i = 0; i < RelaySlaveChaNum;i++)
+			board->feed_dog();
+			for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
 			{
-				board->md_data.rw_data.open.delay_open[i]  	= (1+i) *100;
-				board->md_data.rw_data.close.delay_close[i] = (1+i) *100;
+				board->md_data.rw_data.open.delay_open[i]  	= (1+i) * 1000;
+				board->md_data.rw_data.close.delay_close[i] = (1+i) * 1000;
 			}
 			
 			board->write_eeprom_page(EEPROM_OTHER_ADDR,(uint8_t *)&board->md_data.rw_data.open.delay_open[0], sizeof(ac_rw_data_t));
 			iic_data chache={0};
-			for(int i = 0 ; i < MAX_ROW;i++)
+			for(uint8_t i = 0 ; i < MAX_ROW;i++){
 				board->write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),(uint8_t*)&chache.data[0],CONSUM_PAGE);
+				board->feed_dog();
+				DelayNms(7);
+			}
 		}
 		{
 			//channel open or close
@@ -78,19 +70,19 @@ void read_config_from_eeprom(void)
 					}
 				}
 			}
+			board->feed_dog();
 			board->read_eeprom_page(EEPROM_OTHER_ADDR,(uint8_t *)&board->md_data.rw_data.open.delay_open[0],sizeof(ac_rw_data_t));
-						//get phase information
-//			uint8_t buff[EEPROM_CHANNEL_LENTH] = {0};
-//			board->read_eeprom_page(EEPROM_CHANNEL_PHASE,buff,EEPROM_CHANNEL_LENTH);
-			for(int i = 0 ; i < RelaySlaveChaNum;i++)
+
+			for(uint8_t i = 0 ; i < RelaySlaveChaNum;i++)
 			{
 				board->check_threshold(THRESHOLD_OUT,i);
 			}
-
+			
 			iic_data chache={0};
-			for(int i = 0 ; i < MAX_ROW;i++)
+			for(uint8_t i = 0 ; i < MAX_ROW;i++)
 			{
-				board->read_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),&chache,sizeof(iic_data));
+				board->feed_dog();
+				board->read_eeprom_page(EEPROM_CONSUMER_ADDR + (CONSUM_PAGE*i),(uint8_t*)&chache,sizeof(iic_data));
 				if(board->con_da.index > chache.iic_con.recode_index1)
 				{
 					
@@ -100,8 +92,9 @@ void read_config_from_eeprom(void)
 					board->con_da.row = i;
 				}
 			}	
-			board->read_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*(board->con_da.row)),&chache,sizeof(iic_data));
-			for(int i = 0 ; i < RelaySlaveChaNum;i++)
+			board->read_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*(board->con_da.row)),(uint8_t*)&chache,sizeof(iic_data));
+			board->feed_dog();
+			for(uint16_t i = 0 ; i < RelaySlaveChaNum;i++)
 			{
 					board->ele_restore[i] = chache.iic_con.iic_consumer[i];
 			}
@@ -112,12 +105,15 @@ void read_config_from_eeprom(void)
 				board->con_da.row = 0;
 			}
 			board->con_da.index++;		//point next write consumer index
-			if(board->con_da.index > 0XFFFFFFFFFFFFFFFF)
+			if(board->con_da.index > UINT64_MAX)
 			{
 				iic_data chache1={0};
 				board->con_da.index = 0;
-				for(int i = 0 ; i < MAX_ROW;i++)
-					board->write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),&chache1,CONSUM_PAGE);
+				for(uint8_t i = 0 ; i < MAX_ROW;i++){
+					board->feed_dog();
+					board->write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),(uint8_t*)&chache1,CONSUM_PAGE);
+					DelayNms(7);
+				}
 			}
 			//read chn ctrl
 		}
@@ -139,7 +135,7 @@ void set_relay_sta_async(async_data *data)
 			{
 				w_eeprom_data_t da = {0};
 				da.lenth =2;
-				memcpy(&da.data,&data->status,2);
+				memcpy((void*)&da.data,(void*)&data->status,2);
 				da.start_addr = (EEPROM_STATUS_ADDR+(data->channel*2));
 				board->q_cache.en_queue(&da);
 			}

+ 18 - 14
truing_control/PDU-AC_ADA_NEW_6/common/common.h

@@ -369,7 +369,8 @@ typedef struct
 	uint16_t 			p_top_en        :1;             
 	uint16_t 			p_top_wanning   :1;           
 	uint16_t 			e_top_en				:1;             
-	uint16_t 			e_top_wanning   :1;          
+	uint16_t 			e_top_wanning   :1;
+	uint16_t    									:5;
 }old_state_t; 
 
 
@@ -398,6 +399,7 @@ typedef struct{
 	uint16_t          v_min_func    :      1;
 	uint16_t          p_max_func    :      1;
 	uint16_t          c_max_func    :      1;
+	uint16_t                        :      3;
 }ac_over_func_t;
 
 
@@ -411,6 +413,7 @@ typedef struct{
 	uint16_t         total_i_wanning_max     :   1;
 	uint16_t         total_p_waning_max      :   1;
 	uint16_t         total_c_waning_max      :   1;
+	uint16_t                        			:      3;
 }total_waning_t;
 
 
@@ -624,12 +627,12 @@ typedef struct {
 
 
 typedef struct {
-#define QUEUE_MAX     15
+#define QUEUE_MAX     25
 	uint8_t  front;
 	uint8_t  rear;
 	w_eeprom_data_t data[QUEUE_MAX];
-	uint8_t (*is_empty)();
-	uint8_t (*is_full)();
+	uint8_t (*is_empty)(void);
+	uint8_t (*is_full)(void);
 	uint8_t (*en_queue)(w_eeprom_data_t *d);
 	uint8_t (*de_queue)(w_eeprom_data_t *d);
 }queue_t;
@@ -662,6 +665,7 @@ typedef struct {
 	mod_data_t md_data;
 	uint8_t 	flag_1s;
 	uint8_t	  flag_10s;
+	uint8_t   flag_100ms;
 	uint8_t   clear_flag; 															/* erase consumer and all successful this flag is 0 */
 	uint8_t   out_wanning_en[8];
 	uint8_t   in_wanning_en[MAX_INPUT_CAHNNEL];
@@ -729,27 +733,27 @@ typedef struct {
 	void (*open)(uint8_t channel);
 	void (*close)(uint8_t channel);
 	void (*read_ele)(uint8_t channel);
-	void (*led_flash)();
+	void (*led_flash)(void);
 	void (*read_eeprom)(uint16_t addr,uint8_t *r_buff,uint16_t lenth);
 	void (*write_eeprom)(uint16_t addr,uint8_t *w_buff,uint16_t lenth);
 	void (*check_wanning)(uint8_t in_out, uint8_t channel);
-	void (*detection)();
-	void (*opt_detection)();
-	void (*erase_consumer)();
+	void (*detection)(void);
+	void (*opt_detection)(void);
+	void (*erase_consumer)(void);
 	void (*opt_overfunc)(uint8_t channel);
 	void (*opt_alloverfunc)(uint8_t input);
-	void (*break_uboot)();
-	void (*feed_dog)();
-	void (*lock)();
-	void (*unlock)();
+	void (*break_uboot)(void);
+	void (*feed_dog)(void);
+	void (*lock)(void);
+	void (*unlock)(void);
 	void (*check_threshold)(uint8_t in_out,uint8_t channel);
-	void (*relay_sync)();
+	void (*relay_sync)(void);
 	void (*read_eeprom_page)(uint16_t addr,uint8_t *r_buff,uint16_t lenth);
 	void (*write_eeprom_page)(uint16_t addr,uint8_t *r_buff,uint16_t lenth);
 }board_t;
 
 
-board_t *get_board();
+board_t *get_board(void);
 void set_relay_status_async(uint16_t *reg,uint8_t method,uint16_t status);
 void read_config_from_eeprom(void);
 void reset_config_for_eeprom(void);

+ 2 - 2
truing_control/PDU-AC_ADA_NEW_6/hardware/electricity/electricity.c

@@ -58,14 +58,14 @@ static void read_ele(uint8_t channel)
 		elec[channel] += F_AC_E;
 		board->md_data.r_data.ac_ele.ele_info[channel].consumer = board->ele_restore[channel] + elec[channel] * 1000;
 
-		if(board->md_data.r_data.ac_ele.ele_info[channel].voltage < 100)
+		if(F_AC_V < 0.5)
 		{
 			board->md_data.r_data.ac_ele.ele_info[channel].voltage = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].current = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].power = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].factor = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].freq = 0;
-		}else if(board->md_data.r_data.ac_ele.ele_info[channel].factor < 1)
+		}else if(F_AC_PF < 0.1 || F_AC_PF >=1)
 		{
 			board->md_data.r_data.ac_ele.ele_info[channel].current = 0;
 			board->md_data.r_data.ac_ele.ele_info[channel].power = 0;

+ 5 - 5
truing_control/PDU-AC_ADA_NEW_6/hardware/flash/flash.c

@@ -1,6 +1,6 @@
 #include "flash.h"
 #include "gd32e23x.h"
-
+#include "string.h"
 void flash_erase_meta()
 {
 	fmc_unlock();
@@ -62,9 +62,9 @@ void flash_get_meta_data(META_DATA_S *meta)
 		meta->app2_size = *(uint32_t*)(APP2_SIZE);
 }
 
-void flash_get_infomation(board_info_t *info)
+void flash_get_infomation(ac_information_t *info)
 {
-	info->uniq_3 						= *(uint32_t*)(UNIQU_3);
-	info->uniq_2 						= *(uint32_t*)(UNIQU_2);
-	info->uniq_1 						= *(uint32_t*)(UNIQU_1);
+	info->uniq_ID_64_95 						= *(uint32_t*)(UNIQU_3);
+	info->uniq_ID_32_63 						= *(uint32_t*)(UNIQU_2);
+	info->uniq_ID_00_31 						= *(uint32_t*)(UNIQU_1);
 }

+ 1 - 1
truing_control/PDU-AC_ADA_NEW_6/hardware/flash/flash.h

@@ -19,7 +19,7 @@ void flash_write_meta(const META_DATA_S *meta_data);
 
 void flash_get_meta_data(META_DATA_S *meta);
 
-void flash_get_infomation(board_info_t *info);
+void flash_get_infomation(ac_information_t *info);
 
 #endif
 

+ 2 - 2
truing_control/PDU-AC_ADA_NEW_6/hardware/fwdgt/fwdgt.c

@@ -20,7 +20,7 @@ void fwdgt_Init(void)
 {
 
 	board_t * board = get_board();
-#if OPEN_WTCHDONG
+#if OPEN_WATCH_DOG
 	uint16_t timeout = 0xFFFFU;
 	rcu_osci_on(RCU_IRC40K);
 	while(SUCCESS != rcu_osci_stab_wait(RCU_IRC40K))
@@ -41,7 +41,7 @@ void fwdgt_Init(void)
 
 static void feed_dog(void)
 {
-#if OPEN_WTCHDONG
+#if OPEN_WATCH_DOG
 	fwdgt_write_enable();
 	fwdgt_counter_reload();
 #endif	

+ 15 - 0
truing_control/PDU-AC_ADA_NEW_6/hardware/quere/query.h

@@ -0,0 +1,15 @@
+#ifndef _QUERY_H_
+#define _QUERY_H_
+
+
+void query_init(void);
+	
+
+
+
+
+
+
+
+#endif
+

+ 1 - 1
truing_control/PDU-AC_ADA_NEW_6/hardware/relay/relay.c

@@ -130,7 +130,7 @@ void relay_init(void)
 	#endif	
 
 		board->unlock();
-		board->lock;
+		board->lock();
 
 	board->open = relay_open;
 	board->close = relay_close;

+ 9 - 2
truing_control/PDU-AC_ADA_NEW_6/hardware/timer/timer.c

@@ -14,11 +14,12 @@
 
 
 static board_t *board = 0;
-static timer14_config(uint16_t arr,uint16_t psc);
+static  void timer14_config(uint16_t arr,uint16_t psc);
 static void relay_remember(void);
 
 static  uint16_t count_1s = 0;
 static  uint16_t count_10s = 0;
+static  uint16_t count_100ms = 0;
 
 uint16_t rl_delay_cnt[RelaySlaveChaNum] = {0};
 
@@ -28,7 +29,7 @@ void time_init(void)
 	timer14_config(9999,71);
 }
 
-static timer14_config(uint16_t arr,uint16_t psc)
+static void timer14_config(uint16_t arr,uint16_t psc)
 {
 	board = get_board();
 	
@@ -83,6 +84,12 @@ void TIMER14_IRQHandler(void)
 				count_10s = 0;
 			}
 		}
+		count_100ms++;
+		if(count_100ms == 10)
+		{
+			count_100ms = 0;
+			board->flag_100ms = 1;
+		}
 		board->detection_1_count++;
 		if(board->detection_1_count >= 100)
 		{

+ 11 - 6
truing_control/PDU-AC_ADA_NEW_6/user/board_cfg.h

@@ -13,9 +13,9 @@
 #define __BOARD_CFG_H_
 
 
-#define OPEN_WTCHDONG    0
 
 
+#define OPEN_WATCH_DOG  1
 
 #define  POWER_DC           0
 #define  POWER_AC           1
@@ -32,10 +32,7 @@
 #define  ZERO_LINE_CTRL_NO       0
 #define  ZERO_LINE_CTRL_YES      1
 
-#define  ZERO_LINE_NONE        0
-#define  ZERO_LINE_1           1
-#define  ZERO_LINE_2           2
-#define  ZERO_LINE_2           3
+
 
 
 #define OUTPUT_CTRL_NO         0      /*  */
@@ -54,11 +51,12 @@
 #define PT_SUB_COUNT_3             3
 #define PT_SUB_COUNT_4             4
 
-#define   PRJ_8_NEW									1
+#define   PRJ_8_NEW									0
 #define   PRJ_3_4                   0
 #define   PRJ_3_2                   0
 #define 	PRJ_DC_8									0
 #define   PRJ_6_NEW                 0
+#define   PRJ_3_NEW                 1
 
 
 
@@ -89,6 +87,13 @@
 	#define   PT_SUB_COUNT              (PT_SUB_COUNT_4)
 	#define   SUPPORT_DETECTION         1
 	#define   SUPPORT_RELAY_REMENBER		1
+#elif PRJ_3_NEW
+	#define 	RelaySlaveChaNum 					3
+	#define 	ACSingCurrid 							2 
+	#define   SURPPORT_2_PT             0
+	#define   PT_SUB_COUNT              (RelaySlaveChaNum)
+	#define   SUPPORT_DETECTION         1
+	#define   SUPPORT_RELAY_REMENBER		1
 #endif
 
 

+ 28 - 18
truing_control/PDU-AC_ADA_NEW_6/user/main.c

@@ -14,7 +14,8 @@
 #include "flash.h"
 #include "electricity.h"
 #include "gd32e23x.h"
-
+#include "string.h"
+#include "query.h"
 
 
 
@@ -36,6 +37,7 @@ extern uint16_t rl_delay_cnt[RelaySlaveChaNum];
 static void task_query(void);
 static void task_1s(void);
 static void task_10s(void);
+static void task_100ms(void);
 static void relay_ctrl(void);
 static void app_init(META_DATA_S *meta);
 
@@ -62,10 +64,10 @@ int main(){
 	ac_board.md_data.r_data.info.channels = RelaySlaveChaNum;
 	read_config_from_eeprom();
 	ac_board.feed_dog();
-	strcpy(&(ac_board.md_data.r_data.info.date),__DATE__);
-	strcat(&(ac_board.md_data.r_data.info.date)," ");
-	strcat(&(ac_board.md_data.r_data.info.date),__TIME__);
-	strcpy(&(ac_board.md_data.r_data.info.ver),VERSION);
+	strcpy((char*)&(ac_board.md_data.r_data.info.date),__DATE__);
+	strcat((char*)&(ac_board.md_data.r_data.info.date)," ");
+	strcat((char*)&(ac_board.md_data.r_data.info.date),__TIME__);
+	strcpy((char*)&(ac_board.md_data.r_data.info.ver),VERSION);
 	
 	flash_get_infomation(&ac_board.md_data.r_data.info);
 	
@@ -77,7 +79,7 @@ int main(){
 
 
 	
-	if(ac_board.md_data.r_data.detection & 0x1 == 0)
+	if((ac_board.md_data.r_data.detection & 0x1) == 0)
 	{
 		for(uint8_t i = 0; i < PT_SUB_COUNT;i++)
 		{
@@ -86,7 +88,7 @@ int main(){
 		}
 	}
 #if SURPPORT_2_PT		
-		if(ac_board.md_data.r_data.detection & 0x2 == 0)
+		if((ac_board.md_data.r_data.detection & 0x2) == 0)
 		{
 			for(uint8_t i = PT_SUB_COUNT; i < RelaySlaveChaNum;i++)
 			{
@@ -102,6 +104,7 @@ int main(){
 	{
 		ac_board.feed_dog();
 		task_query();
+		task_100ms();
 		task_1s();
 		task_10s();
 		eMBPoll();
@@ -123,22 +126,28 @@ static void task_query(void)
 	w_eeprom_data_t data = {0};
 	if(ac_board.q_cache.de_queue(&data))
 	{
-		ac_board.write_eeprom_page(data.start_addr,&data.data,data.lenth);
+		ac_board.write_eeprom_page(data.start_addr,(uint8_t*)&data.data,data.lenth);
 	}
 }
 
 static void task_1s(void)
 {
-	static uint8_t channel = 0;
 	if(ac_board.flag_1s)
 	{
-			ac_board.md_data.r_data.info.runing_time++;
-			
 			ac_board.flag_1s = 0;
+			ac_board.md_data.r_data.info.runing_time++;
 			ac_board.led_flash();
 			ac_board.detection();
-	
 
+	}
+}
+
+static void task_100ms(void)
+{
+	static uint8_t channel = 0;
+	if(ac_board.flag_100ms)
+	{
+			ac_board.flag_100ms = 0;
 			ac_board.read_ele(channel);
 			ac_board.check_wanning(ELE_OUTPUT,channel);
 			ac_board.opt_overfunc(channel);		
@@ -148,10 +157,11 @@ static void task_1s(void)
 				//check input wanning
 				//calculate input
 				channel = 0;
-			}
+			}	
 	}
 }
 
+
 static void task_10s(void)
 {
 	if(ac_board.flag_10s)
@@ -165,16 +175,16 @@ static void task_10s(void)
 		{
 			ac_board.con_da.row = 0;
 		}
-		if(ac_board.con_da.index > 0xFFFFFFFFFFFFFFFF)
+		if(ac_board.con_da.index > UINT64_MAX)
 		{
 			iic_data chache1={0};
 			ac_board.con_da.index = 0;
 			for(int i = 0 ; i < MAX_ROW;i++)
-				ac_board.write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),&chache1,CONSUM_PAGE);
+				ac_board.write_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*i),(uint8_t *)&chache1,CONSUM_PAGE);
 			ac_board.con_da.row = 0;
 		}
 		ac_board.con_da.iic_da.iic_con.recode_index1 = ac_board.con_da.index;
-		ac_board.write_eeprom_page(EEPROM_CONSUMER_ADDR+(CONSUM_PAGE*ac_board.con_da.row),&ac_board.con_da.iic_da.iic_con,CONSUM_PAGE);
+		ac_board.write_eeprom_page(EEPROM_CONSUMER_ADDR+(CONSUM_PAGE*ac_board.con_da.row),(uint8_t*)&ac_board.con_da.iic_da.iic_con,CONSUM_PAGE);
 		ac_board.con_da.index++;
 		ac_board.con_da.row++;
 
@@ -190,7 +200,7 @@ static void task_10s(void)
 
 static void relay_ctrl(void)
 {
-	for(int i = 0; i < RelaySlaveChaNum;i++)
+	for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
 	{
 		if(IS_RL_ORDER_FLAG_EN(ac_board.relay_staging_staus[i]))
 		{
@@ -239,7 +249,7 @@ static void relay_ctrl(void)
 			CLEAR_RL_ORDER_FLAG(ac_board.relay_staging_staus[i]);
 		}
 	}
-	for(int i = 0; i < RelaySlaveChaNum;i++)
+	for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
 	{
 		if(IS_RL_COUNTER_END_FLAG_EN(ac_board.relay_staging_staus[i]))
 		{