在汽车控制器开发中,经常会遇到状态量 status states 。
这些状态量,直接用Uint8表示,在软件生成编译运行时完全没有问题。
但是,不利于维护和测试。比如电机的模式控制来说,off tq spd 等模式。
假如这些状态分别用012数字表示,在仿真时,simulink的示波器会显示012,inca,ape测试时,也会显示012,并不会显示 off tq spd。所以,在你怀疑电机模式发的对不对时,还需要拿出dbc来对照,非常不方便。
现在,上面的问题,都可以通过枚举量来解决。达到下图的效果。
首先,准备枚举量,class做到文件名称和定义一致,然后这么操作就可以了。下图是我使用classdef MotMd < Simulink.IntEnumType定义的一个电机模式枚举量。
将这个文件,放在matlab工作路径下,然后,开始随便搞个模型,将模型中变量数据类型设为enum:MotMd,如下图。
赋值可以这么来:
仿真,就可以达到上图示波器的效果了。
这种定义,在生成的A2L里,也会自动定义好模式名字,在用inca或ape观测的时候,显示效果跟上图示波器类似。
好了,本文就到这里。
汽车行业搞技术挣钱好难,买车买不起啊。