Simulink 环境基础知识(十七)--设置模块参数值

今天是大年初一,在这里祝大家牛年阖家欢乐,身体健康,牛气冲天!!!

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

目录

设置模块参数值

以编程方式访问参数值

指定参数值

其他建模目的注意事项


设置模块参数值

模块的数值参数决定它们计算输出值的方式。要控制模块执行的计算,可以指定参数值。例如,Gain模块有一个Gain参数,Transfer Fcn 模块有多个表示传递函数系数的参数。可以使用数字、变量和表达式设置模块参数值。请基于建模目的选择一种方式。例如,可以:

  • 通过创建变量在模块和模型之间共享参数值。

  • 通过创建参数对象来控制参数特征,如数据类型和维度。

  • 使用数学表达式以代码的形式为算法建模。

    扫描二维码关注公众号,回复: 12565414 查看本文章

使用 Model Data Editor(在 Modeling 选项卡上点击 Model Data Editor)中的 Parameters 选项卡、Property Inspector(在 Modeling 选项卡上的 Design 下点击 Property Inspector)或 Block 对话框,设置模块参数。要设置模块采样时间,参考指定采样时间

提示

可以使用 Model Explorer 一次对许多模块参数值进行批量更改。

以编程方式访问参数值

要以编程方式访问模块参数值,请使用get_paramset_param函数。可以使用此方法:

  • 以编程方式构建模型。

  • 以编程方式进行模型仿真时,在仿真运行期间调整参数值。

要使用脚本在仿真运行之间扫描参数值,请使用 Simulink.SimulationInput 对象,而不是 get_param 和 set_param。参考优化、估计和扫描模块参数值。假设创建一个名为 myModel 的模型,其中包含一个名为 My Constant 的 Constant 模块。接下来,使用模块对话框将 Constant value 参数设置为 15。要以编程方式返回参数值,请使用函数 get_param。指定模块路径和等效的编程参数名称 Value

paramValue = get_param('myModel/My Constant','Value')

paramValue =

15

要以编程方式更改此值(例如,更改为 25),请使用函数 set_param。使用字符向量 '25' 作为该函数的输入。

set_param('myModel/My Constant','Value','25')

要查看模块参数的编程名称列表,参考模块特定的参数。有关编程仿真的详细信息,参考以编程方式运行仿真

要避免使用 get_param 和 set_param 函数,可以使用 MATLAB® 变量或Simulink.Parameter对象的名称作为参数值,然后在命令提示符下更改该变量或对象的值。参考通过创建变量来共享和重用模块参数值

指定参数值

目的 模块参数值 说明

将参数值存储在模型文件中。

2.3

[1.2 2.3 4.5; 7.9 8.7 6.5]

2 + 3i

字面数值。指定标量、向量、矩阵或多维数组。使用 i 指定复数值。

  • 访问参数值而无需定位或识别模型中的模块。

  • 更改参数值而无需修改模型文件。

  • 在模块之间或模型之间共享参数值。

  • 在扫描或调优参数值时通过特定名称来标识参数。

myVar

存在于工作区中的 MATLAB 变量。

参考通过创建变量来共享和重用模块参数值

  • 避免工作区变量之间发生名称冲突。

  • 使用层次结构和有意义的名称组织参数值。

  • 减少模型使用的工作区变量数。

myParam.a.SpeedVect

参数结构体的字段。

参考在结构体中组织相关的模块参数定义

使用矩阵或数组变量的一部分。例如,设置n-D Lookup Table模块的参数。

myMatrixParam(:,2)

索引操作。

  • 独立于参数值来定义参数特征,如数据类型、复/实性、单位、允许使用的值范围和维度。

  • 定义带有自定义说明文档的系统常量。

  • 在生成的代码中创建可调参数。

  • 将变量的值设置为涉及常量和其他变量的数学表达式。

myParam

参数对象。

参考使用参数对象

  • 将参数值表示为已知物理常数之间的数学关系,而不是表示为不可识别的文本数字。

  • 减少模型中的模块填充。

  • 通过使用代码(而不是模块)对模糊或平凡计算进行建模。

  • 使用 MATLAB 运算符和函数执行计算。

  • 编写计算参数值的自定义 MATLAB 函数。

5^3.2 - 1/3

myParam * myOtherparam + sin(0.78*pi)

myFun(15.23)

表达式或自定义函数。

参考使用数学表达式、MATLAB函数和自定义函数

通过使用非 double 数据类型指定模块参数值。

15.23

single(15.23)

myParam

类型化或非类型化表达式、MATLAB 数值变量或参数对象。

有关控制参数数据类型的详细信息。

使用参数对象

参数对象是指 Simulink.Parameter 对象以及您创建的子类的对象。参数对象存在于工作区中,例如,在基础工作区或数据字典中。可以使用参数对象来定义系统常量。例如,使用参数对象表示地球的半径。使用对象的属性指定物理单位并说明值的用途。创建参数对象,以便为模型的代码生成做好准备。可以配置参数对象,作为生成代码中的可调全局变量。还可以通过对象控制参数数据类型。要在模型中创建并使用参数对象,参考数据对象。有关使用变量设置模块参数值的信息,参考通过创建变量来共享和重用模块参数值

使用数学表达式、MATLAB 函数和自定义函数

可以为调用 MATLAB 函数和运算符(如 sin 和 max)的表达式设置模块参数值。还可以调用 MATLAB 路径上您自己编写的自定义函数。假设模块算法中有一段代码使用变量来计算一个常量值,该值会在算法的其余部分中使用。可以通过创建多个模块来执行计算。

更好的办法是创建一个 Constant 模块,它使用以 MATLAB 代码编写的表达式。这样不仅可以减小模块算法的规模,还可以提高可读性。

可以使用一个表达式而不是多个模块为算法中的复杂部分建模。要处理现有信号,可在算法模块中使用数学表达式作为参数的值,例如 Gain 模块的 Gain 参数。使用表达式,还可以调用自定义函数以设置模块参数值。假设编写了一个 MATLAB 函数,它可通过接受一个输入数字来计算一个控制算法的最佳 P、I 和 D参数。

可以通过使用该函数来设置参数值,对 PID Controller 模块进行参数化。

要充分利用表达式,请注意以下提示:

  • 如果使用变量和参数对象,则可以对变量和对象所代表的真实数量之间的代数关系进行显式建模。按照使用数学表达式设置变量值中所述在参数对象中使用表达式。

  • 在编辑模块参数值中的表达式时,要导航到有关某函数的文档,请使用参数值旁边的  按钮。还可以导航到自定义函数的源代码。

其他建模目的注意事项

请根据建模目的选择设置模块参数值的方式。

目的 功能或产品 最佳做法
快速运行多个仿真。 Simulink.SimulationInput 对象和 sim 函数 使用变量或参数对象设置模块参数值。此方法可帮助您为参数指定有意义的名称,并避免不得不在模型中识别或定位模块。参考优化、估计和扫描模块参数值
在测试过程中扫描参数值。 Simulink® Test™ 使用变量或参数对象设置模块参数值。使用迭代和参数覆盖运行多个测试。参考Parameter Overrides(Simulink Test)和Test Ilterations(Simulink Test)。
估计并优化参数值。 Simulink Design Optimization™

使用变量或参数对象设置模块参数值。

要估计或优化使用非 double 数据类型的参数,请使用参数对象将值与数据类型相分离。

对于参数估计,参考Parameter Estimation (Simulink Design Optimization)。对于响应优化,参考Optimize Model Response (Simulink Design Optimization)。

从模型中生成代码。通过 SIL/PIL 或 External 模式仿真对外部程序进行仿真。 Simulink Coder™

使用参数对象设置模块参数值。这种方式有助于在生成的代码中声明和识别可调参数,还有助于控制参数数据类型。参考在生成的代码中创建可调标定参数(Simulink Coder)。

当使用表达式设置模块参数值时,避免使用导致生成的代码失去可调性的运算符和函数。参考Tunable Expression Limitations (Simulink Coder)。

猜你喜欢

转载自blog.csdn.net/jk_101/article/details/113773997
今日推荐