动态仿真模块枚举
枚举数据是受限于有限组值的数据。一个枚举数据类型MATLAB是一种®类的集合枚举值.每个枚举值由枚举的名字和一个潜在的整数软件在内部和生成的代码中使用。
在开始在建模上下文中使用枚举之前,您应该理解中提供的信息枚举.
定义在Simulink中使用的枚举®模型,选择以下技术之一:
使用的函数
Simulink.defineIntEnumType
.枚举在您的MATLAB会话期间一直存在。通过子类化以下内置类来创建一个永久枚举类:
许多内置整数数据类型,例如
int8
而且uint16
仿真软件。IntEnumType
使用的函数
Simulink.importExternalCTypes
来创建枚举数据类型的Simulink表示(枚举
),你的外部C代码定义。用这个技巧来帮助你:
用Simulink模型替换现有的C代码。
在Simulink中集成现有的C代码进行模拟(例如,通过使用遗留代码工具)。
生成C代码(仿真软件编码器™),你可以用现有的C代码编译成一个应用程序。
有关更多信息,请参见定义模型的枚举.
下面的例子展示了如何在Simulink和Stateflow中使用枚举®.
例子 | 演示如何使用… |
---|---|
Simulink中的数据类型 | Simulink中的数据类型,包括枚举数据类型 |
使用枚举数据建模媒体播放器(Stateflow) | 包含状态流图的Simulink模型中的枚举数据类型 |
有关在Stateflow中使用枚举的信息,请参见枚举数据(Stateflow).
动态仿真模块支持枚举的构造
概述
一般来说,所有的Simulink工具和结构都支持枚举类型,鉴于枚举类型的目的,这种支持是有意义的:表示程序状态和控制程序逻辑。Simulink编辑器、Simulink调试器、端口值显示、引用模型、子系统、掩码、总线、数据日志记录和大多数其他Simulink功能都支持枚举类型,而不强加任何特殊要求。
枚举类型不用于数学计算,因此计算数值输出(与将数值输入传递到输出不同)的块都不支持枚举类型。因此,即使枚举值具有基础整数,也不认为枚举类型是数字类型。看到计算中的枚举值为更多的信息。
大多数不支持枚举类型的功能显然也不支持它们。因此,Simulink文档通常只在必要时才提到枚举类型不支持,以防止误解或描述异常。看到仿真软件枚举限制有关某些可以支持枚举类型但不支持的构造的信息。
块的支持
以下Simulink块支持枚举类型:
以下类别的Simulink块的所有成员都支持枚举类型:
Bus-capable块(见Bus-Capable块)
直通块:
除了上面提到的那些,还有许多Simulink块支持枚举类型,但它们要么属于上面列出的类别之一,要么很少与枚举类型一起使用。每个块引用页的数据类型支持部分描述了该块支持的所有数据类型。
类的支持
以下Simulink类支持枚举类型:
仿真软件。ValueType
仿真软件。信号
仿真软件。参数
仿真软件。AliasType
仿真软件。BusElement
日志记录枚举数据
顶级模型输出端口,到工作空间块,范围块都可以导出枚举值。信号和状态日志记录与枚举数据的工作方式与任何其他数据相同。支持所有日志记录格式。的从文件块不支持枚举数据。使用从工作空间块,结合一些在文件和工作区之间传输数据的技术。看到从模拟中保存运行时数据为更多的信息。
导入枚举数据
顶级模型输入端口和从工作空间块可以在模拟过程中输出枚举信号。资料必须以结构
,结构随着时间的推移
,或TimeSeries
对象。在指定的模拟时间之间,枚举值不会发生插值。从文件块只产生类型的数据双
,因此它们不支持枚举类型。看到模拟负载信号数据为更多的信息。
动态仿真模块枚举限制
枚举和范围
当一个范围块显示枚举信号,垂直轴显示枚举值的名称,只有在模拟期间作用域是打开的。如果你打开范围块在任何模拟发生之前或在模拟之间第一次显示,该块只显示数值。开始模拟时,枚举名称将替换数值,然后在范围块被打开。
当一个浮动范围块显示多个信号,只有当所有信号都是相同的枚举类型时,枚举值的名称才会出现在Y轴上。如果浮动范围块显示多个枚举信号类型或任何数值信号,不显示名称,任何枚举值都由它们的基础整数表示。
交换块的枚举类型
a的控制输入开关block可以是Simulink支持的任何数据类型。然而,u2 ~ = 0
枚举不支持模式。如果控制输入有枚举,选择以下方法之一来指定传递第一个输入的条件:
选择
u2 > =阈值
或u2 >阈值
并指定与控制输入相同枚举类型的阈值。使用一个关系操作符块进行比较,然后将该比较的布尔结果输入到控件的控制端口开关块。
不支持的枚举
在Simulink中使用枚举数据类型时,存在以下限制:
包不能包含枚举类定义。
的如果行动块不支持枚举。
生成的代码不支持记录枚举数据。
自定义状态流目标不支持枚举类型。
另请参阅
枚举
|Simulink.defineIntEnumType
|Simulink.data.getEnumTypeInfo