4.2.10. ПИД алгоритм для управления BLDC двигателем¶
Описание алгоритма¶
Управление BLDC двигателем осуществляется с помощью ПИД регулятора. Регулируемой величиной является координата. Для обеспечения возможности движения, сама регулируемая координата изменяется в соответствии с установленными настройками движения и поступившими командами. Изменяющуюся во времени регулируемую координату далее будем называть бегущей позицией. Управляющим сигналом регулятора является модуль вектора тока, который (вектор) удерживается перпендикулярно ротору.
Формула для вычисления управляющего воздействия:
$ U(t) = I + P + D = K_p \cdot E(t) + K_i\int E(t)dt + K_d\frac{dE(t)}{dt} $, где:
$ U(t) $ - управляющее воздействие
$ E(t) $ - разница между бегущей координатой и текущей координатой двигателя
$ K_p, K_i, K_d $ - коэффициенты усиления пропорциональной, интегральной и дифференциальной составляющих регулятора, соответственно. Коэффициенты регулятора задаются с помощью соответствующего меню программы XiLab или с помощью вызова функции set_pid_settings(), (см. раздел Руководство по программированию).
ПИД-коэффициенты в алгоритме управления BLDC имеют тот же смысл, что и в управлении DC. См. влияние различных составляющих ПИД, рекомендации по настройке и замечания в главе ПИД алгоритм для управления DC двигателем
Ручная настройка коэффициентов ПИД-регулятора¶
Для тонкой настройки коэффициентов ПИД-регулятора существует специальное окно программы XiLab. В окне выводится зависимость от времени скорости BLDC-двигателя и ошибки следования соответсвующей координате, вид окна показан на скриншоте ниже.
Окно настроек коэффициентов ПИД-регулятора
Для корректной работы двигателя нужно добиться устойчивой компенсации ошибки следования.
Шаги по настройке коэффициентов:¶
- Для начала нужно оценить ПИД-коэффициенты. Учитывая структуру управляемой системы, их можно вычислить по упрощенным формулам. Для этого используются параметры из документации на соответствующий двигатель и позиционер.
- $ K_m $ - электромеханический коэффициент двигателя [H / A] (момент создаваемый силой тока 1 A). Может быть вычислен как отношение $ K_m = \frac{F_{n}}{I_n} $, где $ F_n $ - номинальная (максимальное) усилие создаваемое двигателем, $ I_n $ - номинальная (максимальная) сила тока.
- $ M $ - масса нагрузки (кг).
- $ \sigma = \frac{M}{K_m} $.
- $ K_p = 11500\sigma \cdot 1000 $, $ K_d = 186\sigma \cdot 1000 $, $ K_i = 12.2\sigma \cdot 1000 $.
- Выставить коэффициенты, рассчитанные по формулам, нажать Apply. В главном окне XiLab нажать кнопку Zero. В поле
Move to
выставить 0, отправить командуMove to
. Двигатель должен остановиться. Попробовать сдвинуть позицию руками, убедиться, что отклик правильный - двигатель старается вернуться в нулевую позицию (реверс энкодера настроен верно). - В настройках движения выставить маленькую скорость, нажать Apply. В главном окне начать движение в сторону. Если начинаются вибрации и срывы, нужно увеличивать дифференциальный коэффициент (Kdf), увеличивать, пока заметно уменьшение колебаний скорости около требуемого значения.
- Если вибрации имеют звуковые частоты (позиционер издаёт громкий звук при движении), возможно, следует уменьшить Kd коэффициент или все коэффициенты пропорционально
- Интегральный коэффициент (Kif) отвечает за попадание в целевую позицию, для проверки удобно использовать команду
Shift on
. - Для более точной настройки коэффициентов используйте окно Oscilloscope, в этом окне визуализируется ошибка следования для данных параметров движения. Чтобы открыть окно нужно нажать кнопку PID tuning.
Замечание. Функция более точной настройки коэффициентов PID доступна только в XiLab специальной версии. Для получения этого XiLab обратитесь в техническую поддежку.
- После того, как коэффициенты настроены, можно их пропорционально менять, это соответствует увеличению/уменьшению массы, отклик на воздействие становится более/менее мощным. Добиться того, чтобы резкие остановки не приводили к срывам движения.