以编程方式指定模块参数和属性
模块参数通常定义模型动态特性和数学特性。它们还允许您配置模块的外观。模块是否具有可以设置的参数以及这些参数的性质取决于每个模块。
模块属性通常描述模块的基本特征并帮助确定模块何时执行。模块属性包括模块注解、模块事件发生时执行的回调、执行顺序优先级以及有助于标识模块的标记。
要编写创建和修改模型的脚本,请使用 get_param
和 set_param
函数来查询和修改模块属性和参数值。例如,假设 mymodel
模型中有一个 Gain 模块。
此命令将 Gain 模块的
Gain
参数设置为2
。set_param("mymodel/Gain",Gain="2")
此命令将 Gain 模块定向到左侧。默认情况下,模块面向相反的方向。
set_param("mymodel/Gain",Orientation="left")
此命令将
OpenFcn
回调与 Gain 模块关联。set_param("mymodel/Gain",OpenFcn="my_open_cb")
此命令设置 Gain 模块的
Position
属性。该模块是 75 像素宽 × 25 像素高。set_param("mymodel/Gain",Position=[50 250 125 275])
有关编程建模的背景信息,请参阅编程建模基础知识。
有关如何指定包含多行名称或特殊字符的路径的信息,请参阅Specify Paths That Contain Multiline Names and Special Characters。
模块特定的参数
大多数模块特定的参数都记录在描述该模块的页面中。例如,Gain 模块的参数记录在 Gain 模块参考页中。有关参数的编程信息,请展开模块参考页中的对应参数条目。
对于获取和设置模块特定参数值的脚本,请选择一个模块并打开属性检查器。在属性检查器中,点击脚本引用。该脚本使用 get_param
函数获取参数值,而使用 set_param
函数设置参数值。如果您更改参数值,该脚本将更新以反映新值。
要获取编程模块参数列表,请选择一个模块。然后,使用 get_param
函数查询以下属性之一。
DialogParameters
- 未封装模块的模块特定参数,或封装模块的封装参数。IntrinsicDialogParameters
- 封装模块或非封装模块的模块特定参数。ObjectParameters
- 模块特定参数和常见模块属性。
一些返回的参数和属性仅供内部使用。当模块属性或参数未记录时,请考虑该参数仅供内部使用。
通用模块属性
Simulink® 对象的一个常见属性是只读 Type
属性。对于模块,此属性返回 'block'
。
每个模块都有一个模块类型。对于某些模块,模块类型与库浏览器中的模块名称相同。例如,Gain 模块的模块类型是 Gain
。对于其他模块,模块类型与库浏览器中的模块名称不同。例如,Add 模块的模块类型是 Sum
。
要获取没有封装的模块的模块类型,请使用
get_param
函数查询只读BlockType
属性。要获取带有封装的模块的模块类型,请使用
get_param
函数查询MaskType
属性。通常,封装模块具有SubSystem
的BlockType
。
有关封装模块的属性的信息,请参阅封装参数。
有关模块回调属性的信息,请参阅模块回调。
以下表列出了 Simulink 模块通用的其他属性。
常见模块属性:名称和句柄
属性 | 描述 | 值 |
---|---|---|
| 数值模块句柄。 将句柄分配给变量并使用该变量名称来指定模块。该句柄仅适用于当前 MATLAB® 会话。 | 双精度值 |
| 输入信号的名称。 | 元胞数组 |
| 连接模块的线条句柄。 将线条句柄分配给变量并使用该变量名称来指定线条。该句柄仅适用于当前 MATLAB 会话。 | 结构体 |
| 模块或信号名称。 要指定信号名称,请使用对应的端口或信号线句柄。 ports = get_param(gcb,"PortHandles"); out1 = ports.Outport(1); set_param(out1,Name="NewName"); 要传播信号名称,请编译模型。 set_param(gcs,SimulationCommand="update"); 或者,要命名模块的输出信号,请使用 | 字符向量 |
| 输出信号的名称。 | 元胞数组 |
| 模块所属的系统的名称。 | 字符向量 |
| 模块端口的句柄。 将端口句柄分配给变量并使用该变量名称来指定端口。该句柄仅适用于当前 MATLAB 会话。 该结构体具有以下字段:
| 结构体数组 |
常见模块属性:端口
属性 | 描述 | 值 |
---|---|---|
| 返回端口是否连接到虚拟总线或非虚拟总线。 要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。 ports = get_param(gcb,"PortHandles"); out1 = ports.Outport; feval(gcs,[],[],[],"compile"); bt = get_param(out1,"CompiledBusType") feval(gcs,[],[],[],"term"); |
|
| 更新图后端口信号的复/实性。 要获取有关端口的编译信息,请编译模型。 feval(gcs,[],[],[],"compile"); cs = get_param(gcb,"CompiledPortComplexSignals") feval(gcs,[],[],[],"term"); | 结构体数组 |
| 更新图后端口信号的数据类型。 要获取有关端口的编译信息,请编译模型。 feval(gcs,[],[],[],"compile"); dt = get_param(gcb,"CompiledPortDataTypes") feval(gcs,[],[],[],"term"); | 结构体数组 |
| 更新图后端口信号的设计最小值。 要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。 ports = get_param(gcb,"PortHandles"); out1 = ports.Outport; feval(gcs,[],[],[],"compile"); min = get_param(out1,"CompiledPortDesignMin") feval(gcs,[],[],[],"term"); 如果编译时以下任一条件导致模块处于非活动状态,则
| 结构体数组 |
| 编译时端口信号的设计最大值。 要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。 ports = get_param(gcb,"PortHandles"); out1 = ports.Outport; feval(gcs,[],[],[],"compile"); max = get_param(out1,"CompiledPortDesignMax") feval(gcs,[],[],[],"term"); 如果编译时以下任一条件导致模块处于非活动状态,则
| 结构体数组 |
| 更新图后端口信号的维度。 要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。 ports = get_param(gcb,"PortHandles"); out1 = ports.Outport; feval(gcs,[],[],[],"compile"); d = get_param(out1,"CompiledPortDimensions") feval(gcs,[],[],[],"term"); 有关详细信息,请参阅获取编译的端口维度。 | 数值数组 |
| 指示更新图后端口信号是否具有可变大小。 要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。 ports = get_param(gcb,"PortHandles"); out1 = ports.Outport; feval(gcs,[],[],[],"compile"); dm = get_param(out1,"CompiledPortDimensionsMode") feval(gcs,[],[],[],"term"); | 双精度值 |
| 更新图后端口信号的帧模式。 要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。 ports = get_param(gcb,"PortHandles"); out1 = ports.Outport; feval(gcs,[],[],[],"compile"); fd = get_param(out1,"CompiledPortFrameData") feval(gcs,[],[],[],"term"); | 结构体数组 |
| 更新图后模块端口单位的结构体数组。 要获取有关端口的编译信息,请编译模型。 feval(gcs,[],[],[],"compile"); units = get_param(gcb,"CompiledPortUnits") feval(gcs,[],[],[],"term"); | 结构体数组 |
| 更新图后端口宽度的结构体。 要获取有关端口的编译信息,请编译模型。 feval(gcs,[],[],[],"compile"); units = get_param(gcb,"CompiledPortWidths") feval(gcs,[],[],[],"term"); | 结构体数组 |
| 连接到查看器和生成器管理器的对象的模块路径。在保存模型时,软件会保存这些路径。 | 列表 |
| 结构体数组,每个结构体描述一个模块输入或输出端口。每个端口结构体都具有以下字段:
| 结构体数组 |
| 此模块使用的端口旋转类型。 |
|
| 此模块具有的每种端口数。 返回向量中元素的顺序对应于以下端口类型:
| 向量 |
| 如果信号是总线,则返回该总线中元素的名称和层次结构。 要获取信号层次结构,请使用对应的端口或线条句柄并编译模型。 ports = get_param(gcb,"PortHandles"); out1 = ports.Outport; feval(gcs,[],[],[],"compile"); sh = get_param(out1,"SignalHierarchy") feval(gcs,[],[],[],"term"); | 反映信号结构的值 |
常见模块属性:行为
属性 | 描述 | 值 |
---|---|---|
Commented | 从仿真中排除模块。 |
|
| 指定模块状态在编译时是否为活动。 如果在编译时以下任一条件为 true,
对于可变子系统的非活动选择项, |
|
| 更新图后的模块采样时间。 为了获得采样时间,请编译模型。 feval(gcs,[],[],[],"compile"); ts = get_param(gcb,"CompiledSampleTime") feval(gcs,[],[],[],"term"); 如果编译时以下任一条件导致模块处于非活动状态,则
| 分别为采样时间和偏移时间的向量或元胞数组 |
| 指示该模块是否为支持的状态所有者模块(可与 State Reader 和 State Writer 模块一起使用)。 |
|
| 使模块能够支持在外部模式下上传信号数据(例如,对于 Scope 模块)。 |
|
| 使模块能够充当外部模式信号上传的 Trigger 模块。 |
|
ExtModeUploadOption | 允许模块在未选中“外部信号和触发”对话框上的全选复选框的情况下,在外部模式下上传信号数据。值为 log 表示模块上传信号。值为 none 表示模块不上传信号。值 monitor 当前未使用。如果选中“外部信号和触发”对话框中的全选复选框,它将覆盖此参数设置。 | 'none' (默认)| 'log' | 'monitor' |
| 指示模块是否处于选中状态。 |
|
| 线性化过程中要使用的状态扰动大小。有关详细信息,请参阅Change Perturbation Level of Blocks Perturbed During Linearization (Simulink Control Design)。 | 字符向量 |
| 指定模块相对于同一模型中的其他模块的执行顺序。通过“模块属性”对话框中常规窗格上的优先级字段来进行设置。 |
|
常见模块属性:外观
属性 | 描述 | 值 |
---|---|---|
| 模块的背景色。 |
|
BlockMirror | 模块镜像。 |
|
BlockRotation | 模块旋转角度。 对于 0 度旋转,值为 | 双精度值 |
| 显示阴影。 |
|
| 字体角度。 |
|
| 字体名称。 | 字符数组 |
| 字体大小。 值为 |
|
| 字体粗细。 |
|
| 模块图标的前景颜色。 如果它与 |
|
| 指定模型中是否显示由 Simulink 编辑器自动给出的模块名称。 有关使用此参数的信息,请参阅隐藏或显示模块名称。 |
|
| 模块名称的位置。 |
|
| 模块面向的方向。 |
|
| 模块在模型窗口中的位置。 原点是尚未调整画布大小时 Simulink 编辑器画布的左上角位置。支持的坐标在 -1073740824 和 1073740823 之间(包括二者)。位于原点右侧和下方的值为正值。位于原点左侧和上方的值为负值。 为了帮助对齐模块,您设置的位置可与实际的模块位置相差几个像素。要返回实际位置,请使用 | 以像素为单位的坐标向量: |
| 显示或隐藏模块名称。 有关使用此参数的信息,请参阅隐藏或显示模块名称。 |
|
常见模块属性:元数据
属性 | 描述 | 值 |
---|---|---|
| 与模块属性相对应的模块注解文本。 | 字符向量 |
| 显示在模块参数对话框或属性检查器顶部的模块描述。 | 字符数组 |
| 模块描述。通过“模块属性”对话框中常规窗格上的描述字段来进行设置。 | 文本和标记 |
| 用户指定的数据,供 Simulink Coder™ 软件使用。仅与用户编写的 S-Function 结合使用。有关详细信息,请参阅S-Function RTWdata (Simulink Coder)。 | 字符向量的结构体 |
| 由 Simulink 软件生成的、显示在模块标签上的文本。通过“模块属性”对话框中常规窗格上的标记字段来设置。 |
|
| 用户指定的数据,可以包含任何 MATLAB 数据类型。 |
|
| 指示是否将 |
|
常见模块属性:库
属性 | 描述 | 值 |
---|---|---|
| 模块链接到的库模块的名称(对于具有禁用链接的模块)。 | 字符向量 |
BlockKeywords | 将一个或多个关键字与一个自定义库模块相关联。 | 字符向量 | 字符串标量 | 字符串数组 |
| 对于链接的模块,此属性的初始值是创建链接时模块库的 ModelVersion 。在模块库的模型版本中,此值按增量更新。 |
|
| 包含参数化链接内与库中模块差异细节的数组,其中列出模块名称和参数值。使用 | 元胞数组 |
| 模块的链接状态。在使用 请参阅以编程方式控制链接模块。 |
|
| 此模块链接到的模块库模块的名称。 |
|
| 模块的链接状态。在使用 | 'none' | 'resolved' | 'unresolved' | 'implicit' | 'inactive' | 'restore' | 'propagate' | 'propagateHierarchy' | 'restoreHierarchy' |
一些常见的模块属性仅供内部使用。例如,以下属性仅供内部使用:
DataTypeOverride_Compiled
Diagnostics
HiliteAncestors
IOType
MinMaxOverflowLogging_Compiled
ModelParamTableInfo
RequirementInfo
模块参数值的最大大小限制
对于接受数组值的模块参数,数组中的元素数量不能超过 int_T
可表示的数量。此限制对仿真和 Simulink Coder 代码生成均适用。
参数编辑字段最多可容纳 49,000 个字符。