www·ele169·com|95实验研究0引言STM32系列单片机在无刷直流电机的控制应用领域使用非常普遍[1~3]。不少开发者使用KeilµVision作为STM32的编程开发工具。不过,开发者很少挖掘使用它的特殊仿真功能,例如调试函数功能[4]、逻辑分析仪功能等。目前,在技术上能同时实现C语言代码仿真运行及STM32单片机仿真有三种方式。第一种方式,利用KeilµVision的DLL虚拟接口扩展功能进行仿真[5~7]。主要是通过VC++等开发软件,依据电机数学模型,开发专用的DLL库来实现。这种方式必须借助第三方编程软件进行二次开发,开发难度较高、周期长、实用性不强。第二种方式,通过电路仿真软件Proteus实现仿真控制[8~12]。Proteus只支持少量STM32型号仿真,在兼容性方面存在不足,各种调试问题较多。第三种方式,利用MatlabSimulink实现无刷直流电机控制仿真并自动生成代码[13~15]。主要是通过Simulink生成控制图框并仿真运行,再通过RTW模块自动生成C语言代码。该方法直观性好、可自动生成控程序,是目前研究热点之一。但是,该方法存在使用配置繁琐、代码可读较性差、代码冗长执行且效率不高等问题,并不适合容在量小、运算速度低的STM32芯片上使用。为减少Matlab、Proteus、VC++等辅助工具的使用,仅在KeilµVision软件上并实现无刷直流电机仿真与控制程序开发。本文提出了一种新方法,即将无刷直流电机的数学模型转换为KeilµVision调试脚本,建立无刷直流电机仿真模型。并设计多段目标速度曲线来验证控制程序对虚拟电机的控制效果,同时测试实际平台控制效果。1无刷电机模型■1.1电压平衡方程电机的数学模型采用二相导通、星形、三相六状态形式,电压平衡方程[16~17]整理如下:000000000000aaaabbbbccccueRiLMiuRiLMpieRiLMiue−■■■■■■■■■■■■■■■■■■■■■■■■=+−+■■■■■■■■■■■■■■■■■■■■■■■■−■■■■■■■■■■■■(1)式中,p是微分算子(d/dt);ia、ib、ic是三相电、子电流(A);ua、ub、uc是三相电子电压(V);ea、eb、ec是三相定子的反电动势(V);L为三相定子自感(H);M为三相定子互感(H);R为三相定子绕组的相电阻(Ω)。电磁转矩方程:()eaabbccrTeieieiω=++(2)其中,Te为电磁转矩(N.m);ωr为转子角速度(rad/s)。启动时,速度ωr为零。如果利用公式(2)计算电磁转矩,结果为无穷大,与实际情况不符。因此,需要将公式进行转换。根据BLDC的反电势波形为梯形波的特点,如图1所示。基于Keil的...