Simulink中枚举数据类型的使用方法

Simulink中枚举数据类型的使用方法

1. 楔子

笔者刚刚接触simulink和stateflow时,受之前的c语言影响,很多变量都想要使用枚举类型,来方便数据管理,最早用的matlab2012,那个时候枚举变量的定义需要使用编写脚本的方式,很不友好,所以后来放弃了,都采用宏定义。

但是近期发现,matlab已经对枚举数据类型支持的很友好了,现把枚举类型的使用方法整理一下,写成此文,matlab版本是2017a,操作系统为deepin。

2. Simulink 模型中使用枚举数据类型

  • 以如下模型进行枚举数据类型的替换和使用

Simulink中枚举数据类型的使用方法

  • 首先针对模型创建数据字典,进行数据的统一管理

Simulink中枚举数据类型的使用方法

Simulink中枚举数据类型的使用方法

  • 然后在数据字典中创建枚举数据类型,并填好枚举包含的数值,数据类型等

Simulink中枚举数据类型的使用方法

Simulink中枚举数据类型的使用方法

  • 至此枚举数据类型已经创建完毕,但是类似于C语言,我们要把模型中的相关变量定义成枚举类型才能够使用,如下进行输入端口的数据类型设置,和所使用的Constant模块数据类型设置

Simulink中枚举数据类型的使用方法

需要注意的是,枚举数据类型的调用使用了与类操作ClassName.Operation相同的符号".",这就是示例中,需要把Constant模块的数值由TORQUE_CONTROL_U8改为SystemMode.TORQUE_CONTROL_U8的原因


最新更新,发现Simulink自带了枚举类型专属的Constant模块,能够识别枚举类型的选项,很不错,可以直接使用
Simulink中枚举数据类型的使用方法

3. Stateflow 模型中使用枚举数据类型

Stateflow中使用枚举也和上一章基本一致,都是在数据字典中定义枚举数据类型,然后定好变量的数据类型,在调用枚举值时采用ClassName.Operation这种方法调用即可,如下为测试模型:

Simulink中枚举数据类型的使用方法

其Stateflow中,使用枚举变量如下示意:

Simulink中枚举数据类型的使用方法