主要内容

在线ARMAX多项式模型估计

这个例子展示了如何实现一个在线多项式模型估计器。你估计了两个非线性化学反应过程的ARMAX模型。这些模型捕捉过程在两种操作条件下的行为。在线辨识模型行为,并在系统运行过程中对自适应PI控制器的增益进行调整。

连续搅拌槽式反应器

连续搅拌釜式反应器(CSTR)是过程工业中常用的化学系统。CSTR系统的原理图如下:

这是一种夹套非绝热(即非绝热)罐式反应器,Bequette在Prentice-Hall出版的《过程动力学:建模、分析和仿真》一书中有大量描述。假设容器完全混合,发生单一的一级放热和不可逆反应,a -> B。试剂A的进口流以恒定的速率注入罐中。搅拌后,最终产物以与试剂A进入罐中相同的速度流出容器(反应器罐中的体积是恒定的)。本例详细说明了CSTR及其双状态非线性模型的操作非绝热连续搅拌釜式反应器:MATLAB文件建模与仿真在Simulink®金宝app

CSTR模型的输入是:

u_1(t) = C_{Af}(t) \;& # 38;[kgmol/m^3] \\
u_2(t) = T_f(t) \;& # 38;[K] \\
u_3(t) = T_j(t) \;& # 38;\textnormal{夹克冷却温度}[K] \\
\end{array} $$

输出(y(t)),也是模型(x(t))的状态,为:

数组$ $ \开始{}{你}& # xA; y_1 (t) = x_1 (t) = C_{一}\ (t);& # 38;[kgmol/m^3] \\
y_2(t) = x_2(t) = t (t) \;& # 38;\textnormal{Reactor temperature} [K] \\
\end{array} $$

控制目标是保持试剂A的浓度,$C{A}(t)$在期望的水平美元$ C_ {Aref} (t),随时间变化。夹套温度美元美元T_j (t)是由PI控制器操纵,以拒绝由进料流温度引起的扰动$T_f(T)$.PI控制器的输入是跟踪误差信号,美元C_ {Aref} (t) -C_A (t)美元.进料流浓度,美元$ C_ {Af} (t),被假定为常数。仿真软件金宝app模型iddemo_cstr将CSTR装置作为模块实施装运箱

开放式系统(“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)也包含在[0,200)和[400,600)范围内对t的白噪声扰动。这个白噪声信号的功率是0.015。噪声功率经经验调整以近似给出信噪比为10。在闭环辨识中,参考信号没有足够的激励会导致没有足够的信息来辨识唯一的模型。的实现美元$ C_ {Aref} (t)是在iddemo_cstr / CA参考块。

自适应控制的在线估计

由非线性模型可知,CSTR输出$C{A}(t)$对控制输入更敏感美元美元T_j (t)在更高的$C{A}(t)$递归多项式模型估计器块用于检测灵敏度的变化。该信息用于调整PI控制器的增益$C{A}(t)$变化。目的是避免高增益控制回路可能导致不稳定。

你估计一个离散传递函数美元美元T_j (t)$C{A}(t)$在线使用递归多项式模型估计块。自适应控制算法采用该传递函数的直流增益。跟踪误差美元C_ {Aref} (t) -C_A (t)美元,除以估计传递函数的归一化直流增益。这种归一化是为了使跟踪误差在初始工作点的增益为1,为此设计了PI控制器。例如,如果直流增益变为2倍其原始值,则误差信号被除以2。这相当于PI控制器增益除以2。该自适应控制器在iddemo_cstr /自适应PI控制器

递归多项式模型估计器块输入

“递归多项式模型估计器”块在系统辨识工具箱/估计Simulink中的库金宝app。使用此块可估计具有ARMAX结构的线性模型。ARMAX模型的形式如下:

数组$ $ & # xA; \开始{}{1}{y} (q) \酒吧(t) = B (q) \酒吧{你}(t) + C (q) \酒吧}{e (t) \ \ [0.1] & # xA; (q) = 1 + a_1z ^ {1} + a_2z ^ {2} + \ cdots +现代z ^ {na} {na} \ \ & # xA; B (q) = (b_01 + b_1z ^ {1} + b_2z ^ {2} + \ cdots +现代z ^ {nb-1} {nb + 1}) z ^ {nk} \ \ & # xA; C (q) = 1 + c_1z ^ {1} + c_2z ^ {2} + \ cdots + c_ z ^{数控}{数控}\ \ & # xA;结束\{数组}& # xA; $ $

  • 输入输出引入的递归多项式模型估计器块对应$\bar{u}(t)$$\bar{y}(t)$分别适用于CSTR模型$ {y} $ \酒吧{你}$ $ \酒吧与夹套温度和浓度微调操作点的偏差:$ {y} \酒吧= C_A (t) - C{} \酒吧(t)美元$\bar{u}=T_j(T)-\bar{T}u j(T)$.这是很好的规模{你}$ $ \酒吧$ {y} $ \酒吧峰值振幅为1,以改善估计问题的数值条件。微调操作点,$ {C} \酒吧(t)美元$ {T} \酒吧_j (T)美元,在系统运行前并不确切知道。它们是使用一阶移动平均滤波器从测量信号中估计和提取的。这些预处理滤波器在iddemo_cstr/预处理Tjiddemo_cstr / CA进行预处理块。

开放式系统(“iddemo_cstr /预处理Tj”);

  • 可选启用输入递归多项式模型估计块控制块中的参数估计。当使能信号为零时,参数估计将被禁用。的所有其他值启用参数估计启用信号。在本例中,对时间间隔的估计被禁用t \[200400)美元$t\in[600800)$.在这些间隔期间,测量的输入美元美元T_j (t)不包含足够的激励用于闭环系统辨识。

递归多项式模型估计器块设置

配置块参数来估计一个二阶ARMAX模型。在模型参数选项卡中,指定:

  • 模型结构:ARMAX。选择ARMAX,因为作用于系统的扰动的当前和过去的值,$T_f(T)$,预计将影响CSTR系统输出美元美元C_A (t)

  • 初步估计:一个也没有。默认情况下,软件对所有估计参数使用0值。

  • A(q) (na)参数个数2.非线性模型有两种状态。

  • B(q)中的参数数(nb)2

  • C(q)(nc)中的参数数量2.估算模型对应于二阶模型,因为na、nb和nc的最大值为2。

  • 输入延迟(nk)1。与大多数物理系统一样,CSTR系统没有直接馈通。此外,其I/O之间也没有额外的时间延迟。

  • 参数协方差矩阵1 e4.指定一个高协方差值,因为初始的猜测值是高度不确定的。

  • 样品时间0.1.已知CSTR模型的带宽约为0.25Hz。T_s = 0.1美元选择使1/0.1大于这个带宽的20倍(5Hz)。

点击算法和块选项设置估计选项。

  • 估算方法遗忘因子

  • 遗忘因子1-5e-3.由于预计估计参数将随工作点而变化,因此将遗忘因子设置为小于1的值。选择美元\λ= 1-5e-3 $哪个对应的记忆时间常数是$T_0=\frac{Ts}{1-\lambda}=100$秒。100秒的存储时间确保用于识别的大量数据来自每个操作点的200秒识别周期。

  • 选择输出估计误差复选框。您可以使用此块输出来验证估计。

  • 选择添加启用端口复选框。仅当在参考端口中注入额外噪声时,您希望调整估计的模型参数。当不再注入额外噪声时,通过此端口禁用参数估计n。

  • 外部复位没有一个

递归多项式模型估计器块输出

在每一个时间步,递归多项式模型估计器提供一个估计$A(q)$B (q)美元C (q)美元,以及估计误差$ {e} $ \酒吧.的错误多项式模型估计器块的输出端口包含酒吧\ {e} (t)美元也被称为提前一步预测误差。的参数块的输出端口包含总线信号中的A(q)、B(q)和C(q)多项式系数。给定选定的多项式阶数($na=2$nb = 2美元数控= 2美元$nk=1$)参数总线元件包括:

$$ \begin{array} {l}
A(t) = [1 \;a_1 (t) \;B(t) = [0 \;b_0 (t) \;b_1(t) = [1 \&#c₁(t) \;c₂(t)) \ \ & # xA; \{数组}$ $

仿真过程中,A(q)、B(q)、C(q)多项式的估计参数变化如下:

sim卡(“iddemo_cstr”); 封闭系统(“iddemo_cstr /预处理Tj”); 开放式系统(“iddemo_cstr / ABC”);

由于为初始参数协方差矩阵选择了较高的值,参数估计值从其初始值0快速变化$A(q)$B (q)美元多项式的值接近于t = 200美元迅速。的参数C (q)美元多项式显示出一些波动。这些波动背后的一个原因是干扰$T_f(T)$装运箱输出美元美元C_A (t)不是完全由ARMAX结构建模的。误差模型C (q)美元由于美元美元T_j (t)美元美元C_A (t)关系由传递函数捕获$ \压裂{B (q)} {(q)} $.因此C (q)美元与此识别和控制问题无关。

参数估计保持不变t \[200400)美元由于此间隔的估计器块被禁用(0信号到启用尺寸)。参数估计在$t=400$当CSTR储罐开始切换到其新的工作点时$A(q)$B (q)美元收敛到它们的新值t = 600美元,然后通过设置启用端口到0。端口的收敛性$A(q)$B (q)美元在这个操作点更慢。这种缓慢的收敛是因为参数协方差矩阵在t=400时的特征值比在t=0时设置的初始1e4值更小。参数协方差(估计值的置信度)随着每个时间步长而更新。算法在t=0时,当估计的置信度较低时,快速改变参数估计。改进的参数估计更好地捕捉系统行为,从而导致更小的一步预测误差和更小的参数协方差矩阵特征值(增加的置信度)。系统行为在t=400时发生变化。然而,由于估计值的置信度增加,块更改参数估计值的速度较慢。您可以使用递归多项式模型估计器块的External Reset选项来提供参数协方差在t=400时的新值。要查看参数协方差的值,请选择输出参数协方差矩阵复选框的递归多项式模型估计器块。

验证估计模型

错误输出递归多项式模型估计器块给出了估计模型的一步误差。

封闭系统(“iddemo_cstr / ABC”); 开放式系统('iddemo_cstr/1-Step Ahead Prediction Error');

当没有额外的摄动注入时,一步误差会更高美元美元T_j (t)用于系统识别的通道。这些较高的误差可能是由于在美元美元T_j (t)估计器块所依赖的输入通道。然而,与测量的数据波动相比,即使这个较高的误差也很低且有界美元美元C_A (t)。这使估计参数值具有可信度。

对估计模型更严格的检查是模拟估计模型并与实际模型输出进行比较。的iddemo_cstr /时变ARMAX块实现了在线多项式模型估计块估计的时变ARMAX模型。CSTR系统输出与估计时变ARMAX模型输出的误差为:

封闭系统('iddemo_cstr/1-Step Ahead Prediction Error'); 开放式系统(“iddemo_cstr /模拟误差”);

仿真误差再次有界且较低时,相比波动美元美元C_A (t)这进一步提供了估计线性模型能够预测非线性CSTR模型行为的信心。

辨识出的模型可在MATLAB中进行进一步分析。模型对操作点进行估计C_A = 1.5美元kgmol / m ^ 3美元C_A = 2美元kgmol / m ^ 3美元可以通过观察A(q), B(q)和C(q)在t = 200美元t = 600美元这些模型的Bode图分别为:

t = 0.1;tidx =找到(t > = 200, 1);P200 = idpoly (AHat (:,:, tidx) BHat (:,:, tidx),聊天(:,:,tidx), 1, 1, [], Ts);tidx =找到(t > = 600, 1);P600 = idpoly (AHat (:,:, tidx) BHat (:,:, tidx),聊天(:,:,tidx), 1, 1, [], Ts);bodemag (P200“b”P600,“r——”{10 ^ 1 20});传奇(' C_A=1.5 [kgmol/m^3]时的估计模型'...' C_A=2.0 [kgmol/m^3]时的估计模型'...“位置”“最佳”);

估计模型在较高浓度水平下具有较高的增益,这与关于非线性CSTR装置的先验知识相一致$C_A(t)=2[kgmol/m^3]$有一个6分贝$在低频时,增益更高(幅度加倍)。

总结

你估计了两个ARMAX模型来捕获非线性CSTR工厂在两种运行条件下的行为。利用自适应控制器进行闭环估计。您查看了两个信号来验证估计结果:提前一步预测误差和CSTR工厂输出与估计模型模拟之间的误差。这两个错误信号都是有界的,与CSTR工厂输出相比很小。这为估计的ARMAX模型参数提供了信心。

bdclose (“iddemo_cstr”);