|
@@ -92,35 +92,124 @@ static void check_wanning(uint8_t in_out,uint8_t channel)
|
|
|
if(in_out == ELE_INPUT)
|
|
if(in_out == ELE_INPUT)
|
|
|
{
|
|
{
|
|
|
#if (AC_3_3 || AC_3_4)
|
|
#if (AC_3_3 || AC_3_4)
|
|
|
- uint32_t sort_buff[3] = {0};
|
|
|
|
|
|
|
+
|
|
|
|
|
+ board->md_data.r_data.i_voltage[A] = board->md_data.r_data.output[A].voltage;
|
|
|
|
|
+ board->md_data.r_data.i_voltage[B] = board->md_data.r_data.output[B].voltage;
|
|
|
|
|
+ board->md_data.r_data.i_voltage[C] = board->md_data.r_data.output[C].voltage;
|
|
|
|
|
+
|
|
|
|
|
+ board->md_data.r_data.i_current[A] = board->md_data.r_data.output[A].current;
|
|
|
|
|
+ board->md_data.r_data.i_current[B] = board->md_data.r_data.output[B].current;
|
|
|
|
|
+ board->md_data.r_data.i_current[C] = board->md_data.r_data.output[C].current;
|
|
|
|
|
+
|
|
|
|
|
+ board->md_data.r_data.i_power[A] = board->md_data.r_data.output[A].power;
|
|
|
|
|
+ board->md_data.r_data.i_power[B] = board->md_data.r_data.output[B].power;
|
|
|
|
|
+ board->md_data.r_data.i_power[C] = board->md_data.r_data.output[C].power;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ board->md_data.r_data.i_consumer[A] = board->md_data.r_data.output[A].consumer;
|
|
|
|
|
+ board->md_data.r_data.i_consumer[B] = board->md_data.r_data.output[B].consumer;
|
|
|
|
|
+ board->md_data.r_data.i_consumer[C] = board->md_data.r_data.output[C].consumer;
|
|
|
|
|
+#else
|
|
|
|
|
+ //voltage
|
|
|
|
|
+ uint32_t _data = 0;
|
|
|
|
|
+ for(int i = 0 ; i < PT_SUB_COUNT;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ _data = (board->md_data.r_data.output[i].voltage > _data) ? board->md_data.r_data.output[i].voltage : _data;
|
|
|
|
|
+ }
|
|
|
|
|
+ board->md_data.r_data.i_voltage[A] = _data;
|
|
|
|
|
+
|
|
|
|
|
+ _data = 0;
|
|
|
|
|
+ for(int i = PT_SUB_COUNT ; i < RelaySlaveChaNum;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ _data = (board->md_data.r_data.output[i].voltage > _data) ? board->md_data.r_data.output[i].voltage : _data;
|
|
|
|
|
+ }
|
|
|
|
|
+ board->md_data.r_data.i_voltage[B] = _data;
|
|
|
|
|
+ //current
|
|
|
|
|
+ _data = 0;
|
|
|
|
|
+ for(int i = 0 ; i < PT_SUB_COUNT;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ _data += board->md_data.r_data.output[i].current;
|
|
|
|
|
+ }
|
|
|
|
|
+ board->md_data.r_data.i_current[A] = _data;
|
|
|
|
|
+
|
|
|
|
|
+ _data = 0;
|
|
|
|
|
+ for(int i = PT_SUB_COUNT ; i < RelaySlaveChaNum;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ _data += board->md_data.r_data.output[i].current;
|
|
|
|
|
+ }
|
|
|
|
|
+ board->md_data.r_data.i_current[B] = _data;
|
|
|
|
|
+ //power
|
|
|
|
|
+ _data = 0;
|
|
|
|
|
+ for(int i = 0 ; i < PT_SUB_COUNT;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ _data += board->md_data.r_data.output[i].power;
|
|
|
|
|
+ }
|
|
|
|
|
+ board->md_data.r_data.i_power[A] = _data;
|
|
|
|
|
+
|
|
|
|
|
+ _data = 0;
|
|
|
|
|
+ for(int i = PT_SUB_COUNT ; i < RelaySlaveChaNum;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ _data += board->md_data.r_data.output[i].power;
|
|
|
|
|
+ }
|
|
|
|
|
+ board->md_data.r_data.i_power[B] = _data;
|
|
|
|
|
+ //consumer
|
|
|
|
|
+ _data = 0;
|
|
|
|
|
+ for(int i = 0 ; i < PT_SUB_COUNT;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ _data += board->md_data.r_data.output[i].consumer;
|
|
|
|
|
+ }
|
|
|
|
|
+ board->md_data.r_data.i_consumer[A] = _data;
|
|
|
|
|
+
|
|
|
|
|
+ _data = 0;
|
|
|
|
|
+ for(int i = PT_SUB_COUNT ; i < RelaySlaveChaNum;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ _data += board->md_data.r_data.output[i].consumer;
|
|
|
|
|
+ }
|
|
|
|
|
+ board->md_data.r_data.i_consumer[B] = _data;
|
|
|
|
|
+
|
|
|
|
|
+#endif
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
uint32_t Vmax = 0;
|
|
uint32_t Vmax = 0;
|
|
|
- uint32_t Vmin = 0;
|
|
|
|
|
- sort_buff[0] = board->md_data.r_data.i_voltage[0];
|
|
|
|
|
- sort_buff[1] = board->md_data.r_data.i_voltage[1];
|
|
|
|
|
- sort_buff[2] = board->md_data.r_data.i_voltage[2];
|
|
|
|
|
|
|
+ uint32_t Vmin = 0;
|
|
|
|
|
+ uint32_t sort_buff[3] = {0};
|
|
|
|
|
+ sort_buff[0] = board->md_data.r_data.i_voltage[A];
|
|
|
|
|
+ sort_buff[1] = board->md_data.r_data.i_voltage[B];
|
|
|
|
|
+#if (AC_3_3 || AC_3_4)
|
|
|
|
|
+
|
|
|
|
|
+ sort_buff[2] = board->md_data.r_data.i_voltage[C];
|
|
|
Vmax = (sort_buff[0] >= sort_buff[1]) ? sort_buff[0] :sort_buff[1];
|
|
Vmax = (sort_buff[0] >= sort_buff[1]) ? sort_buff[0] :sort_buff[1];
|
|
|
Vmax = (Vmax >= sort_buff[2]) ? Vmax : sort_buff[2];
|
|
Vmax = (Vmax >= sort_buff[2]) ? Vmax : sort_buff[2];
|
|
|
|
|
|
|
|
Vmin = (sort_buff[0] <= sort_buff[1]) ? sort_buff[0] :sort_buff[1];
|
|
Vmin = (sort_buff[0] <= sort_buff[1]) ? sort_buff[0] :sort_buff[1];
|
|
|
- Vmin = (Vmin <= sort_buff[2]) ? Vmin : sort_buff[2];
|
|
|
|
|
|
|
+ Vmin = (Vmin <= sort_buff[2]) ? Vmin : sort_buff[2];
|
|
|
|
|
+#else
|
|
|
|
|
+
|
|
|
|
|
+ Vmax = sort_buff[0] >sort_buff[1] ? sort_buff[0] : sort_buff[1];
|
|
|
|
|
+ Vmin = sort_buff[0] >sort_buff[1] ? sort_buff[1] : sort_buff[2];
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+#endif
|
|
|
if((Vmin < AC3PPDU_Lack_Voltage) && (Vmax != 0) && (Vmax > (AC3PPDU_Lack_Voltage*2)))
|
|
if((Vmin < AC3PPDU_Lack_Voltage) && (Vmax != 0) && (Vmax > (AC3PPDU_Lack_Voltage*2)))
|
|
|
{
|
|
{
|
|
|
uint32_t v_mid = AC3PPDU_Lack_Voltage *2;
|
|
uint32_t v_mid = AC3PPDU_Lack_Voltage *2;
|
|
|
count ++;
|
|
count ++;
|
|
|
if(count == 2)
|
|
if(count == 2)
|
|
|
{
|
|
{
|
|
|
- if(board->md_data.r_data.i_voltage[0] < v_mid)
|
|
|
|
|
|
|
+ if(board->md_data.r_data.i_voltage[A] < v_mid)
|
|
|
{
|
|
{
|
|
|
board->md_data.r_data.Lack_A = WANNING_SET;
|
|
board->md_data.r_data.Lack_A = WANNING_SET;
|
|
|
}
|
|
}
|
|
|
- if(board->md_data.r_data.i_voltage[1] < v_mid)
|
|
|
|
|
|
|
+ if(board->md_data.r_data.i_voltage[B] < v_mid)
|
|
|
{
|
|
{
|
|
|
board->md_data.r_data.Lack_B = WANNING_SET;
|
|
board->md_data.r_data.Lack_B = WANNING_SET;
|
|
|
}
|
|
}
|
|
|
- if(board->md_data.r_data.i_voltage[2] < v_mid)
|
|
|
|
|
|
|
+#if(AC_3_3 || AC_3_4)
|
|
|
|
|
+ if(board->md_data.r_data.i_voltage[C] < v_mid)
|
|
|
{
|
|
{
|
|
|
board->md_data.r_data.Lack_C = WANNING_SET;
|
|
board->md_data.r_data.Lack_C = WANNING_SET;
|
|
|
}
|
|
}
|
|
|
|
|
+#endif
|
|
|
count = 0;
|
|
count = 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -128,51 +217,40 @@ static void check_wanning(uint8_t in_out,uint8_t channel)
|
|
|
{
|
|
{
|
|
|
board->md_data.r_data.Lack_A = WANNING_UNSET;
|
|
board->md_data.r_data.Lack_A = WANNING_UNSET;
|
|
|
board->md_data.r_data.Lack_B = WANNING_UNSET;
|
|
board->md_data.r_data.Lack_B = WANNING_UNSET;
|
|
|
|
|
+#if(AC_3_3 || AC_3_4)
|
|
|
board->md_data.r_data.Lack_C = WANNING_UNSET;
|
|
board->md_data.r_data.Lack_C = WANNING_UNSET;
|
|
|
|
|
+#endif
|
|
|
count = 0;
|
|
count = 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- board->md_data.r_data.i_voltage[A] = board->md_data.r_data.output[A].voltage;
|
|
|
|
|
- board->md_data.r_data.i_voltage[B] = board->md_data.r_data.output[B].voltage;
|
|
|
|
|
- board->md_data.r_data.i_voltage[C] = board->md_data.r_data.output[C].voltage;
|
|
|
|
|
-
|
|
|
|
|
- board->md_data.r_data.i_current[A] = board->md_data.r_data.output[A].current;
|
|
|
|
|
- board->md_data.r_data.i_current[B] = board->md_data.r_data.output[B].current;
|
|
|
|
|
- board->md_data.r_data.i_current[C] = board->md_data.r_data.output[C].current;
|
|
|
|
|
|
|
|
|
|
- board->md_data.r_data.i_power[A] = board->md_data.r_data.output[A].power;
|
|
|
|
|
- board->md_data.r_data.i_power[B] = board->md_data.r_data.output[B].power;
|
|
|
|
|
- board->md_data.r_data.i_power[C] = board->md_data.r_data.output[C].power;
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- board->md_data.r_data.i_consumer[A] = board->md_data.r_data.output[A].consumer;
|
|
|
|
|
- board->md_data.r_data.i_consumer[B] = board->md_data.r_data.output[B].consumer;
|
|
|
|
|
- board->md_data.r_data.i_consumer[C] = board->md_data.r_data.output[C].consumer;
|
|
|
|
|
|
|
|
|
|
board->md_data.r_data.w_input.v_A_up = (board->md_data.r_data.i_voltage[A] > board->md_data.rw_data.i_V_max) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.v_A_up = (board->md_data.r_data.i_voltage[A] > board->md_data.rw_data.i_V_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
board->md_data.r_data.w_input.v_B_up = (board->md_data.r_data.i_voltage[B] > board->md_data.rw_data.i_V_max) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.v_B_up = (board->md_data.r_data.i_voltage[B] > board->md_data.rw_data.i_V_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
- board->md_data.r_data.w_input.v_C_up = (board->md_data.r_data.i_voltage[C] > board->md_data.rw_data.i_V_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
|
|
-
|
|
|
|
|
board->md_data.r_data.w_input.v_A_low = (board->md_data.r_data.i_voltage[A] < board->md_data.rw_data.i_V_min) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.v_A_low = (board->md_data.r_data.i_voltage[A] < board->md_data.rw_data.i_V_min) ? WANNING_SET : WANNING_UNSET;
|
|
|
board->md_data.r_data.w_input.v_B_low = (board->md_data.r_data.i_voltage[B] < board->md_data.rw_data.i_V_min) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.v_B_low = (board->md_data.r_data.i_voltage[B] < board->md_data.rw_data.i_V_min) ? WANNING_SET : WANNING_UNSET;
|
|
|
- board->md_data.r_data.w_input.v_C_low = (board->md_data.r_data.i_voltage[C] < board->md_data.rw_data.i_V_min) ? WANNING_SET : WANNING_UNSET;
|
|
|
|
|
-
|
|
|
|
|
board->md_data.r_data.w_input.i_A_up = (board->md_data.r_data.i_current[A] > board->md_data.rw_data.i_I_max) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.i_A_up = (board->md_data.r_data.i_current[A] > board->md_data.rw_data.i_I_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
board->md_data.r_data.w_input.i_B_up = (board->md_data.r_data.i_current[B] > board->md_data.rw_data.i_I_max) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.i_B_up = (board->md_data.r_data.i_current[B] > board->md_data.rw_data.i_I_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
- board->md_data.r_data.w_input.i_C_up = (board->md_data.r_data.i_current[C] > board->md_data.rw_data.i_I_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
|
|
-
|
|
|
|
|
board->md_data.r_data.w_input.p_A_up = (board->md_data.r_data.i_power[A] > board->md_data.rw_data.i_P_max) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.p_A_up = (board->md_data.r_data.i_power[A] > board->md_data.rw_data.i_P_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
board->md_data.r_data.w_input.p_B_up = (board->md_data.r_data.i_power[B] > board->md_data.rw_data.i_P_max) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.p_B_up = (board->md_data.r_data.i_power[B] > board->md_data.rw_data.i_P_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
- board->md_data.r_data.w_input.p_C_up = (board->md_data.r_data.i_power[C] > board->md_data.rw_data.i_P_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
|
|
-
|
|
|
|
|
board->md_data.r_data.w_input.c_A_up = (board->md_data.r_data.i_consumer[A] > board->md_data.rw_data.i_C_max) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.c_A_up = (board->md_data.r_data.i_consumer[A] > board->md_data.rw_data.i_C_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
board->md_data.r_data.w_input.c_B_up = (board->md_data.r_data.i_consumer[B] > board->md_data.rw_data.i_C_max) ? WANNING_SET : WANNING_UNSET;
|
|
board->md_data.r_data.w_input.c_B_up = (board->md_data.r_data.i_consumer[B] > board->md_data.rw_data.i_C_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
- board->md_data.r_data.w_input.c_C_up = (board->md_data.r_data.i_consumer[C] > board->md_data.rw_data.i_C_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
|
|
-
|
|
|
|
|
board->md_data.r_data.w_input.lack_A = board->md_data.r_data.Lack_A;
|
|
board->md_data.r_data.w_input.lack_A = board->md_data.r_data.Lack_A;
|
|
|
board->md_data.r_data.w_input.lack_B = board->md_data.r_data.Lack_B;
|
|
board->md_data.r_data.w_input.lack_B = board->md_data.r_data.Lack_B;
|
|
|
|
|
+
|
|
|
|
|
+#if(AC_3_3 || AC_3_4)
|
|
|
|
|
+ board->md_data.r_data.w_input.v_C_up = (board->md_data.r_data.i_voltage[C] > board->md_data.rw_data.i_V_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
|
|
+ board->md_data.r_data.w_input.v_C_low = (board->md_data.r_data.i_voltage[C] < board->md_data.rw_data.i_V_min) ? WANNING_SET : WANNING_UNSET;
|
|
|
|
|
+ board->md_data.r_data.w_input.i_C_up = (board->md_data.r_data.i_current[C] > board->md_data.rw_data.i_I_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
|
|
+ board->md_data.r_data.w_input.p_C_up = (board->md_data.r_data.i_power[C] > board->md_data.rw_data.i_P_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
|
|
+ board->md_data.r_data.w_input.c_C_up = (board->md_data.r_data.i_consumer[C] > board->md_data.rw_data.i_C_max) ? WANNING_SET : WANNING_UNSET;
|
|
|
board->md_data.r_data.w_input.lack_C = board->md_data.r_data.Lack_C;
|
|
board->md_data.r_data.w_input.lack_C = board->md_data.r_data.Lack_C;
|
|
|
-#endif
|
|
|
|
|
|
|
+#endif
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}else
|
|
}else
|
|
|
{
|
|
{
|
|
|
if(channel < RelaySlaveChaNum)
|
|
if(channel < RelaySlaveChaNum)
|
|
@@ -299,7 +377,35 @@ static void opt_over_func(uint8_t channel)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
#endif
|
|
#endif
|
|
|
-
|
|
|
|
|
|
|
+#else
|
|
|
|
|
+ for(int i = 0; i < PT_SUB_COUNT ;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(board->md_data.rw_data.channel_ctrl[i ] == 0 && board->md_data.rw_data.channel_ctrl[i + PT_SUB_COUNT] == 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(board->over_func[i] || board->over_func[i+PT_SUB_COUNT])
|
|
|
|
|
+ {
|
|
|
|
|
+ board->over_func[i] = board->over_func[i+PT_SUB_COUNT] = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ async_data da = {0};
|
|
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
|
|
+ for(int i = 0; i < RelaySlaveChaNum ;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(board->over_func[i])
|
|
|
|
|
+ {
|
|
|
|
|
+ board->over_func[i] = 0;
|
|
|
|
|
+ if(board->md_data.r_data.status[i] == RELAY_OPEN)
|
|
|
|
|
+ {
|
|
|
|
|
+ da.channel = i;
|
|
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
|
|
+ da.reg = &board->relay_staging_staus[i];
|
|
|
|
|
+ set_relay_sta_async(&da);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|