Browse Source

AC DC 新功能。

liyi 1 year ago
parent
commit
766e44c377

+ 53 - 5
control/PDU-AC-New-6/App/Main/Main.c

@@ -139,6 +139,7 @@ static void all_over_RelayState(void);
 
 
 uint8_t consumer_clear_flag = 0;
+uint32_t all_val = 0;
 
 /*********************************************************************************************************
 *                                              内部函数实现
@@ -561,7 +562,7 @@ static  void  Proc100msTask(void)
 		else
 			AC_Ele_ReadReg[channel].AC_P=F_AC_P*1000;                                                                                //有功功率
 		Hlw8110_Restore[channel] += F_AC_E;
-		AC_Ele_ReadReg[channel].AC_E = (Hlw8110_Restore[channel]*1000);																//电能
+		AC_Ele_ReadReg[channel].AC_E = (Hlw8110_Restore[channel]*1000 + read_Total_Consumer[channel]);																//电能
 		AC_Ele_ReadReg[channel].AC_PF = F_AC_PF*1000;																																								 //功率因素
 		
 		AC_Ele_ReadReg_All.AC_V = AC_Ele_ReadReg[0].AC_V;
@@ -570,20 +571,25 @@ static  void  Proc100msTask(void)
 		AC_Ele_ReadReg_All.AC_LINE_Freq = AC_Ele_ReadReg[0].AC_LINE_Freq;
 		AC_Ele_ReadReg_All.AC_PF= AC_Ele_ReadReg[channel].AC_PF;
 		
-		EE_ACDC_Total_Consum_Read_Reg[channel].ACDC_Consumption = (read_Total_Consumer[channel] + AC_Ele_ReadReg[channel].AC_E);										//total consumer
-		ACDC_Total_All_Chn_Read_Reg.ACDC_All_Consumption += EE_ACDC_Total_Consum_Read_Reg[channel].ACDC_Consumption;
+		EE_ACDC_Total_Consum_Read_Reg[channel].ACDC_Consumption = AC_Ele_ReadReg[channel].AC_E;										//total consumer
+	//	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();
 		
 		channel=channel+1;
 		if(channel>=RelaySlaveChaNum){
+			ACDC_Total_All_Chn_Read_Reg.ACDC_All_Consumption = all_val;
+			AC_Ele_ReadReg_All.AC_E = all_val;
+			all_val = 0;
+			
 			// jugement all 
 			All_Warn_State();
 			all_over_RelayState();
 			channel=0;
 			AC_Ele_ReadReg_All.AC_I = 0;
-			AC_Ele_ReadReg_All.AC_E = 0;
+			//AC_Ele_ReadReg_All.AC_E = 0;
 			AC_Ele_ReadReg_All.AC_P = 0;
 		}
 //		Uart_Read_HLW8110_Reg(REG_HFCONST_ADDR,2);//测试使用,看是否和电能计量芯片是否通信成功,成功串口接收到10 00 48
@@ -620,6 +626,7 @@ static  void  InitHardware(void)
 	InitCH448F();				 //初始化CH448F,使能XEN YEN
 	RelaySlaveAddress=ReadKeyValue();	//读取从机的地址
   InitSoftware();   								//初始化软件相关函数,就是modbus这个部分
+	detection_value = get_detection();
 	while(1)						 //切换开关轮询初始化8110计量芯片
 	{
 #if ACSingPhSmaCurr
@@ -851,8 +858,29 @@ static  void  InitHardware(void)
 *********************************************************************************************************/
 static  void  Proc2msTask_Start(void)
 {
+
   if(Get2msFlag())  																																									//判断2ms标志状态
   { 
+		
+//		if((detection_value & 1) == 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();
+//		}
+//		if((detection_value & 2) == 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();
+//		}
 		Delay_Ms_1 = Delay_Ms_1 +1;
 		
 #ifdef ACSingPhSmaCurrNew
@@ -1169,6 +1197,7 @@ static  void  Proc1SecTask(void)
 { 
   if(Get1SecFlag()) //判断1s标志状态
   {
+		detection_value = get_detection();
 		LEDFlicker2();
     Clr1SecFlag();  //清除1s标志
   }    
@@ -1261,7 +1290,26 @@ int main(void)
 		eMBPoll();
 		Proc100msTask();			//100ms处理任务
 		//ProcTaskNew();
-		detection_value = get_detection();
+		
+//		if((detection_value & 1) == 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();
+//		}
+//		if((detection_value & 2) == 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();
+//		}
 		check_channel_reset();
     Proc1SecTask(); 			//1s处理任务   
 		Fwdgt_reload();

File diff suppressed because it is too large
+ 70 - 34
control/PDU-AC-New-6/Project/GD32KeilPrj.uvguix.Gowon


+ 21 - 199
control/PDU-AC-New-6/Project/GD32KeilPrj.uvoptx

@@ -117,11 +117,6 @@
         <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-          <Name>d</Name>
-        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>DLGTARM</Key>
@@ -148,200 +143,7 @@
           <Name>UL2V8M(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32E23x -FS08000000 -FL010000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM))</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint>
-        <Bp>
-          <Number>0</Number>
-          <Type>0</Type>
-          <LineNumber>751</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>1</Number>
-          <Type>0</Type>
-          <LineNumber>757</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>2</Number>
-          <Type>0</Type>
-          <LineNumber>763</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>3</Number>
-          <Type>0</Type>
-          <LineNumber>769</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>4</Number>
-          <Type>0</Type>
-          <LineNumber>775</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>5</Number>
-          <Type>0</Type>
-          <LineNumber>781</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>6</Number>
-          <Type>0</Type>
-          <LineNumber>756</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>7</Number>
-          <Type>0</Type>
-          <LineNumber>762</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>8</Number>
-          <Type>0</Type>
-          <LineNumber>768</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>9</Number>
-          <Type>0</Type>
-          <LineNumber>774</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>10</Number>
-          <Type>0</Type>
-          <LineNumber>780</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-        <Bp>
-          <Number>11</Number>
-          <Type>0</Type>
-          <LineNumber>786</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\App\Main\Main.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-      </Breakpoint>
+      <Breakpoint/>
       <WatchWindow1>
         <Ww>
           <count>0</count>
@@ -353,6 +155,26 @@
           <WinNumber>1</WinNumber>
           <ItemText>Jlink_Sta_Flag</ItemText>
         </Ww>
+        <Ww>
+          <count>2</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>cnt</ItemText>
+        </Ww>
+        <Ww>
+          <count>3</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Eepr_AC_Sing_Total_Consumer_addr</ItemText>
+        </Ww>
+        <Ww>
+          <count>4</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>read_Total_Consumer</ItemText>
+        </Ww>
+        <Ww>
+          <count>5</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>EE_ACDC_Total_Consum_Read_Reg</ItemText>
+        </Ww>
       </WatchWindow1>
       <MemoryWindow1>
         <Mm>

+ 1 - 1
control/PDU-AC-New-6/Project/GD32KeilPrj.uvprojx

@@ -49,7 +49,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>6通道-2024-11-9-New</OutputName>
+          <OutputName>6通道-2024-12-03-New</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>

File diff suppressed because it is too large
+ 56889 - 4334
control/PDU-AC-New-6/Project/JLinkLog.txt


+ 20 - 7
control/PDU-AC/App/Key/Key.c

@@ -19,6 +19,7 @@
 *********************************************************************************************************/
 #include "Key.h"
 #include "gd32e230x_conf.h"
+#include "SysTick.h"
 
 /*********************************************************************************************************
 *                                              宏定义
@@ -56,15 +57,16 @@ static  void  ConfigKeyGPIO(void)
   //使能RCU相关时钟
   rcu_periph_clock_enable(RCU_GPIOA); //使能GPIOA的时钟
   rcu_periph_clock_enable(RCU_GPIOF); //使能GPIOF的时钟
+#if ACSingPhHigCurr
+	rcu_periph_clock_enable(RCU_GPIOB);
+#endif
   
   gpio_mode_set(KEY_1_2_RCU, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY1);   //配置PF7为上拉输入K1
   gpio_mode_set(KEY_1_2_RCU, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY2);   //配置PF6为上拉输入K2
   gpio_mode_set(KEY_3_4_RCU, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY3);   //配置PA12为上拉输入K3
 	gpio_mode_set(KEY_3_4_RCU, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY4);   //配置PA12为上拉输入K3
 	
-	#ifdef ACSingPhSmaCurr
-	gpio_mode_set(DERECTION_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_1);
-	#endif
+	gpio_mode_set(DERECTION_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, DERECTION_IO_1);
 }
 
 /*********************************************************************************************************
@@ -125,9 +127,20 @@ unsigned char ReadKeyValue(void)
 unsigned char get_detection()
 {
 	uint8_t value = 0;
-#ifdef ACSingPhSmaCurr
-	if(gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_1)==0)
-		value |=(1<<0);
-#endif
+	int count = 50;
+	if(gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_1)==0){
+		while(count --);
+		if(gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_1)==0)
+		{
+			value |=(1<<0);
+		}
+	}else
+	{
+		DelayNms(3);
+		if(gpio_input_bit_get(DERECTION_GPIO,DERECTION_IO_1)==0)
+		{
+			value |=(1<<0);
+		}
+	}
 	return value;
 }

+ 7 - 1
control/PDU-AC/App/Key/Key.h

@@ -38,13 +38,19 @@
 
 #define KEY_NAME_MAX 4
 
-#ifdef ACSingPhSmaCurr
+#if ACSingPhSmaCurr
 
 #define DERECTION_GPIO   		GPIOA
 #define DERECTION_IO_1 			GPIO_PIN_1
 
 #endif
 
+#if ACSingPhHigCurr
+	#define DERECTION_GPIO   		GPIOB
+	#define DERECTION_IO_1 			GPIO_PIN_10
+#endif
+
+
 
 
 /*********************************************************************************************************

+ 444 - 103
control/PDU-AC/App/Main/Main.c

@@ -37,6 +37,7 @@
 #include "ReadEeprom.h"
 #include "Sn74lvc573.h"
 #include "Fwdgt.h"
+#include "key_io.h"
 /*********************************************************************************************************
 *                                              宏定义
 *********************************************************************************************************/
@@ -120,6 +121,22 @@ uint32_t write_2_minute_flag = 0;
 uint16_t detection_value = 0;
 
 
+
+#if (ACSingPhHigCurr && (ACSingPhHig_Control_type == ACSingPh_Sub_C))
+	uint8_t handle_k_1_status = 1;
+	uint8_t handle_k_2_status = 1;
+	uint8_t handle_k_3_status = 1;
+	uint8_t handle_k_4_status = 1;
+	bool key_1 = 0;
+	bool key_2 = 0;
+	bool key_3 = 0;
+	bool key_4 = 0;
+#endif
+
+
+
+
+
 unsigned short int Sort_Onbuf[RelaySlaveChaNum];
 unsigned short int Sort_Offbuf[RelaySlaveChaNum];
 
@@ -153,7 +170,7 @@ static void all_over_RelayState(void);
 
 
 uint8_t consumer_clear_flag = 0;
-
+uint32_t all_val = 0;
 /*********************************************************************************************************
 *                                              内部函数实现
 *********************************************************************************************************/
@@ -483,7 +500,7 @@ static  void  Proc100msTask(void)
 		else
 			AC_Ele_ReadReg[channel].AC_P=F_AC_P*1000;                                                                                //有功功率
 		Hlw8110_Restore[channel] += F_AC_E;
-		AC_Ele_ReadReg[channel].AC_E=(Hlw8110_Restore[channel]*1000);																																									 //电能
+		AC_Ele_ReadReg[channel].AC_E=(Hlw8110_Restore[channel]*1000 + read_Total_Consumer[channel]);																																									 //电能
 		AC_Ele_ReadReg[channel].AC_PF=F_AC_PF*1000;						//功率因素
 		
 		AC_Ele_ReadReg_All.AC_V = AC_Ele_ReadReg[0].AC_V;
@@ -492,20 +509,24 @@ static  void  Proc100msTask(void)
 		AC_Ele_ReadReg_All.AC_LINE_Freq = AC_Ele_ReadReg[0].AC_LINE_Freq;
 		AC_Ele_ReadReg_All.AC_PF= AC_Ele_ReadReg[channel].AC_PF;
 		
-		EE_ACDC_Total_Consum_Read_Reg[channel].ACDC_Consumption = (read_Total_Consumer[channel] + AC_Ele_ReadReg[channel].AC_E);										//total consumer
-		ACDC_Total_All_Chn_Read_Reg.ACDC_All_Consumption += EE_ACDC_Total_Consum_Read_Reg[channel].ACDC_Consumption;
+		EE_ACDC_Total_Consum_Read_Reg[channel].ACDC_Consumption = AC_Ele_ReadReg[channel].AC_E;										//total consumer
+	//	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();
 		
 		channel=channel+1;
 		if(channel>=RelaySlaveChaNum){
+			ACDC_Total_All_Chn_Read_Reg.ACDC_All_Consumption = all_val;
+			AC_Ele_ReadReg_All.AC_E = all_val;
+			all_val = 0;
 			// jugement all 
 			All_Warn_State();
 			all_over_RelayState();
 			channel=0;
 			AC_Ele_ReadReg_All.AC_I = 0;
-			AC_Ele_ReadReg_All.AC_E = 0;
+			//AC_Ele_ReadReg_All.AC_E = 0;
 			AC_Ele_ReadReg_All.AC_P = 0;
 		}
 //		Uart_Read_HLW8110_Reg(REG_HFCONST_ADDR,2);//测试使用,看是否和电能计量芯片是否通信成功,成功串口接收到10 00 48
@@ -540,6 +561,7 @@ static  void  InitHardware(void)
 	InitTimer();         //初始化Timer模块
 	InitUART1(9600);     //初始化UART1模块 电能计量芯片默认的波特率为9600,偶校验
 	InitCH448F();				 //初始化CH448F,使能XEN YEN
+	key_io_init(NULL);
 	RelaySlaveAddress=ReadKeyValue();	//读取从机的地址
   InitSoftware();   								//初始化软件相关函数,就是modbus这个部分
 	while(1)						 //切换开关轮询初始化8110计量芯片
@@ -663,6 +685,30 @@ static  void  InitHardware(void)
   //读出EEPROM中的数据,然后开始依次按照设置打开继电器
 	ReadEeprom();
 	Delay_Ms_1 = 0;
+	detection_value = get_detection();
+	check_or_control_detection();
+#if (ACSingPhHigCurr && (ACSingPhHig_Control_type == ACSingPh_Sub_C))
+		key_1 = get_key_io_1();
+		key_2 = get_key_io_2();
+		key_3 = get_key_io_3();
+		key_4 = get_key_io_4();
+		if(key_1  == false)
+		{
+			handle_k_1_status = 0;
+		}
+		if(key_2  == false)
+		{
+			handle_k_2_status = 0;
+		}
+		if(key_3  == false)
+		{
+			handle_k_3_status = 0;
+		}
+		if(key_4  == false)
+		{
+			handle_k_4_status = 0;
+		}
+#endif
 	while(1)
 	{
 		eMBPoll();
@@ -671,31 +717,31 @@ static  void  InitHardware(void)
 		//Proc1SecTask(); 									//1s处理任务 
 //		test1 = gpio_input_bit_get(LOCK_LE_CH_RCU,LOCK_CHECK);
 //		if(test1)	//如果有jlink接入,则不会动作继电器,直接跳出进入主函数
-		if((gpio_input_bit_get(LOCK_LE_CH_RCU,LOCK_CHECK))||(Jlink_Sta_Flag==0x01))	//如果有jlink接入,则不会动作继电器,直接跳出进入主函数
-		{
-			//补上电平,让IO输出电平,有一个起始状态,但不会动作,锁存器起作用
-			#if ACSingPhSmaCurr
-				Relay1State(); 
-				Relay2State();
-				Relay3State();
-				Relay4State();
-				Relay5State();
-				Relay6State();
-				Relay7State();
-				Relay8State();  
-			#endif
-			#if ACSingPhHigCurr
-				Relay1State(); 
-				Relay2State();
-				Relay3State();
-				Relay4State();
-			#endif
-			Delay_Ms_1 = 0;		
-			Delay_End_flag = 0;	
-			Jlink_Sta_Flag = 0;
-			timer_disable(TIMER14);	 		
-			break;
-		}
+//		if((gpio_input_bit_get(LOCK_LE_CH_RCU,LOCK_CHECK))||(Jlink_Sta_Flag==0x01))	//如果有jlink接入,则不会动作继电器,直接跳出进入主函数
+//		{
+//			//补上电平,让IO输出电平,有一个起始状态,但不会动作,锁存器起作用
+//			#if ACSingPhSmaCurr
+//				Relay1State(); 
+//				Relay2State();
+//				Relay3State();
+//				Relay4State();
+//				Relay5State();
+//				Relay6State();
+//				Relay7State();
+//				Relay8State();  
+//			#endif
+//			#if ACSingPhHigCurr
+//				Relay1State(); 
+//				Relay2State();
+//				Relay3State();
+//				Relay4State();
+//			#endif
+//			Delay_Ms_1 = 0;		
+//			Delay_End_flag = 0;	
+//			Jlink_Sta_Flag = 0;
+//			timer_disable(TIMER14);	 		
+//			break;
+//		}
 		Proc2msTask_Start();    																							//2ms处理任务完成后才初始化modbus。
 		if(Delay_End_flag)
 		{
@@ -705,8 +751,154 @@ static  void  InitHardware(void)
 			break;
 		}
 	}
+}
 
+
+
+void set_channel_status(uint8_t channel,uint8_t status)
+{
+	if(status)
+	{
+		switch(channel)
+		{
+#if (RelaySlaveChaNum >= 8)
+			case 8:
+			RELAY_8_ON;
+			break;
+#endif			
+#if (RelaySlaveChaNum >= 7)
+			case 7:
+			RELAY_7_ON;
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 6)
+			case 6:
+			RELAY_6_ON;
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 5)
+			case 5:
+			RELAY_5_ON;
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 4)
+			case 4:
+			RELAY_4_ON;
+#if ACSingPhSmaDouble
+			RELAY_8_ON;
+#endif
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 3)
+			case 3:
+			RELAY_3_ON;
+#if ACSingPhSmaDouble
+			RELAY_7_ON;
+#endif
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 2)
+			case 2:
+			RELAY_2_ON;
+#if ACSingPhSmaDouble
+			RELAY_6_ON;
+#endif
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 1)
+			case 1:
+			RELAY_1_ON;
+#if ACSingPhSmaDouble
+			RELAY_5_ON;
+#endif
+			break;
+#endif
+
+			default:
+				return;
+		}
+		EE_ACDC_State_ReadRegTrue[channel-1].ACDC_Cha_On_Off_State 	= true;		
+		EE_ACDC_State_ReadReg[channel-1].ACDC_Cha_On_Off_State 			= true;
+	}else
+	{
+		switch(channel)
+		{
+#if (RelaySlaveChaNum >= 8)
+			case 8:
+			RELAY_8_OFF;
+			break;
+#endif			
+#if (RelaySlaveChaNum >= 7)
+			case 7:
+			RELAY_7_OFF;
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 6)
+			case 6:
+			RELAY_6_OFF;
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 5)
+			case 5:
+			RELAY_5_OFF;
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 4)
+			case 4:
+			RELAY_4_OFF;
+#if ACSingPhSmaDouble
+			RELAY_8_OFF;
+#endif
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 3)
+			case 3:
+			RELAY_3_OFF;
+#if ACSingPhSmaDouble
+			RELAY_7_OFF;
+#endif
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 2)
+			case 2:
+			RELAY_2_OFF;
+#if ACSingPhSmaDouble
+			RELAY_6_OFF;
+#endif
+			break;
+#endif	
+#if (RelaySlaveChaNum >= 1)
+			case 1:
+			RELAY_1_OFF;
+#if ACSingPhSmaDouble
+			RELAY_5_OFF;
+#endif
+			break;
+#endif
+
+			default:
+				return;
+		}
+		EE_ACDC_State_ReadRegTrue[channel-1].ACDC_Cha_On_Off_State 	= false;		
+		EE_ACDC_State_ReadReg[channel-1].ACDC_Cha_On_Off_State 			= false;		
+	}
 }
+
+int check_or_control_detection(void)
+{
+	uint8_t channels = RelaySlaveChaNum;
+	if(detection_value == 0)
+	{
+			for(int i = 1; i <= RelaySlaveChaNum;i++)
+			{
+				set_channel_status(i,0);
+			}
+		return 0;
+	}
+	return 1;
+}
+
+
 /*********************************************************************************************************
 * 函数名称:Proc20msTask_Start
 * 函数功能:2ms处理任务开机根据延时开启继电器
@@ -720,6 +912,13 @@ static  void  Proc2msTask_Start(void)
 {
   if(Get2msFlag())  																																									//判断2ms标志状态
   { 
+		if(detection_value == 0)
+		{
+			Delay_End_flag = 1;
+			 Clr2msFlag();
+			return;
+		}
+		
 		Delay_Ms_1 = Delay_Ms_1 +1;
 		if(RelaySlaveChaNum==8)
 		{
@@ -983,6 +1182,13 @@ static  void  Proc1SecTask(void)
   {
 		LEDFlicker2();
     Clr1SecFlag();  //清除1s标志
+		detection_value = get_detection();
+#if (ACSingPhHigCurr && (ACSingPhHig_Control_type == ACSingPh_Sub_C))
+		key_1 = get_key_io_1();
+		key_2 = get_key_io_2();
+		key_3 = get_key_io_3();
+		key_4 = get_key_io_4();
+#endif
   }    
 }
 
@@ -992,25 +1198,33 @@ static void all_over_RelayState(void)
 		//all 
 	if(over_func_all_flag)
 	{
-		RELAY_1_OFF;
-		RELAY_2_OFF;
-		RELAY_3_OFF;
-		RELAY_4_OFF;
-#if ACSingPhSmaCurr
-		RELAY_5_OFF;
-		RELAY_6_OFF;
-		RELAY_7_OFF;
-		RELAY_8_OFF;
-#endif
-		over_func_all_flag = 0;
-		for(int i = 0; i < RelaySlaveChaNum;i++)
-		{
-			EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State = false;
-			EE_ACDC_State_ReadRegTrue[i].ACDC_Cha_On_Off_State = false;
-		}
-		BUFF;
-		LOCK;
+		for(int i = 1 ; i < RelaySlaveChaNum;i++)
+			set_channel_status(i,0);
+			BUFF;
+			LOCK;
 	}
+	return;
+//	if(over_func_all_flag)
+//	{
+//		RELAY_1_OFF;
+//		RELAY_2_OFF;
+//		RELAY_3_OFF;
+//		RELAY_4_OFF;
+//#if ACSingPhSmaCurr
+//		RELAY_5_OFF;
+//		RELAY_6_OFF;
+//		RELAY_7_OFF;
+//		RELAY_8_OFF;
+//#endif
+//		over_func_all_flag = 0;
+//		for(int i = 0; i < RelaySlaveChaNum;i++)
+//		{
+//			EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State = false;
+//			EE_ACDC_State_ReadRegTrue[i].ACDC_Cha_On_Off_State = false;
+//		}
+//		BUFF;
+//		LOCK;
+//	}
 }
 
 
@@ -1022,64 +1236,190 @@ static void over_RelayState(void)
 
 		if(over_Func_flag[i])
 		{
-			if(EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State==true)
+			set_channel_status(i+1,0);
+			over_Func_flag[i] = 0;
+		}
+	}
+	BUFF;
+	LOCK;
+}
+
+
+#if ACSingPhHigCurr
+#if (ACSingPhHig_Control_type == ACSingPh_Gen_C)
+void check_or_controll_all()
+{
+	bool rst = false;
+	bool test = false;
+	rst = get_rst();
+	test = get_test();
+	if(detection_value != 0)
+	{
+		if(rst != test)
+		{
+			uint8_t buff[20]= {0};
+			if(rst)
+			{
+				while(All_On_Flag == 1)
+					DelayNms(5);
+				All_Off_Flag = 1;																										//全关标志置1
+				EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State=false;
+				EE_ACDC_State_ReadReg[0].ACDC_ALLCha_Off_State=true;
+				for(int i =0; i < RelaySlaveChaNum;i++){
+					EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State = false;
+				}	
+			}
+			else
 			{
-				switch(i)
-				{
-					case 0:
-						RELAY_1_OFF;
-#if ACSingPhSmaDouble
-						RELAY_5_OFF;
-#endif
-						break;
-					case 1:
-						RELAY_2_OFF;
-#if ACSingPhSmaDouble
-						RELAY_6_OFF;
-#endif
-						break;
-					case 2:
-						RELAY_3_OFF;
-#if ACSingPhSmaDouble
-						RELAY_7_OFF;
-#endif
-						break;
-					case 3:
-#if ACSingPhSmaDouble
-						RELAY_8_OFF;
-#endif
-						RELAY_4_OFF;
-						break;
-#if ACSingPhSmaCurr
-	#if (ACSingPhSmaDouble == 0)
-					case 4:
-						RELAY_5_OFF;
-						break;
-					case 5:
-						RELAY_6_OFF;
-						break;
-					case 6:
-						RELAY_7_OFF;
-						break;
-					case 7:
-						RELAY_8_OFF;
-						break;
-	#endif
-#endif
-					default:
-						return;
+				while(All_Off_Flag == 1)
+					DelayNms(5);
+				All_On_Flag = 1;																										//全关标志置1
+				EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State=true;
+				EE_ACDC_State_ReadReg[0].ACDC_ALLCha_On_State=true;
+				
+				for(int i =0; i < RelaySlaveChaNum;i++)
+					EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State = true;
+				Delay_Ms_2 = 0;
+				
+			}
+				memcpy(&buff,&EE_ACDC_State_ReadReg,RelaySlaveChaNum*2);
+				AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr,buff,RelaySlaveChaNum*2);
+				timer_enable(TIMER14);
+		}
+	}else
+	{
+			
+				for(int i =0; i < RelaySlaveChaNum;i++){
+					EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State = false;
+					set_channel_status(i+1,0);
 				}
+				BUFF;
+				LOCK;
+	}
+}
+	
+
+#elif (ACSingPhHig_Control_type == ACSingPh_Sub_C)
+
+void sub_control()
+{
+	if(detection_value == 0)		//all close
+	{
+			for(int i = 0; i < RelaySlaveChaNum;i++){
 				EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State = false;
-				EE_ACDC_State_ReadRegTrue[i].ACDC_Cha_On_Off_State = false;
+				set_channel_status(i+1,0);
 			}
-			over_Func_flag[i] = 0;
+		
+			BUFF;
+			LOCK;
+			if(key_1  == false)
+			{
+				handle_k_1_status = 0;
+			}
+			if(key_2  == false)
+			{
+				handle_k_2_status = 0;
+			}
+			if(key_3  == false)
+			{
+				handle_k_3_status = 0;
+			}
+			if(key_4  == false)
+			{
+				handle_k_4_status = 0;
+			}
+		
+	}else
+	{
+#if (RelaySlaveChaNum >= 1)
+		if(key_1  == false)				//not in line
+		{
+			set_channel_status(1,0);
+			EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State = false;
+			BUFF;
+			LOCK;
+			AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr,(uint8_t*)&(EE_ACDC_State_ReadReg[0]),2);
+			handle_k_1_status = 0;
+		}else
+		{
+			if(handle_k_1_status == 0)
+			{
+				handle_k_1_status = 1;
+				set_channel_status(1,1);
+				EE_ACDC_State_ReadReg[0].ACDC_Cha_On_Off_State = true;
+				AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr,(uint8_t*)&(EE_ACDC_State_ReadReg[0]),2);
+			}
+		}
+#endif
+#if (RelaySlaveChaNum >= 2)
+		if(key_2  == false)
+		{
+			set_channel_status(2,0);
+			EE_ACDC_State_ReadReg[1].ACDC_Cha_On_Off_State = false;
+			BUFF;
+			LOCK;
+			AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+2,(uint8_t*)&(EE_ACDC_State_ReadReg[1]),2);
+			handle_k_2_status = 0;
+		}else
+		{
+			if(handle_k_2_status == 0)
+			{
+				handle_k_2_status = 1;
+				set_channel_status(2,1);
+				EE_ACDC_State_ReadReg[1].ACDC_Cha_On_Off_State = true;
+				AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+2,(uint8_t*)&(EE_ACDC_State_ReadReg[1]),2);
+			}
+		}
+#endif
+#if (RelaySlaveChaNum >= 3)
+		if(key_3 == false)
+		{
+			set_channel_status(3,0);
+			EE_ACDC_State_ReadReg[2].ACDC_Cha_On_Off_State = false;
+			BUFF;
+			LOCK;
+			AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+4,(uint8_t*)&(EE_ACDC_State_ReadReg[2]),2);
+			handle_k_3_status = 0;
+		}else
+		{
+			if(handle_k_3_status == 0)
+			{
+				handle_k_3_status = 1;
+				set_channel_status(3,1);
+				EE_ACDC_State_ReadReg[2].ACDC_Cha_On_Off_State = true;
+				AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+4,(uint8_t*)&(EE_ACDC_State_ReadReg[2]),2);
+			}
+		}
+#endif
+#if (RelaySlaveChaNum >= 4)
+		if(key_4 == false)
+		{
+			set_channel_status(4,0);
+			EE_ACDC_State_ReadReg[3].ACDC_Cha_On_Off_State = false;
+			BUFF;
+			LOCK;
+			AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+6,(uint8_t*)&(EE_ACDC_State_ReadReg[3]),2);
+			handle_k_4_status = 0;
+		}else
+		{
+			if(handle_k_4_status == 0)
+			{
+				handle_k_4_status = 1;
+				set_channel_status(4,1);
+				EE_ACDC_State_ReadReg[3].ACDC_Cha_On_Off_State = true;
+				AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+6,(uint8_t*)&(EE_ACDC_State_ReadReg[2]),2);
+			}			
 		}
+#endif
 	}
-	BUFF;
-	LOCK;
 }
 
 
+#endif
+#endif
+
+
+
 /*********************************************************************************************************
 * 函数名称:main
 * 函数功能:主函数 
@@ -1101,19 +1441,20 @@ int main(void)
 		eMBPoll();
 		Proc100msTask();			//100ms处理任务
 		//ProcTaskNew();
-		detection_value = get_detection();
 		check_channel_reset();
     Proc1SecTask(); 			//1s处理任务   
 		Fwdgt_reload();
+		
+#if (ACSingPhHigCurr &&(ACSingPhHig_Control_type == ACSingPh_Gen_C))
+			check_or_controll_all();
+#elif (ACSingPhHigCurr &&(ACSingPhHig_Control_type == ACSingPh_Sub_C))
+			sub_control();
+#endif
+		
 		if(write_2_minute_flag == 1)
 		{
 			write_2_minute_flag = 0;
 			uint8_t buff[4*RelaySlaveChaNum] = {0};
-//			buff[0] = EE_ACDC_Total_Consum_Read_Reg.ACDC_Consumption >> 24;
-//			buff[1] = EE_ACDC_Total_Consum_Read_Reg.ACDC_Consumption >> 16;
-//			buff[2] = EE_ACDC_Total_Consum_Read_Reg.ACDC_Consumption >> 8;
-//			buff[3] = EE_ACDC_Total_Consum_Read_Reg.ACDC_Consumption >> 0;
-			
 			
 			for(int i = 0 ; i < RelaySlaveChaNum;i++)
 			{

+ 23 - 2
control/PDU-AC/App/Main/Main.h

@@ -131,6 +131,20 @@
 
 
 
+#define RELAY_CHANNEL_1							1
+#define RELAY_CHANNEL_2							2
+#define RELAY_CHANNEL_3							3
+#define RELAY_CHANNEL_4							4
+#define RELAY_CHANNEL_5							5
+#define RELAY_CHANNEL_6							6
+#define RELAY_CHANNEL_7							7
+#define RELAY_CHANNEL_8							8
+
+
+
+
+
+
 //选择设备类型
 #define ACSingPhSmaCurr			1  	//交流单相小电流
 #define ACSingPhHigCurr   	0		//交流单相大电流
@@ -141,6 +155,11 @@
 
 
 
+#define ACSingPh_Gen_C      0
+#define ACSingPh_Sub_C			1
+
+
+
 
 
 
@@ -155,8 +174,10 @@
 #endif
 
 #if ACSingPhHigCurr
-	#define RelaySlaveChaNum	4		//通道数
+	#define RelaySlaveChaNum	1		//通道数
+	#define ACSingPhHig_Control_type  ACSingPh_Sub_C
 	#define ACSingCurrid 2   //设备ID
+
 #endif
 
 #if ACThreePhSmaCurr
@@ -442,6 +463,6 @@ extern unsigned char consumer_clear_flag;
 
 #define THRESHOULD_JUDGMENT    		(50)
 
-
+int check_or_control_detection(void);
 
 #endif

+ 20 - 2
control/PDU-AC/HW/Timer/Timer.c

@@ -22,6 +22,7 @@
 #include "Main.h"
 #include "ReadEeprom.h"
 #include "Sn74lvc573.h"
+#include "Key.h"
 /*********************************************************************************************************
 *                                              宏定义
 *********************************************************************************************************/
@@ -43,7 +44,7 @@ unsigned long int Delay_Ms_2=0;
 unsigned int All_On_Flag;
 unsigned int All_Off_Flag;
 
-
+extern uint16_t detection_value;
 extern uint32_t write_2_minute_flag; 
 
 /*********************************************************************************************************
@@ -234,10 +235,19 @@ void TIMER14_IRQHandler(void)
                                 
   if(s_iCnt2 >= 1)      //2ms计数器的计数值大于或等于
   {                                                   
-    s_iCnt2 = 0;        //重置2ms计数器的计数值为0
+    s_iCnt2 = 0;        //重置2ms计数器的计数值为0	
 		Delay_Ms_2 = Delay_Ms_2 +1;
+		s_i2msFlag = 1;
 		if(All_Off_Flag)																																									//
 		{	
+			if(detection_value == 0)			// no elect
+			{
+					timer_disable(TIMER14);																																							//关闭定时器
+					Delay_Ms_2 = 0;
+					All_On_Flag = 0;
+					All_Off_Flag = 0;
+					return;
+			}
 			if(RelaySlaveChaNum==8)
 			{
 				if((EE_ACDC_Delay_ReadReg_Off[0].ACDC_Delay==Delay_Ms_2)||(EE_ACDC_Delay_ReadReg_Off[0].ACDC_Delay==0xffff)||(EE_ACDC_Delay_ReadReg_Off[0].ACDC_Delay==0))//确保这里的和读取电能参数的顺序是一致的
@@ -487,6 +497,14 @@ void TIMER14_IRQHandler(void)
 		}
 		else if(All_On_Flag)
 		{	
+			if(detection_value == 0)			// no elect
+			{
+					timer_disable(TIMER14);																																							//关闭定时器
+					Delay_Ms_2 = 0;
+					All_On_Flag = 0;
+					All_Off_Flag = 0;
+					return;
+			}
 			if(RelaySlaveChaNum==8)
 			{
 				if((EE_ACDC_Delay_ReadReg_On[0].ACDC_Delay==Delay_Ms_2)||(EE_ACDC_Delay_ReadReg_On[0].ACDC_Delay==0xffff)||(EE_ACDC_Delay_ReadReg_On[0].ACDC_Delay==0))//确保这里的和读取电能参数的顺序是一致的

File diff suppressed because it is too large
+ 212 - 320
control/PDU-AC/Project/GD32KeilPrj.uvguix.Gowon


+ 41 - 39
control/PDU-AC/Project/GD32KeilPrj.uvoptx

@@ -148,17 +148,7 @@
         <Ww>
           <count>0</count>
           <WinNumber>1</WinNumber>
-          <ItemText>ACDC_Wann_All</ItemText>
-        </Ww>
-        <Ww>
-          <count>1</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>AC_Ele_ReadReg_All</ItemText>
-        </Ww>
-        <Ww>
-          <count>2</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>ACDC_Over_AllWriteReg</ItemText>
+          <ItemText>EE_ACDC_Delay_ReadReg_On</ItemText>
         </Ww>
       </WatchWindow1>
       <MemoryWindow1>
@@ -404,6 +394,18 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>15</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\App\IO\key_io.c</PathWithFileName>
+      <FilenameWithoutPath>key_io.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -430,7 +432,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -442,7 +444,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -454,7 +456,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -466,7 +468,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -478,7 +480,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -490,7 +492,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -502,7 +504,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -522,7 +524,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -534,7 +536,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -546,7 +548,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -558,7 +560,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -570,7 +572,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -590,7 +592,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -602,7 +604,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -614,7 +616,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -626,7 +628,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -638,7 +640,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -650,7 +652,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -662,7 +664,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -674,7 +676,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -686,7 +688,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -698,7 +700,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -710,7 +712,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -722,7 +724,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -734,7 +736,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -746,7 +748,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -758,7 +760,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -770,7 +772,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 16 - 2
control/PDU-AC/Project/GD32KeilPrj.uvprojx

@@ -49,7 +49,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>jeff-23A-4通道-2024-11-11-all_双火线</OutputName>
+          <OutputName>jeff-40A-1通道-Sub-12-12</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
@@ -339,7 +339,7 @@
               <MiscControls>-Wno-invalid-source-encoding</MiscControls>
               <Define>GD32E230</Define>
               <Undefine></Undefine>
-              <IncludePath>..\FW\Include;..\App\Main;..\App\DataType;..\ARM\SysTick;..\ARM\System;..\ARM\NVIC;..\HW\Timer;..\App\Modbus\ascii;..\App\Modbus\include;..\App\Modbus\rtu;..\App\Modbus\tcp;..\App\Led;..\HW\Rcu;..\HW\Uart1;..\App\Key;..\App\Relay;..\App\Hlw8110;..\App\Wwdgt;..\App\24cxx;..\HW\I2c;..\App\ReadEeprom;..\App\Modbus\BARE\port;..\App\Sn74lvc573;..\App\Fwdgt</IncludePath>
+              <IncludePath>..\FW\Include;..\App\Main;..\App\DataType;..\ARM\SysTick;..\ARM\System;..\ARM\NVIC;..\HW\Timer;..\App\Modbus\ascii;..\App\Modbus\include;..\App\Modbus\rtu;..\App\Modbus\tcp;..\App\Led;..\HW\Rcu;..\HW\Uart1;..\App\Key;..\App\Relay;..\App\Hlw8110;..\App\Wwdgt;..\App\24cxx;..\HW\I2c;..\App\ReadEeprom;..\App\Modbus\BARE\port;..\App\Sn74lvc573;..\App\Fwdgt;..\App\IO</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
@@ -461,6 +461,11 @@
               <FileType>1</FileType>
               <FilePath>..\App\Fwdgt\Fwdgt.c</FilePath>
             </File>
+            <File>
+              <FileName>key_io.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\App\IO\key_io.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>
@@ -644,4 +649,13 @@
     <files/>
   </RTE>
 
+  <LayerInfo>
+    <Layers>
+      <Layer>
+        <LayName>GD32KeilPrj</LayName>
+        <LayPrjMark>1</LayPrjMark>
+      </Layer>
+    </Layers>
+  </LayerInfo>
+
 </Project>

File diff suppressed because it is too large
+ 7203 - 7030
control/PDU-AC/Project/JLinkLog.txt


+ 58 - 23
control/PDU-DC/App/Main/Main.c

@@ -202,27 +202,43 @@ static void key_io_control()
 	test = get_test();
 	if(rst != test)
 	{
+		
 		if(rst)
 		{
-			for(int i = 0; i <RELAY_ChN_default;i++)
-			{
-				uint8_t temp0 = 0x01 << i;
-				Relayx_Onoff_state(i,RELAY_OFF);
-				temp0 = ~temp0;
-				DCPDU_Modbus_Reg[Mb_Dbuff_RL_ST_Addr] &= temp0;
-			}
+//			for(int i = 0; i <RELAY_ChN_default;i++)
+//			{
+//				uint8_t temp0 = 0x01 << i;
+//				Relayx_Onoff_state(i,RELAY_OFF);
+//				temp0 = ~temp0;
+//				DCPDU_Modbus_Reg[Mb_Dbuff_RL_ST_Addr] &= temp0;
+//			}
+//			while(RL_Allon_flag == true)
+//					DelayNms(5);
+#if Eight_light
+			RL_Rx_state = 0x80;
+#else
+			RL_Rx_state = 0x00;
+#endif
+			RL_Alloff_flag = true;
+			//DelayNms(5);
+			
 		}else
 		{
-			for(int i = 0; i <RELAY_ChN_default;i++)
-			{
-				uint8_t temp0 = 0x01 << i;
-				Relayx_Onoff_state(i,RELAY_ON);
-				DCPDU_Modbus_Reg[Mb_Dbuff_RL_ST_Addr] |= temp0;
-			}
+//			while(RL_Alloff_flag == true)
+//					DelayNms(5);
+			RL_Rx_state = 0xff & Active_state_bit;
+			RL_Allon_flag = true;
+			//DelayNms(5);
+//			for(int i = 0; i <RELAY_ChN_default;i++)
+//			{
+//				uint8_t temp0 = 0x01 << i;
+//				Relayx_Onoff_state(i,RELAY_ON);
+//				DCPDU_Modbus_Reg[Mb_Dbuff_RL_ST_Addr] |= temp0;
+//			}
 		}
-		Eeprom_Rbuf[ERom_RL_ST_Addr] = DCPDU_Modbus_Reg[Mb_Dbuff_RL_ST_Addr] & Active_state_bit;
-		RL_Rx_state = Eeprom_Rbuf[ERom_RL_ST_Addr];
-		Write_74hc573();
+		//Eeprom_Rbuf[ERom_RL_ST_Addr] = DCPDU_Modbus_Reg[Mb_Dbuff_RL_ST_Addr] & Active_state_bit;
+//		RL_Rx_state = Eeprom_Rbuf[ERom_RL_ST_Addr];
+	//	Write_74hc573();
 	}
 }
 
@@ -250,6 +266,7 @@ static  void  CHK_JLINK(void)
 #else
 	if(gpio_input_bit_get(CHECK_JLINK_IO,CHECK_JLINK_IN) == 0)//如果有jlink接入,则不会动作继电器,直接跳出进入主函数
 #endif
+	
 	{
 			//1 pan duan shi fou you qing qiu
 			temp1 = Eeprom_Rbuf[ERom_RL_ST_Addr] ^ RL_Rx_state;
@@ -279,8 +296,8 @@ static  void  CHK_JLINK(void)
 						RL_OFF_flag[i] = 1;
 						if(RL_Alloff_flag)
 						{
-							RL_begin_delay_flag[i] = 1;
 							RL_delay_Limit[i] = DCPDU_RL_time.RL_offtime[i] * 1000;//秒转成毫秒;
+							RL_begin_delay_flag[i] = 1;
 						}
 						else
 						{
@@ -338,10 +355,21 @@ static  void  CHK_JLINK(void)
 				}
 				else if(RL_OFF_flag[i] > 0)
 				{
-					Relayx_Onoff_state(i,RELAY_OFF);
-					RL_OFF_flag[i] = 0;
-					temp0 = ~temp0;
+#if Eight_light
+					if(i != 7){
+						Relayx_Onoff_state(i,RELAY_OFF);
+						temp0 = ~temp0;
+						DCPDU_Modbus_Reg[Mb_Dbuff_RL_ST_Addr] &= temp0;
+					}
+#else
+				Relayx_Onoff_state(i,RELAY_OFF);	
+				temp0 = ~temp0;
 					DCPDU_Modbus_Reg[Mb_Dbuff_RL_ST_Addr] &= temp0;
+#endif
+					
+					RL_OFF_flag[i] = 0;
+					
+					
 				}
 				Eeprom_Rbuf[ERom_RL_ST_Addr] = DCPDU_Modbus_Reg[Mb_Dbuff_RL_ST_Addr] & Active_state_bit;
 				AT24CxxWriteOneByte(ERom_RL_ST_Addr,Eeprom_Rbuf[ERom_RL_ST_Addr]);
@@ -349,6 +377,7 @@ static  void  CHK_JLINK(void)
 			}
 		}
 		Load_conn_end_flag = true;
+		
 	}
 	RL_Rx_state = Eeprom_Rbuf[ERom_RL_ST_Addr];
 }
@@ -644,6 +673,9 @@ int main(void)
 	{
 		LimiT_enable_check(i,DCPDU_Modbus_Reg[Mb_Dbuff_CH1ST_FT_Addr+i]);
 	}
+#if Eight_light
+	Relayx_Onoff_state(7,RELAY_ON);
+#endif
 	Fwdgt_Init();
 	while(1)
 	{
@@ -651,7 +683,7 @@ int main(void)
 		Fwdgt_reload();
 		eMBPoll();
 #if NO_USE_IM1253E
-		key_io_control();
+		
 #else	
 		if(Read_IM1253E_flag)//定时读1253
 		{
@@ -877,6 +909,9 @@ int main(void)
 		}
 		RL_Over_Func();
 		MODbus_CMD();//MODBUS命令池处理。
+#if NO_USE_IM1253E
+		key_io_control();
+#endif
 	}
 }
 
@@ -1017,7 +1052,7 @@ void MODbus_CMD(void)
 		else if(Modbus_Wr_buff[Wr_eeprom_cnt][1] == Mb_Dbuff_RL_ST_Addr)//设置继电器状态
 		{
 			RL_Rx_state = Modbus_Wr_buff[Wr_eeprom_cnt][2] & Active_state_bit;
-			Eeprom_Rbuf[ERom_RL_ST_Addr] = Modbus_Wr_buff[Wr_eeprom_cnt][2] & Active_state_bit;
+			//Eeprom_Rbuf[ERom_RL_ST_Addr] = Modbus_Wr_buff[Wr_eeprom_cnt][2] & Active_state_bit;
 			//AT24CxxWriteOneByte(ERom_RL_ST_Addr,Eeprom_Rbuf[ERom_RL_ST_Addr]);
 			
 		}
@@ -1030,7 +1065,7 @@ void MODbus_CMD(void)
 		}
 		else if(Modbus_Wr_buff[Wr_eeprom_cnt][1] == Mb_Dbuff_RL_Alloff_Addr)//设置继电器全关
 		{
-			RL_Rx_state = 0x00;
+			RL_Rx_state = 0x80;
 			RL_Alloff_flag = true;
 			//Eeprom_Rbuf[ERom_RL_ST_Addr] = 0x00;
 			//AT24CxxWriteOneByte(ERom_RL_ST_Addr,Eeprom_Rbuf[ERom_RL_ST_Addr]);

+ 3 - 1
control/PDU-DC/App/Main/Main.h

@@ -25,7 +25,7 @@
 *                                              宏定义
 *********************************************************************************************************/
 #define DCPDU_Modbus_Reg_len       300     //modbus寄存器长度
-#define RELAY_ChN_default          8       //所用通道数,默认值
+#define RELAY_ChN_default          7       //所用通道数,默认值
 #define RELAY_ontime_default       0       //继电器开通延时默认及最小值
 #define RELAY_ontime_max           99      //继电器开通延时最大值
 #define RELAY_offtime_default      0       //继电器断开延时默认及最小值
@@ -41,7 +41,9 @@
 #define Iout_LTmax_default         90000   //电流最大阈值
 #define Iout_LTmin_default         500     //电流最小阈值,未用
 
+
 #define NO_USE_IM1253E							1
+#define Eight_light									1
 #define ADC_VOL 8
 #define ADC_V_CHN										2
 

File diff suppressed because it is too large
+ 93 - 57
control/PDU-DC/Project/GD32KeilPrj.uvguix.Gowon


+ 3 - 64
control/PDU-DC/Project/GD32KeilPrj.uvoptx

@@ -120,7 +120,6 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>DLGUARM</Key>
-          <Name>d</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -135,7 +134,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>JL2CM3</Key>
-          <Name>-U69545328 -O78 -S5 -ZTIFSpeedSel1000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BF11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000000 -FC1000 -FN1 -FF0GD32E230.FLM -FS08000000 -FL010000 -FP0($$Device:GD32E230C8$Flash\GD32E230.FLM)</Name>
+          <Name>-U69545328 -O78 -S5 -ZTIFSpeedSel1000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BF11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000000 -FC1000 -FN1 -FF0GD32E23x.FLM -FS08000000 -FL010000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -153,7 +152,7 @@
         <Ww>
           <count>0</count>
           <WinNumber>1</WinNumber>
-          <ItemText>DCPDU_Modbus_Reg</ItemText>
+          <ItemText>RL_Rx_state</ItemText>
         </Ww>
         <Ww>
           <count>1</count>
@@ -163,70 +162,10 @@
         <Ww>
           <count>2</count>
           <WinNumber>1</WinNumber>
-          <ItemText>Modbus_Wr_buff</ItemText>
-        </Ww>
-        <Ww>
-          <count>3</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>T_cnt</ItemText>
-        </Ww>
-        <Ww>
-          <count>4</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>RL_end_delay_flag</ItemText>
-        </Ww>
-        <Ww>
-          <count>5</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>temp0</ItemText>
-        </Ww>
-        <Ww>
-          <count>6</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>RL_begin_delay_flag</ItemText>
-        </Ww>
-        <Ww>
-          <count>7</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>RL_ON_flag</ItemText>
-        </Ww>
-        <Ww>
-          <count>8</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>RL_OFF_flag</ItemText>
-        </Ww>
-        <Ww>
-          <count>9</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>RL_now_state</ItemText>
-        </Ww>
-        <Ww>
-          <count>10</count>
-          <WinNumber>1</WinNumber>
           <ItemText>RL_Rx_state</ItemText>
         </Ww>
         <Ww>
-          <count>11</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>s_arrKeyDownLevel</ItemText>
-        </Ww>
-        <Ww>
-          <count>12</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>RL_Rx_state</ItemText>
-        </Ww>
-        <Ww>
-          <count>13</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>RL_Allon_flag</ItemText>
-        </Ww>
-        <Ww>
-          <count>14</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>Eeprom_Rbuf</ItemText>
-        </Ww>
-        <Ww>
-          <count>15</count>
+          <count>3</count>
           <WinNumber>1</WinNumber>
           <ItemText>DCPDU_Modbus_Reg</ItemText>
         </Ww>

+ 3 - 3
control/PDU-DC/Project/GD32KeilPrj.uvprojx

@@ -49,7 +49,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>GD32KeilPrj_11_12</OutputName>
+          <OutputName>GD32KeilPrj_12_7</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
@@ -134,7 +134,7 @@
             <RunIndependent>0</RunIndependent>
             <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
             <Capability>1</Capability>
-            <DriverSelection>4101</DriverSelection>
+            <DriverSelection>4102</DriverSelection>
           </Flash1>
           <bUseTDR>1</bUseTDR>
           <Flash2>BIN\UL2V8M.DLL</Flash2>
@@ -313,7 +313,7 @@
           </ArmAdsMisc>
           <Cads>
             <interw>1</interw>
-            <Optim>7</Optim>
+            <Optim>0</Optim>
             <oTime>0</oTime>
             <SplitLS>0</SplitLS>
             <OneElfS>1</OneElfS>

File diff suppressed because it is too large
+ 3413 - 26853
control/PDU-DC/Project/JLinkLog.txt