4.2.10. ПИД алгоритм для управления BLDC двигателем

4.2.10.1. Описание алгоритма

Управление BLDC двигателем осуществляется с помощью ПИД регулятора. Регулируемой величиной является координата. Для обеспечения возможности движения, сама регулируемая координата изменяется в соответствии с установленными настройками движения и поступившими командами. Изменяющуюся во времени регулируемую координату далее будем называть бегущей позицией. Управляющим сигналом регулятора является модуль вектора тока, который (вектор) удерживается перпендикулярно ротору.

\[U(t) = I + P + D = K_p \cdot E(t) + K_i\int E(t)dt + K_d\frac{dE(t)}{dt}, where:\]

\(U(t)\)- управляющее воздействие

\(E(t)\)- разница между бегущей координатой и текущей координатой двигателя

\(K_p, K_i, K_d\) - коэффициенты усиления пропорциональной, интегральной и дифференциальной составляющих регулятора, соответственно. Коэффициенты регулятора задаются с помощью соответствующего меню программы XiLab или с помощью вызова функции set_pid_settings(), (см. раздел Руководство по программированию).

ПИД-коэффициенты в алгоритме управления BLDC имеют тот же смысл, что и в управлении DC. См. влияние различных составляющих ПИД, рекомендации по настройке и замечания в главе ПИД алгоритм для управления DC двигателем.

4.2.10.2. Ручная настройка коэффициентов ПИД-регулятора

Для тонкой настройки коэффициентов ПИД-регулятора существует специальное окно программы XiLab. В окне выводится зависимость от времени скорости BLDC-двигателя и ошибки следования соответсвующей координате, вид окна показан на скриншоте ниже.

../../../_images/Oscilloscope.png

Окно настройки ПИД регулятора.

Для корректной работы двигателя нужно добиться устойчивой компенсации ошибки следования.

4.2.10.2.1. Шаги по настройке коэффициентов:

  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.\)
  2. Выставить коэффициенты, рассчитанные по формулам, нажать Apply. В главном окне XiLab нажать кнопку Zero. В поле Move to выставить 0, отправить команду Move to. Двигатель должен остановиться. Попробовать сдвинуть позицию руками, убедиться, что отклик правильный - двигатель старается вернуться в нулевую позицию (реверс энкодера настроен верно).
  3. В настройках движения, выставить маленькую скорость, нажать Apply. В главном окне начать движение в сторону. Если начинаются вибрации и срывы, нужно увеличивать дифференциальный коэффициент (Kdf), увеличивать, пока заметно уменьшение колебаний скорости около требуемого значения.
  4. Если вибрации имеют звуковые частоты (позиционер издаёт громкий звук при движении), возможно, следует уменьшить коэффициент Kd или все коэффициенты пропорционально.
  5. Интегральный коэффициент (Kif) отвечает за попадание в целевую позицию, для проверки удобно использовать команду Shift on.
  6. Для более точной настройки коэффициентов используйте окно Oscilloscope, в этом окне визуализируется ошибка следования для данных параметров движения. Чтобы открыть окно нужно нажать кнопку PID tuning.

Примечание

Функция более точной настройки коэффициентов PID доступна только в XiLab специальной версии. Для получения этого XiLab обратитесь в техническую поддежку.

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