主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

以编程方式指定模块参数和属性

模块参数通常定义模型动态特性和数学特性。它们还允许您配置模块的外观。模块是否具有可以设置的参数以及这些参数的性质取决于每个模块。

模块属性通常描述模块的基本特征并帮助确定模块何时执行。模块属性包括模块注解、模块事件发生时执行的回调、执行顺序优先级以及有助于标识模块的标记。

要编写创建和修改模型的脚本,请使用 get_paramset_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 函数设置参数值。如果您更改参数值,该脚本将更新以反映新值。

Script Reference section of the Property Inspector for a Gain block

要获取编程模块参数列表,请选择一个模块。然后,使用 get_param 函数查询以下属性之一。

  • DialogParameters - 未封装模块的模块特定参数,或封装模块的封装参数。

  • IntrinsicDialogParameters - 封装模块或非封装模块的模块特定参数。

  • ObjectParameters - 模块特定参数和常见模块属性。

一些返回的参数和属性仅供内部使用。当模块属性或参数未记录时,请考虑该参数仅供内部使用。

通用模块属性

Simulink® 对象的一个常见属性是只读 Type 属性。对于模块,此属性返回 'block'

每个模块都有一个模块类型。对于某些模块,模块类型与库浏览器中的模块名称相同。例如,Gain 模块的模块类型是 Gain。对于其他模块,模块类型与库浏览器中的模块名称不同。例如,Add 模块的模块类型是 Sum

  • 要获取没有封装的模块的模块类型,请使用 get_param 函数查询只读 BlockType 属性。

  • 要获取带有封装的模块的模块类型,请使用 get_param 函数查询 MaskType 属性。通常,封装模块具有 SubSystemBlockType

有关封装模块的属性的信息,请参阅封装参数

有关模块回调属性的信息,请参阅模块回调

以下表列出了 Simulink 模块通用的其他属性。

常见模块属性:名称和句柄

属性描述

Handle(只读)

数值模块句柄。

将句柄分配给变量并使用该变量名称来指定模块。该句柄仅适用于当前 MATLAB® 会话。

双精度值

InputSignalNames(只读)

输入信号的名称。

元胞数组

LineHandles(只读)

连接模块的线条句柄。

将线条句柄分配给变量并使用该变量名称来指定线条。该句柄仅适用于当前 MATLAB 会话。

结构体

Name

模块或信号名称。

要指定信号名称,请使用对应的端口或信号线句柄。

ports = get_param(gcb,"PortHandles");
out1 = ports.Outport(1);
set_param(out1,Name="NewName");

要传播信号名称,请编译模型。

set_param(gcs,SimulationCommand="update");

或者,要命名模块的输出信号,请使用 SignalNameFromLabel

字符向量

OutputSignalNames(只读)

输出信号的名称。

元胞数组

Parent(只读)

模块所属的系统的名称。

字符向量

PortHandles(只读)

模块端口的句柄。

将端口句柄分配给变量并使用该变量名称来指定端口。该句柄仅适用于当前 MATLAB 会话。

该结构体具有以下字段:

  • Inport - 输入端口的句柄

  • Outport - 输出端口的句柄

  • Enable - 使能端口的句柄

  • Trigger - 触发端口的句柄

  • State - 状态端口的句柄

  • LConn - 支持物理建模工具的模块左侧连接端口的句柄

  • RConn - 支持物理建模工具的模块右侧连接端口的句柄

  • Ifaction - 动作端口的句柄

  • Reset - 重置端口的句柄

  • Event - 子系统的句柄重新初始化事件端口

结构体数组

常见模块属性:端口

属性描述

CompiledBusType(只读)

返回端口是否连接到虚拟总线或非虚拟总线。

要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。

ports = get_param(gcb,"PortHandles");
out1 = ports.Outport;
feval(gcs,[],[],[],"compile");
bt = get_param(out1,"CompiledBusType")
feval(gcs,[],[],[],"term");

请参阅Display Bus Information

'NOT_BUS' | 'VIRTUAL_BUS' | 'NON_VIRTUAL_BUS'

CompiledPortComplexSignals(只读)

更新图后端口信号的复/实性。

要获取有关端口的编译信息,请编译模型。

feval(gcs,[],[],[],"compile");
cs = get_param(gcb,"CompiledPortComplexSignals")
feval(gcs,[],[],[],"term");
结构体数组

CompiledPortDataTypes(只读)

更新图后端口信号的数据类型。

要获取有关端口的编译信息,请编译模型。

feval(gcs,[],[],[],"compile");
dt = get_param(gcb,"CompiledPortDataTypes")
feval(gcs,[],[],[],"term");
结构体数组

CompiledPortDesignMin(只读)

更新图后端口信号的设计最小值。

要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。

ports = get_param(gcb,"PortHandles");
out1 = ports.Outport;
feval(gcs,[],[],[],"compile");
min = get_param(out1,"CompiledPortDesignMin")
feval(gcs,[],[],[],"term");

如果编译时以下任一条件导致模块处于非活动状态,则 CompiledPortDesignMin 返回一个空数组:

  • 模块位于内联变体模块的非活动路径中。

  • 模块是 Variant Subsystem 模块的非活动选择项。

  • Variant Subsystem 模块传播的条件导致模块处于非活动状态。

  • 模块位于被注释掉或注释直通的子系统中。

  • 模块已被注释掉或注释直通。

结构体数组

CompiledPortDesignMax(只读)

编译时端口信号的设计最大值。

要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。

ports = get_param(gcb,"PortHandles");
out1 = ports.Outport;
feval(gcs,[],[],[],"compile");
max = get_param(out1,"CompiledPortDesignMax")
feval(gcs,[],[],[],"term");

如果编译时以下任一条件导致模块处于非活动状态,则 CompiledPortDesignMax 返回一个空数组:

  • 模块位于内联变体模块的非活动路径中。

  • 模块是 Variant Subsystem 模块的非活动选择项。

  • Variant Subsystem 模块传播的条件导致模块处于非活动状态。

  • 模块位于被注释掉或注释直通的子系统中。

  • 模块已被注释掉或注释直通。

结构体数组

CompiledPortDimensions(只读)

更新图后端口信号的维度。

要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。

ports = get_param(gcb,"PortHandles");
out1 = ports.Outport;
feval(gcs,[],[],[],"compile");
d = get_param(out1,"CompiledPortDimensions")
feval(gcs,[],[],[],"term");

有关详细信息,请参阅获取编译的端口维度

数值数组

CompiledPortDimensionsMode(只读)

指示更新图后端口信号是否具有可变大小。0 表示信号没有可变大小。1 表示信号具有可变大小。

要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。

ports = get_param(gcb,"PortHandles");
out1 = ports.Outport;
feval(gcs,[],[],[],"compile");
dm = get_param(out1,"CompiledPortDimensionsMode")
feval(gcs,[],[],[],"term");

请参阅以编程方式确定信号线是否具有可变大小

双精度值

CompiledPortFrameData(只读)

更新图后端口信号的帧模式。

要获取有关端口的编译信息,请使用对应的端口或线条句柄并编译模型。

ports = get_param(gcb,"PortHandles");
out1 = ports.Outport;
feval(gcs,[],[],[],"compile");
fd = get_param(out1,"CompiledPortFrameData")
feval(gcs,[],[],[],"term");
结构体数组

CompiledPortUnits(只读)

更新图后模块端口单位的结构体数组。

要获取有关端口的编译信息,请编译模型。

feval(gcs,[],[],[],"compile");
units = get_param(gcb,"CompiledPortUnits")
feval(gcs,[],[],[],"term");
结构体数组

CompiledPortWidths(只读)

更新图后端口宽度的结构体。

要获取有关端口的编译信息,请编译模型。

feval(gcs,[],[],[],"compile");
units = get_param(gcb,"CompiledPortWidths")
feval(gcs,[],[],[],"term");
结构体数组

IOSignalStrings

连接到查看器和生成器管理器的对象的模块路径。在保存模型时,软件会保存这些路径。

列表

PortConnectivity(只读)

结构体数组,每个结构体描述一个模块输入或输出端口。每个端口结构体都具有以下字段:

  • Type - 端口类型和/或端口号。该值可以是:

    • n,其中 n 是数据端口的端口编号

    • 'enable'(如果端口是使能端口)

    • 'trigger'(如果端口是触发端口)

    • 'state',用于状态端口

    • 'ifaction',用于动作端口

    • 'LConn#',用于左侧连接端口,其中 # 是端口号

    • 'RConn#',用于右侧连接端口,其中 # 是端口号

    • 'event',用于重新初始化子系统的事件端口

  • Position - 一个二元素向量 [x y],用于指定端口位置。

  • SrcBlock - 连接到此端口的模块的句柄。对于输出端口,值为 []。对于未连接的输入端口,值为 -1SrcBlock 属性是 Variant Subsystem 模块的有效源句柄。

  • SrcPort - 连接到此端口的端口号,从零开始。对于输出端口和未连接的输入端口,值均为 []

  • DstBlock - 此端口连接到的模块的句柄。对于输入端口,值为 []。对于未连接的输出端口,值是 1×0 的空矩阵。

  • DstPort - 此端口连接到的端口号,从零开始。对于输入端口,值为 []。对于未连接的输出端口,值是 1×0 的空矩阵。对于 Simscape™ 模块,值是端口句柄。

结构体数组

PortRotationType(只读)

此模块使用的端口旋转类型。

'default' | 'physical'

Ports(只读)

此模块具有的每种端口数。

返回向量中元素的顺序对应于以下端口类型:

  • Inport - 输入端口

  • Outport - 输出端口

  • Enable - 使能端口

  • Trigger - 触发端口

  • State - 状态端口

  • LConn - 左侧连接端口

  • RConn - 右侧连接端口

  • Ifaction - 动作端口

  • Reset - 重置事件端口

  • Event - 重新初始化事件端口

向量

SignalHierarchy(只读)

如果信号是总线,则返回该总线中元素的名称和层次结构。

要获取信号层次结构,请使用对应的端口或线条句柄并编译模型。

ports = get_param(gcb,"PortHandles");
out1 = ports.Outport;
feval(gcs,[],[],[],"compile");
sh = get_param(out1,"SignalHierarchy")
feval(gcs,[],[],[],"term");

请参阅Display Bus Information

反映信号结构的值

常见模块属性:行为

属性描述
Commented从仿真中排除模块。

'off'(默认)| 'on' | 'through'

CompiledIsActive(只读)

指定模块状态在编译时是否为活动。

如果在编译时以下任一条件为 true,CompiledIsActive 将返回 off

  • 模块是内联变体的非活动路径。

  • 模块是可变子系统的非活动选择项。

  • 模块位于被注释掉的子系统中。

  • 由于从可变子系统传播的条件,模块处于非活动状态。

对于可变子系统的非活动选择项,CompiledisActive 返回 off,对于活动选择项则返回 on

'off' | 'on'

CompiledSampleTime(只读)

更新图后的模块采样时间。

为了获得采样时间,请编译模型。

feval(gcs,[],[],[],"compile");
ts = get_param(gcb,"CompiledSampleTime")
feval(gcs,[],[],[],"term");

如果编译时以下任一条件导致模块处于非活动状态,则 CompiledSampleTime 返回一个空向量或元胞数组:

  • 模块位于内联变体模块的非活动路径中,其变体激活时间参数设置为更新图更新图时分析所有选择项代码编译

  • 模块是 Variant Subsystem 模块的非活动选择项,其变体激活时间参数设置为更新图更新图时分析所有选择项代码编译

  • Variant Subsystem 模块传播的条件导致模块处于非活动状态,其变体激活时间参数设置为更新图更新图时分析所有选择项代码编译

  • 模块位于被注释掉或注释直通的子系统中。

  • 模块已被注释掉或注释直通。

分别为采样时间和偏移时间的向量或元胞数组

IsStateOwnerBlock(只读)

指示该模块是否为支持的状态所有者模块(可与 State ReaderState Writer 模块一起使用)。

'off' | 'on'

ExtModeLoggingSupported(只读)

使模块能够支持在外部模式下上传信号数据(例如,对于 Scope 模块)。

'off'(默认)| 'on'

ExtModeLoggingTrig

使模块能够充当外部模式信号上传的 Trigger 模块。

'off'(默认)| 'on'

ExtModeUploadOption允许模块在未选中“外部信号和触发”对话框上的全选复选框的情况下,在外部模式下上传信号数据。值为 log 表示模块上传信号。值为 none 表示模块不上传信号。值 monitor 当前未使用。如果选中“外部信号和触发”对话框中的全选复选框,它将覆盖此参数设置。'none'(默认)| 'log' | 'monitor'

Selected

指示模块是否处于选中状态。

'on'(默认)| 'off'

StatePerturbationForJacobian

线性化过程中要使用的状态扰动大小。有关详细信息,请参阅Change Perturbation Level of Blocks Perturbed During Linearization (Simulink Control Design)

字符向量

Priority

指定模块相对于同一模型中的其他模块的执行顺序。通过“模块属性”对话框中常规窗格上的优先级字段来进行设置。

''(默认)| 字符向量

常见模块属性:外观

属性描述

BackgroundColor

模块的背景色。

'black' | 'white' | 'red' | 'green' | 'blue' | 'cyan' | 'magenta' | 'yellow' | 'gray' | 'lightBlue' | 'orange' | 'darkGreen' | '[r,g,b]' | '[r,g,b,a]',其中 rgb 分别是颜色的红色、绿色和蓝色值,其范围在 0.0 到 1.0 之间。如果指定此属性,将忽略 alpha 值 (a)。

BlockMirror模块镜像。

'off'(默认)| 'on'

BlockRotation

模块旋转角度。

对于 0 度旋转,值为 0。对于 270 度旋转,值为 270

双精度值

DropShadow

显示阴影。

'off'(默认)| 'on'

FontAngle

字体角度。

'auto'(默认)| 'normal' | 'italic' | 'oblique'

FontName

字体名称。

字符数组

FontSize

字体大小。

值为 -1 表示此模块继承 DefaultBlockFontSize 模型参数指定的字体大小。

'-1'(默认)| real

FontWeight

字体粗细。

'auto'(默认)| 'light' | 'normal' | 'demi' | 'bold'

ForegroundColor

模块图标的前景颜色。

如果它与 ScreenColor 参数指定的画布颜色太相似,则该值会发生变化。要获取实际值,请使用 get_param 函数。

'black' | 'white' | 'red' | 'green' | 'blue' | 'cyan' | 'magenta' | 'yellow' | 'gray' | 'lightBlue' | 'orange' | 'darkGreen' | '[r,g,b]' | '[r,g,b,a]',其中 rgb 分别是颜色的红色、绿色和蓝色值,其范围在 0.0 到 1.0 之间。如果指定此属性,将忽略 alpha 值 (a)。

HideAutomaticName

指定模型中是否显示由 Simulink 编辑器自动给出的模块名称。

有关使用此参数的信息,请参阅隐藏或显示模块名称

'on'(默认)| 'off'

NamePlacement

模块名称的位置。

'normal'(默认)| 'alternate'

Orientation

模块面向的方向。

'right'(默认)| 'left' | 'up' | 'down'

Position

模块在模型窗口中的位置。

原点是尚未调整画布大小时 Simulink 编辑器画布的左上角位置。支持的坐标在 -1073740824 和 1073740823 之间(包括二者)。位于原点右侧和下方的值为正值。位于原点左侧和上方的值为负值。

为了帮助对齐模块,您设置的位置可与实际的模块位置相差几个像素。要返回实际位置,请使用 get_param 函数。

以像素为单位的坐标向量:[left top right bottom]

ShowName

显示或隐藏模块名称。

有关使用此参数的信息,请参阅隐藏或显示模块名称

'on'(默认)| 'off'

常见模块属性:元数据

属性描述

AttributesFormatString

与模块属性相对应的模块注解文本。

字符向量

BlockDescription(只读)

显示在模块参数对话框或属性检查器顶部的模块描述。

字符数组

Description

模块描述。通过“模块属性”对话框中常规窗格上的描述字段来进行设置。

文本和标记

RTWData

用户指定的数据,供 Simulink Coder™ 软件使用。仅与用户编写的 S-Function 结合使用。有关详细信息,请参阅S-Function RTWdata (Simulink Coder)

字符向量的结构体

Tag

由 Simulink 软件生成的、显示在模块标签上的文本。通过“模块属性”对话框中常规窗格上的标记字段来设置。

''(默认)| 字符向量

UserData

用户指定的数据,可以包含任何 MATLAB 数据类型。

'[]'(默认值)

UserDataPersistent

指示是否将 UserData 保存到模型文件中的状态。

'off'(默认)| 'on'

常见模块属性:库

属性描述

AncestorBlock

模块链接到的库模块的名称(对于具有禁用链接的模块)。

字符向量

BlockKeywords

将一个或多个关键字与一个自定义库模块相关联。

字符向量 | 字符串标量 | 字符串数组

LibraryVersion

对于链接的模块,此属性的初始值是创建链接时模块库的 ModelVersion。在模块库的模型版本中,此值按增量更新。

'1.1'(默认)| 字符向量

LinkData

包含参数化链接内与库中模块差异细节的数组,其中列出模块名称和参数值。使用 [] 重置为非参数化,例如 set_param(gcb,'linkData',[])

元胞数组

LinkStatus

模块的链接状态。在使用 get_param 函数查询时更新过时的链接模块。

请参阅以编程方式控制链接模块

'none' | 'resolved' | 'unresolved' | 'implicit' | 'inactive' | 'restore' | 'propagate' | 'propagateHierarchy' | 'restoreHierarchy'

ReferenceBlock

此模块链接到的模块库模块的名称。

''(默认)| 字符向量

StaticLinkStatus(只读)

模块的链接状态。在使用 get_param 函数查询时不更新过时的链接模块。另请参阅 LinkStatus

'none' | 'resolved' | 'unresolved' | 'implicit' | 'inactive' | 'restore' | 'propagate' | 'propagateHierarchy' | 'restoreHierarchy'

一些常见的模块属性仅供内部使用。例如,以下属性仅供内部使用:

  • DataTypeOverride_Compiled

  • Diagnostics

  • HiliteAncestors

  • IOType

  • MinMaxOverflowLogging_Compiled

  • ModelParamTableInfo

  • RequirementInfo

模块参数值的最大大小限制

对于接受数组值的模块参数,数组中的元素数量不能超过 int_T 可表示的数量。此限制对仿真和 Simulink Coder 代码生成均适用。

参数编辑字段最多可容纳 49,000 个字符。

另请参阅

|

主题