永磁同步电机控制自动代码生成的研究
2021-10-20吴政江李建贵黄玉祥
吴政江,李建贵,黄玉祥
(1.武汉理工大学机电工程学院,湖北 武汉430070;2.湖北江山重工有限责任公司,湖北 襄阳441057)
1 引言
由于永磁同步电机具有效率高、调速范围大、体积小、发热小等优点,现已广泛应用在新能源汽车上,随着新能源汽车制造技术的飞速发展,对PMSM性能的控制要求也越来越高,人们也越来越要求新能源汽车的安全性、可操作性和特定功能,这对于汽车嵌入式系统的开发也就越来越严格[1]。为了满足不同电动汽车上的控制需求,如今已将很多智能控制算法应用到了电机控制中,并取得了很好的控制效果。
控制算法的推陈出新对其嵌入式代码实现提出了很大的挑战,同时电机控制代码的规模和复杂度将成倍增加。传统的嵌入式系统开发与控制算法是分开设计与实现的,仿真模型调试成功后需要手工编写控制代码,这样的开发方式不仅效率低下,而且鲁棒性也差。
采用基于模型开发的方法(MBD)可以有效降低电机控制算法开发的难度,在MATLAB环境下通过建模和仿真来获得从需求到设计、实现和测试,使系统模型成为开发过程的核心。基于所选控制算法在Simulink环境下搭建控制系统仿真模型,按照功能要求进行配置优化后,将仿真模型转化为嵌入式代码生成模型再自动生成目标程序代码,在整个过程中不需要手动编写程序,这明显提高了开发效率。传统电机控制嵌入式系统开发模式与基于模型开发方法的对比如表1所示[2]。
表1 传统开发模式与基于模型开发方法的对比Tab.1 Comparison Between Traditional and Model-Based Development Method of Embedded System Model
现采用MBD的方法,以基于模糊自适应PID控制算法的永磁同步电机控制系统为例说明其开发流程。首先介绍了MBD电机控制系统开发流程,其次介绍了模糊自适应PID控制算法原理及Matlab模糊控制器的设计,在Simulink中建立了基于该算法的PMSM矢量控制模型,并把调试成功的仿真模型转化为嵌入式代码生成模型,最后将自动生成的代码导入TMS320F28335控制箱进行测试,以验证代码的正确性和高效性。
2 MBD电机控制系统开发流程
MBD是以实时软件为开发平台,实现快速的算法建模、微控制器驱动集成、代码自动生成、软件/处理器/硬件在环测试等,MBD电机控制系统开发的实现过程,如图1所示[3]。首先在Simulink环境中构建电机控制系统的仿真模型,然后将模型改成可以用于自动代码生成的模型,紧接着把生成的代码下载到DSP开发板中编译运行。在整个过程中,只需搭建模型,完成系统的设计,使用嵌入式代码的全自动生成技术,不需手工编写代码,即可获得实用高效的控制代码。
图1 MBD电机控制系统开发实现过程Fig.1 MBD Motor Control System Development Process
3 模糊自适应PID控制器设计
模糊自适应PID控制算法主体思想是将模糊控制中的模糊推理与传统PID控制结合起来,利用模糊控制规则对PID的参数进行自适应整定,使被控对象保持在良好的动、静态稳定状态,根据不同偏差e和偏差变化率ec,即时输出新的PID参数,与传统的PID控制相比,该算法更加灵活和稳定[4]。
3.1 输入量的模糊化
模糊控制器的输入为设定转速与反馈转速误差e和其误差变化率ec,输出量为比例、积分、微分的修正系数Δkp,Δki,Δkd。在系统运行的不同时刻,e和ec值是不断变化的,由模糊自适应PID控制器原理可知,在不同时刻均有最适合的PID参数输出[5]。
模糊控制器处理的模糊语言变量,所以需要将输入量模糊化才能利用模糊规则实时修改PID的三个参数,选取模糊集合{NB,NM,NS,ZO,PS,PM,PB}作 为 输 入 量e、ec和 输 出 量Δkp、Δki、Δkd的取值范围。可以参照文献[5]建立各个变量的模糊规则表,之后再对e和ec进行模糊化处理,可得出相应的隶属度,利用所得出的隶属度及相应隶属度的横坐标带入下式再求出Δkp、Δki、Δkd。
式中:kp、ki、kd-PID控制器的设定值。
3.2 模糊控制器的设计
在Matlab的在Command Window输入fuzzy命令,回车,添加两个输入变量e和ec,三个输出变量Δkp、Δki和Δkd,规定每个变量的取值范围,以Δki为例说明其隶属度函数及取值范围的选取,如图2(a)所示。按照既定的模糊规则表,添加Δkp、Δki、Δkd的模糊规则,完成之后,点击view-Rule,任意拖动e或者ec的刻度线,Δkp、Δki、Δkd的值会不断变化,如图2(b)所示。
4 系统建模与代码自动生成
4.1 搭建基于模糊自适应PID算法仿真模型
采用id=0的控制方式搭建的PMSM矢量控制仿真模型,控制框图如图3所示[6],其中在转速环控制中引入模糊自适应PID控制算法,它的输出为q轴电流参考值;电流环控制采用PID控制器,它的输出为d,q轴电压参考值;逆变器采用SVPWM调制方式。
图3 PMSM id=0矢量控制框图Fig.3 PMSM id=0 Vector Control Block Diagram
依据以上分析,搭建的PMSM控制系统仿真模型,如图4所示。模糊自适应PID算法的模型,如图4(a)所示。基于此算法的PMSM控制系统仿真模型,如图4(b)所示。
图4 PMSM控制系统仿真模型Fig.4 PMSM Control System Simulation Model
4.2 系统仿真
仿真参数设定如下:设定转速3000r/min,相电阻R=18.7Ω;定子绕组自感L=0.026H;转动惯量J=2.26e-5kg.m2,仿真中设置的输入电压为400V,仿真时长为0.75s,并在0.6s时加入负载,仿真得到的转速波形如图5所示,从波形可以看出,电机速度响应快,无超调,加入负载后,速度波动较小,并能很快恢复到稳定状态,进而也验证了模糊自适应PID控制算法的优越性。
图5 PMSM仿真速度波形Fig.5 PMSM Simulation Speed Waveform
4.3 代码生成与运行测试
4.3.1 自动生成代码的一般流程
自动代码生成的一般流程,如图6所示。首先是代码生成解析,从model.slx转换到model.rtw,解析出来的.rtw是一个文这里件,它描述了所有输入、输出、参数、状态等模型的配置和属性信息;其次是目标语言编译,Embedded Coder会使用Target Language Compiler是代码生成工具去执行.tlc文件,将model.rtw转换到model.c和model.h文件,其中还包括与算法相关联的main文件。Embedded Target for the TI TMS320C2000 DSP Platform产品为TI C2000 DSP实时应用开发的整个过程,从概念设计到代码的软件测试整个流程都提供了支持,将现有C代码与标准控制库模块整合,可实现设计效率最大化,这也提供了一种非常快速的电机驱动设计方法。
图6 自动代码生成流程Fig.6 Automatic Code Generation Process
在上述仿真模型的基础上去掉硬件连接部分,利用DMC模块和IQmath模块搭建嵌入式代码生成模型,如图7(a)所示。其中FOC控制模型,如图7(b)所示。因为,DMC中的PID、Clark变换、Park变换、反Park变换等模块的输入信号都需是定点Q格式,所以还要对输入信号进行规范化和格式化,以ADC采样数据处理模块为例,如图7(c)所示,通过图示各个模块可完成对数据的定点处理[7]。
图7 代码生成模型的建立Fig.7 Code Generation Model Creation
4.3.2 嵌入式代码生成模型的建立
在生成代码之前可以根据Model Advisor检查意见对模型进行优化,一般可以增加代码的可读性,提高代码的执行效率。优化配置完成后,在图7所示的代码生产模型中,点击Simulink界面的Build Model按钮,即可一次性生成控制代码。
5 代码测试与结果分析
将控制代码导入到TMS320F28335控制箱,编译并运行,编译结果,如图8所示。实验在CCS软件中监测电流采样值、矢量控制中的各个变量数据及转速波形,如图9所示。
图8 代码编译结果Fig.8 Code Compilation Result
图9 数据监测与转速波形Fig.9 Data Monitoring and Speed Waveform
实验结果表明,引入模糊自适应PID控制算法后,使得电机具有更优的动态性能,速度波形与仿真结果基本相符,可以看出代码运行正确。
6 结语
主要研究了基于模型开发方法的PMSM控制代码自动生成的详细过程,在电机控制的速度环中引入了模糊自适应PID算法,建立了控制系统仿真模型并转化成了嵌入式代码生成模型,最后将生成的代码导入到试验箱进行了测试,代码成功运行。由此可见将基于模型设计的开发方法运用到PMSM控制系统的开发中,可高效完成核心控制算法的开发与验证工作,能大大缩短了开发周期。