|
|
@@ -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);
|