Алгоритм ПИД-регулятора — симуляция Simulink

Алгоритм ПИД-регулирования

обзор

Блок-схема замкнутой системы управления
На рисунке выше представлена ​​блок-схема замкнутой системы управления:

Предположим, нужно отладить скорость двигателя, r(t) на приведенном выше рисунке — целевая скорость, y(t) — выходная скорость, e(t) — ошибка скорости, u(t) — выходное значение. отправляется на двигатель после расчета ПИД-регулятора, управляемым объектом является двигатель, при условии, что ПИД-регулятор C ( s ) = U ( s ) E ( s ) C (s) = \ frac {U (s)} {E ( с)}С ( с )"="Э ( с )У ( с ), передаточная функция G ( s ) = Y ( s ) U ( s ) G (s) = \ frac {Y (s)} {U (s)}г ( с )"="У ( с )и ( с ), устройством обнаружения является H(s), что является функцией обратной связи.

Тогда замкнутая передаточная функция системы имеет вид ϕ (s) = Y (s) R (s) = C (s) G (s) 1 + C (s) G (s) H (s) s) = \ frac {Y (s)} {R (s)} = \ frac {C (s) G (s)} {1 + C (s) G (s) H (s)}ф ( с )"="Р ( с )и ( с )"="1 + C ( с ) G ( с ) H ( с )С ( ы ) Г ( ы )

Форма передаточной функции ПИД: G ( s ) = U ( s ) E ( s ) = K s [ 1 + 1 T is + T ds ] G (s) = \ frac {U (s)} {E (s)} =K_s[1+\frac{1}{T_is}+T_ds]г ( с )"="Э ( с )У ( с )"="Кс[ 1+Тяс1+Тгs ]
Пример ПИД-регулятора
PID的微分方程形式:u ( t ) = K c [ e ( t ) + 1 T i ∫ 0 te ( t ) dt + T dde ( t ) dt ] + u 0 u(t) = K_c[e (t)+\frac{1}{T_i}\int_0^te(t)dt+T_d\frac{de(t)}{dt}]+u_0ты ( т )"="Кв[ е ( т )+Тя10те ( т ) д т+Тгд тд е ( т )]+ты0

式中:K c 、 T i 、 T d K_c , T_i , T_dКвТяТгЭто пропорциональное усиление, время интегрирования и дифференциальное время аналогового регулятора соответственно , а u0 — это выходной сигнал регулятора при отклонении e=0, также известный как установившаяся рабочая точка.

也可以写成u ( t ) = [ K pe ( t ) + K i ∫ 0 te ( t ) dt + K dde ( t ) dt ] + u 0 u (t) = [K_pe (t) + K_i \ int_0^ te(t)dt+K_d\frac{de(t)}{dt}]+u_0ты ( т )"="[ Кре ( т )+Кя0те ( т ) д т+Кгд тд е ( т )]+ты0

Среди них:
коэффициент пропорциональности K p = K c K_p=K_cКр"="Кв

Интегральный коэффициент K i = K c T i K_i=\frac{K_c}{T_i}Кя"="ТяКв

Дифференциальный коэффициент K d = K c T d K_d=\frac{K_c}{T_d}Кг"="ТгКв

ошибка е(т)

Для чего нужен PID

Что касается того, почему необходимо управление с обратной связью, потому что в практических приложениях нам может потребоваться, чтобы размер оставался постоянным в течение определенного периода времени, поэтому система должна постоянно получать обратную связь с выхода, чтобы контролировать размер входа. Возьмем, к примеру, контроль температуры: нагревательный стержень должен поддерживаться при температуре 30 градусов Цельсия, но из-за погодных условий может не быть возможности естественным образом нагреть его до 30 градусов Цельсия, поэтому, когда система контроля температуры получает температуру, не достигает заданной температуры, он нагревается.Увеличьте собственную мощность нагрева, чтобы нагревательный стержень достиг заданной температуры. Наоборот, если нагрев слишком сильный, система автоматически уменьшит свой вход после получения обратной связи, чтобы поддерживать постоянную температуру.
Пример замкнутой системы
Таким образом, мы
обычно
вычитаем обратную связь (измеренный выходной сигнал) управляемого объекта из нашего ожидаемого эталонного входного сигнала , затем мы можем получить значение ошибки ошибки , после получения этого значения ошибки мы можем использовать ошибку в качестве входных данных для ПИД-регулятора, конечный выходной результат управляющего входа контроллера напрямую передается на объект управления Завод

Анализ K p K_pКрРоль (при дифференциальном регулировании)

Пропорциональный член: K p × err ( t ) K_p × err (t)Кр×э р р ( т )

  • Мгновенно реагируйте на отклонение e(t) , относящееся только к текущему отклонению, и генерируйте соответствующее контрольное значение u(t).

  • Сила управляющего воздействия зависит от коэффициента пропорциональности K p K_pКр

    То есть K p K_pКрЧем больше значение , тем сильнее эффект , тем быстрее процесс и тем меньше статическое отклонение.

  • Но К п К_пКрЧем больше значение, тем легче колебаться , увеличивая перерегулирование системы и ухудшая стабильность системы.

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

Схема моделирования симулятора

K i 、 K d K_i 、 K_dКяКгКогда оба равны 0, K p K_pКрВеличина влияет на форму выходной кривой.

Поверхностный анализ K i K_iКяроль

其实K i = K c T i K_i=\frac{K_c}{T_i}Кя"="ТяКв, интегральный член: K i × ∫ err ( t ) dt K_i×\int err(t)dtКя×е р р ( т ) d т

  • Пока существует отклонение e(t), интегральное действие будет продолжать возрастать (посылка состоит в том, что регулятор не насыщен), а отклонение e(t) будет продолжать уменьшаться. 0, действие интегрального управления прекратится.
  • Интегральное управление снизит быстродействие системы .
  • Если интегральное действие слишком велико, выброс системы будет увеличиваться, и устойчивость системы будет ухудшаться.

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

Схема моделирования симулятора

Когда K p = 1, K d = 0 K_p=1, K_d=0Кр"="1 Кг"="0 часов,К и К_иКяВеличина влияет на форму выходной кривой.

Анализ K d K_dКгроль

Фактически, K d = K c T i K_d={K_c}{T_i}Кг"="КвТя, дифференциальный член: K d × derr ( t ) dt K_d × \ frac {derr (t)} {dt}Кг×д тд е р р ( т )

Дифференциация — это деривация, а деривация отражает наклон и скорость изменения, что является тенденцией Чем больше дифференциал, тем сильнее эффект дифференциала.

  • Дифференциальное звено может дать корректирующее действие заранее в соответствии с тенденцией изменения (скоростью изменения) отклонения e(t) и может скорректировать его до того, как отклонение станет большим.
  • Это помогает уменьшить перерегулирование, преодолеть удар и сделать систему более стабильной.Это ускоряет скорость отслеживания системы и сокращает время настройки.
  • Однако дифференциальное действие очень чувствительно к шуму входного сигнала и, как правило, не нуждается в дифференциации для систем с большим шумом, или же входной сигнал фильтруется перед дифференциальным .

Резюме: Всякий раз, когда происходит резкое изменение err(t)_ , генерируется большой член производной , чтобы противодействовать резкому изменению. Это как раз соответствует нашему феномену перерегулирования , потому что перерегулирование представляет собой просто резкий подъем, а затем резкое падение , и дифференциальный член должен его компенсировать.
Схема моделирования симулятора

K p = 1 、 K i = 1 K_p=1、K_i=1Кр"="1 Кя"="1 ,К д К_дКгВеличина влияет на форму выходной кривой. (Kd=1 работает хорошо)

Преобразуйте непрерывную функцию в дискретную функцию

То, что я упомянул выше, на самом деле является операцией во временной области.Внутренность микроконтроллера представляет собой цифровую систему, а цифровая система должна быть дискретной.Поэтому нам нужно непрерывный ПИД в дискретный ПИД.Преобразование интеграла в дискретный на самом деле суммирование и дифференцирование.Переход к дискретному есть как раз разность , а именно
: n − 1 ) ] U(n)=K_p*err(n)+\frac{K_pT}{T_i}*\sum err(n)+\frac{K_pT_d}{T}*[err(n)-err( п-1 )]У ( н )"="Кр*е р р ( п )+ТяКрТ*е р р ( п )+ТКрТг*[ э р р ( п )е р р ( н1 ) ]
Но поскольку T является периодической константой, формула также может быть преобразована в:
U ( n ) = K p ∗ err ( n ) + K i ∗ ∑ err ( n ) + K d ошибка ( n - 1 ) ] U (n) = K_p * ошибка (n) + K_i * \ сумма ошибка (n) + K_d * [ошибка (n) - ошибка (n-1)]У ( н )"="Кр*е р р ( п )+Кя*е р р ( п )+Кг*[ э р р ( п )е р р ( н1 ) ]

Требовать:

  1. Операция PID должна быть завершена в рамках периодической задачи (которую можно понимать как прерывание по таймеру).

  2. Период выборки и период контроля влияют на коэффициенты.

Вообще говоря, увеличение периода управления и периода дискретизации может сделать наше управление более плавным. получения данных датчика.Например, цикл выборки двигателя является циклом прерывания приема CAN.

В сочетании с официальным открытым исходным кодом

Это функция pid_calculate в pid.c, и ее значение можно легко понять, объединив формулу. Set — это ожидание, get — обратная связь, а ошибка err получается путем вычитания двух, pid→pout — пропорциональный элемент , а err прямо линейно усиливается, pid→iout — интегральный элемент , а err накапливается, pid→dout является дифференциальным элементом , и ошибка делает разницу. Наконец, эти три накладываются друг на друга, чтобы получить выходной сигнал ПИД-регулятора.

/**
  * @brief     calculate delta PID and position PID
  * @param[in] pid: control pid struct
  * @param[in] get: measure feedback value
  * @param[in] set: target value
  * @retval    pid calculate output 
  */
float pid_calculate(struct pid *pid, float get, float set)
{
    
    
  pid->get = get;
  pid->set = set;
  pid->err = set - get;
  if ((pid->param.input_max_err != 0) && (fabs(pid->err) > pid->param.input_max_err))
    return 0;

  pid->pout = pid->param.p * pid->err;
  pid->iout += pid->param.i * pid->err;
  pid->dout = pid->param.d * (pid->err - pid->last_err);

  abs_limit(&(pid->iout), pid->param.inte_limit);
  pid->out = pid->pout + pid->iout + pid->dout;
  abs_limit(&(pid->out), pid->param.max_out);

  return pid->out;
}

Схема имитации симулятора

Схема имитации симулятора

Для идентификации системы и проектирования контроллера на основе результатов идентификации системы вы можете обратиться к официальному руководству с открытым исходным кодом:

https://bbs.robomaster.com/thread-4941-1-1.html

https://bbs.robomaster.com/thread-5059-1-1.html

Понимание ПИД-регулирования в сущности:

Принцип алгоритма ПИД-регулирования (отказаться от формул и по-настоящему понять суть ПИД-регулирования) - Знать (zhihu.com)

Supongo que te gusta

Origin blog.csdn.net/dbqwcl/article/details/125711157
Recomendado
Clasificación