Simulink.Signal
指定信号或离散状态特定于实例的属性
说明
使用此对象可以创建工作区对象,这些对象可用来为信号或离散状态分配或验证属性,如数据类型、数值类型、维度等。
您可以使用信号对象进行如下操作:
为信号源未赋值的信号属性(值为
-1
或auto
)赋值。验证由信号源显式分配值的信号属性。这种属性具有除
-1
或auto
之外的值。成功的验证可以确保信号具有您想要的属性。
您可以在 MATLAB® 工作区或模型工作区中创建 Simulink.Signal
对象。
通过为信号或离散状态指定与引用 Simulink.Signal
对象的工作区变量相同的名称,使用信号对象来分配或验证信号或离散状态。
有关使用信号对象的详细信息,请参阅使用 Simulink.Signal 对象指定和控制信号属性和数据对象。
要根据特定于应用的类型(如风速)对信号属性进行赋值或验证,请使用 Simulink.ValueType
对象。
创建对象
通过以下方式创建 Simulink.Signal
对象:
使用模型数据编辑器创建。请参阅用于信号。
使用模型资源管理器创建。请参阅从内置数据类包 Simulink 创建数据对象。
在模型中直接从信号属性对话框或属性检查器创建。请参阅基于“信号属性”对话框创建信号对象。
使用
Simulink.Signal
函数创建,如下所述。
描述
signalObj = Simulink.Signal
返回具有默认属性值的 Simulink.Signal
对象。
属性
CoderInfo
— 为信号生成代码的设定
Simulink.CoderInfo
对象
此 属性 为只读。
Simulink® Coder™ 软件为此信号生成代码所使用的信息。此属性的值是 Simulink.CoderInfo
对象。
模型工作区中 Simulink.Signal
对象的存储类必须为 'Auto'
。
有关详细信息,请参阅C Data Code Interface Configuration for Model Interface Elements (Simulink Coder)和Choose Storage Class for Controlling Data Representation in Generated Code (Embedded Coder)。
Description
— 信号的自定义描述
''
(默认) | 字符向量 | 字符串标量
此信号的描述。此字段用于描述此信号。
此属性由 Simulink Report Generator 使用,并用于代码生成。
如果您拥有 Embedded Coder® 许可证,您可以在生成的代码中添加信号描述,作为变量声明的注释:
为信号对象指定一个不同于
'Auto'
的存储类。在模型的“配置参数”对话框的代码生成 > 注释窗格中,选择模型配置参数 Simulink 数据对象描述。有关详细信息,请参阅Simulink 数据对象描述 (Embedded Coder)。
示例: 'This signal represents the rotation speed of the engine.'
数据类型: char
| string
DataType
— 信号的数据类型
'auto'
(默认) | 字符向量 | 字符串标量
字符向量,用于指定此信号的数据类型。
默认值 'auto'
指定应由软件确定数据类型。
您可以指定内置数据类型,例如 'uint8'
或 'single'
。有关更多选项,请参阅Simulink 支持的数据类型。
要指定定点数据类型,请使用 fixdt
函数。例如,指定 'fixdt(1,16,5)'
。
要指定自定义数据类型,请输入指定该类型的 MATLAB 表达式,例如,引用 Simulink.NumericType
对象的基础工作区变量。
要指定枚举的数据类型,请在 Enum:
之后使用类型的名称。例如,指定 'Enum: myEnumType'
。
要将 Simulink.ValueType
对象指定为数据类型,请在 ValueType:
之后使用对象的名称。例如,指定 'ValueType: myValueType'
。
要将 Simulink.Bus
对象指定为数据类型,请在 Bus:
之后使用总线对象的名称。例如,指定 'Bus: myBusObject'
。有关指定总线对象作为数据类型时所需操作的详细信息,请参阅总线支持。
当您指定 Simulink.ValueType
或 Simulink.Bus
对象作为数据类型时,将忽略 Simulink.Signal
对象的某些属性。例如,忽略 Simulink.Signal
对象的 Min
、Max
和 Unit
属性。软件改用 Simulink.ValueType
对象或 Simulink.Bus
对象中 Simulink.BusElement
对象的对应属性。
示例: 'auto'
示例: 'int8'
示例: 'fixdt(1,16,5)'
示例: 'myAliasTypeObject'
示例: 'Enum: myEnumType'
示例: 'ValueType: myValueType'
示例: 'Bus: myBusObject'
提示
当您以交互方式编辑数据类型时,要显示数据类型助手,请点击显示数据类型助手按钮 。有关详细信息,请参阅使用数据类型助手指定数据类型。
数据类型: char
| string
Min
— 信号的最小值
[]
(默认) | 实数 double
标量
此信号可以具有的最小值。
默认值为 []
(未指定)。应指定一个有限双精度标量实数值。
软件通过以下方式使用此值:
更新模块图或开始仿真时,如果信号的初始值小于最小值,或者最小值在信号的数据类型范围外,软件将生成错误。
当您启用仿真范围检查诊断时,如果信号值小于最小值(请参阅Simulation range checking),软件将在仿真过程中向您发出警报。
示例: -0.92
依存关系
当 DataType
指定 Simulink.ValueType
或 Simulink.Bus
对象时,软件将忽略此属性的值。软件改用 Simulink.ValueType
对象或 Simulink.Bus
对象中的 Simulink.BusElement
对象指定的最小值。
提示
对于具有定点数据类型的信号对象,对话框显示存储的最小整数属性,这是信号应具有的最小值,指定为存储整数值。该值派生自真实值的最小值。
数据类型: double
Max
— 信号的最大值
[]
(默认) | 实数 double
标量
此信号可以具有的最大值。
默认值为 []
(未指定)。应指定一个有限双精度标量实数值。
软件通过以下方式使用此值:
更新模块图或开始仿真时,如果信号的初始值大于最大值,或者最大值在信号的数据类型范围外,该软件将生成错误。
当您启用仿真范围检查诊断时,如果信号值大于最大值(请参阅Simulation range checking),该软件将在仿真过程中向您发出警报。
示例: 5.32
依存关系
当 DataType
指定 Simulink.ValueType
或 Simulink.Bus
对象时,软件将忽略此属性的值。软件改用 Simulink.ValueType
对象或 Simulink.Bus
对象中的 Simulink.BusElement
对象指定的最大值。
提示
对于具有定点数据类型的信号对象,对话框显示存储的最大整数属性,这是信号应具有的最大值,指定为存储整数值。该值派生自真实值最大值。
数据类型: double
Unit
— 信号值的物理单位
''
(默认) | 字符向量 | 字符串标量
用来表示此信号值的物理单位(例如,英寸)。
有关详细信息,请参阅 Simulink 模型中的单位指定。
示例: 'degC'
依存关系
当 DataType
指定 Simulink.ValueType
或 Simulink.Bus
对象时,软件将忽略此属性的值。软件改用 Simulink.ValueType
对象或 Simulink.Bus
对象中的 Simulink.BusElement
对象指定的单位。
数据类型: char
| string
Dimensions
— 信号的维度
-1
(默认) | 行向量 | 字符向量 | 字符串标量
标量或向量,用于指定此信号的维度。
有效值包括 -1
(默认值,指定任意维度)、N
(指定向量大小为 N
),或者 [M N]
(指定 MxN
的矩阵信号)。
要使用符号维度,请指定字符向量。
示例: [1 3]
示例: '[1 myDimParam]'
依存关系
当 DataType
指定 Simulink.ValueType
对象时,软件会忽略此属性的值。软件改用 Simulink.ValueType
对象指定的维度。
数据类型: double
| char
| string
DimensionsMode
— 信号的维度模式
'auto'
(默认) | 'Fixed'
| 'Variable'
信号的维度模式。有效值包括:
'auto'
- 允许可变大小和固定大小的信号。'Fixed'
- 仅允许固定大小的信号。不允许可变大小的信号。'Variable'
- 仅允许可变大小的信号。
有关可变大小信号的信息,请参阅可变大小信号基础知识。
依存关系
当 DataType
指定 Simulink.ValueType
或 Simulink.Bus
对象时,软件将忽略此属性的值。软件改用 Simulink.ValueType
对象或 Simulink.Bus
对象中的 Simulink.BusElement
对象指定的维度模式。
Complexity
— 信号的数值复/实性
'auto'
(默认) | 'real'
| 'complex'
字符向量,用于指定此信号的数值类型。有效值包括 'auto'
、'real'
或 'complex'
。
默认值 'auto'
指定软件应确定复/实性。
依存关系
当 DataType
指定 Simulink.ValueType
或 Simulink.Bus
对象时,软件将忽略此属性的值。软件改用 Simulink.ValueType
对象或 Simulink.Bus
对象中的 Simulink.BusElement
对象指定的复/实性。
SampleTime
— 信号的采样时间
-1
(默认) | double
标量或数组
InitialValue
— 信号或状态的初始值
''
(默认) | 字符向量 | 字符串标量
仿真执行第一个时间步之前的信号或状态值。
您可以指定计算结果为数值标量或数组的任何 MATLAB 表达式,包括工作区变量的名称。
在 MATLAB 命令行窗口或脚本中,即使您使用数字,也要将初始值指定为字符向量。
mySigObject.InitialValue = '5.3';
mySigObject.InitialValue = 'myNumericVariable';
要为使用 double
之外的数值数据类型的信号指定初始值,请将初始值转换为信号数据类型。例如,您可以指定 'single(73.3)'
,以使用 73.3
作为数据类型为 single
的信号的初始值。
如果您使用总线对象作为信号对象的数据类型,请将 InitialValue
设置为字符向量,其中包含 0
或与总线对象匹配的 MATLAB 结构体。有关详细信息,请参阅 总线支持。
如果初始值的计算结果为 MATLAB 结构体,请在“配置参数”对话框中,将欠定初始化检测设置为简化。
如有必要,软件将转换初始值,以确保类型、复/实性和维度与对应的模块参数值保持一致。如果您指定无效的值或表达式,当您更新模型时,将显示一条错误消息。此外,软件执行初始值的范围检查。当信号的初始值位于指定的最小值、最大值和数据类型所对应的范围外时,软件将向您发出警报。
经典初始化模式:在此模式下,表示以下信号和状态的信号对象的初始值设置将覆盖对应的模块参数初始值(如果未定义,即指定为 []
):
条件执行子系统和 Merge 模块的输出信号
模块状态
简化初始化模式:在此模式下,如果将信号对象附加到与条件执行子系统的 Outport 模块相连的信号线,该软件将使用来自 Simulink.Signal
对象的初始值。
示例: '15.23'
示例: 'myInitParam'
数据类型: char
| string
示例
为模块端口的信号创建信号对象
要使用信号对象控制模型中某个信号的特征,请使用与该信号相同的名称在工作区中创建对象。
创建一个名为 mySig
的信号对象。
mySig = Simulink.Signal;
将信号对象的数据类型设置为 'boolean'
。
mySig.DataType = 'boolean';
获取创建目标信号的模块端口的句柄。
portHandles = get_param('myModel/myBlock','portHandles'); outportHandle = portHandles.Outport;
指定输出信号的名称以匹配信号对象的名称。使用 'Name'
端口参数。
set_param(outportHandle,'Name','mySig')
通过将 'MustResolveToSignalObject'
端口参数设置为 'on'
,强制模型中的信号使用信号对象存储的属性。
set_param(outportHandle,'MustResolveToSignalObject','on')
为根级 Outport 模块的信号创建信号对象
要使用信号对象控制模型中某个信号的特征,请使用与该信号相同的名称在工作区中创建对象。
创建一个名为 mySig
的信号对象。
mySig = Simulink.Signal;
将信号对象的数据类型设置为 'boolean'
。
mySig.DataType = 'boolean';
指定输出信号的名称以匹配信号对象的名称。使用 'SignalName'
模块参数。
set_param('myModel/myOutport','SignalName','mySig')
通过将 'MustResolveToSignalObject'
模块参数设置为 'on'
,强制模型中的信号使用信号对象存储的属性。
set_param('myModel/myOutport','MustResolveToSignalObject','on')
为状态创建信号对象
您可以使用信号对象来控制模块(例如 Discrete-Time Integrator 模块)的状态特征。
创建一个名为 myState
的信号对象。
myState = Simulink.Signal;
将信号对象的数据类型设置为 'int16'
。
myState.DataType = 'int16';
指定状态的名称以匹配信号对象的名称。使用 'StateName'
模块参数。
set_param('myModel/myBlock','StateName','myState')
通过将 'StateMustResolveToSignalObject'
模块参数设置为 'on'
,强制模型中的状态使用信号对象存储的属性。
set_param('myModel/myBlock','StateMustResolveToSignalObject','on')
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
要控制生成的代码中 Simulink.Signal
对象的外观,请使用存储类属性。
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
版本历史记录
在 R2006a 之前推出R2023b: Simulink.ValueType
对象不覆盖父对象的描述
当您将 Simulink.ValueType
对象指定为 Simulink.Signal
对象的数据类型时,值类型对象不再覆盖 Simulink.Signal
对象的描述。
另请参阅
Simulink.Parameter
| Simulink.CoderInfo
| AUTOSAR.Signal
(AUTOSAR Blockset)
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)