文章编号:1671-1041(2008)02-0103-02
◆经验交流◆
基于三相逆变SPWM调制的DSP代码自动生成
李 博,胡继胜
(大连交通大学交通运输工程学院,大连116028)
摘要:本文以实现SPWM调制策略为例,利用EmbeddedTargetforTIC2000DSP模块(以下简称ETTIC2000模块)结合Simulink库中自带的模块进行DSP的C代码自动生成,提出了SPWM在DSP程序开发上的新途径。实验结果表明生成的代码在TMS320LF2407A处理器上运行正确。
关键词:ETTIC2000;SPWM;代码自动生成;S-FunctionBuilder中图分类号:TP219 文献标识码:B
Theauto-generationofDSPcodebasedonthree-phaseinverterSPWMmodulation
LIBo,HUJi-sheng
(SchoolofTransportationEngineering,Dalian
JiaoTongUniversity,Dalian116028)
Abstract:ByusingEmbeddedTargetforTIC2000DSPmodule
(referredtoasETTIC2000module),whichcombinedwithSimulinklibrary'sbasicmodulestoachieveSPWMcontrolstrategy,thispaperraisesSPWMproceduresinDSPdevelopmentinnewways.ExperimentalresultsshowthatthegeneratedcodesrunningontheprocessorofTMS320LF2407Acorrect.Keywords:ETTIC2000;SPWM;auto-generationofcode;S-FunctionBuilder
图1 SPWM代码自动生成流程图
3 S-FunctionBuilder模块在SPWM模型建立中的
重要作用
利用ETTIC2000模块对复杂系统进行DSP程序开发时,只依靠SIMULINK库中或其他工具箱中所带的模块来搭建模型是远远不够的。S-Function是MATLAB提供给用户的一种强大的功能函数,用户可以通过它编写自定义功能模块来进行仿真。一般在MATLAB中运行仿真大多采用M文件S-Function,然而模块生成目标代码已经脱离MATLAB平台,所以必须采用C语言的S-Function才有可能实现代码的生成。可是仅用C语言来编写的S-Function仍然不能产生代码,因为此模块缺少TLC文件。TLC文件指明如何根据spwm.rtw文件从模型中生成所需要的代码,它是ETTIC2000模块能够方便开发复杂系统模型的关键,但是手工编写TLC文件是很复杂的,而且也没有必要。
S-FunctionBuilder是一种自动生成C语言的S-Function图
[3]
形化界面工具。用户只须将C语言配以简单的规则写入DiscreteUpdatePane窗口中即可,用法十分简单、易懂。S-FunctionBuilder本身就像一个包装机(wrapper),把用户输入的离散状态个数(Numberofdiscretestates),初始值(DiscretestatesIC),采样时间(Sampletime),输入输出变量以及C语言代码一起打包自动生成3个文件,分别为spwm.c、spwm wrapper.c和spwm.tlc。在利用S-FunctionBuilder生成S-Function之前,一定要选中GeneratewrapperTLC选项,这是代码自动生成的关键。
1 ETTIC2000模块简介
ETTIC2000模块是TI公司与MathWorks公司共同开发的产品,在Matlab/Simulink中嵌入了eXpressDSP工具箱,支持C24x及C28x系列的DSP处理器,该模块包含PWM控制、I/O口输入输出、模/数转换(ADC)、CAN发送及接收、正交编码脉冲电路QEP、串行通信接口(SCI)、串行外设接口(SPI)等子模[1]
块,各子模块在功能上与DSP处理器内部各处理模块相等同。如本文在SPWM控制策略实例中,利用PWM控制模块来实现DSP的SPWM波形的输出,此模块在功能上完全等同于EV事件管理器;同样可以利用ADC模块来采集外部电位器给定的模拟频率信号;其他模块还可以实现DSP更多功能的设计和应用。
2 代码自动生成流程图
首先在MATLAB/SIMULINK图形平台下搭建SPWM控制系统模型(spwm.mdl),实时工作间(RTW)读取模型文件并对其进行编译形成中间描述文件(spwm.rtw),然后由目标语言编译器(TargetLanguageCompiler)将其转换为指定代码的解释性编程语言(TLC程序),它指明了如何根据spwm.rtw文件从模型中生成所需代码。接下来生成自定义联编文件(spwm.mk),它能够指导联编程序如何从模型中生成源代码、主程序、库文件进行编译和链接。通过MATLAB和CCS接口工具CCSLINK把MATLAB和CCS以及目标DSP(2407eZdsp、2812eZdsp或用户自制目标板)连接起来,当点击RTW对话框中的Build按钮后,将自动生成C目标代码,并通过CCS进行
[2]
自动编译、链接,最后下载到目标DSP板上自动运行。上述过程如图1所示,整个过程全部自动完成,这为软件开发人员带来极大方便。
欢迎订阅欢迎撰稿欢迎发布产品广告信息4 三相逆变SPWM调制模型的建立
下面以实现三相逆变SPWM调制为例详细介绍DSP代码自动生成,在实现过程中为了整个系统模型在控制上的完整性,采用恒压频比(V/f)的调速方式进行设计,具体模型如图2、图3所示。
图2 基于V/f的单相SPWM调制模型
EIC Vol.15 2008 No.2 103
◆经验交流◆仪器仪表用户
BoardName,用来确认ETTIC2000模块所支持的板卡及处理
器型号。
(2)在MATLAB命令窗口下输入cc=ccsdsp,用来创建一个CCS集成开发环境(IDE)连接对象。
(3)在整个模型中加入2407eZdsp模块,并对其进行相应的配置。在DSPBoardLable选项添入相应的板卡标号,本文为tds5102xx。在BuildAction中共有四种代码生成方式可供选择,当选中Build and execute时,在整个代码生成过程中编译、链接和下载全部自动完成。如果想要对生成的代码进行手工修改,选择Creat CCS Project选项即可。
(4)加入C24XPWM模块来实现SPWM控制算法。该模块在功能上完全等同于TMS320LF2407A事件管理器中带死区全比较单元。在此模块中设置定时器、PWM输出单元、PWM控制逻辑单元、死区时间设置和ADC控制。
(5)在Real-TimeWorkshop中单击Build按钮,系统自动生成C代码,执行过程能够在MATLAB命令窗中观察到,在CCS中显示所生成的各个文件。
图3 基于V/F的三相逆变SPWM调制模型总体框图
模型建立的具体步骤如下:
(1)在基于V/F的SPWM调制系统中,首先改变外部给定的工作频率信号f,实际应用中可以利用ETTIC2000模块库中的ADC子模块采集外部电位器给定的模拟频率信号。文中利用Step模块来代替外部频率给定的改变,第4秒时频率从50HZ变为25HZ。fonstantmax为外部设定的最高频率,模型中利用C模块来进行给定,取f。max=60HZ
(2)利用S-FunctionBuilder来创建加速和降速时间模块。实际运用中加速和降速的积分时间可以根据负载的需要,由操作人员来分别设定[4]。文中加降速时间t=2s(此处假定加速时间和降速时间相等)。
(3)利用SIMULINK模块库中自带的Saturation模块对逆变器输出频率进行限幅控制。
t1M2πk1
=+sin()(其中,t(4)根据公式1为脉宽时22NTc
间;T为三角波周期;M为调制度;N为载波比;k为采样序号,c
k=0,1,2,,N-1)建立算法模型。
由于外部频率f改变时,载波比N改变,k的最大采样序号也随之改变,而SIMULINK库中自带的计数器模块又难以实现此功能,所以本文运用S-FunctionBuilder来实现。
调制度M即正弦波峰值与三角波峰值之比。当f改变时,根据V/f曲线正弦波的峰值也发生改变,M也随之改变。本文中M取值范围为0~0.9。当f较低时,根据V/f曲线电源电压U成比例下降,定子阻抗压降在电源电压中所占的比例增大,因此,必须进行适当的电压补偿,本文选定当f<5HZ时,M=0.09。
在实际运用中,可以建立多条不同斜率的V/f曲线,由用户根据需要通过键盘来选择。而在本模型中通过Switch多路选择开关和ETTIC2000自带的I/O模块来实现。
(5)当外部给定频率达到最高频率时,可能出现窄脉冲的现象。为了保护开关器件可以进行窄脉冲删除处理。根据开关频率可以设定最小删除脉冲(本文开关频率设为3kHz,最小删除脉冲为20μs,当导通时间小于20μs或大于313μs则认为是窄脉冲,将其删除。这一功能的实现也通过S-FunctionBuilder来实现。
6 仿真和实验结果的分析
由图4(a)可以看出,当外部频率给定为50Hz时,经过2秒的加速时间占空比达到100%或0%,此时有窄脉冲被删除,当达到4秒时,频率变小,经过1.2秒后频率降为25Hz。
实验采用TMS320LF2407A的EVM作为目标板,时钟频率为30MHz,采样周期选为3KHz,在CCS2.2的集成开发环境下完成。首先将目标板中CMP1寄存器的值保存20000个采样点后利用MATLAB进行绘制,如图4(b)所示。从图中可以看出在第6000个采样点时刻发生窄脉冲删除,此时CMP1中的值为0或5000个时钟周期数。当达到第12000点后时钟周期数开始下降。实验所得结果与仿真完全一致,充分证明自动生成代码的正确性和可靠性。◆
(a)仿真波形 (b)代码生成后的实验波形
图4 基于V/F的A相SPWM波形图
参考文献
[1]MathworkInc.EmbeddedTargetfortheTIC2000DSPUser'sGuide,2005.[2]杨涤.系统实时仿真开发环境与应用[M].北京:清华大学出
版社,2002.[3]MathworkInc.S-FunctionBuilderofSIMULINK
Reference,2005.[4]陈伯时,陈敏逊.交流调速系统[M].北京:机械工业出版
社,2005.作者简介:李博(1980-),男,大连交通大学交通运输工程学院硕士研究生,研究方向:轨道车辆牵引控制及自动化;胡继胜(1966-),男,副教授,大连交通大学交通运输工程学院副院长,研究方向:轨道车辆牵引控制及自动化等。收稿日期:2007-10-09(7680)
5 代码自动生成的步骤
应用2407eZdsp来说明代码生成的具体操作步骤如下:
(1)首先在MATLAB命令窗口中输入ccsboardinfo查看
欢迎订阅2008年度
104 EIC Vol.15 2008 No.2仪器仪表用户杂志
双月刊,国内外发行
邮局订阅代号:18-226 全年六期共52.80元 本刊办理补订手续
欢迎光临本刊网站http://www.eic.com.cn
因篇幅问题不能全部显示,请点此查看更多更全内容