30 марта 2016 г.

О терминах "position PID" и "velocity PID"

Термины "position PID" и "velocity PID" не очень хороши для использования.

Я прекрасно понимаю, о чем идет речь, но эти термины не имеют никакого отношения к позиции или скорости. Только вносят путаницу.

Алгоритм "position PID" это то, что вы привыкли видеть:

Error(n)=SP(n)-PV(n)
CO(n)=Ki*Δt*integrate(Error(n))+Kp*Error(n)+(Kd/Δt)*(Error(n)-Error(n-1))

Алгоритм "velocity PID" реализован во многих DSP-шках:

K0=Ki*Δt+Kp+(Kd/Δt)
K1=-(Kp+2*Kd/Δt)
K2=Kd/Δt
CO(n)=CO(n-1)+K0*Error(n)+K1*Error(n-1)+K2*Error(n-2)


Не очень похоже на ПИД, не так ли?

Эта форма требует всего трех операций умножения и сложения - это очень эффективно. Также она не страдает от проблем с насыщением интегральной части, а самое замечательное - это возможность изменять коэффициенты на лету безо всяких рывков управляющего воздействия.

Из-за всего вышесказанного я предпочитаю называть это "инкрементальной" формой записи, потому, что вы получаете новое управляющее воздействие просто как приращение предыдущего. Алгоритм "Position PID" или "не инкрементальный ПИД" будет иметь ступеньку на выходе при изменении коэффициентов на лету.

Недостаток "Velocity PID"  - необходимость использования интегральной части и, соответственно, ее правильная настройка. Если этого не сделать "Velocity PID" вообще нормально не заработает. Поскольку слишком уж много заказчиков не способны правильно настроить интегральную часть, "Velocity PID" как правило является головной болью техподдержки. Другой недостаток - это невозможность увидеть отдельные выходы интегральной, пропорциональной и дифференциальной частей. Это может быть полезно в образовательных целях, а наблюдение за интегральной частью помогает настроить коэффициент предуправления.

Комментариев нет:

Отправить комментарий