Пид регулятор на микроконтроллере

Пид регулятор на микроконтроллере

Здесь приведен перевод апноута AVR221: Discrete PID controller on tinyAVR and megaAVR devices [1] (дискретный контроллер PID на микроконтроллерах серий tinyAVR и megaAVR).

Возможности описанного контроллера:

• Простой дискретный (цифровой) алгоритм PID-контроллера
• Можно реализовать на всех моделях микроконтроллеров AVR
• Функция управления PID использует 534 байта памяти программ (FLASH) и требует 877 циклов CPU (применен компилятор IAR, включена оптимизация по размеру кода)

[1 Для чего нужен PID-регулятор?]

Этот апноут описывает простую реализацию дискретного пропорционально-интегрально-дифференциального (дословный перевод Proportional-Integral-Derivative, PID) контроллера.

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

За все время использовалось много решений для управления, но в сравнении со всеми PID-контроллер получил репутацию "индустриального стандарта" из-за своей простоты и хорошего быстродействия. Чтобы получить больше информации по контроллерам PID их применению, обратитесь к другим источникам, например к книге "PID Controllers" K. J. Astrom & T. Hagglund (1995).

Рис. 1-1. Типичный отклик PID-регулятора на скачкообразное изменение входной опорной величины.

Примечание к рис. 1-1: ref — входное отслеживаемое воздействие, pi — отклик пропорционально-интегрального регулятора, p — отклик пропорционального регулятора, pid — отклик PID-регулятора.

[2 PID-регулятор]

На рис. 2-1 схематично показана система с PID-регулятором. PID-контроллер сравнивает измеренную отслеживаемую величину y с опорным значение y0. Разность (или ошибка) e обрабатывается для вычисления нового входного значения для системы u. Это входное значение пытается подстроить измеряемую отслеживаемую величину так, чтобы она вернулась в нужное значение, соответствующее опорному. Получается схема с замкнутым циклом управления (управление с обратной связью).

Альтернативой схеме управления с замкнутой петлей управления является схема открытого цикла управления (без обратной связи). Такая схема проще, но во многих случаях является неудовлетворительной, и её часто невозможно реализовать из-за свойств самой системы. Путем добавления обратной связи по входу системы можно улучшить качество регулирования и даже быстродействие.

Рис. 2-1. Управление с обратной связью, с применением PID-регулятора.

Кроме того, в отличие от простых алгоритмов управления, PID-контроллер может управлять входным параметром u, основываясь на истории и скорости изменения опорного сигнала y0. Это дает повышение точности и стабильности в методе управления (см. рис. 1-1, где видно, что PID-регулятор дает меньше колебаний при отслеживании выходной величины).

Основная идея состоит в том, контроллер читает состояние какого-то сенсора. Затем он вычитает измеренное значение из опорного, и из этого получается значение ошибки. Эта ошибка может быть обработана тремя способами:

• отслеживание текущего значения, используя пропорциональное регулирование
• восстановление на основе предыдущего значения, используя интегрирование
• предсказывая будущее значение на основе дифференцирования.

На рис. 2-2 показана более подробная схема PID-контроллера, где Tp, Ti, и Td обозначают константы времени для пропорционального, интегрального и дифференциального условий соответственно.

Рис. 2-2. Схема внутреннего устройства PID-регулятора.

2.1 Пропорциональная составляющая PID-регулятора

Пропорциональное условие (P) подает на вход системы значение, пропорциональное ошибке. Использование только P-управления дает постоянную ошибку во всех случаях кроме тех, когда управляющий вход системы равен 0, и выходное отслеживаемое значение равно требуемому. На рисунке 2-3 статическая ошибка появляется после того, как изменилось требуемое (опорное, reference, ref) значение. Использование слишком большого коэффициента P-регулирования (Tp) в PID-регуляторе делает систему управления нестабильной.

Рис. 2-3. Отклик P-регулятора на скачкообразное изменение опорного параметра.

2.2 Интегральная составляющая PID-регулятора

Интегральное условие (I) выдает на вход системы значение управления, зависящее от суммы предыдущих ошибок. Суммирование ошибок будет продолжаться, пока выходное обрабатываемое системой значение не станет равным требуемому, и когда опорное значение стабильно, то статическая ошибка будет нулевой. Чаще всего составляющая регулирования I нормально используется вместе с составляющей регулирования P, в результате чего получается PI-контроллер. Использование только I-составляющей приведет к медленному регулированию и часто к самовозбуждению системы. На рис. 2-4 показаны отклики системы с применением I и PI управления. Как можно видеть, отклик PI-контроллера не имеет статической ошибки, и отклик I-контроллера очень медленный.

Рис. 2-4. Отклик I- и PI-регуляторов на скачкообразное изменение опорного параметра.

2.3 Дифференциальная составляющая PID-регулятора

Дифференциальное условие (D) добавляет к входному сигналу системы (u) информацию о скорости изменения опорного сигнала (насколько быстро изменяется ошибка e). Это улучшает отклик на быстрое случайное изменение в состоянии системы или в опорном отслеживаемом значении. Составляющая D обычно используется совместно с P или PI, в результате чего получаются PD- или PID-контроллер. Слишком большая составляющая D обычно приводит к нестабильности системы. Рис. 2-5 показывает результаты работы D-контроллера и PD-контроллера. Ответ от PD-контроллера дает ускоренное возрастание обрабатываемого системой значения по сравнению с P-контроллером. Имейте в виду, что D-составляющая по сути работает как фильтр высокой частоты (ФВЧ), стоящий на сигнале ошибки, и этот факт очень просто может привести к нестабильности системы и делает её более чувствительной к шуму и помехам.

Рис. 2-5. Отклик D- и PD-регуляторов на скачкообразное изменение опорного параметра.

Если объединить все три составляющие управления, то получится PID-контроллер, который обычно дает наилучшие результаты в управлении. Рис. 1-1 сравнивает между собой контроллеры P, PI и PID. PI улучшает P удалением статической ошибки, и PID улучшает PI ускорением ответа и отсутствием при этом перерегулирования.

2.4 Настройка параметров PID-регулятора

Самый лучший способ найти нужные параметры PID — получить их из математической модели системы, параметры могут быть вычислены по необходимому отклику системы. Часто полное математическое описание системы отсутствует, и приходится экспериментально подбирать параметры PID-регулятора. Нахождение составляющих PID-регулятора может быть сложной задачей. Важно хорошо знать систему и её поведение в различных условиях. Оптимальное поведение в ответ на изменение условий или изменение опорной заданной величины зависит от конкретного приложения. Некоторые процессы не должны допускать перерегулирования (выбросов) в ответ на изменение входной отслеживаемой величины. Другие процессы должны минимизировать расход энергии на пути достижения отслеживаемой величины. И почти всегда главным требованием является стабильность системы. Процесс управления не должен допускать самовозбуждения для любого варианта текущих условий регулирования или любые изменения входной отслеживаемой величины. Кроме того, эффект стабилизации должен укладываться в заранее заданные ограничения по времени.

Есть несколько методов для настройки петли регулирования PID. Выбор метода зависит от того, может ли процесс регулирования быть отключенным для настройки, или нет. Метод Ziegler-Nichols хорошо известен как стратегия настройки, не требующая отключения системы. На первом шаге этой методики устанавливают усиление I и D составляющих в 0, увеличивают усиление P, пока не выходе не будут получены установившиеся и стабильные колебания (при этом выходной сигнал должен как можно меньше отличаться от опорного). Затем записывают критическое усиление Kc и период генерации Pc, и значения P, I и D подстраиваются по таблице 2-1.

Читайте также:  Космос это вакуум или нет

Таблица 2-1. Параметры методики Ziegler-Nichols для настройки PID.

контроллер Kp Ti Td
P 0.5 * Kc
PD 0.65 * Kc 0.12 * Pc
PI 0.45 * Kc 0.85 * Pc
PID 0.65 * Kc 0.5 * Pc 0.12 * Pc

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

Необходимо иметь в виду, что есть системы, для которых PID-регулятор не очень хорош, или системы, где он будет нормально работать только в малом диапазоне имеющихся состояний системы. Это нелинейные системы, но основная проблема с PID-регулятором проявляется с нестабильными системами, и когда эффект от входного воздействия зависит от состояния системы.

2.5 Дискретный PID-регулятор

Дискретный (цифровой) PID-регулятор будет читать ошибку, делать вычисления и выдавать выходное значение с заданными интервалами времени, с периодом выборки T. Время выборки T должно быть гарантированно меньше, чем самый маленький интервал времени, который может иметь в системе (по техзаданию) важное значение.

2.5.1 Основа алгоритма PID-регулятора

В отличие от простых алгоритмов управления, PID-регулятор может манипулировать управляющим сигналом, основываясь на истории и скорости изменения отслеживаемого сигнала. Это дает метод более точного и стабильного управления.

На рис. 2-2 показана схема PID-регулятора, где Tp, Ti и Tp обозначают константы времени для составляющих пропорционального, интегрального и дифференциального регулирования соответственно.

Передаточная функция системы на рис. 2-2:

Это дает зависимость u от e по оси времени:

Аппроксимация составляющих I и D:

Здесь n — дискретный шаг времени t. Это дает выражение для регулятора:

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

[3 Реализация PID-регулятора]

Этот апноут поставляется с готовой реализацией PID-регулятора на языке C [2]. Полную документацию по исходному коду можно найти, если открыть файл readme.html, который имеется в пакете архива.

Рис. 3-1. Блок-схема демонстрационного приложения PID-регулятора.

На рис. 3-1 показана упрощенная схема демо-приложения [2]. PID-регулятор использует структуру (struct) для сохранения своего состояния и параметров. Эта структура инициализируется в теле функции main, и функциям Init_PID() и PID() передается только указатель на структуру.

Функция PID() должна быть вызвана на каждом интервале времени T. Это реализовано с помощью таймера, который устанавливает флаг PID_timer, когда проходит интервал времени T. Когда флаг PID_timer установлен, подпрограмма в цикле main читает требуемое значение процесса (опорное отслеживаемое значение setPoint) и текущее значение процесса системы, вызывается PID(), и выводит результат на управляющий вход.

Чтобы увеличить точность, множители p_factor, i_factor и d_factor смасштабированы с коэффициентом 1:128. Результат алгоритма PID затем масштабируется обратно делением на 128. Число 128 выбрано для того, чтобы задействовать оптимизацию компилятора (умножение на 128 заменяется сдвигом на 1 бит младшего байта и копированием результата в старший байт).

В дальнейшем эффект от множителей IFactor и DFactor будут зависеть от интервала выборки T.

3.1 Свертка для интеграла

Входное значение регулирования u иногда достигает некоторого предела. Предел связан либо с ограниченным числовым диапазоном переменных PID-регулятора (в коде могут использоваться целочисленные переменные ограниченной разрядности), либо с выходным диапазоном регулятора, либо насыщением (ограничением сигнала) в усилителях, либо с вычислениями в алгоритме. Это произойдет, если имеется слишком большое различие между измеренной величиной и опорным сигналом. Причина может быть в больших возмущениях / перегрузке, которые система должна обработать.

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

Проблему целочисленного переполнения можно обойти несколькими способами. В этой реализации максимальная сумма в интеграле ограничена, но ей не позволено превысить значение MAX_I_TERM. Корректное значение MAX_I_TERM будет зависеть от самой системы и используемого времени выборки T.

Прим. переводчика: похожие проблемы есть и в алгоритмах ЦОС (цифровая обработка сигналов, DSP), когда применяется целочисленная арифметика для ускорения работы [3]. другие методы устранения проблемы переполнения — повышение разрядности переменных в вычислениях, и даже переход на арифметику с плавающей запятой. К сожалению, это часто связано с увеличением объема вычислений и усложнением оптимизации и разработки, так что имеет ограниченную область применения. В любом случае для вычислений старайтесь задействовать аппаратные ресурсы ядра AVR [4].

[4 Дополнительные замечания]

Представленный PID-регулятор является упрощенным примером. Регулятор должен хорошо работать, однако может потребоваться улучшение, связанным с конкретным применением (к примеру, устранение переполнений и/или неточностей в регулировании). Можно добавить коррекцию (устранение) насыщения в I-составляющей за счет P-составляющей, если это позволяют условия обработки регулируемой величины.

В вычисление множителей IFactor и DFactor время выборки T является частью выражения. Если T выбрано слишком маленьким, или сделано больше 1 секунды, то будет нарушена точность вычисления либо множителя IFactor, либо множителя DFactor. Примите решение по доработке алгоритма PID при масштабировании, чтобы сохранить точность вычисления I-составляющией (интеграл) и D-составляющей (производная).

Допустим, у нас есть некоторый объект, который приводится в движение электродвигателем, и мы хотим управлять скоростью движения этого объекта. В радиоуправляемых моделях скоростью вращения двигателя управляет специальное устройство ESC. Внутреннее устройство последнего темы данной статьи не касается, поэтому будем считать двигатель вместе с регулятором неким «черным ящиком», управляемым ШИМ-сигналом. Таким образом, длина импульса 1000мкс соответствует нулевой мощности на валу, а 2000мкс – максимальной. С системы радиоуправления приходит как раз такой сигнал и в простейшем случае нам никакой ПИД-регулятор и не нужен. А вот если наш объект(например, квадрокоптер) управляется несколькими двигателями и результирующее движение создается разностью мощностей на них? В этом случае появляется вопрос: какой сигнал надо передать каждому из двигателей, чтоб получить желаемый вектор перемещения? Можно конечно рассчитывать мощность пропорционально исходя из конструкции аппарата. Но при этом наш объект слушаться нас будет очень плохо. Во-первых, двигатель не передаст мощность на вал моментально – ввиду инерции мы получим некую кривую разгона/торможения. Во-вторых, наш объект так же обладает инерцией и не изменит свою скорость мгновенно. Т.е. между изменением управляющего сигнала и реальным изменением движения объекта будет некоторый интервал времени. И в-третьих, на наш объект действуют различные внешние силы, которые необходимо компенсировать.
Первое, что нам нужно для решения такой задачи – это обратная связь. Т.е. мы должны знать реальное состояние/положение объекта в пространстве. Эта тема обсуждалась ранее. Складывая эти векторы, получим результирующий вектор. Из него уже, зная алгоритм управления объектом и коэффициент пропорционального усиления, легко получить необходимый сигнал для каждого двигателя. Но до конца это проблему не решит. При малом коэффициенте достижения результата придется ждать слишком долго, а при большом – наш объект будет совершать колебания во все стороны около нужного нам вектора. При этом поведение объекта в целом будет непредсказуемым. Виной тому инерция.

Читайте также:  Неверный телефон или пароль

Программная реализация

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

Здесь Т – время дискретизации, а E(n) = X(n) — X0(n) – т.е. рассогласование между текущим и требуемым значением.
Использование этой формулы потребует хранения интеграла за большой период времени и «дорогостоящих» операций с плавающей точкой. И для оптимизации расчетов обычно переходят к рекуррентной формуле:

Она позволяет существенно сократить нагрузку на вычислительные ресурсы микроконтроллера.
В статье «Корректная реализация разностной схемы ПИД регулятора» очень хорошо описаны основные «грабли» при программной реализации этой формулы. Здесь опишу лишь кратко выводы:
1. Значение U(n) нельзя ограничивать. Ограничение должно накладываться при формировании управляющего сигнала двигателю в последний момент.
2. Необходимо соблюдать разрядность переменных и не допускать или корректно обрабатывать переполнение при вычислении промежуточных результатов.
3. Правильная инициализация разностной схемы: обнулить вообще всё. То есть
X(0) = 0, X0(0) = 0. U(0) = 0. E(0)=X(0)-X0(0)=0.
4. Если U(n) было ограничено, то регулятор необходимо заново проинициализировать как только пропорциональная часть приблизится к нулю.
5. При реализации необходимо удостовериться, что данные во всех переменных имеют правильную размерность.
6. Необходимо контролировать период вычислений. Все итерации цикла должны быть одной длины. Учитывая необходимость получения информации с датчиков, в некоторых случаях бывает полезным разделить итерации основного цикла. Например, на четных итерациях производить считывание показаний, а на нечетных – производить расчет управляющего сигнала.

Здесь приведен перевод апноута AVR221: Discrete PID controller on tinyAVR and megaAVR devices [1] (дискретный контроллер PID на микроконтроллерах серий tinyAVR и megaAVR).

Возможности описанного контроллера:

• Простой дискретный (цифровой) алгоритм PID-контроллера
• Можно реализовать на всех моделях микроконтроллеров AVR
• Функция управления PID использует 534 байта памяти программ (FLASH) и требует 877 циклов CPU (применен компилятор IAR, включена оптимизация по размеру кода)

[1 Для чего нужен PID-регулятор?]

Этот апноут описывает простую реализацию дискретного пропорционально-интегрально-дифференциального (дословный перевод Proportional-Integral-Derivative, PID) контроллера.

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

За все время использовалось много решений для управления, но в сравнении со всеми PID-контроллер получил репутацию "индустриального стандарта" из-за своей простоты и хорошего быстродействия. Чтобы получить больше информации по контроллерам PID их применению, обратитесь к другим источникам, например к книге "PID Controllers" K. J. Astrom & T. Hagglund (1995).

Рис. 1-1. Типичный отклик PID-регулятора на скачкообразное изменение входной опорной величины.

Примечание к рис. 1-1: ref — входное отслеживаемое воздействие, pi — отклик пропорционально-интегрального регулятора, p — отклик пропорционального регулятора, pid — отклик PID-регулятора.

[2 PID-регулятор]

На рис. 2-1 схематично показана система с PID-регулятором. PID-контроллер сравнивает измеренную отслеживаемую величину y с опорным значение y0. Разность (или ошибка) e обрабатывается для вычисления нового входного значения для системы u. Это входное значение пытается подстроить измеряемую отслеживаемую величину так, чтобы она вернулась в нужное значение, соответствующее опорному. Получается схема с замкнутым циклом управления (управление с обратной связью).

Альтернативой схеме управления с замкнутой петлей управления является схема открытого цикла управления (без обратной связи). Такая схема проще, но во многих случаях является неудовлетворительной, и её часто невозможно реализовать из-за свойств самой системы. Путем добавления обратной связи по входу системы можно улучшить качество регулирования и даже быстродействие.

Рис. 2-1. Управление с обратной связью, с применением PID-регулятора.

Кроме того, в отличие от простых алгоритмов управления, PID-контроллер может управлять входным параметром u, основываясь на истории и скорости изменения опорного сигнала y0. Это дает повышение точности и стабильности в методе управления (см. рис. 1-1, где видно, что PID-регулятор дает меньше колебаний при отслеживании выходной величины).

Основная идея состоит в том, контроллер читает состояние какого-то сенсора. Затем он вычитает измеренное значение из опорного, и из этого получается значение ошибки. Эта ошибка может быть обработана тремя способами:

• отслеживание текущего значения, используя пропорциональное регулирование
• восстановление на основе предыдущего значения, используя интегрирование
• предсказывая будущее значение на основе дифференцирования.

На рис. 2-2 показана более подробная схема PID-контроллера, где Tp, Ti, и Td обозначают константы времени для пропорционального, интегрального и дифференциального условий соответственно.

Рис. 2-2. Схема внутреннего устройства PID-регулятора.

2.1 Пропорциональная составляющая PID-регулятора

Пропорциональное условие (P) подает на вход системы значение, пропорциональное ошибке. Использование только P-управления дает постоянную ошибку во всех случаях кроме тех, когда управляющий вход системы равен 0, и выходное отслеживаемое значение равно требуемому. На рисунке 2-3 статическая ошибка появляется после того, как изменилось требуемое (опорное, reference, ref) значение. Использование слишком большого коэффициента P-регулирования (Tp) в PID-регуляторе делает систему управления нестабильной.

Рис. 2-3. Отклик P-регулятора на скачкообразное изменение опорного параметра.

2.2 Интегральная составляющая PID-регулятора

Интегральное условие (I) выдает на вход системы значение управления, зависящее от суммы предыдущих ошибок. Суммирование ошибок будет продолжаться, пока выходное обрабатываемое системой значение не станет равным требуемому, и когда опорное значение стабильно, то статическая ошибка будет нулевой. Чаще всего составляющая регулирования I нормально используется вместе с составляющей регулирования P, в результате чего получается PI-контроллер. Использование только I-составляющей приведет к медленному регулированию и часто к самовозбуждению системы. На рис. 2-4 показаны отклики системы с применением I и PI управления. Как можно видеть, отклик PI-контроллера не имеет статической ошибки, и отклик I-контроллера очень медленный.

Рис. 2-4. Отклик I- и PI-регуляторов на скачкообразное изменение опорного параметра.

2.3 Дифференциальная составляющая PID-регулятора

Дифференциальное условие (D) добавляет к входному сигналу системы (u) информацию о скорости изменения опорного сигнала (насколько быстро изменяется ошибка e). Это улучшает отклик на быстрое случайное изменение в состоянии системы или в опорном отслеживаемом значении. Составляющая D обычно используется совместно с P или PI, в результате чего получаются PD- или PID-контроллер. Слишком большая составляющая D обычно приводит к нестабильности системы. Рис. 2-5 показывает результаты работы D-контроллера и PD-контроллера. Ответ от PD-контроллера дает ускоренное возрастание обрабатываемого системой значения по сравнению с P-контроллером. Имейте в виду, что D-составляющая по сути работает как фильтр высокой частоты (ФВЧ), стоящий на сигнале ошибки, и этот факт очень просто может привести к нестабильности системы и делает её более чувствительной к шуму и помехам.

Читайте также:  Можно ли найти андроид если он выключен

Рис. 2-5. Отклик D- и PD-регуляторов на скачкообразное изменение опорного параметра.

Если объединить все три составляющие управления, то получится PID-контроллер, который обычно дает наилучшие результаты в управлении. Рис. 1-1 сравнивает между собой контроллеры P, PI и PID. PI улучшает P удалением статической ошибки, и PID улучшает PI ускорением ответа и отсутствием при этом перерегулирования.

2.4 Настройка параметров PID-регулятора

Самый лучший способ найти нужные параметры PID — получить их из математической модели системы, параметры могут быть вычислены по необходимому отклику системы. Часто полное математическое описание системы отсутствует, и приходится экспериментально подбирать параметры PID-регулятора. Нахождение составляющих PID-регулятора может быть сложной задачей. Важно хорошо знать систему и её поведение в различных условиях. Оптимальное поведение в ответ на изменение условий или изменение опорной заданной величины зависит от конкретного приложения. Некоторые процессы не должны допускать перерегулирования (выбросов) в ответ на изменение входной отслеживаемой величины. Другие процессы должны минимизировать расход энергии на пути достижения отслеживаемой величины. И почти всегда главным требованием является стабильность системы. Процесс управления не должен допускать самовозбуждения для любого варианта текущих условий регулирования или любые изменения входной отслеживаемой величины. Кроме того, эффект стабилизации должен укладываться в заранее заданные ограничения по времени.

Есть несколько методов для настройки петли регулирования PID. Выбор метода зависит от того, может ли процесс регулирования быть отключенным для настройки, или нет. Метод Ziegler-Nichols хорошо известен как стратегия настройки, не требующая отключения системы. На первом шаге этой методики устанавливают усиление I и D составляющих в 0, увеличивают усиление P, пока не выходе не будут получены установившиеся и стабильные колебания (при этом выходной сигнал должен как можно меньше отличаться от опорного). Затем записывают критическое усиление Kc и период генерации Pc, и значения P, I и D подстраиваются по таблице 2-1.

Таблица 2-1. Параметры методики Ziegler-Nichols для настройки PID.

контроллер Kp Ti Td
P 0.5 * Kc
PD 0.65 * Kc 0.12 * Pc
PI 0.45 * Kc 0.85 * Pc
PID 0.65 * Kc 0.5 * Pc 0.12 * Pc

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

Необходимо иметь в виду, что есть системы, для которых PID-регулятор не очень хорош, или системы, где он будет нормально работать только в малом диапазоне имеющихся состояний системы. Это нелинейные системы, но основная проблема с PID-регулятором проявляется с нестабильными системами, и когда эффект от входного воздействия зависит от состояния системы.

2.5 Дискретный PID-регулятор

Дискретный (цифровой) PID-регулятор будет читать ошибку, делать вычисления и выдавать выходное значение с заданными интервалами времени, с периодом выборки T. Время выборки T должно быть гарантированно меньше, чем самый маленький интервал времени, который может иметь в системе (по техзаданию) важное значение.

2.5.1 Основа алгоритма PID-регулятора

В отличие от простых алгоритмов управления, PID-регулятор может манипулировать управляющим сигналом, основываясь на истории и скорости изменения отслеживаемого сигнала. Это дает метод более точного и стабильного управления.

На рис. 2-2 показана схема PID-регулятора, где Tp, Ti и Tp обозначают константы времени для составляющих пропорционального, интегрального и дифференциального регулирования соответственно.

Передаточная функция системы на рис. 2-2:

Это дает зависимость u от e по оси времени:

Аппроксимация составляющих I и D:

Здесь n — дискретный шаг времени t. Это дает выражение для регулятора:

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

[3 Реализация PID-регулятора]

Этот апноут поставляется с готовой реализацией PID-регулятора на языке C [2]. Полную документацию по исходному коду можно найти, если открыть файл readme.html, который имеется в пакете архива.

Рис. 3-1. Блок-схема демонстрационного приложения PID-регулятора.

На рис. 3-1 показана упрощенная схема демо-приложения [2]. PID-регулятор использует структуру (struct) для сохранения своего состояния и параметров. Эта структура инициализируется в теле функции main, и функциям Init_PID() и PID() передается только указатель на структуру.

Функция PID() должна быть вызвана на каждом интервале времени T. Это реализовано с помощью таймера, который устанавливает флаг PID_timer, когда проходит интервал времени T. Когда флаг PID_timer установлен, подпрограмма в цикле main читает требуемое значение процесса (опорное отслеживаемое значение setPoint) и текущее значение процесса системы, вызывается PID(), и выводит результат на управляющий вход.

Чтобы увеличить точность, множители p_factor, i_factor и d_factor смасштабированы с коэффициентом 1:128. Результат алгоритма PID затем масштабируется обратно делением на 128. Число 128 выбрано для того, чтобы задействовать оптимизацию компилятора (умножение на 128 заменяется сдвигом на 1 бит младшего байта и копированием результата в старший байт).

В дальнейшем эффект от множителей IFactor и DFactor будут зависеть от интервала выборки T.

3.1 Свертка для интеграла

Входное значение регулирования u иногда достигает некоторого предела. Предел связан либо с ограниченным числовым диапазоном переменных PID-регулятора (в коде могут использоваться целочисленные переменные ограниченной разрядности), либо с выходным диапазоном регулятора, либо насыщением (ограничением сигнала) в усилителях, либо с вычислениями в алгоритме. Это произойдет, если имеется слишком большое различие между измеренной величиной и опорным сигналом. Причина может быть в больших возмущениях / перегрузке, которые система должна обработать.

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

Проблему целочисленного переполнения можно обойти несколькими способами. В этой реализации максимальная сумма в интеграле ограничена, но ей не позволено превысить значение MAX_I_TERM. Корректное значение MAX_I_TERM будет зависеть от самой системы и используемого времени выборки T.

Прим. переводчика: похожие проблемы есть и в алгоритмах ЦОС (цифровая обработка сигналов, DSP), когда применяется целочисленная арифметика для ускорения работы [3]. другие методы устранения проблемы переполнения — повышение разрядности переменных в вычислениях, и даже переход на арифметику с плавающей запятой. К сожалению, это часто связано с увеличением объема вычислений и усложнением оптимизации и разработки, так что имеет ограниченную область применения. В любом случае для вычислений старайтесь задействовать аппаратные ресурсы ядра AVR [4].

[4 Дополнительные замечания]

Представленный PID-регулятор является упрощенным примером. Регулятор должен хорошо работать, однако может потребоваться улучшение, связанным с конкретным применением (к примеру, устранение переполнений и/или неточностей в регулировании). Можно добавить коррекцию (устранение) насыщения в I-составляющей за счет P-составляющей, если это позволяют условия обработки регулируемой величины.

В вычисление множителей IFactor и DFactor время выборки T является частью выражения. Если T выбрано слишком маленьким, или сделано больше 1 секунды, то будет нарушена точность вычисления либо множителя IFactor, либо множителя DFactor. Примите решение по доработке алгоритма PID при масштабировании, чтобы сохранить точность вычисления I-составляющией (интеграл) и D-составляющей (производная).

Ссылка на основную публикацию
Перевод денег сбер по номеру телефона
У Российских людей имеются карты банка «Сбербанк». Зачастую надо перевести средства на данную банковскую систему для тех или иных операций....
Относительная атомная масса металла
Определение и формула атомной массы Массы атомов и молекул очень малы, поэтому в качестве единицы измерения удобно выбрать массу одного...
Отношение литовцев к русским
В литовском обществе наблюдается усталость от риторики действующего президента и ландсбергистов, которые все внутренние проблемы государства пытаются оправдать либо «российской...
Перевод за рубеж втб
Мы даем вам возможность, максимально быстро и безопасно перечислять и получать средства из любой точки мира, посредством разнообразных услуг денежных...
Adblock detector