文档

调整和实验块参数值

在构建模型时,可以使用块参数进行实验,例如a的系数传递函数块,以帮助您决定使用哪些块。您可以用不同的参数值模拟模型,并捕捉和观察模拟输出。

您可以在模拟期间更改大多数数值块参数的值。为了观察效果,您可以实时可视化模拟输出。这种技术允许您在开发算法时快速测试参数值。你可以在视觉上:

  • 调整和优化控制参数。

  • 调整模型参数。

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

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

另外,为了避免更新模型图,可以使用Fast Restart。有关快速重启的详细信息,请参见从快速重启开始

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

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

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

这个例子展示了如何通过在模拟运行之间改变块参数值来原型一个模型。您可以使用参数值进行实验并观察模拟结果,以帮助您决定使用哪些块以及如何构建您的模型。

模型的例子sldemo_fuelsys表示汽油发动机的燃油系统。模型中的一个子系统,feedforward_fuel_rate,用这个常数来计算发动机的燃料需求14.6,代表发动机消耗的空气和燃料的理想(化学计量)比率。子系统中的两个块使用这个数字来设置参数的值。

假设你想要改变理想空气燃料比的设计值14.617.5观察对燃料需求的影响。要在模型中存储设计值,您可以在块对话框中修改该值。或者,您可以将值存储在具有有意义名称的变量中,这允许您在两个块中重用该值。

通过改变块对话框中的值来观察模拟输出的变化:

  1. 打开示例模型。

    sldemo_fuelsys

  2. 设置模型仿真时间200050为了更快的模拟。

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

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

    显示器显示,在整个仿真过程中燃料信号在大约0.91.6.的air_fuel_ratio信号迅速上升到15无超调。

  5. 在模型中,通过选择打开模型数据编辑器视图>模型数据编辑器. 在模型数据编辑器中,检查参数选项卡。

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

    open_system (...“sldemo_fuelsys / fuel_rate_control fuel_calc / feedforward_fuel_rate ')

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

  8. 同样,更改恒定值标记块的参数正常的1/14.61/17.5

  9. 模拟模型。

    显示器显示,信号的反应现在不同了。

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

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

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

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

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

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

仿真过程中调整块参数值

这个例子展示了如何在模拟过程中观察改变块参数值的效果。这种技术允许您避免在模拟运行之间更新模型图,并以交互方式测试和调试您的模型。

模型的例子sldemo_fuelsys包含一个常数节流命令,表示节气门指令。为了观察在模拟过程中增加命令的量级的效果:

  1. 打开示例模型。

    sldemo_fuelsys

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

  3. 开始仿真。

    该模型被配置为模拟2000秒。在仿真过程中,得到燃料air_fuel_ratio信号会实时出现在示波器图上。

  4. 在模型中,当状态栏显示近似时1000(1000秒),点击暂停按钮暂停模拟。

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

  6. 在模型中,选择视图>模型数据编辑器

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

  8. 在模型中,选择节流命令块。

  9. 在模型数据编辑器中,选择rep_seq_y行。确保您没有选择rep_seq_t行。

  10. rep_seq_y行,更改中的值价值列自(10 20)(10 30)

  11. 单击“前进”按钮逐步推进模拟。点击按钮约15次或直到你看到一个变化燃料图形在示波器显示。

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

  12. 在模型中,单击Continue按钮恢复模拟

    在整个模拟过程中,显示器显示了燃料需求的显著周期性增加,以及空油比的周期性降低。

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

准备参数调优和实验

  • 考虑使用工作区变量来设置块参数值。

    访问块参数的值,例如恒定值参数的常数块,则必须导航到模型中的块并打开块对话框,使用model Explorer或使用函数搜索块set_param在命令提示下。

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

  • 学习如何可视化仿真输出。

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

  • 考虑为您希望在模拟期间进行优化的块参数指定值范围。

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

  • 学习如何控制模拟持续时间和速度。

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

使用仪表板块进行交互式调优

您可以通过将Dashboard库中的块添加到模型中来优化块参数值。仪表板块允许您调整其他块的参数值,并通过与模拟工业控制外观的旋钮、开关和读数交互,实时观察模拟输出。您可以与Dashboard块交互,而不必在模型中定位目标块参数。有关更多信息,请参见使用仪表板块对模型进行优化和可视化

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

非功能块参数是在模拟期间不能更改其值的参数。例如,您不能调优样品时间块参数。如果参数是不可调优的,则不能在模拟期间通过更改块对话框中的值或更改工作区变量的值来更改其值。

不可调块参数包括:

  • 采样时间。

  • 控制块的外观或结构的参数,例如块的输入数量总和块。

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

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

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

  • 开始一个模拟并打开块对话框。如果仿真时目标块参数值为灰色,则无法对该参数进行调优。

  • 在命令提示符处,确定标志是否读写read-only-if-compiled描述参数。

    1. 选择模型中的块。

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

      paramInfo = get_param (gcb),“DialogParameters”);

      或者,您可以替换,而不是定位和选择模型中的块华东桐柏与块路径,如“myModel / mySubsystem / myBlock”

    3. 查看目标块参数信息。例如,查看样品时间参数,查看该字段的值取样时间,也是一种结构。

      paramInfo.SampleTime
      类型:' string' Enum:{}属性:{'read-write' 'read-only if-compiled' ' 'dont-eval'}

    4. 检查结构的安全性属性字段,其值是字符向量的单元格数组。如果国旗读写出现在单元格数组中,可以修改参数值。但是,如果国旗read-only-if-compiled也出现在单元格数组中,您不能在模拟期间修改参数值。

如果使用遮罩为块和子系统创建自定义接口,则可以控制各个遮罩参数的可调性。如果使用模型参数来参数化引用的模型,则可以调整每个模型中每个模型参数的值模型块。

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

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

  • 定位工作空间变量的定义。

    如果您使用工作区变量来设置块参数值,请确定变量定义所在的位置。例如,如果你定义一个变量myvar#在模型工作区中,并使用它在模型中设置块参数值,不能通过更改指定变量的值来更改参数值myvar#在基本工作区中。您必须访问模型工作区中的变量定义。

    要查找变量的定义,在编辑使用该变量的块参数的值时,请单击附近的操作按钮选择探索.打开一个对话框,例如Model Explorer,其中显示了适当工作区中变量的定义。有关模型如何使用变量的更多信息,请参见符号分辨率

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

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

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

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

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

引用模型

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

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

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

    • 然后你设置模拟模式模型块到加速模式或在加速模式下模拟父模型,在模拟过程中不能更改变量或对象的值。

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

    • 你使用额外的模型块来多次引用父模型中的模型,您可以为每个模型选择不同的模拟模式模型块。如果至少有一个块使用普通仿真模式,而其他块使用不同的仿真模式,则在仿真过程中不能更改变量或对象的值。另外,当您在启动快速重启的情况下模拟父模型时,您不能在快速重启模拟运行之间更改变量或对象的值。

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

加速器和SIL/PIL模拟

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

  • 假设你使用一个MATLAB变量或万博1manbetxSimulink.参数对象,以设置模型中块参数的值。如果你使用模拟功能模拟模型在快速加速模式下,并设置RapidAcceleratorUpToDateCheck两个参数“关闭”,你不能使用RapidAcceleratorParameterSets参数Pair以指定变量或对象的不同值。返回的结构万博1manbetxSimulink.BlockDiagram.buildRapidAcceleratorTarget不包含关于变量或对象的信息。

  • 如果块参数值引用工作空间变量,则在快速加速器模拟期间(例如通过使用函数)无法更改块参数值set_param.相反,您可以调优引用变量的值。

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

有关加速模拟期间参数可调性的更多信息,请参见优化运行时参数sim in parfor with Rapid Accelerator Mode. 有关SIL和PIL模拟期间参数可调性的更多信息,请参阅可调参数和SIL/PIL(嵌入式编码)。

快速重启

有关使用快速重启时参数可调性的更多信息,请参阅影响快速重启的因素

外部程序的代码生成和仿真

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

要控制生成代码中的参数可调性,您可以使用配置参数来调整模型的代码生成设置默认参数的行为.你也可以调整单个MATLAB变量的设置,万博1manbetxSimulink.参数对象和其他参数对象。有关详细信息,请参阅为快速原型配置数据可访问性(万博1manbetx仿真软件编码器)。

Stateflow图表

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

另见

相关的话题

这个话题有用吗?