杨 蕊,张建军,马 昭,路 瑜
(西安石油大学,西安710065)
基于MATLAB的SVPWM算法自动代码生成技术研究*
杨 蕊,张建军,马 昭,路 瑜*
(西安石油大学,西安710065)
针对DSP编程复杂,开发周期长的问题,给出了一种运用MATLAB软件、Code Composer Studio(CCS)软件及其内嵌工具和链接软件自动生成SVPWM代码的方法。利用MATLAB/Simulink仿真软件建立了相应的算法模型,验证模型的正确性之后,自动生成代码,并编译、下载到DSP平台中运行,产生的波形与理论相吻合。与手工编写代码的方法相比较,该方法简单易行,开发周期短,生成代码效率高。
三相逆变器;空间矢量脉冲宽度调制;自动代码生成;数字信号处理器
传统的DSP软件开发,都是以编写复杂的汇编或C语言代码为整个软件生命周期的核心,在开发周期中,要不断地进行修改,需投入大量的人力和物力。快速代码生成已经成为了DSP代码开发研究的重点[7]。
TI公司和Mathworks公司联合推出的嵌入式开发环境Embedded Targetfor TI's C2 000/C5 000/ C6 000 DSP Platform[2-3]和接口工具MATLAB Link forCCS Development Tools[4]为自动代码的生成提供了方便。借助于DSP2812开发平台,以SVPWM算法自动代码生成为例,对自动代码生成技术进行研究,并验证了SVPWM代码生成的有效性。
1.1 SVPWM控制原理
SVPWM调制波形是电力电子中最常用的调制波,因其直流电压利用率高,电流谐波含量少,易于数字控制的特点而受到广泛青睐。SVPWM是将三相逆变器的交流侧电压ua,ub,uc在复平面综合成电压矢量,并通过固定的开关状态形成一系列空间电压矢量u,这些电压矢量在固定的幅值下以电源角频率旋转,利用这些电压矢量去逼近基准电压圆,形成PWM波[1]。
1.2 SVPWM仿真模型
SVPWM模型结构如图1[5]所示。
图1 模型结构图
1.2.1 坐标转换
三相静止坐标系下的物理模型意义清晰,但均为时变交流量,不利于控制,因此利用如下3/2转换矩阵
将三相电压转换到两相静止坐标系(0αβ)下[6],转换模型如图2所示。
图2 坐标转换
1.2.2 扇区计算
在坐标系(0αβ)下,定义中间变量Ua,Ub,Uc计算公式为
如果Ua>0,则A=1,否则,A=0;如果Ub>0,则B= 1,否则,B=0;如果Uc>0,则C=1,否则,C=0。扇区的计算公式为Sector=4C+2B+A,计算模型如图3所示。
图3 扇区计算
1.2.3 导通时间t1、t2计算
设Uref在第一扇区,Uref可由U1和U2矢量以及U0和U7零矢量合成,根据平行四边形法则有
式中,t1为U1的持续时间,t2为U2的持续时间,T为PWM开关周期。设U0、U7的工作时间为T0,有t1+t2+T0=T。
按照表1,对t1、t2赋值后,还要对其进行饱和判断。若 t1+t2<T,则 t1、t2保持原值不变;若t1+t2>T则t1=t1/(t1+t2)T,t2=t2/(t1+t2)T。
1.2.4 计算空间电压矢量切换点定义占空比参数:
在不同的扇区内,CMPR1、CMPR2、CMPR3根据表1进行赋值。计算占空比的模型如图4所示,仿真结果如图5所示。
图4 计算占空比的模型
图5 SVPWM波形仿真结果
表1 各扇区导通时间、切换点
采用TI公司的C2000系列的32位定点芯片TMS320F2812。该芯片采用了高性能的CMOS技术,CPU主频高达150MHz,采用低功耗设计,支持JTAG在线仿真接口,含有片内128K×16 bit的Flash等[8]。
DSP2812具有两个功能相同的事件管理器EVA和EVB。而此模块是PWM脉冲生成的特定模块。每个EV有2个16 bit的通用定时器,3个比较单元,3个捕获单元,1个正交编码脉冲。EV的通用定时器不但能够计时,每个定时器还能单独产生1路独立的PWM波形。比较单元又称全比较单元,主要用来产生PWM波形,每个比较单元可以产生一对(两路)互补的PWM波[9]。
在本实验中,仿真器一端通过JTAG插头连接到DSP2812目标板,另一端通过USB线缆连接到PC机的USB端口。
在MATLAB中,主要有Real-Time Workshop(RTW)和Stateflow Coder两种自动代码生成工具,RTW生成的代码简洁,可靠,易读。本文采用RTW模块代码生成工具。
自动代码生成流程如图6所示[10]。
图6 设计流程
(1)添加、设置Target Preferences模块。
(2)添加并设置ePWM模块。
(3)软件在环测试。
(4)功能验证模型。
(5)需要利用Target Preference模块、Digital Output模块,进一步把功能模型转换为代码模型。
按照上述步骤设置完毕后,单击模型工具栏上的“编译”按钮,在MATLAB中自动生成的代码报告,代码生成完毕后,由RTW模块自动启动CCS软件、建立工程,并编译下载程序到目标板。
编译完成后,.out文件会自动下载到目标板并执行。取其中一路输出波形,经过阻容滤波接到示波器上,得到的SVPWM波形如图7(a)所示,与图5仿真结果一致。图7(b)为用TI公司提供的手写代码(可认为效率已经很高)经过滤波后得到的SVPWM波形。可以看到,自动代码生成得到的波形与手工编写程序得到的波形一致。
在代码效率方面,自动编译生成的.out文件为174 KB(178 450 byte),如图8(a)所示,手写代码编译生成的.out文件169 KB(173 729),如图8(b)所示。按照文献[7]给出的效率计算方法,自动生成得到的代码效率为173 729/178 450=97.35% 。可见,具有很高的效率。
图7 SVPWM波形
图8 效率比较
对于传统的SVPWM代码,需要编写计算三角函数的繁杂过程[11],而基于模型设计自动生成的代码,只需要在Simulink中根据所需的算法,建立模型,设置好参数,按照一定步骤点击鼠标操作,便可自动生成所需要的代码,操作简单,缩短了开发周期,保证了代码的可靠性和执行效率。此方法充分体现了一体化系统设计的优越性,在未来国内的电力电子设计开发中具有光明前景。
[1]李红,陈忠华,王劲松.基于FPGA的SVPWM算法的ESL设计[J].电子器件,2009,32(2):409-412.
[2]The Math Works,Inc.Embedded IDE LinkTM 4 User's Guide[S].Natic,MA:The MathWorks,Inc.2010.
[3]The MathWorks,Inc.Target Support PackageTM 4 User's Guide[S].Natic,MA;The MathWorks,Inc.2010.
[4]The MathWorks,Inc.Link for Code Composer Studio Develep⁃ment Tools[EB/OL].[2006-07-28].
[5](美)可哈尼(Keyhani A),(印尼)马瓦里(Marwali M N),戴民.绿色可再生能源电力系统接入[M].王志新,等译.北京:中国电力出版社,2012:31-63.
[6]石昆,章坚民,李阳春.基于DSP的三相光伏并网逆变器控制系统设计与实[J].电子器件,2011,34(3):274.
[7]刘杰,周宇博.基于模型的设计-MSP430/F28027/F28335DSP篇[M].北京;国防工业出版社,2011:160-208.
[8]顾卫钢.手把手教你学DSP-基于TMS320X281x[M].北京航空航天大学出版社,2011:31-35.
[9]郭元彭,卢子广,杨达亮.基于DSP代码自动生成的实时控制平台[J].电力电子技术,2010:10.
[10]王巧明,李中健,姜达郁.MATLAB平台DSP自动代码生成技术研究[J].现代电子技术,2012,35(14):12.
[11]夏加宽,王桐.一种新颖的不对称六相SVPWM算法[J].电气传动,2014:2.
杨 蕊(1989-),女,汉,陕西渭南,西安石油大学,硕士研究生,研究方向为电力电子与电力传动,475810735@qq.com;
张建军(1957-),男,汉,陕西西安,西安石油大学,副教授,主要研究方向为电力电子与电力传动,zhangjj@xsyu.edu.cn。
Search on Generating Code Automatically of SVPWM Based on MATLAB*
YANG Rui,ZHANG Jianjun,MA Zhao,LU Yu*
(Xi'anshiyou University,Xi'an 710065,China)
Because of DSP's complicated programming,long developing term,a method is given by using MAT⁃LAB,CCS and its auxiliary software to generate SVPWM code automatically.MATLAB/Simulink is used to build a corresponding algorithmic model.After testifying the correct of this model,it generats codes,compilies automatical⁃ly and downloads them to DSP system to operate.The wave is identical with that of the theoretical result.Compared with manuel code,this method is easy to do,and has a short developing term and high efficiency of generating codes.
three-phase inverter;space vector pulse width modulation;automatic code generation;digital signal processor
H127;TP391.1
A
1005-9490(2015)06-1341-05
6120B
10.3969/j.issn.1005-9490.2015.06.027
项目来源:西安石油大学全日制硕士研究生创新基金项目(2013cx120318)
2015-02-08 修改日期:2015-03-16