У меня есть нелинейный тепловой процесс (нелинейное излучение становится все более и более присутствующим при повышении температуры), на который я хотел бы настроить ПИД-регулятор. Я хотел бы контролировать температуру как можно точнее.
Я планировал разделить температурный диапазон на 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). Но готовые контроллеры не предлагают этого, поэтому должен быть другой путь.
Что мне не хватает? Как правильно?
*: Это эффективное планирование .
источник
Ответы:
Как настроить ПИД-регулятор на нелинейный процесс?
Вы не Вы линеаризуете процесс, а затем ПИД-регулятор работает с линейными значениями.
Под «линеаризацией процесса» я не имею в виду сделать сам процесс линейным. Это обычно не может быть сделано из-за физики. Однако вы можете поместить что-то нелинейное между выходом ПИД-регулятора и входом процесса, чтобы выход ПИД-регулятора линейно контролировал процесс с точки зрения ПИД-регулятора.
Такой линеаризатор не должен быть очень точным, поскольку он находится внутри петли обратной связи. Его цель - создать видимость примерно постоянного усиления в динамическом диапазоне управления. Простым и общим способом является кусочно-линейная табличная функция. 16 или 32 сегмента обычно достаточно для чего угодно, кроме очень сильно нелинейных процессов.
Наихудшим примером, с которым я столкнулся, было управление током через электронную трубку, изменяя, насколько сильно катодная нить накала. Функция температуры катода от тока электронного пучка сильно нелинейна, и система, управляющая током катодной нити, тоже была несколько нелинейной. В этом случае было слишком сложно предсказать весь этот беспорядок, поэтому я использовал процедуру калибровки во время производства, которая пошагово проходила через контрольные значения привода нити накала, измерял ток луча для каждого, а затем вычислял 32-сегментную таблицу поиска из этого. Он работал очень хорошо, и мы смогли настроить ПИД-регулятор тока луча для хорошего отклика во всем диапазоне.
Без функции линеаризации перед процессом необходимо настроить ПИД-регулятор на стабильность в самой высокой точке инкрементного усиления процесса. Это приводит к очень подавленному поведению в других точках.
добавленной
Ничто в вашем обновленном вопросе ничего не говорит о том, почему описанный выше метод все еще не является хорошей идеей и не применим. Вы говорите, что используете аналоговый контроллер. Моя первая реакция: «1980-е давно прошли, не делайте этого». Однако ПИД-регулятор и линеаризатор установки могут быть независимыми.
По-видимому, входная мощность установки - это мощность, а выходная - температура. Измерьте типичную устойчивую температуру в диапазоне уровней мощности. Исходя из этого, вы можете вычислить функцию, которая преобразует линеаризованную «мощность» в фактическую потребляемую мощность установки. Аналоговый ПИД-регулятор предположительно производит напряжение, пропорциональное мощности. Все, что вам нужно сделать, это вставить черный ящик в соответствии с этим напряжением, которое выполняет линейную меру для преобразования фактического уровня мощности.
Обычно вы делаете это с микроконтроллером, который имеет встроенный A / D. Выполнение этого поиска в таблице и линейная интерполяция между точками тривиальны. Затем он выводит результат способом, который в конечном итоге преобразуется в напряжение. Поскольку установка медленная по сравнению с микроконтроллером, это может быть так же просто, как фильтрация и буферизация выходных сигналов ШИМ. Или вы можете управлять D / A напрямую, хотя в данном случае это не так.
В соответствии с темой вашего контроллера 1980-х годов, вы можете сделать это с A / D, памятью и D / A для этого стиля ретро.
В любом случае, PID-контроллер теперь эффективно контролирует линейную установку, насколько ему известно, и настройка его на хорошую производительность должна быть возможной.
Выполнить кусочно-линейное преобразование на входе установки в одном месте проще, чем настроить 3 значения внутри ПИД-регулятора в диапазоне выходных данных. Последний является клуджем, тогда как первый решает проблему напрямую. Также намного проще измерить данные для линеаризующей функции, чем определить коэффициенты усиления P, I и D в различных точках. Даже если вы это сделали, у вас все еще есть временные проблемы, поскольку правильные выгоды не сразу применяются к ситуации. Опять же, «планирование выигрыша» - это клудж.
источник
Помните, что когда вы линеаризуете модель, вы фактически предполагаете, что нелинейная модель y = f (x) заменяется на y = A * (x-x0) + B. Обратите внимание, что x0 - это точка линеаризации. Когда вы вводите диапазоны для x, вы получаете несколько A, B и x0. В любом случае, вход в ваш контроллер будет ошибкой относительно текущей точки линеаризации. Тем не менее, вы по-прежнему смещаете входной сигнал (с помощью B), поэтому даже если ошибка равна 0 относительно текущей точки линеаризации, вы все равно продолжите передачу сигнала.
Тогда в вашем примере, даже если ошибка равна 0 градусов (при заданном значении 70 градусов), контроллер все равно будет выдавать мощность больше 0.
источник
Один подход к нелинейному управлению с помощью ПИД-контроллеров, подход, который широко используется в промышленности, называется «планированием усиления».
Нелинейная задача управления разбита на ряд достаточно линейных областей, и для каждого региона используются соответствующие параметры.
источник