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

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

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

Формула для вычисления управляющего воздействия:

\(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(), (см. раздел Руководство по программированию).

Для того, чтобы результат работы ПИД регулятора не был зависим от двигателя, датчика обратной связи и текущего напряжения питания, производится нормировка полученного значения по следующей формуле:

\(DC (t) = \frac{U(t) \cdot U_{nom}}{U_{supp}(t) \cdot IPS}\) , где:

\(DC (t)\) - фактор заполнения ШИМ

\(U_{nom}\) - номинальное(максимальное) напряжение питания двигателя, (см. раздел Ограничители на двигателях).

\(U_{supp}(t)\) - текущее напряжение питания

\(IPS\) - разрешение датчика обратной связи в отсчетах/оборот

Данный подход позволяет менять двигатель, датчик обратной связи и источник питания без перенастройки ПИД регулятора.

Предупреждение

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

4.2.8.2. Особенности работы алгоритма

4.2.8.2.1. Коэффициенты ПИД регулятора

Для того, чтобы оптимальные коэффициенты ПИД регулятора не выходили из диапазона [0..65535], задаваемые пользователем значения нормируются.

Для лучшего понимания работы регулятора, рассмотрим какое влияние оказывают различные составляющие.

Будем считать, что напряжение питания \(U_{supp}(t)\) постоянно и равно номинальному напряжению мотора \(U_{nom}\). При выполнении данного предположения фактор заполнения ШИМ сигнала будет равен 1 в следующих случаях:

  1. \(K_p = 1,\; K_I = 0,\; K_D = 0\) - если целевая позиция превышает реальную позицию на 256 оборотов ротора
  2. \(K_p = 0,\; K_I = 1,\; K_D = 0\) - если интеграл, приведенный в формуле выше, равен 52,5 оборотовcdotсек
  3. \(K_p = 0,\; K_I = 0,\; K_D = 1\) - если реальная скорость вращения ротора отличается правильной скорости на 96000 об/мин.

4.2.8.2.2. Попадание в целевую позицию

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

Предупреждение

Если ПИД регулятор настроен неправильно, возможно возникновение длительных колебаний около целевой позиции, хотя движение и будет считаться завершённым.

4.2.8.3. Рекомендации по настройке ПИД регулятора

При настройке ПИД регулятора следует пользоваться тремя критериями качества его работы:

  • Точность поддержания скорости - определяется средним отклонением скорости от требуемой. При этом, если во время движения скорость принимает не более 3 различных значений, можно считать, что режим поддержания скорости работает оптимальным образом. Более аккуратное поддержание требуемой скорости не представляется возможным из-за эффекта квантования значения скорости.
  • Качество попадания в целевую позицию определяется следующими критериями:
    • Время до окончательной остановки в целевой позиции.
    • Отсутствие проскока целевой позиции при подходе к ней.
    • Отсутствие нескольких переколебаний около целевой позиции перед остановкой в ней.
    • Отсутствие самопроизвольных отклонений около целевой позиции после остановки в ней.
  • Отсутствие шумов при работе. Шум увеличивается только от увеличения одного из трёх коэффициентов ПИД.

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

  1. Приступая к настройке ПИД регулятора рекомендуется отключить все ограничения работы DC двигателя, в том числе ускорение.
  2. Настройку регулятора лучше начинать с режима поддержания скорости.
  3. Настройку ПИД регулятора следует начинать с нулевых значений интегрального и дифференциального коэффициентов.
  4. Устанавливаем значение пропорционального коэффициента \(K_P \leq 10\)
  5. Устанавливаем требуемую скорость движения и начинаем движение вправо или влево вдали от концевых выключателей.
  6. Постепенно увеличиваем значение \(K_P\) и наблюдаем за графиком текущей скорости. Таким образом получаем оптимальное значение \(K_P\) при котором скорость движения поддерживается наилучшим образом и время выхода на неё перестаёт заметно уменьшаться с увеличением \(K_P\). При этом следует обращать внимание на возможный рост шума.
  7. После настройки значения \(K_I\) стоит приступить к настройке значения \(K_I\). Интегральный коэффициент ПИД регулятора в большей степени влияет на процесс попадания в целевую позицию.
  8. Устанавливаем значение интегрального коэффициента \(K_I \leq 10\) и приступаем к движениям к позиции. Удобнее всего использовать команду смещения на заданное расстояние.
  9. Лучше всего, чтобы при движении к позиции двигатель успевал разогнаться хотя бы до \(20\%\) от требуемой скорости.
  10. Увеличение значения \(K_I\) приводит к более быстрой остановке в целевой позиции.
  11. Постепенно увеличивая значение \(K_I\) добиваемся быстрого попадания в целевую позицию. Увеличение коэффициента следует прекратить, когда заметно снизится качество попадания в позицию (переколебания, осцилляции) или вырастут шумы. При этом, проскок позиции будет наблюдаться всё равно.
  12. Для улучшения качества попадания в позицию понадобится изменение \(K_P\) в большую или меньшую сторону в зависимости от того где переколебаний меньше.
  13. После подстройки \(K_P\) стоит проверить качество поддержания постоянной скорости и уровень шумов. При неудовлетворительных показателях качества коэффициенты подстраиваются в направлении предыдущих значений.
  14. После настройки коэффициентов \(K_I\) и \(K_P\) можно приступить к настройке коэффициента \(K_D\).
  15. Настройку коэффициента \(K_D\) лучше начинать в режиме поддержания скорости, проверяя затем остальные параметры качества.
  16. Коэффициент \(K_D\) увеличивается пока заметно уменьшение колебаний скорости около требуемого значения.
  17. В случае наличия проскока позиции коэффициент \(K_D\) увеличивают. Однако дальнейшее увеличение приводит к колебанием около целевой позиции. Необходимо соблюсти баланс между скоростью попадания и отсутствием колебаний.

Если планируется работа с включенным ускорением, то его необходимо включить. При этом может возникнуть проскакивание целевой позиции. Для компенсации этого эффекта необходимо увеличение значения \(K_I\).

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

Примечание

Не рекомендуется одновременно изменять более одного коэффициента при настройке ПИД регулятора.

Важно

ВАЖНО. Крайне не рекомендуется устанавливать сразу большие значения коэффициентов ПИД регулятора или резко их изменять. Это может привести к самовозбуждению колебаний скорости на вашем двигателе и привести к поломке.