Simulink中枚举数据类型的使用方法
Simulink中枚举数据类型的使用方法
1. 楔子
笔者刚刚接触simulink和stateflow时,受之前的c语言影响,很多变量都想要使用枚举类型,来方便数据管理,最早用的matlab2012,那个时候枚举变量的定义需要使用编写脚本的方式,很不友好,所以后来放弃了,都采用宏定义。
但是近期发现,matlab已经对枚举数据类型支持的很友好了,现把枚举类型的使用方法整理一下,写成此文,matlab版本是2017a,操作系统为deepin。
2. Simulink 模型中使用枚举数据类型
- 以如下模型进行枚举数据类型的替换和使用
- 首先针对模型创建数据字典,进行数据的统一管理
- 然后在数据字典中创建枚举数据类型,并填好枚举包含的数值,数据类型等
- 至此枚举数据类型已经创建完毕,但是类似于C语言,我们要把模型中的相关变量定义成枚举类型才能够使用,如下进行输入端口的数据类型设置,和所使用的Constant模块数据类型设置
需要注意的是,枚举数据类型的调用使用了与类操作ClassName.Operation
相同的符号"."
,这就是示例中,需要把Constant模块的数值由TORQUE_CONTROL_U8
改为SystemMode.TORQUE_CONTROL_U8
的原因
最新更新,发现Simulink自带了枚举类型专属的Constant模块,能够识别枚举类型的选项,很不错,可以直接使用
3. Stateflow 模型中使用枚举数据类型
Stateflow中使用枚举也和上一章基本一致,都是在数据字典中定义枚举数据类型,然后定好变量的数据类型,在调用枚举值时采用ClassName.Operation
这种方法调用即可,如下为测试模型:
其Stateflow中,使用枚举变量如下示意: