主要内容

在线递归最小二乘估计

此示例显示如何实现在线递归最小二乘估计器。您估计内燃机的非线性模型,并使用递归最小二乘法检测发动机惯性的变化。

发动机模型

发动机模型包括用于节流阀和歧管系统的非线性元件,以及燃烧系统。模型输入是油门角度,模型输出是RPM中的发动机速度。

Open_System('iddemo_engine');SIM('iddemo_engine'的)

发动机模型设置为脉冲系,脉冲序列驱动节气门角度从开口关闭。发动机响应是非线性的,特别是发动机RPM响应时间,当油门打开并关闭时是不同的。

在仿真中,在仿真中发生发动机故障,导致发动机惯性增加(发动机惯性,j,是模拟的IDDEMO_ENGINE /车辆动态堵塞)。惯性变化导致发动机响应时间在开放和封闭的节流位置增加。您使用在线递归最小二乘来检测惯性变化。

Open_System('iddemo_engine / trpm'的)

估计模型

发动机型号是一个阻尼的二阶系统,具有输入和输出非线性,以考虑不同节流位置的不同响应时间。使用递归最小二乘块来识别模拟引擎的以下离散系统:

$ y_n = a_1 u_ {n-1} + a_2 u_ {n-1} ^ 2 + a_3 y_ {n-1} $

由于估计模型没有明确地包括我们预期的惯性$ a $随着惯性的变化而变化的值。我们使用变化$ a $检测惯性变化的值。

发动机具有高达16Hz的显着带宽。将估算器采样频率设置为2 * 160Hz或示例时间$ t_s = 0.003 $秒。

递归最小二乘估计器块设置

$ u_ {n-1},u_ {n-1} ^ 2,y_ {n-1} $估计模型中的术语是模型回归器并输入递归最小二乘块,估计该副本$ a $价值观。您可以实现退货程序,如图所示Iddemo_engine /回归器堵塞。

Open_System('Iddemo_engine /回归');

配置递归最小二乘估计器块:

  • 初始估计:没有任何。默认情况下,软件使用值1。

  • 参数数量:3,每个人$ a $回归系数。

  • 参数协方差矩阵:1,初始猜测中的不确定性的数量为1.具体地,将估计的参数视为随机变量,具有方差1。

  • 采样时间$ t_s $

点击算法和块选项要设置估算选项:

  • 估计方法忘记因素

  • 忘记因素:1-2E-4。自估计以来$ a $预计值会随惯性而变化,将遗忘因子设置为少于1.选择$ \ lambda $= 1-2E-4,其对应于存储时间常数$ t_0 = \ frac {t_s} {1- \ lambda} $或15秒。15秒的存储时间确保从打开和闭节节流阀位置的重要数据用于估计,因为每10秒改变位置。

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

  • 选择输出参数协方差矩阵复选框。您使用此块输出来验证估计。

  • 清除添加启用端口复选框。

  • 外部重置没有任何

验证估计模型

错误输出递归最小二乘估计块为估计的模型提供了一步前的错误。该误差小于5%,表明对于一步预测,估计的模型是准确的。

Open_System('IDDEMO_ENGINE / ERROR(%)'的)

参数CovariRces矩阵的对角线给出了差异$ a_n $参数。这$ a_3 $相对于参数值表明对估计值的良好置信度的方差很小。相比之下,$ a_1,a_2 $差异相对于指示这些值的低置信度的参数值很大。

虽然小估计误差和协方差的估计估计模型正在正确估计,但它的限制在于错误是一步预测器。更严格的检查是在仿真模型中使用估计的模型,并与实际模型输出进行比较。这估计模型Simulink模型的一部分实金宝app现了这一点。

regressors1.块与...相同回归者块在递归估算器中使用。唯一的区别是,Y信号未从工厂中测量,而是从估计模型的输出反馈。回归块的输出乘以估计$ a_n $值得的价值观$ \ hat {y} _n $估计发动机速度。

Open_System('IDDEMO_ENGINE / TRPM EST'的)

估计的模型输出相当良好地匹配模型输出。稳态值接近,瞬态行为略有不同,但不显着。请注意,100秒后,在发动机惯性发生变化时,估计的模型输出与模型输出稍微不同。这意味着所选择的回归在惯性变化之后不能捕获模型的行为。这也表明系统行为的变化。

估计的模型输出与低一步前的错误和参数协方义相结合,为我们提供了对递归估算器的信心。

检测发动机惯性的变化

引擎模型是设置为在模拟中引入100秒的惯性。递归估计器可用于检测惯性的变化。

递归估计器需要大约50秒才能收敛到初始参数值集。检测我们检查的惯性变化$ a_1 $影响的模型系数$ a_1 u_ {n-1} $估计模型的术语。

Open_System('IDDEMO_ENGINE /检测惯性变化'的)

协方差$ a_1 $,0.05562相对于参数值0.1246表示,表明对估计值的低置信度。时间图$ a_1 $表明为什么协方差很大。具体来说$ a_1 $随着节流阀位置变化,表明估计模型不足以充分捕获不同节流位位置的不同上升时间并需要调整$ a_1 $。但是,我们可以使用它来确定随着平均值的惯性变化$ a_1 $随着惯性变化的变化。您可以在移动平均值上使用阈值检测器$ a_1 $参数检测引擎惯性的变化。

bdclose('iddemo_engine'的)