主要内容

使用n-D自适应查找表建模引擎

目标

在本例中,您将学习如何使用n-D自适应查找表捕获引擎的时变行为。您可以使用Simulink完成以下任务金宝app®软件:

  • 配置一个自适应查找表块来对系统建模。

  • 模拟模型以动态更新查找表值。

  • 将适应的查找表值导出到MATLAB®工作区。

  • 在调整期间锁定表中的特定单元格。

  • 关闭适配进程,将自适应查找表作为静态查找表使用。

关于数据

在本例中,使用中的数据vedata.mat它包含以下从发动机测量的变量:

  • X-进气歧管压力范围内的10个输入断点[10,100]

  • Y- 36个输入断点的发动机转速范围[0,7000]

  • Z- 10x36的发动机容积效率表数据矩阵

    要了解有关断点和表数据的更多信息,请参见解析查找表

发动机的输出容积效率是时变的,并且是两个输入-进气歧管压力和发动机转速的函数。mat文件中的数据用于为引擎生成时变输入和输出(I/O)数据。

在下一节中,您将打开一个预配置的Simulink模型。金宝app

发动机数据模型

加载引擎数据。

负载vedata.mat

打开预配置的模型。

open_system (“enginetable1_data”

使用自适应查找表块构建模型

在本教程的这一部分中,您将学习如何使用Adaptive Lookup Table块构建引擎模型。

  1. Simulink模型中的实验数据子系统在仿真过程中生成时变I/O数据。金宝app

    该命令还装载变量XYZ到MATLAB工作空间。要了解有关此数据的更多信息,请参见关于数据

  2. 在Simulink模型中添加一个自适应查找表块。金宝app

    1. 打开Simulin金宝appk库浏览器。

      在MATLAB提示符下,输入slLibraryBrowser

    2. 打开金宝appSimulink Design Optimization™图书馆。

      窗格,展开金宝appSimulink设计优化节点。

    3. 金宝appSimulink设计优化库树,点击自适应查找表

    4. 从自适应查找表库中拖拽自适应查找表(nD - fit)块到Simulink模型窗口。金宝app

  3. 双击“自适应查找表(nD step - fit)”块,打开“功能块参数:自适应查找表(nD step - fit)”对话框。

  4. 在“功能块参数”对话框中:

    1. 指定以下块参数:

      • 表断点(单元格数组)——输入{[X;110年],[Y;7200]}指定输入断点的范围。

      • 表数据(初始)——输入兰特(36)指定随机数作为容积效率的初始表值。

      • 表编号数据——输入重塑(1:360 10 36)为表单元格指定编号方案。

    2. 验证样本均值(含遗忘)适应方法下拉列表。

    3. 输入0.98适应增益(0 ~ 1)字段来指定遗忘因子样本均值(含遗忘)适应算法。

      自适应增益接近1表示查找表值对输入噪声具有较高的鲁棒性。要了解更多关于适应增益的信息,请参见有遗忘的样本均值选择适应方法

    4. 选择将调整后的表作为输出复选框。

      此操作将添加一个名为吹捧到自适应查找表块。您可以使用此端口绘制正在调整的表值。

    5. 选择增加适配启用/禁用/复位端口复选框。

      此操作将添加一个名为启用到自适应查找表块。该端口用于开启或关闭适配进程。

    6. 选择添加单元锁启用/禁用端口复选框。

      此操作将添加一个名为到自适应查找表块。在适应过程中使用该端口锁定单元格。

    7. 验证忽略超范围处理下拉列表。

      此选择指定软件在适应期间忽略输入断点范围之外的任何时变输入。

      提示

      要了解更多信息,请参见自适应查找表(nD - step - fit)块引用页。

      配置完成后,块参数对话框如下图所示。

    8. 点击好吧关闭“功能块参数”对话框。

      现在,S金宝appimulink模型看起来与下图相似。

  5. 将输入和输出数据分配给引擎模型UY端口的实验数据块uy自适应查找表块的端口。

  6. 使用Simulink块设计一个逻辑来启用或金宝app禁用适配过程。将逻辑连接到Adaptive Lookup Table块,如下图所示。

    这个逻辑输出一个初始值1,它启用了适应过程。

  7. 设计一个逻辑来在适应期间锁定单元格。将逻辑连接到Adaptive Lookup Table块,如下图所示。

  8. 在Simuli金宝appnk库浏览器中,选择金宝app>库,并将显示块拖动到模型窗口。连接模块,如下图所示。

    在仿真过程中,显示模块显示如下:

    • 显示block -显示当前单元格的值。

    • Display1block -显示当前正在调整的单元格的数量。

  9. 编写一个MATLAB函数来绘制查找表值,因为它们在模拟过程中适应。

    另外,类型enginetable在MATLAB提示符下打开预配置的Simulink模型。金宝app的效率表面子系统包含一个绘制查找表值的函数,如下图所示。

  10. 连接To Workspace块以导出已调整的表值:

    1. 在Simuli金宝appnk库浏览器中,选择金宝app>库,并将To Workspace块拖到模型窗口。

      要了解有关此块的更多信息,请参阅到工作空间块参考页中的Simulink文档。金宝app

    2. 双击To Workspace块打开Sink块参数对话框,然后键入吹捧变量名字段。

    3. 点击好吧

    4. 将To Workspace块连接到自适应查找表输出信号吹捧,如下图所示。

现在,您已经构建了用于更新和查看自适应查找表值的模型。您现在必须模拟模型以启动适配,如使用时变I/O数据调整查找表值

使用时变I/O数据调整查找表值

在本教程的这一部分中,您将学习如何更新查找表值以适应随时间变化的输入和输出值。

如前所述,您必须已经构建了Simulink模型金宝app使用自适应查找表块构建模型

执行适配:

  1. 在Simuli金宝appnk编辑器中,将仿真时间指定为

    仿真时间为无穷大,表示只要引擎的输入输出值发生变化,适应过程就会继续进行。

  2. 在“Simul金宝appink编辑器”中单击运行模拟开始适应过程。

    打开一个图形窗口,显示发动机的容积效率作为进气歧管压力和发动机转速的函数:

    • 左图显示了测量的容积效率作为进气歧管压力和发动机转速的函数。

    • 右图显示体积效率,因为它适应时变进气歧管压力和发动机转速。

    在模拟过程中,右图上显示的查找表值适应I/O数据的变化。左图和右图在几秒钟后彼此相似,如下图所示。

    提示

    在模拟过程中,手机号自适应表输出Simulink模型中的块分金宝app别显示单元格编号和单元格中已适应的查找表值。

  3. 单击暂停模拟暂停模拟

    此操作还导出已调整的表值吹捧到MATLAB工作空间。

    请注意

    暂停模拟后,已调整的表值存储在Adaptive Lookup table块中。

  4. 检查左图和右图是否匹配。这种相似性表明表值已经适应了随时间变化的I/O数据。

  5. 锁定一个表格单元格,以便只适应一个单元格。如果部分数据非常不稳定或算法难以处理,您可能会发现此特性很有用。

    1. 点击运行模拟重新启动模拟。

    2. 双击块。这个动作拨动开关并提供输出Block to the的输入端口自适应查找表(nD - step - fit)块。

      可以查看锁定单元格的编号手机号块中。金宝app

  6. 在表值适应时变I/O数据之后,您可以继续使用Adaptive Lookup table块作为静态查找表:

    1. 在Simuli金宝appnk模型窗口中,双击启用块。这个动作拨动开关,并禁用自适应。

    2. 点击运行模拟重新启动模拟(如果模拟尚未运行)。

      在模拟过程中,自适应查找表块像静态查找表一样工作,并在输入值发生变化时继续估计输出值。控件中可以看到当前查找表的值自适应表输出块在Simulink模型窗金宝app口中。

    请注意

    禁用适配后,Adaptive Lookup Table块不会更新存储的表值,显示表值的图也不会更新。

另请参阅

相关的话题