esp网页监控面板框架已成,通讯解决

This commit is contained in:
2025-10-29 00:05:05 +08:00
parent c1436f00f0
commit 3db2af8d2f
22 changed files with 13811 additions and 12266 deletions

View File

@@ -26,10 +26,12 @@ void Power_Out_Single_Init(Power_Out_t *power_out, int16 vot_channel, int16 amp_
Init_lowPass_alpha(&power_out->config.vot_filter, POWER_OUT_READ_TIME_MS / 1000.0f, 10.0f);
Init_lowPass_alpha(&power_out->config.amp_filter, POWER_OUT_READ_TIME_MS / 1000.0f, 10.0f);
Init_lowPass_alpha(&power_out->config.vot_adc_filter, POWER_OUT_READ_TIME_MS / 1000.0f, 100.0f);
power_out->config.votK[0] = votK[0];
power_out->config.votK[1] = votK[1];
power_out->config.ampK[0] = ampK[0];
power_out->config.ampK[1] = ampK[1];
memcpy(&power_out->config.votK, votK, sizeof(votK));
memcpy(&power_out->config.ampK, ampK, sizeof(ampK));
power_out->config.protect_trigger_cycles = 5;
float vot_protect_k[2] = VOT_PROTECT_K;
memcpy(&power_out->config.vot_protect_k, vot_protect_k, sizeof(vot_protect_k));
power_out->config.amp_protect_k = AMP_PROTECT_K;
power_out->config.enable_pin = enable_pin;
power_out->config.can_adjust = can_adjust;
power_out->config.vot_pwm_channel = vot_pwm_channel;
@@ -39,6 +41,8 @@ void Power_Out_Single_Init(Power_Out_t *power_out, int16 vot_channel, int16 amp_
power_out->status.power_W = 0.0f;
power_out->status.energy_J = 0.0f;
power_out->status.quantity_C = 0.0f;
power_out->status.voltage_protect_triggered = 0;
power_out->status.current_protect_triggered = 0;
memset(power_out->status.past_voltage_V, 0, sizeof(power_out->status.past_voltage_V));
memset(power_out->status.past_current_A, 0, sizeof(power_out->status.past_current_A));
@@ -75,6 +79,7 @@ void Power_Out_Init()
{
uint8 can_adjust = vot_pwm_channel_list[counter] != -1 ? 1 : 0;
Power_Out_Single_Init(&power_outs[counter], vot_channel_list[counter], amp_channel_list[counter], votK[counter], ampK[counter], enable_pin_list[counter], can_adjust, vot_pwm_channel_list[counter]);
}
}
@@ -87,6 +92,13 @@ void Power_Out_Enable(Power_Out_t *power_out, uint8 enable)
power_out->enabled = enable;
}
void Power_Out_Clear_Error_Status(Power_Out_t *power_out)
{
power_out->status.voltage_protect_triggered = 0;
power_out->status.current_protect_triggered = 0;
power_out->status.power_protect_triggered = 0;
}
void Power_Out_Set_PWM(Power_Out_t *power_out, uint32 duty_cycle)
{
if(power_out->config.can_adjust && power_out->config.vot_pwm_channel != POWER_OUT_FUNCTION_DISABLE)
@@ -123,6 +135,42 @@ void Power_Out_Single_Read(Power_Out_t *power_out)
}
power_out->status.power_W = power_out->status.voltage_V * power_out->status.current_A;
if(power_out->enabled)
{
if(power_out->status.voltage_V < power_out->config.vot_protect_k[0] * power_out->set_voltage_V || power_out->status.voltage_V > power_out->config.vot_protect_k[1] * power_out->set_voltage_V)
{
power_out->status.voltage_protect_triggered++;
}
else
{
power_out->status.voltage_protect_triggered = 0;
}
if(power_out->status.current_A > power_out->config.amp_protect_k * power_out->set_current_A)
{
power_out->status.current_protect_triggered++;
}
else
{
power_out->status.current_protect_triggered = 0;
}
if(power_out->status.power_W > power_out->max_power_W)
{
power_out->status.power_protect_triggered++;
}
else
{
power_out->status.power_protect_triggered = 0;
}
if(power_out->status.voltage_protect_triggered >= power_out->config.protect_trigger_cycles || power_out->status.current_protect_triggered >= power_out->config.protect_trigger_cycles || power_out->status.power_protect_triggered >= power_out->config.protect_trigger_cycles)
{
Power_Out_Enable(power_out, 0);
}
}
uint8 counter;
for(counter = 0; counter < 9; counter++)
{