Онлайновая оценка полиномиальной модели ARMAX

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

Постоянно реактор смесителя

Постоянно реактор смесителя (CSTR) является общей химической системой в перерабатывающей промышленности. Схематическая из системы CSTR:

Это - покрытое кожухом диабатическое (i.e., недиабатический) реактор бака, описанный экстенсивно в книге Бекетт "Динамика Процесса: Моделирование, Анализ и Симуляция", опубликованный Prentice Hall, 1998. Судно принято, чтобы быть отлично смешанным, и происходит одна экзотермическая и необратимая реакция первого порядка,-> B. Входной поток реагента A питается бак на постоянном уровне. После побуждения потоков конечного продукта из судна на том же уровне как реагент A подан в бак (объем в реакторном баке является постоянным). Детали операции CSTR и его нелинейной модели с 2 состояниями, используемой в этом примере, объяснены в примере Неадиабатический Непрерывный Реактор Смесителя: Моделирование файла MATLAB с Симуляциями в Simulink®.

Входные параметры модели CSTR:

$$ \begin{array} {ll}
u_1(t) = C_{Af}(t) \; & \textnormal{Concentration of A in inlet feed
stream} [kgmol/m^3] \\
u_2(t) = T_f(t) \; & \textnormal{Inlet feed stream temperature} [K] \\
u_3(t) = T_j(t) \; & \textnormal{Jacket coolant temperature} [K] \\
\end{array} $$

и выходные параметры (y (t)), которые являются также состояниями модели (x (t)):

$$ \begin{array} {ll}
y_1(t) = x_1(t) = C_{A}(t) \; & \textnormal{Concentration of A in reactor tank} [kgmol/m^3] \\
y_2(t) = x_2(t) = T(t) \; & \textnormal{Reactor temperature} [K] \\
\end{array} $$

Цель управления состоит в том, чтобы обеспечить концентрацию реагента A$C_{A}(t)$ на желаемом уровне$C_{Aref}(t)$, который изменяется в зависимости от времени. Температурой конверта$T_j(t)$ управляет ПИ-контроллер для того, чтобы отклонить воздействия, являющиеся результатом входной потоковой температуры канала$T_f(t)$. Вход ПИ-контроллера является сигналом ошибки отслеживания$C_{Aref}(t)-C_A(t)$. Входная потоковая концентрация канала$C_{Af}(t)$, принят постоянным. Модель Simulink iddemo_cstr реализует объект CSTR как блок CSTR.

open_system('iddemo_cstr');

$T_f(t)$Вход температуры канала состоит из воздействия белого шума сверх постоянного смещения. Шумовая мощность 0.0075 [K^2]. Этот уровень шума вызывает 2%-е отклонение от желаемого$C_{Aref}(t)$.

$C_{Aref}(t)$Сигнал в этом примере содержит ступенчатое изменение от 1,5 [kgmol/m^3] к 2 [kgmol/m^3] во время$t=400$. В дополнение к этому ступенчатому изменению,$C_{Aref}(t)$ также содержит возмущение белого шума для t в [0,200) и [400,600), области значений. Степень этого сигнала белого шума 0.015. Шумовая мощность настроена опытным путем, чтобы приблизительно дать отношение сигнал-шум 10. Наличие достаточного возбуждения в опорном сигнале в идентификации с обратной связью может привести к не наличию достаточной информации идентифицировать уникальную модель. Реализация$C_{Aref}(t)$ находится в iddemo_cstr/CA Reference блок.

Онлайновая оценка для адаптивного управления

Известно из нелинейной модели, что CSTR выход$C_{A}(t)$ более чувствителен к входу управления$T_j(t)$ в$C_{A}(t)$ более высоких уровнях. Блок Recursive Polynomial Model Estimator используется, чтобы обнаружить это изменение в чувствительности. Эта информация используется, чтобы настроить усиления ПИ-контроллера, как$C_{A}(t)$ варьируется. Цель состоит в том, чтобы не иметь высокий цикл управления усиления, который может привести к нестабильности.

Вы оцениваете дискретную передаточную функцию от$T_j(t)$ к$C_{A}(t)$ онлайн с блоком Recursive Polynomial Model Estimator. Алгоритм адаптивного управления использует усиление DC этой передаточной функции. Ошибка отслеживания$C_{Aref}(t)-C_A(t)$, разделен на нормированное усиление DC предполагаемой передаточной функции. Эта нормализация сделана, чтобы иметь усиление 1 при ошибке отслеживания в начальной рабочей точке, для которой спроектирован ПИ-контроллер. Например, сигнал ошибки разделен на 2, если усиление DC становится 2 раза своим исходным значением. Это соответствует делению усилений ПИ-контроллера 2. Этот адаптивный контроллер реализован в iddemo_cstr/Adaptive PI Controller.

Рекурсивные входные параметры блока средства оценки полиномиальной модели

Блок 'Recursive Polynomial Model Estimator' найден под System Identification Toolbox/Estimators библиотека в Simulink. Вы используете этот блок, чтобы оценить линейные модели со структурой ARMAX. Модели ARMAX имеют форму:

$$
\begin{array} {l}A(q)\bar{y}(t)=B(q)\bar{u}(t)+C(q)\bar{e}(t) \\[0.1in]
A(q) = 1+a_1z^{-1}+a_2z^{-2}+\cdots+a_{na}z^{-na} \\
B(q) = (b_01+b_1z^{-1}+b_2z^{-2}+\cdots+a_{nb-1}z^{-nb+1})z^{-nk} \\
C(q) = 1+c_1z^{-1}+c_2z^{-2}+\cdots+c_{nc}z^{-nc} \\
\end{array}
$$

  • Inputs и Output импорт рекурсивного блока средства оценки полиномиальной модели соответствует$\bar{u}(t)$ и$\bar{y}(t)$ соответственно. Для модели CSTR$\bar{y}$ и$\bar{u}$ отклонения от температуры конверта и обрезки концентрации рабочие точки:$\bar{y}=C_A(t)-\bar{C}_A(t)$$\bar{u}=T_j(t)-\bar{T}_j(t)$. Хорошо масштабировать$\bar{u}$ и$\bar{y}$ иметь пиковую амплитуду 1, чтобы улучшить числовое условие проблемы оценки. Рабочие точки для обрезки,$\bar{C}_A(t)$ и$\bar{T}_j(t)$, не известны точно перед работой системы. Они оценены и извлечены из измеренных сигналов при помощи фильтра скользящего среднего значения первого порядка. Эти фильтры предварительной обработки реализуются в iddemo_cstr/Preprocess Tj и iddemo_cstr/Preprocess CA блоки.

open_system('iddemo_cstr/Preprocess Tj');

  • Дополнительный Enable импорт блока Recursive Polynomial Model Estimator управляет оценкой параметра блок. Оценка параметра отключена, когда Разрешать сигнал является нулем. Оценка параметра включена для всех других значений Enable сигнал. В этом примере оценка отключена для временных интервалов$t\in[200,400)$ и$t\in[600,800)$. Во время этих интервалов измеренный вход$T_j(t)$ не содержит достаточное возбуждение для системы идентификации с обратной связью.

Рекурсивный Setup блока средства оценки полиномиальной модели

Сконфигурируйте параметры блоков, чтобы оценить модель ARMAX второго порядка. Во вкладке Model Parameters задайте:

  • Структура модели: ARMAX. Выберите ARMAX, поскольку текущие и прошлые значения воздействий, действующих на систему$T_f(t)$, как ожидают, повлияют на систему CSTR выход$C_A(t)$.

  • Первоначальная оценка: 'none'. По умолчанию программное обеспечение использует значение 0 для всех предполагаемых параметров.

  • Количество параметров в (q) (na): 2. Нелинейная модель имеет 2 состояния.

  • Количество параметров в B (q) (nb): 2.

  • Количество параметров в C (q) (nc): 2. Предполагаемая модель соответствует модели второго порядка начиная с максимума na, nb, и nc равняются 2.

  • Введите задержку (nk): 1. Как большинство физических систем, система CSTR не имеет прямого сквозного соединения. Кроме того, между его I/Os нет никаких задержек дополнительного времени.

  • Ковариационная матрица параметра: 1e4. Задайте высокое значение ковариации, потому что значения исходного предположения очень сомнительны.

  • Размер шага: 0.1. Модель CSTR, как известно, имеет полосу пропускания приблизительно 0.25 Гц$T_s=0.1$, выбранных таким образом, что 1/0.1 больше 20 раз этой полосы пропускания (5 Гц).

Нажмите Algorithm и Block Options, чтобы установить опции оценки:

  • Метод оценки: Forgetting Factor

  • Упущение фактора: 1-5e-3. Поскольку предполагаемые параметры, как ожидают, изменятся с рабочей точкой, установятся коэффициент упущения на значение меньше чем 1. Выберите$\lambda = 1-5e-3$, который соответствует постоянной времени памяти$T_0=\frac{Ts}{1-\lambda}=100$ секунд. 100 вторых раз памяти гарантируют, что данные о существенном количестве, используемые для идентификации, прибывают из 200-секундного идентификационного периода в каждой рабочей точке.

  • Установите Выходной флажок ошибки расчета. Вы используете этот блок выход, чтобы подтвердить оценку.

  • Выберите Add, включают флажок порта. Вы только хотите адаптировать предполагаемые параметры модели, когда дополнительный шум введен в ссылочном порте. Оценка параметра n отключена через этот порт, когда дополнительный шум больше не вводится.

  • Внешний сброс: None.

Рекурсивный блок средства оценки полиномиальной модели Выходные параметры

На каждом временном шаге рекурсивное средство оценки полиномиальной модели обеспечивает оценку для$A(q)$$B(q)$, $C(q)$и ошибка расчета$\bar{e}$. Error выходной порт блока средства оценки полиномиальной модели содержит$\bar{e}(t)$ и также известен как ошибку предсказания "один шаг вперед". Parameters выходной порт блока содержит (q), B (q), и C (q) полиномиальные коэффициенты в сигнале шины. Учитывая выбранные полиномиальные распоряжения $na=2$(), $nb=2$$nc=2$$nk=1$Parameters соедините шиной элементы, содержите:

$$ \begin{array} {l}
A(t) = [1 \; a_1(t) \; a_2(t)] \\
B(t) = [0 \; b_0(t) \; b_1(t)] \\
C(t) = [1 \; c_1(t) \; c_2(t)] \\
\end{array} $$

Предполагаемые параметры в (q), B (q), и C (q) полиномы изменяются в процессе моделирования можно следующим образом:

sim('iddemo_cstr');
close_system('iddemo_cstr/Preprocess Tj');
open_system('iddemo_cstr/ABC');

Оценки параметра быстро изменяются от их начальных значений 0 должных к высокому значению, выбранному для начальной ковариационной матрицы параметра. Параметры в$A(q)$ и$B(q)$ полиномы приближаются к своим значениям в$t=200$ быстро. Однако параметры на$C(q)$ полиномиальном показе некоторые колебания. Одна причина позади этих колебаний состоит в том, что воздействие$T_f(t)$ к CSTR выход$C_A(t)$ не полностью моделируется структурой ARMAX. Ошибочная модель$C(q)$ не важна для проблемы управления, изученной здесь, поскольку$T_j(t)$ к$C_A(t)$ отношению получен передаточной функцией$\frac{B(q)}{A(q)}$. Поэтому колебание$C(q)$ не является беспокойством об этой проблеме идентификации и управления.

Оценки параметра считаются постоянные для того$t\in[200,400)$, поскольку блок средства оценки был отключен для этого интервала (0 сигналов к Enable импортируйте). Оценка параметра включена в том$t=400$, когда бак CSTR начинает переключаться на свою новую рабочую точку. Параметры$A(q)$ и$B(q)$ сходятся к их новым значениям$t=600$, и затем сохраненный постоянным путем установки Enable порт к 0. Сходимость$A(q)$ и$B(q)$ медленнее в этой рабочей точке. Эта медленная сходимость из-за меньших собственных значений ковариационной матрицы параметра в t=400 по сравнению с начальной буквой 1e4 набор значений в t=0. Ковариация параметра, которая является мерой доверия к оценкам, обновляется с каждым временным шагом. Алгоритм быстро изменил оценки параметра, когда доверие к оценкам было низким в t=0. Улучшенные оценки параметра получают поведение системы лучше, приводя к меньшим ошибкам предсказания "один шаг вперед" и меньшим собственным значениям в ковариационной матрице параметра (увеличенное доверие). Поведение системы изменяется в t=400. Однако блок медленнее, чтобы изменить оценки параметра из-за увеличенного доверия к оценкам. Можно использовать Внешнюю опцию Сброса блока Recursive Polynomial Model Estimator, чтобы ввести новое значение для ковариации параметра в t=400. Чтобы видеть значение ковариации параметра, установите флажок ковариационной матрицы Выходного параметра в блоке Recursive Polynomial Model Estimator.

Проверка предполагаемой модели

Error выход Recursive Polynomial Model Estimator блок дает ошибку "один шаг вперед" для предполагаемой модели.

close_system('iddemo_cstr/ABC');
open_system('iddemo_cstr/1-Step Ahead Prediction Error');

Ошибка "один шаг вперед" выше, когда нет никаких дополнительных возмущений, введенных в$T_j(t)$ канале для системы идентификации. Эти более высокие ошибки могут быть вызваны отсутствием достаточной информации во$T_j(t)$ входном канале, который использует блок средства оценки. Однако даже эта более высокая ошибка является низкой и ограничена когда по сравнению с измеренными колебаниями$C_A(t)$. Это вселяет веру в предполагаемых значениях параметров.

Более строгая проверка предполагаемой модели должна симулировать предполагаемую модель и соответствовать фактическому выходу модели. iddemo_cstr/Time-Varying ARMAX блок реализует изменяющуюся во времени модель ARMAX, оцененную блоком Online Polynomial Model Estimator. Ошибка между выходом системы CSTR и предполагаемой изменяющейся во времени моделью ARMAX выход:

close_system('iddemo_cstr/1-Step Ahead Prediction Error');
open_system('iddemo_cstr/Simulation Error');

Ошибка симуляции снова ограничена и низко когда по сравнению с колебаниями$C_A(t)$. Это далее обеспечивает доверие, что предполагаемые линейные модели могут предсказать нелинейное поведение модели CSTR.

Идентифицированные модели могут далее анализироваться в MATLAB. Оценки модели для рабочих точек$C_A=1.5 [kgmol/m^3]$ и$C_A=2 [kgmol/m^3]$ могут быть получены путем рассмотрения предполагаемого (q), B (q), и C (q) полиномы в$t = 200$ и$t = 600$ соответственно. Диаграммы Боде этих моделей:

Ts = 0.1;
tidx = find(t>=200,1);
P200 = idpoly(AHat(:,:,tidx),BHat(:,:,tidx),CHat(:,:,tidx),1,1,[],Ts);
tidx = find(t>=600,1);
P600 = idpoly(AHat(:,:,tidx),BHat(:,:,tidx),CHat(:,:,tidx),1,1,[],Ts);
bodemag(P200,'b',P600,'r--',{10^-1,20});
legend('Estimated Model at C_A=1.5 [kgmol/m^3]', ...
       'Estimated Model at C_A=2.0 [kgmol/m^3]', ...
       'Location', 'Best');

Предполагаемая модель имеет более высокое усиление на более высоких уровнях концентрации. Это в согласии с предварительными знаниями о нелинейном объекте CSTR. Передаточная функция в$C_A(t)=2 [kgmol/m^3]$ имеет$6dB$ более высокое усиление (удвойте амплитуду) в низких частотах.

Сводные данные

Вы оценили, что две модели ARMAX получили поведение нелинейного объекта CSTR в двух условиях работы. Оценка была сделана во время операции с обратной связью с адаптивным контроллером. Вы посмотрели на два сигнала подтвердить результаты оценки: Один шаг вперед ошибки предсказания и ошибки между объектом CSTR выход и симуляцией модели оценки. Оба из этих ошибочных сигналов были ограничены и маленькие по сравнению с объектом CSTR выход. Это обеспечило доверие к предполагаемым параметрам модели ARMAX.

bdclose('iddemo_cstr');