Дискретный пид регулятор: AVR221: Дискретный ПИД-регулятор — chipenable.ru
|Содержание
AVR221: Дискретный ПИД-регулятор — chipenable.ru
• Простой дискретный алгоритм ПИД регулятора
• Поддерживается всеми микроконтроллерами AVR
• ПИД функция использует 534 байта flash памяти и 877 циклов процессора (IAR — low size оптимизация)
Это руководство описывает простую реализацию дискретного пропорционально-интегрально-дифференциального (ПИД) контроллера.
При работе с приложениями, где выходной сигнал системы должен изменяться в соответствии с опорным значением, требуется алгоритм управления. Примерами таких приложений являются блок управления двигателем, блок управления температурой, давлением, расходом жидкости, скорости, силы или других переменных. ПИД-регулятор может быть использован для управления любой измеряемой переменной.
В течение долгого времени в области управления использовались многие решения, но ПИД-регуляторы могут стать «промышленным стандартом» из-за своей простоты и хорошей производительности.
Для получения дополнительной информации о ПИД-регуляторах и их применении читатель должен обратиться к другим источникам, например, PID Controllers by K. J. Astrom & T. Hagglund (1995)
Рисунок 1-1. Типичные отклик ПИД-регулятора на ступенчатое изменение опорного сигнала
На рисунке 2-1 показана схема системы с ПИД-регулятором. ПИД-регулятор сравнивает измеренное значение процесса Y с заданным опорным значением Y0. Затем разница, или ошибка, E, обрабатывается для расчета нового входного процесса U. Этот новый входной процесс будет пытаться приблизить значение измеряемого процесса к заданному значению.
Альтернативой системе управления с замкнутым контуром, является система управления с открытым контуром. Открытый контур управления (без обратной связи) во многих случаях не является удовлетворительным, и его применение часто невозможно из-за свойств системы.
Рисунок 2-1. Управляющая система с замкнутым контуром на основе ПИД-регулятора
В отличие от простых алгоритмов управления, ПИД-регулятор способен управлять процессом, основываясь на его истории и скорости изменения. Это дает более точный и стабильный метод управления.
Основная идея в том, что контроллер получает информацию о состоянии системы с помощью датчика. Затем вычитает измеренное значение из опорного для вычисления ошибки. Ошибка будет обрабатываться тремя путями: обрабатываться в настоящем времени пропорциональной составляющей, возвращаться в прошлое, используя интегральную составляющую, и предвидеть будущее, через дифференциальную составляющую.
Рисунок 2-2 показывает схемное решение ПИД-регулятора, где Тр, Ti, и Td обозначают постоянные времени пропорциональной, интегральной и дифференциальной составляющих соответственно.
Рисунок 2-2. Схема ПИД-регулятора
Пропорциональная составляющая (П) дает управляющий сигнал пропорционально вычисленной ошибке. Использование только одного пропорционального управления дает стационарную ошибку всегда, кроме случаев, когда управляющий сигнал равен нулю, а значение системного процесса равно требуемой величине. На рис. 2-3 стационарная ошибка в значении системного процесса появляется после изменения опорного сигнала (ref). Использование слишком большого П-члена даст неустойчивую систему.
Рисунок 2-3. Отклик П контроллера на ступенчатое изменение опорного сигнала
Интегральная составляющая (И) представляет собой предыдущих ошибок. Суммирование ошибки будет продолжаться до тех пор, пока значение системного процесса не станет равно нужному значению. Обычно интегральную составляющую используют вместе с пропорциональной, в так называемых ПИ-регуляторах. Использование только интегральной составляющей дает медленный отклик и часто колебательную систему. Рисунок 2-4 показывает ступенчатый отклик И и ПИ-регуляторов. Как видите отклик ПИ-регулятора не имеет стационарной ошибки, а отклик И-регулятора очень медленной.
Рисунок 2-4. Отклик И- и ПИ-контроллера на ступенчатое изменение контролируемой величины
Дифференциальная составляющая (Д) представляет собой скорость изменения ошибки. Добавление этой составляющей улучшает отклик системы на внезапное изменение ее состояния. Дифференциальная составляющая Д обычно используется с П или ПИ алгоритмами, как ПД или ПИД контроллеры. Большая дифференциальная составляющая Д обычно дает неустойчивую систему. Рисунок 2-5 показывает отклики Д и ПД- контроллера. Отклик ПД-контроллера дает быстрый рост значения процесса, чем П контроллер. Обратите внимание, что дифференциальная составляющая Д ведет себя по существу как фильтр верхних частот для сигнала ошибки и, таким образом легко делает систему нестабильной и более чувствительной к шуму.
Рисунок 2-5. Отклик Д- и ПД-контроллера на ступенчатое изменение опорного сигнала
ПИД-регулятор дает лучшую производительность, поскольку использует все составляющие вместе. Рисунок 2-6 сравнивает П, ПИ, и ПИД-регуляторы. ПИ улучшает П, удалив стационарную ошибку, и ПИД улучшает ПИ более быстрым откликом.
Рисунок 2-6. Отклик П-, ПИ- и ПИД-регулятора на ступенчатое изменение опорного сигнала
Наилучший путь найти необходимые параметры ПИД алгоритма — это использование математической модели системы. Однако часто подробного математического описания системы нет и настройки параметров ПИД-регулятора могут быть выполнены только экспериментально. Поиск параметров для ПИД-регулятора может быть сложной задачей. Здесь большое значение имеют данные о свойствах системы и различных условиях ее работы. Некоторые процессы не должны позволить перерегулирования процесса переменной от заданного значения. Другие процессы должны минимизировать потребление энергии. Также важнейшим требованием является стабильность. Процесс не должен колебаться ни при каких условиях. Кроме того, стабилизация должна наступать в течение определенного времени.
Существуют некоторые методы для настройки ПИД-регулятора. Выбор метода будет зависеть в значительной степени от того, может ли быть процесс автономным для настройки или нет. Метод Циглера-Николса это известный не автономная метод настройки. Первым шагом в этом методе является установка И и Д коэффициентов усиления в нуль, увеличивая усиление П до устойчивого и стабильного колебаний (как можно ближе). Тогда критический коэффициент усиления Кс и период колебаний Pc записывается и П, И и Д значения корректируются с использованием Таблицы 2-1.
Таблица 2-1. Расчет параметров по методу Циглера-Николса
Дальнейшая настройка параметров часто необходима для оптимизации производительности ПИД-регулятора. Читатель должен отметить, что есть системы, где ПИД-регулятор не будет работать. Такими могут быть нелинейные системы, но в целом, проблемы часто возникают с ПИД управлением, когда системы неустойчивы и влияние входного сигнала зависит от состояния системы.
Дискретный ПИД-регулятор будет считывать ошибку, вычислять и выдавать управляющий сигнал за время выборки Т. Время выборки должно быть меньше, чем наименьшая постоянная времени в системе.
В отличие от простых алгоритмов управления, ПИД-регулятор способен манипулировать управляющим сигналом на основе истории и скорости изменения измеряемого сигнала. Это дает более точный и стабильный метод управления.
На рисунке 2-2 показано схемное решение ПИД-регулятора, где Тр, Ti, и Td обозначают постоянные времени пропорциональной, интегральной, и дифференциальной составляющих соответственно.
Передаточная функция системы, изображенной на рисунке 2-2 имеет вид:
Это дает U по отношению к e в интервале времени
Аппроксимируем интегральную и диффиренциальную составляющие, чтобы получить дискретный вид
Где n является дискретным шагом времени t.
Это дает контроллер:
Где
Чтобы избежать этого изменения в значении опорного процесса делает любое нежелательное быстрое изменение на управляющем входе, контроллер улучшить основе производных срок на значений процесса только:
К этому документу прилагается рабочее приложение, реализованное на C. Полную описание исходного кода и информации о компиляции можно найти в файле «readme.html».
Рисунок 3-1. Блок-схема демонстрационного приложения
На рисунке 3-1 показана упрощенная схема демо приложения.
ПИД-регулятор использует структуру для хранения своего статуса и параметров. Эта структура инициализируется функцией main, и только указатель на него передается функциям Init_PID() и PID().
Функция PID () должна быть вызвана для каждого интервала времени T, это задается таймером, который устанавливает флаг PID_timer, когда время выборки прошло. Когда PID_timer флаг установлен, основная программа читает эталонное значение процесса и системное значение процесса, вызывается функция PID () и выводится результат на управляющий вход.
Для повышения точности p_factor, i_factor и d_factor увеличиваются в 128 раз. Результат ПИД алгоритма позже уменьшается путем деления на 128. Значение 128 используется для обеспечения оптимизации при компиляции.
Кроме того, влияние Ifactor и Dfactor будет зависеть от времени T.
Когда входной процесс, U, достигает достаточно высокого значения, он становится ограниченным. Либо внутренним числовом диапазоном ПИД-регулятора, либо выходным диапазоном контроллера или подавляется в усилителях. Это произойдет, если есть достаточно большая разница между измеряемым значением и опорным значением, как правило, это происходит потому что процесс имеет большие нарушения , чем система способна обрабатывать.
Если контроллер использует интегральную составляющую, эта ситуация может быть проблематичной. В такой ситуации интегральная составляющая будет постоянно суммироваться, но при отсутствии больших нарушений, ПИД-регулятор начнет компенсировать процесс пока интегральная сумма не вернется к норме.
Это проблему можно решить несколькими способами. В данном примере максимальная интегральная сумма ограничена и не может быть больше, чем MAX_I_TERM. Правильный размер MAX_I_TERM будет зависеть от системы.
ПИД-регулятор, представленый здесь, является упрощенным примером. Контроллер должен работать хорошо, но в некоторых приложениях может быть необходимо, чтобы контроллер был еще более надежным. Может быть необходимо добавление насыщения коррекции в интегральной составляющей, на основе пропорциональной составляющей только на значении процесса.
В расчете Ifactor и Dfactor время выборки T это часть уравнения. Если время выборки Т использоваться намного меньше или больше чем на 1 секунду, точность либо Ifactor или Dfactor будет недостаточной. Можно переписать алгоритм ПИД и масштабирования, чтобы точность интегральной и диффиренциальной составляющих сохранилась.
K. J. Astrom & T. Hagglund, 1995: PID Controllers: Theory, Design, and Tuning.
International Society for Measurement and Con.
AVR221.rar
Перевел Кирилл Владимиров по просьбе ChipEnable.Ru
| |||||||||||||
| |||||||||||||
| |||||||||||||
пропорционально-интегрально-дифференциальных (ПИД) регуляторов с дискретным временем
— MATLAB & Simulink
Пропорционально-интегрально-дифференциальные (ПИД) контроллеры с дискретным временем
Все типы объектов ПИД-регулятора, pid
, pidstd
, pid2
,
и pidstd2
могут представлять ПИД-регуляторы в
дискретное время.
Представления ПИД-регулятора с дискретным временем
ПИД-регуляторы с дискретным временем выражаются следующим образом
формулы.
Форма | Формула |
---|---|
Параллельный ( pid )3 | C=Kp+KiIF(z)+KdTf+DF(z), где:
|
Стандарт ( pidstd ) | C=Kp(1+1TiIF(z)+TdTdN+DF(z)), где:
|
2-DOF Параллельный ( pid2 ) | Связь между выходом контроллера 2-DOF u=Kp(br−y)+KiIF(z)(r−y)+KdTf+DF(z)(cr−y). В этом представлении:
|
2-DOF Standard ( pidstd2 объект) | u=Kp[(br−y)+1TiIF(z)(r−y)+TdTdN+DF(z)(cr−y)]. В этом представлении:
|
Во всех этих выражениях IF ( z )
и DF ( z ) дискретный интегратор
формулы для интегратора и фильтра производной соответственно. Использовать
свойства IFormula
и DFormula
объектов контроллера для установки ЕСЛИ ( z )
и DF ( z ). Следующий
В таблице показаны доступные формулы для IF ( z )
и DF ( z ). Т с есть
время выборки.
IFormula или DFormula | IF(z) или DF(z) | 33 ForwardEuler (по умолчанию) | ||
---|---|---|---|---|
Обратный Эйлер | Цзз-1 | |||
Трапециевидная | Ts2z+1z−1 |
Если не указать значение для IFormula
, DFormula
,
или оба, когда вы создаете объект контроллера, ForwardEuler
используется по умолчанию. Для получения дополнительной информации о настройке и изменении
формулы дискретного интегратора, см. справочные страницы для контроллера
объекты, pid
, pidstd
, pid2
,
и pidstd2
.
Создать ПИД-регулятор стандартной формы с дискретным временем
В этом примере показано, как создать дискретный
Пропорционально-интегрально-дифференциальный (ПИД) регулятор с K p = 29,5, T i = 1,13, T d 3 = 0,45 N 90 90 , и шаг расчета T с 0,1 :
C = pidstd(29.5,1.13,0.15,2.3,0.1,... 'IFormula','Trapezoidal','DFormula','BackwardEuler')
Эта команда создает модель pidstd
с IF(z)=Ts2z+1z−1 и DF(z)=Tszz−1.
Можно задать формулы дискретного интегратора для параллельной формы
контроллер таким же образом, используя pid
.
ПИ-регулятор с двумя степенями свободы с дискретным временем в стандартной форме
Open Live Script
Создайте ПИ-регулятор с двумя степенями свободы с дискретным временем в стандартной форме, используя формулу трапециевидной дискретизации. Укажите формулу, используя Имя, значение
синтаксис.
Кр = 1; Ti = 2,4; Тд = 0; N = Инф; б = 0,5; с = 0; Тс = 0,1; C2 = pidstd2(Kp,Ti,Td,N,b,c,Ts,'IFormula','Trapezoidal')
C2 = 1 Ц*(г+1) u = Kp * [(b*r-y) + ---- * -------- * (r-y)] Ti 2*(z-1) при Kp = 1, Ti = 2,4, b = 0,5, Ts = 0,1 Время выборки: 0,1 секунды Дискретный ПИ-регулятор с двумя степенями свободы в стандартной форме
Параметр Td
= 0 определяет ПИ-регулятор без производной составляющей. Как показывает дисплей, значения N
и c
не используются в этом контроллере. Дисплей также показывает, что для интегратора используется формула трапеций.
См. также
pid
| pidstd
| pid2
| pidstd2
Связанные примеры
- Пропорционально-интегрально-дифференциальные (ПИД) регуляторы
- ПИД-регуляторы с двумя степенями свободы
Подробнее о
- Что такое объекты модели?
- Сохранение и получение данных модели
У вас есть модифицированная версия этого примера. Хотите открыть этот пример со своими правками?
Вы щелкнули ссылку, соответствующую этой команде MATLAB:
Запустите команду, введя ее в командном окне MATLAB.
Веб-браузеры не поддерживают команды MATLAB.
Выберите веб-сайт
Выберите веб-сайт, чтобы получить переведенный контент, где он доступен, и увидеть местные события и предложения. В зависимости от вашего местоположения мы рекомендуем вам выбрать: .
Вы также можете выбрать веб-сайт из следующего списка:
Европа
Обратитесь в местный офис
Control Engineering — Что такое окончательное уравнение для дискретного ПИД-регулятора?
Второе уравнение — это просто первое уравнение с $K_i=0$. Таким образом, второе уравнение будет ПД-регулятором, а первое — ПИД-регулятором.
Первое уравнение можно вывести, начав с общих приближений для интеграла $i[k]$ и производной $d[k]$ членов
\begin{align}
i[k] &= i[k-1] + T_s\,\frac{e[k] + e[k-1]}{2}, \tag{1} \\
d[k] &= \frac{e[k] — e[k-1]}{T_s}. \тег{2}
\end{align}
Управляющий сигнал также может быть построен с использованием
$$
u[k] = K_p\,e[k] + K_i\,i[k] + K_d\,d[k]. \тег{3}
$$
Ваше первое уравнение можно получить, используя разность управляющего сигнала и подстановку $(1)$ и $(2)$
$$
и[к] — и[к-1] =
\left(K_p\,e[k] + K_i\left(i[k-1] + T_s\,\frac{e[k] + e[k-1]}{2}\right) + K_d\, \frac{e[k] — e[k-1]}{T_s}\right) —
\left(K_p\,e[k-1] + K_i\,i[k-1] + K_d\,\frac{e[k-1] — e[k-2]}{T_s}\right), \тег{4}
$$
а именно расширение и упрощение дает то же самое, что и ваше первое уравнение
$$
и[к] — и[к-1] =
\left(K_p + \frac{K_i\,T_s}{2} + \frac{K_d}{T_s}\right) e[k] +
\left(-K_p + \frac{K_i\,T_s}{2} — \frac{2\,K_d}{T_s}\right) e[k-1] +
\frac{K_d}{T_s} e[k-2]. \тег{5}
$$
Преимущество использования $(5)$ по сравнению с комбинацией $(1)$, $(2)$ и $(3)$ заключается в том, что $(5)$ требует меньше вычислений и памяти. Однако для отладки другая реализация может оказаться более удобной, так как $i[k]$ и $d[k]$ будут доступны напрямую. Это упростило бы, например, проверку интегрального завершения или того, остается ли производная в определенных желаемых пределах.
Однако, как упомянул Тим Вескотт, производный член от $(2)$ также может быть аппроксимирован с помощью
$$
d[k] = \frac{1 + \alpha}{T_s} (e[k] — e[k-1]) — \alpha\,d[k-1], \tag{6}
$$
с $-1\leq\alpha\leq1$. А именно, для значений, близких к нулю, величина передаточной функции, связанной с $(6)$, остается ближе к истинной производной, но фаза значительно падает на высоких частотах, а для значений, близких к единице, фаза остается ближе к 90°. но величина может сильно увеличиться на высоких частотах. Можно заметить, что $\alpha=1$ эквивалентно билинейному преобразованию. Для отрицательных значений передаточная функция выглядит как фильтр верхних частот (чистая производная, отфильтрованная фильтром нижних частот), преимущество которого заключается в том, что он не усиливает высокочастотный шум. То же самое можно было бы сделать и для интеграла, однако эффекты интеграла должны затрагивать только низкие частоты, на которые почти не влияет изменение параметра $\alpha$.