Как настроить PID-контроллер на нелинейный процесс


9

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

Я планировал разделить температурный диапазон на N псевдолинейных диапазонов (которые будут определены) и для каждого из этих температурных диапазонов: установить модель первого порядка, используя небольшой температурный шаг, и рассчитать параметры ПИД-регулятора для соответствия этой модели. Параметры ПИД-регулятора будут автоматически переключаться в зависимости от температуры процесса *.

Моя проблема заключается в следующем: рассмотрим контрольную точку 70 ° C, например. P ватт уже течет, чтобы достичь этой температуры. Я введу дП ватт, чтобы повысить температуру на 1 ° C. Затем я запомню постоянную времени, и усиление в установившемся режиме составит 1 / dP ° C / Вт. [Пожалуйста, не могли бы вы подумать о том, правильно ли это?] Наконец, я настрою PID на эту установку, чтобы получить параметры для этого температурного диапазона, и перейду к другим диапазонам.

Теперь предположим, что процесс достигает 70 ° C. Новые параметры загружаются и встроенный счетчик сбрасывается. Ошибка может составлять 1 ° C, но требуемая мощность намного больше, чем для достижения 21 ° C, и, несомненно, контроллер потребует меньше P ватт. Это означает, что температура сильно понизится до того, как интегральный член потребует P ватт, и только тогда дополнительный ватт dP в конечном итоге доведет процесс до 71 ° C (и он, безусловно, перескочит). Чем больше P по сравнению с dP, тем хуже становится.

Похоже, что нагреватели должны работать с суммой выходного сигнала контроллера и мощностью, необходимой для поддержания текущей «контрольной температуры» (например, 70 ° C). Но готовые контроллеры не предлагают этого, поэтому должен быть другой путь.

Что мне не хватает? Как правильно?

*: Это эффективное планирование .


1
ПИД-регулятор, как правило, предназначен для линейных систем. Он достаточно надежен для управления некоторыми нелинейными системами также вокруг некоторой «почти линейной» рабочей точки. Если это не так, можно использовать разные методы для линеаризации контролируемой установки (поиск «линеаризация обратной связи» или введение некоторых внутренних контуров)
Евгений Ш.

Спасибо за ваш комментарий. Вот чего я пытаюсь достичь: использовать ПИД-регулятор в «почти линейном» диапазоне температур. Я уже посмотрел вокруг с этими ключевыми словами, но без особой удачи.
user42875 30.10.15

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

1
Ваш подход звучит хорошо для меня. Вы собираетесь регулировать усиление и постоянную времени в зависимости от температуры. Вам придется подумать о том, что происходит в точках пересечения. Вы создали что-то, что не работает так хорошо, как хотелось бы? Цикл управления может скрыть много нелинейностей. И, может быть, ты будешь в порядке, не становясь модным.
Джордж Херольд

Почему излучение нелинейно? Если в печи происходит утечка температуры, потери мощности являются линейными Q = mc * delta_T. Если ваша система просто протекает, то почти все константы остаются, как мертвое время, время нарастания, кроме усиления уменьшается. Вы можете просто сделать переменную Kp Kp (T_actual) линейной функцией Kp_initial и Kp_final.
Марко Буршич

Ответы:


11

Как настроить ПИД-регулятор на нелинейный процесс?

Вы не Вы линеаризуете процесс, а затем ПИД-регулятор работает с линейными значениями.

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

Такой линеаризатор не должен быть очень точным, поскольку он находится внутри петли обратной связи. Его цель - создать видимость примерно постоянного усиления в динамическом диапазоне управления. Простым и общим способом является кусочно-линейная табличная функция. 16 или 32 сегмента обычно достаточно для чего угодно, кроме очень сильно нелинейных процессов.

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

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

добавленной

Ничто в вашем обновленном вопросе ничего не говорит о том, почему описанный выше метод все еще не является хорошей идеей и не применим. Вы говорите, что используете аналоговый контроллер. Моя первая реакция: «1980-е давно прошли, не делайте этого». Однако ПИД-регулятор и линеаризатор установки могут быть независимыми.

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

Обычно вы делаете это с микроконтроллером, который имеет встроенный A / D. Выполнение этого поиска в таблице и линейная интерполяция между точками тривиальны. Затем он выводит результат способом, который в конечном итоге преобразуется в напряжение. Поскольку установка медленная по сравнению с микроконтроллером, это может быть так же просто, как фильтрация и буферизация выходных сигналов ШИМ. Или вы можете управлять D / A напрямую, хотя в данном случае это не так.

В соответствии с темой вашего контроллера 1980-х годов, вы можете сделать это с A / D, памятью и D / A для этого стиля ретро.

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

Выполнить кусочно-линейное преобразование на входе установки в одном месте проще, чем настроить 3 значения внутри ПИД-регулятора в диапазоне выходных данных. Последний является клуджем, тогда как первый решает проблему напрямую. Также намного проще измерить данные для линеаризующей функции, чем определить коэффициенты усиления P, I и D в различных точках. Даже если вы это сделали, у вас все еще есть временные проблемы, поскольку правильные выгоды не сразу применяются к ситуации. Опять же, «планирование выигрыша» - это клудж.


Очень интересно, спасибо за представление подхода линеаризатора. Я использую аппаратные контроллеры, которые напрямую подключены к реле, поэтому, к сожалению, я должен планировать усиление. Правильный ли мой идентификационный подход? Такое ощущение, что это не так.
user42875 30.10.15

Я отредактировал свой вопрос, чтобы прояснить мою проблему - в частности, два последних абзаца. (еще +1)
user42875

Я спросил производителя контроллеров, могу ли я вставить справочную таблицу с линейной интерполяцией перед выводом - если это можно сделать, я обязательно выберу эту опцию, даже если это означает, что мне придется забыть о обычные инструменты настройки на основе передаточной функции и тому подобное. Это элегантно Если этого не произойдет, мне придется составить очень утомительное планирование усиления, но, видимо, в моем подходе нет ничего плохого, что я и хотел проверить.
user42875

2

Помните, что когда вы линеаризуете модель, вы фактически предполагаете, что нелинейная модель y = f (x) заменяется на y = A * (x-x0) + B. Обратите внимание, что x0 - это точка линеаризации. Когда вы вводите диапазоны для x, вы получаете несколько A, B и x0. В любом случае, вход в ваш контроллер будет ошибкой относительно текущей точки линеаризации. Тем не менее, вы по-прежнему смещаете входной сигнал (с помощью B), поэтому даже если ошибка равна 0 относительно текущей точки линеаризации, вы все равно продолжите передачу сигнала.

Тогда в вашем примере, даже если ошибка равна 0 градусов (при заданном значении 70 градусов), контроллер все равно будет выдавать мощность больше 0.


Спасибо. Я думаю, что вы на что-то, но я не совсем понимаю. Грубо говоря, я использую базовые ПИД-контроллеры (аналогичные), из которых я могу изменять термины P, I, D в зависимости от температуры. Я знаю, что сразу установился при 70 ° C, мощность не будет равна нулю, даже если ошибка равна нулю. Меня беспокоит урегулирование: я в основном бросаю контроллер при температуре 70 ° C, и, поскольку для него t = 0 с, интегральный член займет некоторое время, поэтому у меня будет ужасный спад. Похоже, мой метод неверен.
user42875

(Контроллер потребует очень мало энергии в начале, ниже мощности, необходимой для
поддержания

Я отредактировал свой вопрос, чтобы уточнить - в частности, два последних абзаца.
user42875 30.10.15

Трудно дать совет без более подробной информации о вашем процессе, но звучит так, как будто у вас довольно нестабильная система около 70 градусов и что при этой температуре большая часть контроля происходит из-за внутриигровой компенсации (I в PID)?
Пол-Кристиан Энгстад

70 ° C - это всего лишь пример, у меня будет 6 различных температурных диапазонов для настройки. Грубо говоря, я контролирую температуру внутри термоса, нагревая внешнюю поверхность.
user42875

2

Один подход к нелинейному управлению с помощью ПИД-контроллеров, подход, который широко используется в промышленности, называется «планированием усиления».

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


Это то, чего я пытаюсь достичь, о чем можно прочитать в моем вопросе («Параметры PID будут автоматически переключаться в зависимости от температуры процесса *» «*: Это эффективное планирование усиления.»)
user42875
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.