Была путаница с углом альфа.
Он пидом считается наоборот. 0 - ничего не подает - 1 полностью открываем
This commit is contained in:
@@ -59,13 +59,16 @@ void Angle_PID(Angle_Handle_t *hangle, float setpoint, float measurement)
|
||||
if(assert_upp(hangle))
|
||||
return;
|
||||
|
||||
|
||||
/* Ошибка регулирования = уставка - измеренное */
|
||||
float err = setpoint - measurement;
|
||||
|
||||
/* Вычисляем выход PID */
|
||||
float angle = arm_pid_f32(&hangle->pid, err); // делта подаём как ошибку
|
||||
/* ПИД регулирование */
|
||||
float reverse_angle = arm_pid_f32(&hangle->pid, err); // 0 - открыть максимально поздно, 1 - открыть макситмально рано
|
||||
|
||||
/* Ограничиваем диапазон и сохраняем в alpha */
|
||||
if(angle > hangle->Config.AngleMax) angle = hangle->Config.AngleMax;
|
||||
float angle = hangle->Config.AngleMax - reverse_angle;
|
||||
if (angle > hangle->Config.AngleMax) angle = hangle->Config.AngleMax;
|
||||
if(angle < hangle->Config.AngleMin) angle = hangle->Config.AngleMin;
|
||||
|
||||
Angle_SetAngle(hangle, angle);
|
||||
|
||||
@@ -129,7 +129,7 @@ void UPP_Control_InternalParams(void)
|
||||
// Обновление регулятора угла открытия
|
||||
if(alpha_update)
|
||||
{
|
||||
Angle_SetRange(&upp.hangle, angle_max, angle_max);
|
||||
Angle_SetRange(&upp.hangle, angle_min, angle_max);
|
||||
Angle_PID_Init(&upp.hangle, angle_pid_kp, angle_pid_ki, angle_pid_kd);
|
||||
}
|
||||
// Обновление АЦП конфигов
|
||||
|
||||
Reference in New Issue
Block a user