4.2.13. ПИД алгоритм для управления BLDC двигателем¶
4.2.13.1. Описание алгоритма¶
Управление BLDC двигателем осуществляется с помощью ПИД регулятора. Регулируемой величиной является координата. Для обеспечения возможности движения, сама регулируемая координата изменяется в соответствии с установленными настройками движения и поступившими командами. Изменяющуюся во времени регулируемую координату далее будем называть бегущей позицией. Управляющим сигналом регулятора является модуль вектора тока, который (вектор) удерживается перпендикулярно ротору.
\(U(t)\)- управляющее воздействие
\(E(t)\)- разница между бегущей координатой и текущей координатой двигателя
\(K_p, K_i, K_d\) - коэффициенты усиления пропорциональной, интегральной и дифференциальной составляющих регулятора, соответственно. Коэффициенты регулятора задаются с помощью соответствующего меню программы XiLab или с помощью вызова функции set_pid_settings(), (см. раздел Руководство по программированию).
ПИД-коэффициенты в алгоритме управления BLDC имеют тот же смысл, что и в управлении DC. См. влияние различных составляющих ПИД, рекомендации по настройке и замечания в главе ПИД алгоритм для управления DC двигателем.
4.2.13.2. Ручная настройка коэффициентов ПИД-регулятора¶
Для тонкой настройки коэффициентов ПИД-регулятора существует специальное окно программы XiLab. В окне выводится зависимость от времени скорости BLDC-двигателя и ошибки следования соответсвующей координате, вид окна показан на скриншоте ниже.

Окно настройки ПИД регулятора.
Для корректной работы двигателя нужно добиться устойчивой компенсации ошибки следования.
4.2.13.2.1. Шаги по настройке коэффициентов:¶
- Для начала нужно оценить ПИД-коэффициенты. Учитывая структуру управляемой системы, их можно вычислить по упрощенным формулам. Для этого используются параметры из документации на соответствующий двигатель и позиционер.
- \(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_d = 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 обратитесь в техническую поддежку.
- После того, как коэффициенты настроены, можно их пропорционально менять, это соответствует увеличению/уменьшению массы, отклик на воздействие становится более/менее мощным. Добиться того, чтобы резкие остановки не приводили к срывам движения.