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