|
@@ -88,8 +88,8 @@ uint8_t RL_last_state[Output_ChN_default+1] = {0};
|
|
|
uint8_t RL_now_state[Output_ChN_default+1] = {0};
|
|
uint8_t RL_now_state[Output_ChN_default+1] = {0};
|
|
|
|
|
|
|
|
uint8_t RL_Func_statu[Output_ChN_default + 1] = {0};
|
|
uint8_t RL_Func_statu[Output_ChN_default + 1] = {0};
|
|
|
-uint32_t Hlw8110_Flash_value[Output_ChN_default + 1] = {0};
|
|
|
|
|
-extern uint32_t Hlw8110_Flash_Backup[Output_ChN_default + 1];
|
|
|
|
|
|
|
+//uint32_t Hlw8110_Flash_value[Output_ChN_default + 1] = {0};
|
|
|
|
|
+//extern uint32_t Hlw8110_Flash_Backup[Output_ChN_default + 1];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -109,7 +109,7 @@ extern uint32_t RL_N_delay_Limit; // add by liyi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+uint8_t reset_hlw8110_flag[Output_ChN_default + 1]={0};
|
|
|
|
|
|
|
|
uint32_t hlw8110_base[Output_ChN_default + 1] = {0}; //add by liyi
|
|
uint32_t hlw8110_base[Output_ChN_default + 1] = {0}; //add by liyi
|
|
|
uint8_t write_kwh2Eeprom_flag = 0;
|
|
uint8_t write_kwh2Eeprom_flag = 0;
|
|
@@ -151,10 +151,10 @@ static void CHK_JLINK(void);
|
|
|
static void MODbus_CMD(void);
|
|
static void MODbus_CMD(void);
|
|
|
static void MODbus_CMD_New(void);
|
|
static void MODbus_CMD_New(void);
|
|
|
static void Read_HT7032_data(uint8_t cs_x);
|
|
static void Read_HT7032_data(uint8_t cs_x);
|
|
|
-static void LimiT_enable_check(uint8_t chx,uint32_t Lt_v);
|
|
|
|
|
|
|
+void LimiT_enable_check(uint8_t chx,uint32_t Lt_v);
|
|
|
static void Fault_state_process(uint8_t ch_x);
|
|
static void Fault_state_process(uint8_t ch_x);
|
|
|
-static void hlw8110_init(uint8_t ch_x);
|
|
|
|
|
-static void channel_reset(uint8_t ch_x);
|
|
|
|
|
|
|
+void hlw8110_init(uint8_t ch_x);
|
|
|
|
|
+void channel_reset(uint8_t ch_x);
|
|
|
static bool select_channel(uint8_t ch_x);
|
|
static bool select_channel(uint8_t ch_x);
|
|
|
/*********************************************************************************************************
|
|
/*********************************************************************************************************
|
|
|
* 内部函数实现
|
|
* 内部函数实现
|
|
@@ -210,21 +210,21 @@ static bool select_channel(uint8_t ch_x)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
-static void hlw8110_init(uint8_t ch_x)
|
|
|
|
|
|
|
+void hlw8110_init(uint8_t ch_x)
|
|
|
{
|
|
{
|
|
|
if(select_channel(ch_x) == false)
|
|
if(select_channel(ch_x) == false)
|
|
|
return;
|
|
return;
|
|
|
Init_HLW8110();
|
|
Init_HLW8110();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static void channel_reset(uint8_t ch_x)
|
|
|
|
|
|
|
+void channel_reset(uint8_t ch_x)
|
|
|
{
|
|
{
|
|
|
- int i = 10;
|
|
|
|
|
|
|
+ int i = 100;
|
|
|
if(select_channel(ch_x) == false)
|
|
if(select_channel(ch_x) == false)
|
|
|
return;
|
|
return;
|
|
|
Uart_HLW8110_Reset();
|
|
Uart_HLW8110_Reset();
|
|
|
|
|
+ //delay_ms(10);
|
|
|
while(i--);
|
|
while(i--);
|
|
|
- Init_HLW8110();
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -454,20 +454,20 @@ static void CHK_JLINK(void)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static uint8_t _check(uint8_t *sourse,uint8_t *read,int size)
|
|
|
|
|
-{
|
|
|
|
|
- for(int i =0; i < size;i++)
|
|
|
|
|
- {
|
|
|
|
|
- if(sourse[i] == read[i])
|
|
|
|
|
- {
|
|
|
|
|
-
|
|
|
|
|
- }else
|
|
|
|
|
- {
|
|
|
|
|
- return 1;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return 0;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+//static uint8_t _check(uint8_t *sourse,uint8_t *read,int size)
|
|
|
|
|
+//{
|
|
|
|
|
+// for(int i =0; i < size;i++)
|
|
|
|
|
+// {
|
|
|
|
|
+// if(sourse[i] == read[i])
|
|
|
|
|
+// {
|
|
|
|
|
+//
|
|
|
|
|
+// }else
|
|
|
|
|
+// {
|
|
|
|
|
+// return 1;
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// return 0;
|
|
|
|
|
+//}
|
|
|
//static uint8_t write_buff[10] = {0};
|
|
//static uint8_t write_buff[10] = {0};
|
|
|
//static uint8_t read_buff[10] = {0};
|
|
//static uint8_t read_buff[10] = {0};
|
|
|
|
|
|
|
@@ -585,6 +585,15 @@ static void RL_Over_Func()
|
|
|
|
|
|
|
|
AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] = AC3PPDU_RL_time[i + CH1_out].LT_state;
|
|
AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] = AC3PPDU_RL_time[i + CH1_out].LT_state;
|
|
|
AC3PPDU_Modbus_Reg[Mb_Dbuff_OUTCH1_ST_Addr + (i % 3)] = AC3PPDU_RL_time[i + CH1_out].LT_state;
|
|
AC3PPDU_Modbus_Reg[Mb_Dbuff_OUTCH1_ST_Addr + (i % 3)] = AC3PPDU_RL_time[i + CH1_out].LT_state;
|
|
|
|
|
+
|
|
|
|
|
+ AC3PPDU_RL_N_time.LT_state = AC3PPDU_RL_N_time.LT_state &0xfffffffe;
|
|
|
|
|
+ RL_N_now_state = AC3PPDU_RL_N_time.LT_state & 0x01;
|
|
|
|
|
+ if(RL_N_now_state != RL_N_last_state)
|
|
|
|
|
+ {
|
|
|
|
|
+ RL_N_last_state = RL_N_now_state;
|
|
|
|
|
+ }
|
|
|
|
|
+ DB_Out4_L;
|
|
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_CHNLT_ST_Addr] = AC3PPDU_RL_N_time.LT_state | 0xfffffffe;
|
|
|
RL_Func_statu[i+1] = 0;
|
|
RL_Func_statu[i+1] = 0;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -718,7 +727,8 @@ int main(void)
|
|
|
// }
|
|
// }
|
|
|
for(int j = 0 ; j < Hlw8110_CS;j++)
|
|
for(int j = 0 ; j < Hlw8110_CS;j++)
|
|
|
{
|
|
{
|
|
|
- read_Hlw8110(j);
|
|
|
|
|
|
|
+ if(!reset_hlw8110_flag[j])
|
|
|
|
|
+ read_Hlw8110(j);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//输入A相电压,平均
|
|
//输入A相电压,平均
|
|
@@ -832,6 +842,7 @@ static void MODbus_CMD_New(void)
|
|
|
uint32_t temp_addr;
|
|
uint32_t temp_addr;
|
|
|
uint32_t base_addr = Modbus_Wr_buff[Wr_eeprom_cnt][1];
|
|
uint32_t base_addr = Modbus_Wr_buff[Wr_eeprom_cnt][1];
|
|
|
uint32_t data = Modbus_Wr_buff[Wr_eeprom_cnt][2];
|
|
uint32_t data = Modbus_Wr_buff[Wr_eeprom_cnt][2];
|
|
|
|
|
+ uint32_t value = 0;
|
|
|
|
|
|
|
|
switch(base_addr)
|
|
switch(base_addr)
|
|
|
{
|
|
{
|
|
@@ -851,6 +862,7 @@ static void MODbus_CMD_New(void)
|
|
|
case Mb_Dbuff_VLit1_max_Addr ... Mb_Dbuff_VLit9_max_Addr: //output voltage max threod for 1,2,3,4,5,6,7,8,9 channels
|
|
case Mb_Dbuff_VLit1_max_Addr ... Mb_Dbuff_VLit9_max_Addr: //output voltage max threod for 1,2,3,4,5,6,7,8,9 channels
|
|
|
{
|
|
{
|
|
|
temp_addr = base_addr - Mb_Dbuff_VLit1_max_Addr;
|
|
temp_addr = base_addr - Mb_Dbuff_VLit1_max_Addr;
|
|
|
|
|
+ value = temp_addr;
|
|
|
temp_addr = temp_addr << 2;
|
|
temp_addr = temp_addr << 2;
|
|
|
temp_addr += ERom_VLit1_max_Addr;
|
|
temp_addr += ERom_VLit1_max_Addr;
|
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
@@ -858,12 +870,18 @@ static void MODbus_CMD_New(void)
|
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[base_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Vmax_Threshould_Disable);
|
|
|
|
|
+ LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
|
|
|
|
|
+ }
|
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case Mb_Dbuff_VLit1_min_Addr ... Mb_Dbuff_VLit9_min_Addr: //output voltage min thred for 1,2,3,4,5,6,7,8,9 channels
|
|
case Mb_Dbuff_VLit1_min_Addr ... Mb_Dbuff_VLit9_min_Addr: //output voltage min thred for 1,2,3,4,5,6,7,8,9 channels
|
|
|
{
|
|
{
|
|
|
temp_addr = base_addr - Mb_Dbuff_VLit1_min_Addr;
|
|
temp_addr = base_addr - Mb_Dbuff_VLit1_min_Addr;
|
|
|
|
|
+ value = temp_addr;
|
|
|
temp_addr = temp_addr << 2;
|
|
temp_addr = temp_addr << 2;
|
|
|
temp_addr += ERom_VLit1_min_Addr;
|
|
temp_addr += ERom_VLit1_min_Addr;
|
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
@@ -871,12 +889,18 @@ static void MODbus_CMD_New(void)
|
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[base_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Vmin_Threshould_Disable);
|
|
|
|
|
+ LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
|
|
|
|
|
+ }
|
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case Mb_Dbuff_ILit1_max_Addr ... Mb_Dbuff_ILit9_max_Addr: // output current max throud for 1,2,3,4,5,6,7,8,9 channels
|
|
case Mb_Dbuff_ILit1_max_Addr ... Mb_Dbuff_ILit9_max_Addr: // output current max throud for 1,2,3,4,5,6,7,8,9 channels
|
|
|
{
|
|
{
|
|
|
temp_addr = base_addr - Mb_Dbuff_ILit1_max_Addr;
|
|
temp_addr = base_addr - Mb_Dbuff_ILit1_max_Addr;
|
|
|
|
|
+ value = temp_addr;
|
|
|
temp_addr = temp_addr << 2;
|
|
temp_addr = temp_addr << 2;
|
|
|
temp_addr += ERom_ILit1_max_Addr;
|
|
temp_addr += ERom_ILit1_max_Addr;
|
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
@@ -884,12 +908,18 @@ static void MODbus_CMD_New(void)
|
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[base_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Imax_Threshould_Disable);
|
|
|
|
|
+ LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
|
|
|
|
|
+ }
|
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case Mb_Dbuff_WLit1_max_Addr ... Mb_Dbuff_WLit9_max_Addr: //output power max .....
|
|
case Mb_Dbuff_WLit1_max_Addr ... Mb_Dbuff_WLit9_max_Addr: //output power max .....
|
|
|
{
|
|
{
|
|
|
temp_addr = base_addr - Mb_Dbuff_WLit1_max_Addr;
|
|
temp_addr = base_addr - Mb_Dbuff_WLit1_max_Addr;
|
|
|
|
|
+ value = temp_addr;
|
|
|
temp_addr = temp_addr << 2;
|
|
temp_addr = temp_addr << 2;
|
|
|
temp_addr += ERom_WLit1_max_Addr;
|
|
temp_addr += ERom_WLit1_max_Addr;
|
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
@@ -897,12 +927,18 @@ static void MODbus_CMD_New(void)
|
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[base_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Wmax_Threshould_Disable);
|
|
|
|
|
+ LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
|
|
|
|
|
+ }
|
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case Mb_Dbuff_kWhLit1_max_Addr ... Mb_Dbuff_kWhLit9_max_Addr: //output customers max .....
|
|
case Mb_Dbuff_kWhLit1_max_Addr ... Mb_Dbuff_kWhLit9_max_Addr: //output customers max .....
|
|
|
{
|
|
{
|
|
|
temp_addr = base_addr - Mb_Dbuff_kWhLit1_max_Addr;
|
|
temp_addr = base_addr - Mb_Dbuff_kWhLit1_max_Addr;
|
|
|
|
|
+ value = temp_addr;
|
|
|
temp_addr = temp_addr << 2;
|
|
temp_addr = temp_addr << 2;
|
|
|
temp_addr += ERom_kWhLit1_max_Addr;
|
|
temp_addr += ERom_kWhLit1_max_Addr;
|
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
Eeprom_Rbuf[temp_addr + 0] = data >> 24;
|
|
@@ -910,6 +946,12 @@ static void MODbus_CMD_New(void)
|
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
Eeprom_Rbuf[temp_addr + 2] = data >> 8;
|
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
Eeprom_Rbuf[temp_addr + 3] = data >> 0;
|
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
AC3PPDU_Modbus_Reg[base_addr] = data;
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[base_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Kwhmax_Threshould_Disable);
|
|
|
|
|
+ LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
@@ -960,6 +1002,27 @@ static void MODbus_CMD_New(void)
|
|
|
if(temp_addr == 9) { //Ch N
|
|
if(temp_addr == 9) { //Ch N
|
|
|
AC3PPDU_RL_N_time.LT_state = data;
|
|
AC3PPDU_RL_N_time.LT_state = data;
|
|
|
}else{
|
|
}else{
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Vmax_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Vmin_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Imax_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_WLit1_max_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Wmax_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhLit1_max_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Kwhmax_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
|
|
AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
|
|
|
LimiT_enable_check((temp_addr + CH1_out),AC3PPDU_RL_time[temp_addr + CH1_out].LT_state);
|
|
LimiT_enable_check((temp_addr + CH1_out),AC3PPDU_RL_time[temp_addr + CH1_out].LT_state);
|
|
|
}
|
|
}
|
|
@@ -974,6 +1037,26 @@ static void MODbus_CMD_New(void)
|
|
|
temp_addr = base_addr - Mb_Dbuff_OUTCH1_ST_Addr;
|
|
temp_addr = base_addr - Mb_Dbuff_OUTCH1_ST_Addr;
|
|
|
OutUnit_control_flag[temp_addr] = 1;
|
|
OutUnit_control_flag[temp_addr] = 1;
|
|
|
temp_addr *= 3;
|
|
temp_addr *= 3;
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Vmax_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Vmin_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Imax_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_WLit1_max_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Wmax_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_kWhLit1_max_Addr + temp_addr] < THRESHOULD_JUDGMENT)
|
|
|
|
|
+ {
|
|
|
|
|
+ data &= (Shield_Kwhmax_Threshould_Disable);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
|
|
AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
|
|
|
AC3PPDU_RL_time[temp_addr + CH2_out].LT_state = data;
|
|
AC3PPDU_RL_time[temp_addr + CH2_out].LT_state = data;
|
|
@@ -1068,34 +1151,45 @@ static void MODbus_CMD_New(void)
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
temp_addr = base_addr - Mb_Dbuff_Clear_Chn1_Consumer;
|
|
temp_addr = base_addr - Mb_Dbuff_Clear_Chn1_Consumer;
|
|
|
|
|
+ uint8_t value = temp_addr;
|
|
|
|
|
|
|
|
- Hlw8110_Flash_value[temp_addr+CH1_out] = AC3PPDU_Output[temp_addr+CH1_out].AC_kWh;
|
|
|
|
|
- Hlw8110_Flash_value[temp_addr+CH1_out] = Hlw8110_Flash_Backup[temp_addr+CH1_out];
|
|
|
|
|
- hlw8110_base[temp_addr+CH1_out] = 0;
|
|
|
|
|
|
|
+ //Hlw8110_Flash_value[temp_addr+CH1_out] = AC3PPDU_Output[temp_addr+CH1_out].AC_kWh;
|
|
|
|
|
+ //Hlw8110_Flash_value[temp_addr+CH1_out] = Hlw8110_Flash_Backup[temp_addr+CH1_out];
|
|
|
|
|
+ //hlw8110_base[temp_addr+CH1_out] = 0;
|
|
|
temp_addr = temp_addr << 2;
|
|
temp_addr = temp_addr << 2;
|
|
|
temp_addr += ERom_TotalWh1_Addr;
|
|
temp_addr += ERom_TotalWh1_Addr;
|
|
|
- Eeprom_Rbuf[temp_addr+0] = 0;
|
|
|
|
|
- Eeprom_Rbuf[temp_addr+1] = 0;
|
|
|
|
|
- Eeprom_Rbuf[temp_addr+2] = 0;
|
|
|
|
|
- Eeprom_Rbuf[temp_addr+3] = 0;
|
|
|
|
|
- //channel_reset(temp_addr+CH1_out);
|
|
|
|
|
|
|
+// Eeprom_Rbuf[temp_addr+0] = 0;
|
|
|
|
|
+// Eeprom_Rbuf[temp_addr+1] = 0;
|
|
|
|
|
+// Eeprom_Rbuf[temp_addr+2] = 0;
|
|
|
|
|
+// Eeprom_Rbuf[temp_addr+3] = 0;
|
|
|
|
|
+// channel_reset(temp_addr+CH1_out);
|
|
|
|
|
+// InitUART1(9600);
|
|
|
|
|
+ hlw8110_init(value+CH1_out);
|
|
|
|
|
+ reset_hlw8110_flag[value] = 0;
|
|
|
AT24CxxWrite(temp_addr,Eeprom_Rbuf+temp_addr,4);
|
|
AT24CxxWrite(temp_addr,Eeprom_Rbuf+temp_addr,4);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
case Mb_Dbuff_Clear_Chnall_Consumer:
|
|
case Mb_Dbuff_Clear_Chnall_Consumer:
|
|
|
{
|
|
{
|
|
|
if(data){
|
|
if(data){
|
|
|
|
|
+// for(i = 0; i < Output_ChN_default ;i++)
|
|
|
|
|
+// {
|
|
|
|
|
+// int temp = i << 2;
|
|
|
|
|
+// //Hlw8110_Flash_value[i+CH1_out] = AC3PPDU_Output[i+CH1_out].AC_kWh;
|
|
|
|
|
+// //Hlw8110_Flash_value[i+CH1_out] = Hlw8110_Flash_Backup[i+CH1_out];
|
|
|
|
|
+// Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+0] = 0;
|
|
|
|
|
+// Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+1] = 0;
|
|
|
|
|
+// Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+2] = 0;
|
|
|
|
|
+// Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+3] = 0;
|
|
|
|
|
+// hlw8110_base[i+CH1_out] = 0;
|
|
|
|
|
+// channel_reset(i+CH1_out);
|
|
|
|
|
+// }
|
|
|
|
|
+// InitUART1(9600);
|
|
|
|
|
+// //InitCH448F();
|
|
|
for(i = 0; i < Output_ChN_default ;i++)
|
|
for(i = 0; i < Output_ChN_default ;i++)
|
|
|
{
|
|
{
|
|
|
- int temp = i << 2;
|
|
|
|
|
- Hlw8110_Flash_value[i+CH1_out] = AC3PPDU_Output[i+CH1_out].AC_kWh;
|
|
|
|
|
- Hlw8110_Flash_value[i+CH1_out] = Hlw8110_Flash_Backup[i+CH1_out];
|
|
|
|
|
- Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+0] = 0;
|
|
|
|
|
- Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+1] = 0;
|
|
|
|
|
- Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+2] = 0;
|
|
|
|
|
- Eeprom_Rbuf[ERom_TotalWh1_Addr+temp+3] = 0;
|
|
|
|
|
- hlw8110_base[i+CH1_out] = 0;
|
|
|
|
|
- //channel_reset(i+CH1_out);
|
|
|
|
|
|
|
+ hlw8110_init(i+CH1_out);
|
|
|
|
|
+ reset_hlw8110_flag[i] = 0;
|
|
|
}
|
|
}
|
|
|
AT24CxxWrite(ERom_TotalWh1_Addr,(Eeprom_Rbuf + ERom_TotalWh1_Addr),4*Output_ChN_default);
|
|
AT24CxxWrite(ERom_TotalWh1_Addr,(Eeprom_Rbuf + ERom_TotalWh1_Addr),4*Output_ChN_default);
|
|
|
}
|
|
}
|
|
@@ -1401,7 +1495,7 @@ static void MODbus_CMD(void)
|
|
|
* 创建日期:2024年05月06日
|
|
* 创建日期:2024年05月06日
|
|
|
* 注 意:
|
|
* 注 意:
|
|
|
*********************************************************************************************************/
|
|
*********************************************************************************************************/
|
|
|
-static void LimiT_enable_check(uint8_t ch_x,uint32_t Lt_v)
|
|
|
|
|
|
|
+void LimiT_enable_check(uint8_t ch_x,uint32_t Lt_v)
|
|
|
{
|
|
{
|
|
|
uint16_t temp0 = 0;
|
|
uint16_t temp0 = 0;
|
|
|
temp0 = Lt_v >> 1;
|
|
temp0 = Lt_v >> 1;
|