Этот пример показывает, как спроектировать прогнозирующий контроллер модели для процесса нелинейной бумагоделательной машины с использованием MPC Designer.
Ying et al. изучал контроль консистенции (процент волокон целлюлозы в водной суспензии) и уровня жидкости в напорном ящике бумагоделательной машины.
Процесс нелинейен и имеет три выхода, двух манипулируемых входов и два входных входов нарушения порядка, один из которых измеряется для управления с feedforward.
Модель процесса является набором обыкновенных дифференциальных уравнений (ОДУ) в билинейной форме. Состояния
H 1 - Подача бака уровень жидкости
H 2 - Уровень жидкости в напорном ящике
N 1 - Консистенция сырьевого бака
N 2 - непротиворечивость Headbox
Основной целью управления является удержание H 2 и N 2 в своих уставках путем корректировки манипулированных переменных:
Gp - Скорость потока жидкости сырья, поступающего в питательный бак
Gw - Скорость потока жидкости рециркулируемой белой воды
Консистенция сырья, поступающего в питательный бак, Np является измеренным нарушением порядка, и консистенция белой воды, Nw, является неизмеренным нарушением порядка.
Все сигналы нормированы с нулевыми номинальными установившимися значениями и сопоставимыми числовыми областями значений. Процесс является стабильным в разомкнутом цикле.
Измеренные выходные параметры: H 2, N 1 и N 2.
Simulink® S-функция, mpc_pmmodel
реализует нелинейные уравнения модели. Чтобы просмотреть эту S-функцию, введите следующее.
edit mpc_pmmodel
Чтобы спроектировать контроллер для нелинейного объекта с помощью MPC Designer, необходимо сначала получить линейную модель объекта. Модель головного ящика бумагоделательной машины может быть линеаризирована аналитически.
В MATLAB® в командной строке введите матрицы пространства состояний для линеаризированной модели.
A = [-1.9300 0 0 0 0.3940 -0.4260 0 0 0 0 -0.6300 0 0.8200 -0.7840 0.4130 -0.4260]; B = [1.2740 1.2740 0 0 0 0 0 0 1.3400 -0.6500 0.2030 0.4060 0 0 0 0]; C = [0 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000]; D = zeros(3,4);
Создайте модель пространства состояний LTI в непрерывном времени.
PaperMach = ss(A,B,C,D);
Задайте имена входного и выходного каналов модели.
PaperMach.InputName = {'G_p','G_w','N_p','N_w'}; PaperMach.OutputName = {'H_2','N_1','N_2'};
Задайте временными модулями модели.
PaperMach.TimeUnit = 'minutes';
Исследуйте разомкнутый контур ответ объекта.
step(PaperMach)
Эта переходная характеристика показывает, что:
Обе манипулированные переменные, Gp и Gw, влияют на все три выхода.
Манипулируемые переменные оказывают почти одинаковое влияние на H 2.
Ответ от Gw до N 2 является обратным ответом.
Эти функции затрудняют достижение точного, независимого управления H 2 и N 2.
Откройте приложение MPC Designer.
mpcDesigner
В MPC Designer на вкладке MPC Designer, в разделе Structure, нажмите MPC Structure.
В диалоговом окне «Определение структуры MPC при импорте» выберите PaperMach
модель объекта управления и присвоение заводским каналам ввода-вывода следующих типов сигналов:
Манипулируемые переменные - Gp и Gw
Измеренное нарушение порядка - Np
Неизмеренное нарушение порядка - Nw
Измеренные выходные параметры - H 2, N 2 и H 2
Совет
Чтобы найти правильные индексы канала, нажмите PaperMach
моделируйте Name, чтобы просмотреть дополнительные детали модели.
Нажмите Define and Import.
Приложение импортирует объект в Data Browser и создает контроллер MPC по умолчанию с помощью импортированного объекта.
В Structure разделе выберите I/O Attributes.
В Вход и Выход окнах Channel Спецификаций, в столбце Unit, задайте модули для каждого канала. Поскольку все сигналы нормированы с нулевыми номинальными установившимися значениями, сохраните Nominal Value и Scale Factor для каждого канала на их значениях по умолчанию.
Щелкните OK, чтобы обновить атрибуты канала и закрыть диалоговое окно.
На вкладке Tuning, в разделе Horizon, сохраните Sample time, Prediction Horizon и Control Horizon на своих значениях по умолчанию.
В Design разделе нажмите Constraints.
В диалоговом окне «Ограничения» в разделе Input Constraints задайте ограничения на значения, Min и Max, для обеих управляемых переменных.
Нажмите OK.
В Design разделе нажмите Weights.
В диалоговом окне «Веса» в разделе Input Weights увеличьте Rate Weight до 0.4
для обеих манипулированных переменных.
В Output Weights разделе задайте Weight 0
для второго выхода N 1 и Weight 1
для других выходов.
Увеличение веса скорости для манипулируемых переменных предотвращает чрезмерно агрессивные действия управления, приводящие к более консервативной реакции контроллера.
Поскольку существует две манипулируемые переменные, контроллер не может полностью управлять всеми тремя выходами. Вес нуля указывает, что уставка для N 1 отсутствует. В результате контроллер может держать H 2 и N 2 в своих соответствующих уставках.
На вкладке MPC Designer, в разделе Scenario, нажмите Edit Scenario > scenario1.
В диалоговом окне Simulation Scenario задайте Simulation duration 30
минут.
В таблице Reference Signals, в раскрывающемся списке Signal, выберите Step
для первого выхода. Держите шаг Size на 1
и задайте Time шага 0
.
В раскрывающихся списках Signal для других выходных опорных сигналов выберите Constant
для удержания значений по их соответствующим номинальным значениям. Контроллер игнорирует уставку для второго выхода, так как соответствующий вес настройки равен нулю.
Нажмите OK.
Приложение запускает симуляцию с новыми настройками сценария и обновляет Input Response и Output Response графики.
Первоначальный проект использует консервативное усилие по управлению, чтобы создать устойчивый контроллер. Время отклика для выхода H 2 около 7 минут. Чтобы уменьшить это время отклика, можно уменьшить шаг расчета, уменьшить манипулируемые веса переменной скорости или уменьшить манипулируемые ограничения переменной скорости.
Поскольку настройочный вес для выхода N 1 равен нулю, его выходу реакция показывает установившуюся ошибку около –0.25
.
На вкладке Tuning, в разделе Design, выберите Weights.
В диалоговом окне «Веса», в разделе Output Weights, задайте Weight 0.2
для первого выхода H 2.
Контроллер делает больший акцент на устранении ошибок в согласованности входного бака, N 2, что значительно уменьшает пиковую абсолютную ошибку. Компромисс является более длительным временем отклика около 17 минут для уровня входного бака, H 2.
На вкладке MPC Designer, в разделе Scenario, нажмите Plot Scenario > New Scenario.
В диалоговом окне Simulation Scenario задайте Simulation duration 30
минут.
В Measured Disturbances таблице задайте изменение шага измеренного нарушения порядка, Np, с Size 1
и шаговый Time 1
. Сохраните все выходные уставки постоянными при номинальных значениях.
Нажмите OK, чтобы запустить симуляцию и отобразить входные и выходные графики отклика.
Как показано на NewScenario: Output графике, как H 2, так и N 2 мало отклоняются от своих уставок.
В Data Browser, в Scenarios разделе, щелкните правой кнопкой мыши NewScenario
, и выберите Edit.
В диалоговом окне Simulation Scenario, в разделе Simulation Settings, проверьте опцию Preview measured disturbances.
Нажмите Apply.
Манипулируемые переменные начинают меняться до того, как происходит измеренное нарушение порядка, потому что контроллер использует известное будущее значение нарушения порядка при вычислении своего управляющего действия. Выходные значения нарушения порядка также начинают меняться до возникновения нарушения порядка, что уменьшает величину выходных ошибок. Однако существенного улучшения по сравнению с предыдущим результатом симуляции нет.
В диалоговом окне Симуляции Scenario очистите Preview measured disturbances опции.
Нажмите OK.
С несколькими сценариями полезно предоставить им значимые имена. В Data Browser, в разделе Scenarios, дважды кликните каждый сценарий, чтобы переименовать их как показано:
В Data Browser, в Scenarios разделе, щелкните правой кнопкой мыши Feedforward
, и выберите Copy.
Дважды кликните новый сценарий и переименуйте его Feedback
.
Щелкните правой кнопкой мыши по Feedback
сценарий и выберите Edit.
В диалоговом окне Simulation Scenario, в таблице Measured Disturbances, в раскрывающемся списке Signal, выберите Constant
для удаления измеренного нарушения порядка.
В таблице Unmeasured Disturbances, в раскрывающемся списке Signal, выберите Step
чтобы симулировать внезапное, устойчивое неизмеренное входное нарушение порядка.
Установите значение Size шага 1
и шаг Time чтобы 1
.
Нажмите OK, чтобы обновить настройки сценария и запустить симуляцию.
В Data Browser, в Scenarios разделе, щелкните правой кнопкой мыши Feedback
, и выберите Plot.
Управляемые выходы, H 2 и N 2 показывают относительно небольшие отклонения от их уставок. Длина времени урегулирования больше, чем у исходного сервопривода, что характерно.
На вкладке Tuning, в разделе Analysis, нажмите Review Design, чтобы проверить контроллер на потенциальную устойчивость во время выполнения или числовые проблемы.
Отчет о проверке откроется в новом окне.
Обзор помечает два предупреждения о проектировании контроллера. Щелкните имена предупреждений, чтобы определить, указывают ли они на проблемы с проектированием контроллера.
Предупреждение Closed-Loop Steady-State Gains указывает, что объект имеет больше управляемых выходов, чем управляемые переменные. Этот входной/выходной дисбаланс означает, что контроллер не может устранить установившуюся ошибку для всех выходов одновременно. Чтобы соответствовать цели управления, связанной с отслеживанием уставок H 2 и N 2, вы ранее установили выходной вес N 1 равным нулю. Эта настройка вызывает предупреждение QP Hessian Matrix Validity, которое указывает, что один из выходных весов равен нулю.
Поскольку входной/выходной дисбаланс является известной функцией модели объекта управления бумагоделательной машины, и вы намеренно установите один из выходных весов равным нулю, чтобы исправить дисбаланс, ни одно из предупреждений не указывает на проблему с проектированием контроллера.
На вкладке MPC Designer, в разделе Result, нажмите Export Controller.
В диалоговом окне «Экспорт контроллера» установите флажок в столбце Select.
В Export As столбце задайте MPC1
как имя контроллера.
Щелкните Export, чтобы сохранить копию контроллера в рабочем пространстве MATLAB.
Если у вас есть модель Simulink вашей системы, можно симулировать контроллер и подтвердить его эффективность. Функциональность Simulink не поддерживается в Online™ MATLAB.
Откройте модель.
open_system('mpc_papermachine')
Блок MPC Controller управляет моделью объекта управления нелинейных бумагоделательных машин, которая определяется с помощью S-функции mpc_pmmodel
.
Модель сконфигурирована, чтобы симулировать устойчивое неизмеренное нарушение порядка размера 1
.
Дважды кликните MPC Controller блок.
Блок MPC Controller уже настроен на использование MPC1
контроллер, который ранее был экспортирован в рабочее пространство MATLAB.
Кроме того, для добавления Measured disturbance выбрана опция md
входной порт блока контроллера.
Симулируйте модель.
На Outputs графике отклики практически идентичны откликам от соответствующей симуляции в MPC Designer. Желтая кривая - H 2, синяя - N 1, а красная - N 2.
Точно так же в MVs возможностей манипулируемые переменные перемещения почти идентичны перемещениям от соответствующей симуляции в MPC Designer. Желтая кривая Gp, а синяя Gw.
Эти результаты показывают, что нет значимых ошибок предсказания из-за несоответствия между линейной моделью предсказания контроллера и нелинейным объектом. Даже увеличение неизмеренной величины нарушения порядка в четыре раза создает аналогично сформированные кривые отклика. Однако, когда размер нарушения порядка увеличивается, эффекты нелинейности становятся более выраженными.
В окне модели Simulink дважды кликните блок Unmeasured Disturbance.
В диалоговом окне Unmeasured Нарушения порядка свойств задайте Constant value 6.5
.
Нажмите OK.
Симулируйте модель.
Несоответствие между моделью предсказания и объектом теперь создает выходные отклики со значительными различиями. Увеличение величины нарушения порядка дополнительно приводит к большим заданным отклонениям и насыщенным манипулированным переменным.
[1] Ying, Y., M. Rao, and Y. Sun «Bilinear control strategy for paper making process», Chemical Engineering Communications (1992), Vol. 111, pp. 13-28.