|
|
@@ -961,6 +961,38 @@ static void RL_Over_Func()
|
|
|
|
|
|
|
|
|
|
|
|
+static void read_ele(void)
|
|
|
+{
|
|
|
+ static uint8_t channel = 0;
|
|
|
+ read_Hlw8110(channel,0);
|
|
|
+ channel ++;
|
|
|
+ if(channel == Output_ChN_default)
|
|
|
+ {
|
|
|
+ channel = 0;
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] = AC3PPDU_Output[CH1_out].AC_V;
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] = AC3PPDU_Output[CH2_out].AC_V;
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] = AC3PPDU_Output[CH3_out].AC_V;
|
|
|
+
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] = AC3PPDU_Output[CH1_out].AC_I;
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] = AC3PPDU_Output[CH2_out].AC_I;
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr] = AC3PPDU_Output[CH3_out].AC_I;
|
|
|
+
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] = AC3PPDU_Output[CH1_out].AC_P;
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] = AC3PPDU_Output[CH2_out].AC_P;
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr] = AC3PPDU_Output[CH3_out].AC_P;
|
|
|
+
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] = AC3PPDU_Output[CH1_out].AC_kWh;
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] = AC3PPDU_Output[CH2_out].AC_kWh;
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr] = AC3PPDU_Output[CH3_out].AC_kWh;
|
|
|
+ for(int i = 0;i < (Output_ChN_default + 1);i++)
|
|
|
+ {
|
|
|
+ Fault_state_process(i);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/*********************************************************************************************************
|
|
|
* 函数名称:main
|
|
|
* 函数功能:主函数
|
|
|
@@ -1055,6 +1087,12 @@ int main(void)
|
|
|
LEDFlicker2();
|
|
|
Clr1SecFlag(); //清除1s标志
|
|
|
}
|
|
|
+ //////////////////////////
|
|
|
+ if(Start_Read_Flag)//读数据
|
|
|
+ {
|
|
|
+ Start_Read_Flag = false;
|
|
|
+ read_ele();
|
|
|
+ }
|
|
|
if(write_kwh2Eeprom_flag) // 10 second recode
|
|
|
{
|
|
|
write_kwh2Eeprom_flag = 0;
|
|
|
@@ -1069,158 +1107,9 @@ int main(void)
|
|
|
AT24CxxWrite(ERom_TotalWh1_Addr,(Eeprom_Rbuf + ERom_TotalWh1_Addr),4*Output_ChN_default);
|
|
|
}
|
|
|
|
|
|
- ////故障指示处理/////
|
|
|
-
|
|
|
- if(Fault_state_Reg > 0)
|
|
|
- {
|
|
|
- if(Fault_state_Reg != Fault_state_Last)
|
|
|
- {
|
|
|
- //RL_now_state = RL_now_state & (~Fault_state_Reg);
|
|
|
-// Write_74hc573(LK_FalseLed_D,Fault_state_Reg);
|
|
|
-// Fault_state_Last = Fault_state_Reg;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
- //////////////////////////
|
|
|
- if(Start_Read_Flag)//读数据
|
|
|
- {
|
|
|
- Start_Read_Flag = false;
|
|
|
-// for(i = 0;i < HT7032_CS;i++)
|
|
|
-// {
|
|
|
-// // Read_HT7032_data(i);
|
|
|
-// //read Hlw8110 eche one data;
|
|
|
-//
|
|
|
-//
|
|
|
-// }
|
|
|
- if(kwh_200ms_read_flag)
|
|
|
- {
|
|
|
- for(int j = 0 ; j < Hlw8110_CS;j++)
|
|
|
- {
|
|
|
- //if(!reset_hlw8110_flag[j])
|
|
|
- read_Hlw8110(j,1);
|
|
|
- }
|
|
|
- kwh_200ms_read_flag = 0;
|
|
|
- }else
|
|
|
- {
|
|
|
- for(int j = 0 ; j < Hlw8110_CS;j++)
|
|
|
- {
|
|
|
- //if(!reset_hlw8110_flag[j])
|
|
|
- read_Hlw8110(j,0);
|
|
|
- }
|
|
|
- }
|
|
|
- //输入A相电压,平均
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] = AC3PPDU_Output[CH1_out].AC_V;
|
|
|
-
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] += AC3PPDU_Output[CH4_out].AC_V;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] += AC3PPDU_Output[CH7_out].AC_V;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_VAP_Addr] /= 3;
|
|
|
- //输入B相电压,平均
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] = AC3PPDU_Output[CH2_out].AC_V;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] += AC3PPDU_Output[CH5_out].AC_V;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] += AC3PPDU_Output[CH8_out].AC_V;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_VBP_Addr] /= 3;
|
|
|
- //输入C相电压,平均
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] = AC3PPDU_Output[CH3_out].AC_V;
|
|
|
-
|
|
|
- uint32_t Vmax = AC3PPDU_Output[CH1_out].AC_V > AC3PPDU_Output[CH2_out].AC_V ? AC3PPDU_Output[CH1_out].AC_V : AC3PPDU_Output[CH2_out].AC_V;
|
|
|
- Vmax = Vmax > AC3PPDU_Output[CH3_out].AC_V ? Vmax : AC3PPDU_Output[CH3_out].AC_V;
|
|
|
- AC_BASE[0] = Vmax;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] += AC3PPDU_Output[CH6_out].AC_V;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] += AC3PPDU_Output[CH9_out].AC_V;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_VCP_Addr] /= 3;
|
|
|
- //输入A相电流,求和
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] = AC3PPDU_Output[CH1_out].AC_I;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] += AC3PPDU_Output[CH4_out].AC_I;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] += AC3PPDU_Output[CH7_out].AC_I;
|
|
|
- //输入B相电流,求和
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] = AC3PPDU_Output[CH2_out].AC_I;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] += AC3PPDU_Output[CH5_out].AC_I;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] += AC3PPDU_Output[CH8_out].AC_I;
|
|
|
- //输入C相电流,求和
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr] = AC3PPDU_Output[CH3_out].AC_I;
|
|
|
- AC_BASE[1] = AC3PPDU_Modbus_Reg[Mb_Dbuff_IAP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_IBP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr];
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr] += AC3PPDU_Output[CH6_out].AC_I;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_ICP_Addr] += AC3PPDU_Output[CH9_out].AC_I;
|
|
|
- //输入A相功率,求和
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] = AC3PPDU_Output[CH1_out].AC_P;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] += AC3PPDU_Output[CH4_out].AC_P;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] += AC3PPDU_Output[CH7_out].AC_P;
|
|
|
- //输入B相功率,求和
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] = AC3PPDU_Output[CH2_out].AC_P;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] += AC3PPDU_Output[CH5_out].AC_P;
|
|
|
-// AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] += AC3PPDU_Output[CH8_out].AC_P;
|
|
|
- //输入C相功率,求和
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr] = AC3PPDU_Output[CH3_out].AC_P;
|
|
|
-// 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相电量,求和
|
|
|
-
|
|
|
- AC_BASE[2] = AC3PPDU_Modbus_Reg[Mb_Dbuff_WAP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_WBP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_WCP_Addr];
|
|
|
-
|
|
|
-
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] = hlw8110_base[CH1_out] + (hlw8110_store[CH1_out]*1000);
|
|
|
- //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] = hlw8110_base[CH2_out] + (hlw8110_store[CH2_out]*1000);
|
|
|
- //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] = hlw8110_base[CH3_out] + (hlw8110_store[CH3_out]*1000);
|
|
|
- //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;
|
|
|
-
|
|
|
- AC_BASE[3] = AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhAP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhBP_Addr] + AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhCP_Addr];
|
|
|
-
|
|
|
-// 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]);
|
|
|
-// }
|
|
|
- // jugement is or not lack pose
|
|
|
-
|
|
|
-
|
|
|
- for(i = 0;i < (Output_ChN_default + 1);i++)
|
|
|
- {
|
|
|
- Fault_state_process(i);
|
|
|
- }
|
|
|
-
|
|
|
- RL_Over_Func();
|
|
|
- //
|
|
|
-// if(((AC3PPDU_Modbus_Reg[Mb_Dbuff_FT_ST_Addr] & AC3PPDU_APlack_Fault) > 0) || ((AC3PPDU_Modbus_Reg[Mb_Dbuff_FT_ST_Addr] & AC3PPDU_BPlack_Fault) > 0) || ((AC3PPDU_Modbus_Reg[Mb_Dbuff_FT_ST_Addr] & AC3PPDU_CPlack_Fault) > 0))
|
|
|
-// {
|
|
|
-// Fault_lack_phase_flag = true;
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// Fault_lack_phase_flag = false;
|
|
|
-// }
|
|
|
-
|
|
|
-// for(i = 0;i < Output_ChN_default;i++)
|
|
|
-// {
|
|
|
-// if(AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1FT_ST_Addr + i] > 0)
|
|
|
-// {
|
|
|
-// Fault_state_Reg = Fault_state_Reg | (0x0001 << i);
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// Fault_state_Reg = Fault_state_Reg & (~(0x0001 << i));
|
|
|
-// }
|
|
|
-// }
|
|
|
- }
|
|
|
- //////////////////////////
|
|
|
+ RL_Over_Func();
|
|
|
MODbus_CMD_New();
|
|
|
- //MODbus_CMD();
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|