**1 从MBDT生成电机控制代码 **
本期也属于MBDT(Model-Based Design Tools)上手的一部分,主要是进阶一点的电机控制算法。电机控制很适合基于模型的设计(Model-Based Design,MBD)的练习。
MBDT中有很多电机控制的示例模型,可以直接生成代码,并且提供了配置好的FreeMASTER工程,可以查看Hall信号、电流、电压等信息。如下图所示,双击可以打开查看模型。
MBDT提供的电机控制的示例模型 - From autoMBD
为了不破坏原来的模型,不建议从库中打开模型。下面以MBDT的示例工程BLDC_ClosedLoop_s32k144.mdl为例,展示如何利用MBDT生成并运行电机控制算法,使用到的硬件是 MCSPTE1AK144 。
找到示例模型BLDC_ClosedLoop_s32k144.mdl的目录位置,将整个目录复制到合适的位置。默认情况下示例模型的位置在这个目录下:
MBDT示例模型的位置路径 - From autoMBD
路径的前面部分可能会因为安装的位置和电脑配置的不同,而产生差异,注意辨别。然后将MATLAB的工作空间放到你复制的位置,打开BLDC_ClosedLoop_s32k144.mdl模型:
打开示例模型 - From autoMBD
特别需要注意的是,原始的MBDT的BLDC_ClosedLoop_s32k144.mdl模型配置有点错误,需要进行修改。 原始模型中Hall A和Hall B的引脚配置需要修改为如下配置:
Hall A:PTD11修改为PTA15
Hall B:PTD10修改为PTA16
修改Hall A/B的引 - From autoMBD
具体的修改依据可以查看S324144EVB的原理图,这里给出截图供读者参考:
Hall A/B电路图 - From autoMBD
可以看到PTD11和PTD10是DNP(Do Not Populate)状态,不能使用,能使用的是PTA15和PTA16。
至此,MBDT的基本上手就全部结束了。读者还可以查看其他的示例模型,自己尝试一下生成代码和运行,会对MBD有更深的体会。
电机控制模型具有一定的复杂度和丰富度,仔细阅读模型是怎么搭建的可以了解很多MBD的开发方法,包括状态机的搭建、事件的控制、算法的实现等。
2 MC DevKits的使用
NXP也给了纯代码的电机控制方案,这里做一个简单的介绍,作为MBDT的对比。
在NXP官网可以免费下载适用于MCSPTE1AK144的软件,你也可以在公众号的资源中找到。在对话框中回复关键词“ MBDT ”即可收到资源信息。
MC DevKits - From autoMBD
双击即可开始安装,如果你使用的是默认安装( 强烈建议默认安装 ),可以在这个位置找到四个工程:
MC DevKits的四个工程 - From autoMBD
这四个工程可以在S32 Design Studio for ARM Version 2.2(S32DS)中直接编译和下载,同时工程中也提供了基于FreeMASTER的 MCAT实时调试工具 ,功能上要比MBDT的电机控制模型的要强一些,可以做无感算法或带FreeRTOS的电机控制算法。
以MCSPTE1AK144_PMSM_FOC_2Sh为例
如果是非计算机相关专业的人,没有接触过嵌入式开发的,要弄懂这些工程是如何运行起来的,可能需要花很长一段的时间。相比而言,MBDT就简单很多,能读懂模型就可以知道电机控制算法是怎么实现的。
当然,这两种方式有实现起来很多区别,也有各自的优势,不能一概而论。我认为两种方法都掌握才能发挥MBD的最大优势。