调整和实验用块参数值

在构造模型时,可以尝试块参数,例如传递函数块,以帮助您决定哪些块来使用。您可以模拟不同的参数值的模型,捕捉和观察模拟输出。

您可以在模拟过程中更改大多数数字块参数的值。观察效果,​​可以可视化实时仿真输出。这种技术可以让您快速测试参数值,而你开发的算法。可以直观:

  • 调整和优化控制参数。

  • 校准模型参数。

  • 在不同条件下测试控制的鲁棒性。

开始模拟时,Simulink万博1manbetx®首先更新模型关系图。对于较大的型号,此操作可能需要时间。要在不重复更新模型关系图的情况下测试参数值,可以在单个模拟运行期间调整参数值。

或者,为了避免更新所述模型图,使用快速重新启动。有关快速重新启动的详细信息,请参阅快速重启开始.

如果无法实时直观地分析仿真输出,或者必须运行许多仿真,请考虑使用编程方法扫描参数值。您可以捕获模拟输出数据并在稍后执行分析。有关详细信息,请参见优化、估计和扫描块参数值.

有关访问和设置块参数值的基本信息,请参见安装块参数值.

在模拟运行之间迭代调整块参数值

该示例示出了如何通过模拟运行之间改变块参数值原型的模型。您可以使用参数值进行试验和仿真结果观察到你决定使用哪些块,以及如何构建模型的帮助。

这个例子模型sldemo U燃料系统表示汽油发动机的加油系统。模型中的一个子系统,前馈燃油率通过使用恒定数量的计算发动机的燃料需求14.6条,表示发动机消耗的理想(化学计量)空燃比。子系统中的两个块使用数字设置参数值。

假设要将理想空燃比的设计值从14.6条17.5观察其对燃料需求的影响。要存储在模型设计值,你可以修改块对话框中的值。或者,你可以用一个有意义的名字,它允许你重用两个块值的变量的值存储。

要通过更改“块”对话框中的值来观察仿真输出的更改,请执行以下操作:

  1. 打开示例模型。

    sldemo U燃料系统

  2. 设置模型模拟时间2000年50为了更快的模拟。

  3. 在模型中,打开范围阻止对话框。

  4. 模拟模型。在中调整窗口大小范围对话框中看到所有的仿真结果。

    示波器显示在整个模拟过程中燃料信号在大约0.91.6款. 这个air_fuel_ratio信号迅速上升到15无过冲。

  5. 在模型中,打开模型数据编辑器。上造型选项卡,单击模型数据编辑器. 在模型数据编辑器中,检查参数标签。

  6. 在模型中或在命令提示下,导航到目标子系统。

    开放式系统(...'sldemo_fuelsys/fuel_rate_control/fuel_calc/feedforward_fuel_rate')

  7. 在模型数据编辑器中,使用价值列改变恒值(价值的)参数常数标记块富有的1/(14.6*0.8)1/(17.5*0.8).

  8. 同样,更改恒值该块的参数标记正常2014年1月6日17.5年1月.

  9. 模拟模型。

    示波器显示信号现在响应不同。

要用数值变量替换块对话框中的文字值,请执行以下操作:

  1. 使用模型数据编辑器设置正常常数1/混合物.

  2. 设置的值富有的1/(混合物*0.8).

  3. 在编辑富有的值,旁边1/(混合物*0.8),单击“操作”按钮然后选择创建.

  4. 创建新数据对话框,设置价值17.5然后点击创建.

    数值变量混合物出现在具有值的基本工作区中17.5. 在模拟运行之间,可以更改混合物而不是在“块”对话框中更改参数值。

调整块参数数值模拟在

此示例演示如何在模拟期间观察更改块参数值的效果。此技术允许您避免在模拟运行之间更新模型关系图,并以交互方式测试和调试模型。

这个例子模型sldemo U燃料系统包含常数街区,节气门指令,它表示throttle命令。要在模拟过程中观察增加命令大小的效果,请执行以下操作:

  1. 打开示例模型。

    sldemo U燃料系统

  2. 在模型中,打开范围阻止对话框。

  3. 开始模拟。

    该模型被配置为模拟2000秒。在模拟过程中的价值燃料air_fuel_ratio信号出现在实时范围曲线图。

  4. 在模型中,当状态栏显示约1000个(1000秒),单击暂停按钮暂停模拟。

  5. 在范围显示中燃料图绘制了暂停时间之前的模拟输出。

  6. 在模型中,在造型选项卡,单击模型数据编辑器.

  7. 在模型数据编辑器中,选择参数标签。

  8. 在模型中,选择节气门指令封锁。

  9. 在模型数据编辑器中,选择rep_seq_y划船。确保您没有选择代表顺序也划船。

  10. 为了rep_seq_y行,更改价值列来自[10 20 10][10 30 10].

  11. 单击“前进一步”按钮逐步推进仿真。单击该按钮大约15次,或者直到您看到燃料作用域显示中的图形。

    信号图燃料表示燃油需求的急剧增加,与油门指令的增加相对应。

  12. 在模型中,通过点击重新开始仿真继续按钮.

    范围显示显示在整个模拟过程中,燃料需求的显著周期性增长和空燃比的周期性降低。

在模拟过程中,必须在更改工作空间变量的值后更新模型关系图。有关更新模型关系图的详细信息,请参见更新图表并运行模拟.

准备参数调整和实验

  • 使用工作区变量设定块参数值。

    访问块参数的值,例如恒值一个参数常数块,你必须导航到模型块,打开块对话框,通过使用模型浏览器搜索框,或者使用功能设置参数在命令提示下。

    或者,如果通过创建工作空间变量设置块参数值,则可以使用命令提示MATLAB更改变量值®工作区浏览器或模型资源管理器。也可以创建一个变量,为多个块参数设置相同的值。更改变量值时,所有目标块参数都将使用新值。有关访问和设置块参数值的详细信息,请参见安装块参数值.

  • 可视化模拟输出。

    要在调整块参数值时实时观察仿真输出,可以在模型中使用块,例如范围封锁。您还可以在模拟运行结束时捕获模拟输出,并在模拟数据检查器中查看数据。有关详细信息,请参见决定如何可视化仿真数据.

  • 指定要在模拟期间调整的块参数的值范围。

    如果希望其他人使用您的模型并调整参数,则可以通过指定范围来控制允许的调整值。此外,最好为所有要优化的定点块参数指定值范围。要指定块参数值范围,请参见指定块参数最小值和最大值.

  • 控制仿真持续时间和节奏。

    模拟运行的执行速度非常快,以至于您无法调整块参数值。此外,如果要在特定模拟时间更改参数值,则必须学习控制模拟速度。您可以将模拟配置为在特定的持续时间内运行或永远运行,并在需要时暂停和推进模拟。有关详细信息,请参见交互模拟模型以编程方式运行模拟.

交互式调节使用仪表板块

通过将仪表板库中的块添加到模型中,可以调整块参数值。仪表板块允许您通过与模拟工业控件外观的旋钮、开关和读数交互,调整其他块的参数值,并实时观察模拟输出。您可以与仪表板块交互,而无需在模型中定位目标块参数。有关详细信息,请参见使用仪表板块调整和可视化模型.

在模拟过程中哪些块参数是可调的?

非无法块参数是在模拟过程中不能更改其值的参数。例如,您无法调整采样时间块参数。如果参数不是不能的,则在模拟过程中不能通过更改“块”对话框中的值或更改工作空间变量的值来更改其值。

非无法执行的块参数包括:

  • 取样时间。

  • 控制块的外观或结构的参数,例如封锁。

  • 优先级,它允许您控制块的执行顺序。

  • 控制块算法的参数,例如积分器法一个参数离散时间积分器封锁。

要确定块参数在模拟期间是否可调,请使用以下技术之一:

  • 开始模拟并打开“块”对话框。如果在模拟过程中目标块参数的值为灰色,则无法调整该参数。

  • 在命令提示符下,确定是否标志读写编译时只读描述参数。

    1. 选择模型块。

    2. 在命令提示符下,使用功能get_param返回有关“块”对话框参数的信息。函数返回一个结构,该结构在“块”对话框中为每个参数都有一个字段。

      paramInfo = get_param(GCB,'对话框参数');

      或者,除了定位和选择模型块,可以更换GCB使用块路径,例如'基于myModel / mySubsystem / myBlock'.

    3. 查看有关目标块参数的信息。例如,要查看有关采样时间参数块的,查看字段的值取样时间,这也是一个结构。

      paramInfo.SampleTime参数
      ans=Prompt:'Sample time:'Type:'string'枚举:{}属性:{'read-write''只读,如果编译的是'dont eval'}

    4. 检查结构的属性字段,其值是字符向量的单元格数组。如果旗帜读写出现在单元格数组中,可以修改参数值。但是,如果旗帜编译时只读也出现在单元数组中,在模拟过程中不能修改参数值。

如果使用掩码为块和子系统创建自定义接口,则可以控制各个掩码参数的可调性。如果使用模型参数来参数化引用的模型,则可以在每个模型封锁。

为什么模拟输出保持不变?

如果更改参数值后模拟的输出没有更改,请使用以下故障排除技术:

  • 找到工作区变量的定义。

    如果使用工作空间变量设置块参数值,请确定变量定义所在的位置。例如,如果定义了一个变量myVar公司在模型工作空间中,并使用它来设置模型中的块参数值,不能通过更改名为myVar公司在底座的工作区。您必须在模型工作区访问的变量定义。

    若要定位变量的定义,请在编辑使用该变量的块参数的值时,单击附近的“操作”按钮然后选择探索.打开一个对话框,比如模型浏览器,它显示在适当的工作区中的变量的定义。有关模型如何使用变量的更多信息,请参阅符号分辨率.

  • 指定要在模拟期间调整的定点参数的值范围。

    如果要调整的块参数使用具有最佳精度缩放的定点数据类型,请为该参数指定最小值和最大值,以便Simulink可以计算并应用适当的缩放。如果不指定值范围,Simulink可能会应用一个不包括要使用的调整值的缩放。要指定值范围,请参见万博1manbetx指定块参数最小值和最大值.

  • 更新模拟运行期间的模型图。如果使用工作区变量来设置的一个或多个块的参数的值,则在模拟过程中改变变量的值之后,则必须更新模型图。

    要了解如何更新模型关系图,请参见更新图表并运行模拟.

可调性事项和限制其他建模目标

参考模型

当您使用模型块,这些参数可调限制适用于:

  • 如果设置模型块设置为加速模式,或者如果在加速模式下模拟父模型,则在模拟过程中无法调整参照模型中的块参数。但是,如果引用的模型使用基本工作区或数据字典中的变量来设置参数值,则可以调整变量的值。

  • 假设您使用一个MATLAB变量或万博1manbetxSimulink.参数对象来设置模型中块参数的值。如果你使用模型参考此模型的块:

    • 你设置的仿真模式模型块设置为加速模式或以加速模式模拟父模型,在模拟过程中不能更改变量或对象的值。

    • 在加速模式下模拟父模型时,在模拟运行之间更改变量或对象的值将导致Simulink重新生成代码。万博1manbetx

    • 并使用额外模型块参考模型中多次父模型,你可以为每个不同的模拟模式模型封锁。如果至少一个块使用正常模拟模式和任何其它块使用不同的模拟模式,则不能在模拟过程中改变变量或对象的值。此外,当您模拟与快速重启父模型,你不能改变快速重新启动模拟运行之间的变量或对象的值。

    作为解决方法,将变量或对象移动到基本工作区或数据字典。

加速器和SIL/PIL模拟

这些可调限制适用于加速器、快速加速器、SIL和PIL模拟:

  • 假设您使用一个MATLAB变量或万博1manbetxSimulink.参数对象来设置模型中块参数的值。如果你使用sim卡功能模拟在快速加速器模式的模型,并设置RapidAcceleratorUpToDateCheck对参数进行配对'关闭',您不能使用快速加速度计对参数来指定为变量或对象不同的值。该结构通过返回万博1manbetxSimulink.BlockDiagram.buildRapidAcceleratorTarget目标不包含有关变量或对象的信息。

  • 如果块参数值引用工作空间变量,则不能在快速加速器模拟期间更改块参数值,例如使用设置参数. 相反,您可以调整被引用变量的值。

    或者,使用参数集在快速加速器模拟之间优化运行时参数。有关详细信息,请参见调整运行时参数.

有关加速模拟期间参数可调性的更多信息,请参见调整运行时参数带快速加速器模式的parfor中的sim. 有关SIL和PIL仿真期间参数可调性的更多信息,请参见可调参数与SIL/PIL(嵌入式编码器)。

快速重启

有关使用快速重新启动时参数可调性的更多信息,请参见快速重启开始.

代码生成和外部程序的模拟

在模拟期间可调的参数可以在生成的代码中显示为非无法内联的参数。如果使用SIL、PIL或外部模式模拟来模拟外部程序,则模拟期间和模拟运行之间的参数可调性取决于代码生成设置。

要控制生成代码中的参数可调性,可以使用配置参数调整模型的代码生成设置默认参数行为.您还可以调整个别MATLAB变量设置,万博1manbetxSimulink.参数对象和其他参数对象。有关详细信息,请参见在生成的代码中保留变量(万博1manbetx编码器的Simulink)。

状态流程图

要通过在模拟期间更改数据来调试状态流程图,请参见调试状态流程图(状态流)。

另见

相关话题