Просмотр исходного кода

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

guohui лет назад: 2
Родитель
Сommit
1b7b01da5f

+ 39 - 12
control/PDU-Triphasic/App/Main/Main.c

@@ -103,6 +103,13 @@ extern uint32_t RL_N_delay_Limit;			// add by liyi
 
 
 
+
+
+uint32_t hlw8110_base[Output_ChN_default + 1] = {0}; //add by liyi
+uint8_t write_kwh2Eeprom_flag = 0;
+
+
+
 uint8_t AC3PPDU_active_chn = Output_ChN_default;
 
 uint16_t Fault_state_Reg = 0;
@@ -555,6 +562,20 @@ int main(void)
 			LEDFlicker2();
 			Clr1SecFlag();  //清除1s标志
 		}
+		if(write_kwh2Eeprom_flag)			// 600 second recode
+		{
+			write_kwh2Eeprom_flag = 0;
+			for(i = 0; i < Output_ChN_default ;i++)
+			{
+				int temp = i << 2;
+				Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+0] = AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr+i] >> 24;
+				Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+1] = AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr+i] >> 16;
+				Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+2] = AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr+i] >> 8;
+				Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+3] = AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr+i];
+			}
+			AT24CxxWrite(ERom_TotalWh1_Addr,(Eeprom_Rbuf + ERom_TotalWh1_Addr),4*Output_ChN_default);
+		}
+		
         ////故障指示处理/////
 		
 		if(Fault_state_Reg > 0)
@@ -627,26 +648,32 @@ int main(void)
 //			AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr] += AC3PPDU_Output[CH6_out].AC_P;
 //			AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr] += AC3PPDU_Output[CH9_out].AC_P;
 			//输入A相电量,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] += AC3PPDU_Output[CH1_out].AC_kWh;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] = hlw8110_base[CH1_out] + AC3PPDU_Output[CH1_out].AC_kWh;
+			//AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] += AC3PPDU_Output[CH1_out].AC_kWh;
 //			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] += AC3PPDU_Output[CH4_out].AC_kWh;
 //			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] += AC3PPDU_Output[CH7_out].AC_kWh;
 			//输入B相电量,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] += AC3PPDU_Output[CH2_out].AC_kWh;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] =	hlw8110_base[CH2_out] + AC3PPDU_Output[CH2_out].AC_kWh;
+			//AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] += AC3PPDU_Output[CH2_out].AC_kWh;
+			
 //			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] += AC3PPDU_Output[CH5_out].AC_kWh;
 //			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] += AC3PPDU_Output[CH8_out].AC_kWh;
 			//输入C相电量,求和
-			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] += AC3PPDU_Output[CH3_out].AC_kWh;
+			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] = hlw8110_base[CH3_out] + AC3PPDU_Output[CH3_out].AC_kWh;
+			//AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] 	+= AC3PPDU_Output[CH3_out].AC_kWh;
 //			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] += AC3PPDU_Output[CH6_out].AC_kWh;
 //			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] += AC3PPDU_Output[CH9_out].AC_kWh;
-			for(i = 0; i < Output_ChN_default ;i++)
-			{
-				int temp = i << 2;
-				Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+0] = AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr+i] >> 24;
-				Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+1] = AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr+i] >> 16;
-				Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+2] = AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr+i] >> 8;
-				Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+3] = AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr+i];
-			}
-			AT24CxxWrite(ERom_TotalWh1_Addr,(Eeprom_Rbuf + ERom_TotalWh1_Addr),4*Output_ChN_default);
+
+//			for(i =0; i < Output_ChN_default;i++)
+//		{
+//			temp0 = i << 2;
+//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+0] << 24);
+//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+1] << 16);
+//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+2] << 8);
+//			AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+3]);
+//		}
+
+
 			for(i = 0;i < (Output_ChN_default + 1);i++)
 			{
 				Fault_state_process(i);

+ 18 - 5
control/PDU-Triphasic/App/ReadEeprom/ReadEeprom.c

@@ -38,6 +38,7 @@
 
 extern uint8_t AC3PPDU_active_chn;
 extern uint32_t AC3PPDU_Modbus_Reg[AC3PPDU_Modbus_Reg_len];
+extern uint32_t hlw8110_base[Output_ChN_default];
 /*********************************************************************************************************
 *                                              ÄÚ²¿º¯ÊýÉùÃ÷
 *********************************************************************************************************/
@@ -176,11 +177,23 @@ void  ReadEeprom(void)
 	//read consumer from eeprom   
 	for(i =0; i < Output_ChN_default;i++)
 	{
-		temp0 = i << 2;
-		AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+0] << 24);
-		AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+1] << 16);
-		AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+2] << 8);
-		AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+3]);
+//		temp0 = i << 2;
+//		temp1 = 8 * i;
+//		AC3PPDU_Modbus_Reg[Mb_Dbuff_Out1Para_Addr + temp1 + 6] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+0] << 24);
+//		AC3PPDU_Modbus_Reg[Mb_Dbuff_Out1Para_Addr + temp1 + 6] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+1] << 16);
+//		AC3PPDU_Modbus_Reg[Mb_Dbuff_Out1Para_Addr + temp1 + 6] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+2] << 8);
+//		AC3PPDU_Modbus_Reg[Mb_Dbuff_Out1Para_Addr + temp1 + 6] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+3]);
+		//Mb_Dbuff_kWhAP_Addr
+//		temp0 = i << 2;
+//		AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+0] << 24);
+//		AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+1] << 16);
+//		AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+2] << 8);
+//		AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr + i] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+3]);		
+		temp0 = i << 2;	
+		hlw8110_base[i+1] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+0] << 24);
+		hlw8110_base[i+1] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+1] << 16);
+		hlw8110_base[i+1] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+2] << 8);
+		hlw8110_base[i+1] += (Eeprom_Rbuf [ERom_TotalWh1_Addr +temp0+3] << 0);
 	}
 }
 

+ 7 - 1
control/PDU-Triphasic/HW/Timer/Timer.c

@@ -55,7 +55,7 @@ extern uint8_t RL_end_delay_flag[Output_ChN_default];
 
 extern uint8_t RL_N_begin_delay_flag;  //add by liyi
 extern uint8_t RL_N_end_delay_flag;		// add by liyi
-
+extern uint8_t write_kwh2Eeprom_flag; // add by liyi
 /*********************************************************************************************************
 *                                              内部函数声明
 *********************************************************************************************************/
@@ -261,6 +261,12 @@ void TIMER16_IRQHandler(void)
 		Read_data_cnt = 0;
 		Start_Read_Flag = true;
 	}
+	if(s_iCnt1000 == 240)
+	{
+		s_iCnt1000 = 0;
+		write_kwh2Eeprom_flag = 1;
+	}
+	s_iCnt1000 ++;
   s_i1secFlag = 1;      //将1s标志位的值设置为1
 }
 

Разница между файлами не показана из-за своего большого размера
+ 6847 - 4534
control/PDU-Triphasic/Project/JLinkLog.txt


Разница между файлами не показана из-за своего большого размера
+ 790 - 785
control/PDU-Triphasic/Project/Listings/triphasic_3.map


BIN
control/PDU-Triphasic/Project/Objects/main.o


BIN
control/PDU-Triphasic/Project/Objects/readeeprom.o


BIN
control/PDU-Triphasic/Project/Objects/timer.o


BIN
control/PDU-Triphasic/Project/Objects/triphasic_3.axf


+ 15 - 15
control/PDU-Triphasic/Project/Objects/triphasic_3.build_log.htm

@@ -22,33 +22,33 @@ Dialog DLL:      TCM.DLL V1.53.0.0
  
 <h2>Project:</h2>
 D:\triphasic_test\Project\triphasic_3.uvprojx
-Project File Date:  08/04/2024
+Project File Date:  08/06/2024
 
 <h2>Output:</h2>
 *** Using Compiler 'V6.16', folder: 'D:\Keil_v5\ARM\ARMCLANG\Bin'
 Rebuild target 'Target 1'
-compiling Wwdgt.c...
 compiling At24cxx.c...
+compiling Timer.c...
+compiling Rcu.c...
+compiling Wwdgt.c...
 compiling Relay.c...
-compiling Sn74hc573.c...
 compiling Led.c...
+compiling Uart1.c...
 compiling Key.c...
-compiling Rcu.c...
+compiling Sn74hc573.c...
 compiling I2c.c...
-compiling Uart1.c...
-compiling Timer.c...
-compiling Hlw8110.c...
 compiling ReadEeprom.c...
+compiling gd32e230_wwdgt.c...
 compiling gd32e230_usart.c...
-../App/Main/Main.c(1375): warning: function declared 'noreturn' should not return [-Winvalid-noreturn]
+compiling gd32e230_timer.c...
+compiling Hlw8110.c...
+compiling gd32e230_rcu.c...
+../App/Main/Main.c(1402): warning: function declared 'noreturn' should not return [-Winvalid-noreturn]
 }
 ^
 1 warning generated.
 compiling Main.c...
-compiling gd32e230_timer.c...
-compiling gd32e230_wwdgt.c...
 compiling gd32e230_misc.c...
-compiling gd32e230_rcu.c...
 compiling gd32e230_gpio.c...
 compiling gd32e230_fmc.c...
 compiling NVIC.c...
@@ -59,9 +59,9 @@ compiling SysTick.c...
 assembling startup_gd32e230.s...
 compiling portevent.c...
 compiling port.c...
+compiling portserial.c...
 compiling porttimer.c...
 compiling mbfunccoils.c...
-compiling portserial.c...
 compiling mbfuncdiag.c...
 compiling mbfuncdisc.c...
 compiling mbfuncholding.c...
@@ -69,12 +69,12 @@ compiling mbfuncinput.c...
 compiling mbfuncother.c...
 compiling mbutils.c...
 compiling mbcrc.c...
-compiling mbtcp.c...
 compiling mbrtu.c...
+compiling mbtcp.c...
 compiling mb.c...
 compiling mbascii.c...
 linking...
-Program Size: Code=18372 RO-data=1044 RW-data=152 ZI-data=7288  
+Program Size: Code=18348 RO-data=1044 RW-data=152 ZI-data=7304  
 FromELF: creating hex file...
 ".\Objects\triphasic_3.axf" - 0 Error(s), 1 Warning(s).
 
@@ -99,7 +99,7 @@ Package Vendor: GigaDevice
 <h2>Collection of Component Files used:</h2>
 
    * Component: ARM::CMSIS:CORE:5.5.0
-Build Time Elapsed:  00:00:01
+Build Time Elapsed:  00:00:02
 </pre>
 </body>
 </html>

Разница между файлами не показана из-за своего большого размера
+ 964 - 965
control/PDU-Triphasic/Project/Objects/triphasic_3.hex


+ 4 - 4
control/PDU-Triphasic/Project/Objects/triphasic_3.htm

@@ -3,7 +3,7 @@
 <title>Static Call Graph - [.\Objects\triphasic_3.axf]</title></head>
 <body><HR>
 <H1>Static Call Graph for image .\Objects\triphasic_3.axf</H1><HR>
-<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 6160001: Last Updated: Sun Aug  4 17:15:02 2024
+<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 6160001: Last Updated: Tue Aug  6 18:08:42 2024
 <BR><P>
 <H3>Maximum Stack Usage =          0 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
 Call chain for Maximum Stack Depth:</H3>
@@ -650,7 +650,7 @@ Global Symbols
 <P><STRONG><a name="[4]"></a>PendSV_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, gd32e230_it.o(.text.PendSV_Handler))
 <BR>[Address Reference Count : 1]<UL><LI> startup_gd32e230.o(RESET)
 </UL>
-<P><STRONG><a name="[a0]"></a>ReadEeprom</STRONG> (Thumb, 732 bytes, Stack size 0 bytes, readeeprom.o(.text.ReadEeprom))
+<P><STRONG><a name="[a0]"></a>ReadEeprom</STRONG> (Thumb, 724 bytes, Stack size 0 bytes, readeeprom.o(.text.ReadEeprom))
 <BR><BR>[Calls]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;AT24CxxRead
 </UL>
 <BR>[Called By]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
@@ -818,7 +818,7 @@ Global Symbols
 </UL>
 <BR>[Address Reference Count : 1]<UL><LI> startup_gd32e230.o(RESET)
 </UL>
-<P><STRONG><a name="[19]"></a>TIMER16_IRQHandler</STRONG> (Thumb, 52 bytes, Stack size 0 bytes, timer.o(.text.TIMER16_IRQHandler))
+<P><STRONG><a name="[19]"></a>TIMER16_IRQHandler</STRONG> (Thumb, 68 bytes, Stack size 0 bytes, timer.o(.text.TIMER16_IRQHandler))
 <BR><BR>[Calls]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;timer_interrupt_flag_get
 <LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;timer_interrupt_flag_clear
 </UL>
@@ -1128,7 +1128,7 @@ Global Symbols
 <BR>[Address Reference Count : 2]<UL><LI> relay.o(.text.InitRelay)
 <LI> portserial.o(.text.xMBPortSerialInit)
 </UL>
-<P><STRONG><a name="[59]"></a>main</STRONG> (Thumb, 3088 bytes, Stack size 0 bytes, main.o(.text.main))
+<P><STRONG><a name="[59]"></a>main</STRONG> (Thumb, 3044 bytes, Stack size 0 bytes, main.o(.text.main))
 <BR><BR>[Calls]<UL><LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;read_Hlw8110
 <LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gpio_bit_set
 <LI><a href="#[29]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gpio_bit_reset

Разница между файлами не показана из-за своего большого размера
+ 4 - 4
control/PDU-Triphasic/Project/Objects/triphasic_3_Target 1.dep


Разница между файлами не показана из-за своего большого размера
+ 95 - 77
control/PDU-Triphasic/Project/triphasic_3.uvguix.Gowon


+ 53 - 6
control/PDU-Triphasic/Project/triphasic_3.uvoptx

@@ -117,6 +117,10 @@
         <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>DLGTARM</Key>
@@ -127,10 +131,6 @@
           <Key>ARMDBGFLAGS</Key>
           <Name></Name>
         </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>JL2CM3</Key>
@@ -142,13 +142,60 @@
           <Name>UL2V8M(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32E23x -FS08000000 -FL010000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM))</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint/>
+      <Breakpoint>
+        <Bp>
+          <Number>0</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\Hlw8110\Hlw8110.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression></Expression>
+        </Bp>
+      </Breakpoint>
       <WatchWindow1>
         <Ww>
           <count>0</count>
           <WinNumber>1</WinNumber>
+          <ItemText>F_AC_PF</ItemText>
+        </Ww>
+        <Ww>
+          <count>1</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>AC3PPDU_Output</ItemText>
+        </Ww>
+        <Ww>
+          <count>2</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>s_iCnt1000</ItemText>
+        </Ww>
+        <Ww>
+          <count>3</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>AC3PPDU_active_chn</ItemText>
+        </Ww>
+        <Ww>
+          <count>4</count>
+          <WinNumber>1</WinNumber>
           <ItemText>Eeprom_Rbuf</ItemText>
         </Ww>
+        <Ww>
+          <count>5</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>hlw8110_base</ItemText>
+        </Ww>
+        <Ww>
+          <count>6</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>AC3PPDU_Modbus_Reg</ItemText>
+        </Ww>
       </WatchWindow1>
       <Tracepoint>
         <THDelay>0</THDelay>
@@ -156,7 +203,7 @@
       <DebugFlag>
         <trace>0</trace>
         <periodic>1</periodic>
-        <aLwin>1</aLwin>
+        <aLwin>0</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>