PMSM之FOC控制 番外篇1-使用Matlab生成代码,MCU验证
1 前言
??因为不管在Matlab中搞得多么花里胡哨,不把它用起来,多多少少有点虚,那么怎样把Matlab中的算法移植到MCU中进行验证呢,下面就来干这个事情。
2 模型搭建
??直接上图,总图: ??foc_control内部框图: ??因为是测试,所以我是这么干的,先使用一个反Park变换和反Clark变换产生一个三相波形,其中反Clark模块内容如下:
??产生的三相波形如下: ??再来看看Clark变换的输出: ??Park变换的输出: ??到了这个时候,在matlab中的验证就结束了。
2 代码生成
??在代码生成前,还需要做一件事情,matlab默认的数据类型都是double类型,因为生成的代码是需要在32位的单片机上运行的,所以我们需要把matlab模块中的一些输入输出数据类型改成single类型,举个例子如下: ??改造完如下: ??随后就可以生成代码了,右击foc_control模块,选择C/C++ Code->Embedded Coder Quick Start: ??注:如果没有这个选项或者这个选项是灰色的,但是就说明你目前的matlab没有完整licence或者没有安装安装。
??出现了界面后,一直点,一直点,直到出现设置硬件类型时,选择相应的硬件类型: ??注:有些MCU产商会有自己的电机驱动库,比如TI,ST,NXP,会把一些函数进行优化重写,比如一些三角函数等math函数,这个时候可以通过安装相应的板载支持包,然后设置相应的硬件板载。
??可以通过安装插件安装板载支持包: ??然后在Model Settings里面选择相应的Hardware support,如果MATLAB中没有你想要的芯片,那么就随便选一个吧,我就选了NXP的K64。 ??然后就是一直继续,直到生成成功,如果中途遇到一些问题卡住了,可以直接下载我的例子: FOC_Control_Matlab_MCU.7z
??如果生成成功,会生成相应的文件,如下: ??接下来,就是把相应的.c.h文件移植到MCU中了。如下: ??打开生成的文件,稍微阅读一下就可以看出matlab生成代码的一些规则,比如rtU为输入,rtY为输出等等,需要细细品味。
??下面是我的测试函数: ??然后让其运行起来,将结果输出,可以看到下面的结果: ??可以看出Clark和Park变换成功了。
END
|