基于Matlab的DSP控制系统系统级开发方法

2011-10-26 06:20卢小锦广东理工职业学院广东广州510091
中国科技信息 2011年11期
关键词:控制算法编码器永磁

卢小锦 广东理工职业学院,广东广州 510091

基于Matlab的DSP控制系统系统级开发方法

卢小锦 广东理工职业学院,广东广州 510091

传统的DSP控制系统开发思路,由于系统设计与模型仿真分离,实际系统与模型仿真误差大,代码编写任务繁重,开发周期长。本文基于系统级的设计思路,在Matlab环境下,利用C2000lib工具箱和Matlab Link for CCS Development、ToToarlsget for TI C2000工具包,结合DSP集成开发环境Code Composer Stadiu 3.3(CCS3.3),实现DSP控制系统从概念设计、建模仿真到代码的直接生成。本文根据该设计思路,以永磁同步电机(PMSM)的DSP矢量控制系统为工程实例,给出了控制系统从建模仿真到DSP程序代码自动生成的设计流程。

Matlab;DSP;代码自动生成;永磁同步电机;矢量控制

Matlab; DSP; Code generating; Permanent Magnet Synchronous Motor; Vector control

引言

Matlab因其强大的分析、计算和可视化功能被广泛用于控制系统的数学建模仿真、方案验证。开发一个控制系统,一般先用Matlab对系统的控制算法进行数学建模仿真,方案通过验证后才进行DSP系统的硬件设计及代码开发,并通过对比实际系统和仿真模型的输出,完善系统的设计。基于该思路的DSP控制系统开发,难度大、周期长,且系统设计与仿真模型分离,结果偏差大。本文基于系统级的设计思路,将系统设计和模型仿真在统一的开发环境中实现,实现系统和仿真模型的高度一致,提高系统的开发效率。

1 基于Matlab的DSP控制系统开发流程

Math Works公司和TI公司联合开发的工具包——Matlab Link for CCS Development Tools把Matlab和DSP集成开发环境CCS及DSP连接起来。利用此工具可以像操作Matlab变量一样来操作TI DSP的存储器或寄存器,开发人员在 Matlab环境下就可以完成对CCS的操作。Matlab Link for CCS Development Tools 可以支持CCS能够识别的任何目标板,包括TI公司的DSK、EVM开发板和用户自行开发的DSP板。把Matlab Link for CCS Development Tools工具包与Target for TI C 2000工具包配合使用,则可以直接由Matlab的仿真模型生成DSP的可执行代码,即在Matlab环境下完成DSP控制系统开发的整个过程[1]。

基于Matlab的DSP控制系统开发流程如图2。开发人员根据概念设计在Matlab平台下利用Simulink、SimPowerSystems及C2000lib工具箱中的模型搭建系统仿真模型(.mdl),仿真验证后通过Matlab的Real Time Workshop(RTW)生成面向TI编译器的工程文件(.prj),并进一步完成代码的编译,链接生成DSP可执行机器码(. out)并下载到目标DSP板,完成系统的开发[2]。

图2 基于Matlab的DSP控制系统开发流程图

2 永磁同步电机矢量控制算法设计

控制系统采用电流反馈跟踪实现Id=0的PMSM转子磁场定向控制策略(PMSM磁场定向空间矢量控制框图见图1)。Id=0控制方式输出力矩与定子电流成正比,电流调节器的输出为实际定子电流幅值。它们在永磁同步电机生成的合成电流矢量超前且垂直于转子d轴。故采用转子磁场定向的方式控制永磁同步电机,只需准确地检测出转子空间位置(d轴),通过控制逆变器使三相定子的合成电流位于q轴上,定子电流在d轴上的分量为零,在q轴上产生转矩励磁电流,通过控制定子电流的大小,就可以控制转矩[3]。

PMSM磁场定向控制算法包括:矢量控制算法、调节器控制算法及电压空间矢量控制算法。矢量控制算法完成三相坐标系到两相同步旋转坐标系的变换及其逆变换,实现永磁同步电动机的解耦控制;速度调节器设计为带饱和输出的PID调节器,其饱和输出值设定为电动机额定力矩电流的两倍,稳态时实现对速度的误差控制。动态调节时,限制电动机的最大电流,保证系统安全;PWM算法采用电压空间矢量控制(SVPWM)算法,具有谐波小和电压利用率高的特点。

3 控制系统的实现

3.1 基于Matlab/Simulink的系统级仿真模型建模及仿真

本文根据系统控制算法,基于Matlab搭建了基于磁场定向的PMSM空间矢量控制系统仿真模型(见图3),该仿真模型包括仿真模块和嵌入式系统模块两部分。

3.1.1 仿真模块设计

仿真模块基于Simulink、SimPowerSystems工具箱搭建,实现对功率电路及电机的建模仿真,包含有永磁同步电机模型、三相逆变器模型及数据转换1模块。其中,数据转换1模块包括相电流模数转换子模块(见图4)及编码器子模块(见图5)。

(1)相电流模数转换子模块将永磁同步电机模型输出的相电流值转换成D S P ADC寄存器的数据格式,模拟DSP ADC外设的数据采集工作模式。TMS320F2812的ADC为12位,数据有效范围为[4905,0]。相电流模数转换子模块将电流值限幅为[40.94,-40.94],换算公式见式1.1。

图4 相电流模数转换子模块

(2)编码器子模块模拟DSP EVA 事件管理器正交编码脉冲QEP电路的解码和计数工作模式。DSP EVA 事件管理器正交编码脉冲QEP电路使用通用定时器2对编码器的正交编码脉冲进行计数,计数器的数据格式为无符号16位整形数,最大计数值为65535。编码器子模块将永磁同步电机模型端的角位移值转换为通用定时器计数值的数据格式,以 [0,65535]为计数范围循环计数,换算公式见式1.2。

QEP_sim =angle ×(4× encoderResolution/2/pi) (式1.2)

其中,encoderResolution为编码器线数,值为2000;angle为电机模型的转子角位移。

图5 编码器子模块

3.1.2 嵌入式系统模块设计

嵌入式系统模块基于Simulink、C2000lib工具箱搭建,该模块实现系统的控制算法,且可通过该模块直接生成DSP程序代码。嵌入式系统模块主要包括速度调节器模块、Q轴电流调节器模块、D轴电流调节器模块、Park模块、Clark模块、I_Park模块、空间矢量发生器、C28x PWM 模块、F2812eZdsp模块、、电流采样模块、位置及转速计算模块及相应的数据转换模块。各模块的功能分析如下:

(1)速度调节器模块、Q轴电流调节器模块、D轴电流调节器模块、Clark模块、Park模块、I_Park模块以及空间矢量发生器是Matlab C28x Digital Motor Control Library的模型,各模块对应的功能为:实现带饱和输出的PID调节器算法;Clark变换运算,实现三相静止坐标到两相静止坐标的转换;Park变换运算,实现两相静止坐标到两相旋转坐标的转换;Park逆变换运算,实现两相旋转坐标到两相静止坐标的转换;计算出应用SVPWM产生给定定子参考电压所需的3个比较值Ta,Tb,Tc。

(2)C28x PWM 模块是Matlab C28x DSP Chip Support Library 的模型,通过配置该模块控制DSP PWM的工作模式,包括载波率、有效电平、工作时钟频率等。

(3)F2812eZdsp模块是Matlab Target Preference Library的模型,通过配置该模块可对DSP目标板的工作参数、存储器、段及外设硬件资源进行设置。

(4)电流采样模块(见图6)主要实现两个功能:采集定子端a、b相相电流;采集给定速度的输入信号。

C28x ADC 模块是Matlab C28x DSP Chip Support Library 的模型,通过配置该模块可实现对DSP ADC 采样通道及工作模式等进行设置。论文使用ADCINA0、ADCINA1通道实现对a、b相相电流信号的采集;使用ADCINA7通道实现对给定速度输入信号的采集。

图6中,Environment Controller实现了仿真模块和嵌入式系统模块的输入数据切换。Environment Controller有两个输入端Sim及RTW,其输出决定于模型是在Matlab仿真环境下运行还是在代码直接生成的情况下运行,当模型是在Matlab仿真环境下运行时输出Out等于Sim,当在代码直接生成的情况下输出Out等于RTW。

(5)位置及转速计算模块(见图7)由C28x QEP 子模块、CAP3INT子模块、QEP_latch子模块、speed_position子模块、Starup_ramp子模及IIRfilter子模块组成,其基本工作原理:在系统启动阶段,编码器index信号被第一次捕获前,init_latch标志信号为0,电机处于启动工作模式,由start_ramp子模块实现电机的启动;当编码器index信号被第一次捕获后,init_latch标志信号置1,系统切换到正常工作状态。系统通过C28x QEP子模块对正交编码脉冲进行计数;通过CAP3INT子模块捕获编码器index信号的跳变及跳变时刻正交编码脉冲的计数值;通过speed_position子模块结合正交编码脉冲计数值(QEP)及CAP3INT的捕获值(cap_value)估算电机转速(speed)及计算电角度(position)。

C28x QEP子模块(见图7)是Matlab C28x DSP Chip Support Library 的模型,通过配置该模块对DSP 正交编码脉冲QEP电路进行设置。本论文使用事件管理器A的QEP1、QEP2管脚作为编码器正交编码脉冲的输入端,捕获单元3(CAP3)管脚作为编码器index信号的输入端,其输出为基于通用定时器2的正交编码脉冲计数值。

CAP3INT子模块(见图8)实现捕获单元3对编码器index信号及正交编码脉冲计数值的捕获。

系统初始化阶段,配置CAPCONA(To Memory)、CAPFIFOA(To Memory)对捕获单元3及其捕获FIFO状态寄存器进行初始化,使能捕获单元3并设置检测捕获单元3的上升沿;向捕获单元3的FIFO堆栈状态位CAP3FIFO 写入“01”,随后每当FIFO获得一个新的捕获值,都将产生一个捕获中断。

系统工作时,将CAPFIFOA1(From Memory)捕获FIFO状态寄存器的值与“0x2000”进行位与运算,判断捕获单元3是否发生新的捕获。当发生新的捕获,if子模触发系统从捕获FIFO堆栈1的底层寄存器CAP1BOT读取捕获值(CAP_value)。

int_latch信号用于切换电机运行的工作状态。系统启动阶段,int_latch默认值为0,电机处于启动状态;当捕获单元3第一次捕获编码器index信号,int_latch信号置1,电机完成启动,切换到正常工作状态。

系统在仿真环境运行时,由QEP_latch子模块(见图9)仿真实现CAP3INT子模块捕获正交编码计数值的功能;int_latch信号置1,电机无启动阶段。

speed_position子模块(见图10)实现电机转速及电角度的计算。系统在20k的频率下运行,通过计算相邻两个机器周期的QEP计数值的差值便可估算出电机的转速speed;通过编码器偏移量offset、正交编码脉冲捕获值QEP_index、编码器线数Encoder Resolution等参数可计算出电角度position。系统中speed及position的值都被转换为归一化的Q17数据。

IIRfilter子模块(图11)是IIR数字滤波器模块,有两个作用:滤波作用,滤除速度给定信号的干扰;实现速度给定信号的缓升缓降,使速度给定信号缓慢变化至设定值,防止给定速度信号的突变给电机造成冲击。电机启动阶段,int_latch为0,IIRfilter子模块将给定速度设为0.1(归一化Q 17数据);当发生第一次捕获后,int_latch置为1,系统切换到正常工作状态,IIRfilter子模块输出为实际速度给定信号。

Starup_ramp子模块(见图12)实现电机的启动。电机启动阶段,由于无法判定转子位置,Starup_ramp子模块向系统输出提供电角度信号,使电机起转。R a m p Control模块用于设置电角度信号的频率,Ramp Generator根据设定频率输出幅值为[0,1]的电角度信号波。

数据转换子模块实现空间矢量发生模块和C28x PWM 之间的数据转换。由于空间矢量发生模块输出是一个归一化的Q24数据,而C28x PWM 是16位整数,因此需要通过在两者之间进行数据转换匹配。转换公式为:

3.1.3 模型仿真

电机参数为:额定工作电压600DCV,额定电流为4A,额定转速为3000prm,额定转矩为3Nm,电机带载启动。模型仿真输出占空比Ta、占空比Tb、电角度、A相相电流、速度给定值及速度估算值的波形如图13、图14、图15。通过观测仿真波形可知系统控制算法设计的正确性,系统具有良好的动态特性且稳态误差小。

3.2 基于MATLAB 的DSP代码直接生成

下面实现MATLAB仿真模型的DSP目标代码直接生成。

通过MATLAB直接生成代码时,首先把仿真模型的仿真模块去掉,执行Ctrl+B组合键命令,或在Real-Time Workshop界面点击generate code按钮。Matlab根据设置自动生成名为“C2812pmsmsim.pjt”的工程文件(包括源文件、库文件、链接文件),并自动连接打开CCS集成开发环境(见图16),并将生成的C代码编译、链接、下载到目标板。

4 系统实验

系统硬件采用德州仪器公司的eZdsp F2812平台作为控制单元。实验电机参数为:额定工作电压220ACV,额定电流为5A,额定转速为2500prm,额定转矩为5Nm,极对数为4,电机带载启动。通过CCS集成开发环境的图形窗口观察到的占空比Ta、占空比Tb、电角度、A相相电流、速度给定值及速度估算值波形如图17、图18、图19。通过与模型的仿真输出波形对比,系统输出与模型仿真结果一致,系统设计与仿真模型设计相符,验证了本文基于Matlab的DSP系统级开发开发思路的正确性。

5 结论

本文基于系统级的设计思路,基于Matlab平台完成了永磁同步电机矢量控制系统的建模仿真及实现了由Matlab仿真模型直接生成DSP代码。通过该工程实例,展现了一种全新的DSP控制系统开发思路,实现了系统设计与模型仿真的统一,使得控制系统从算法设计、建模仿真到系统实现的整个过程更加紧凑一致,大大减轻了代码开发的难度,提高了开发效率与质量。

[1]卢小锦,曾岳南.基于Matlab/Simuli的nk TMS320F2812代码开发[J]. 单片机与嵌入式系统应用.2009,2:79-81

[2]张详,杨志刚,张彦生.Matlab/Simuli模nk型到C/C++代码的自动实现[J].中国测试技术.2005,31(1): 111-113

[3]冯继营,李向超,李家武.基于SVPWM的永磁同步电机矢量控制系统设计[J].电子元器件应用.2010,12(9):51-54

System Level Development Method Of DSP Control System Based On Mtalab

Lu Xiaojin Guangdong Polytechnic Institute, Guangzhou Guangdong, 510091

Based on the traditional development approach, design of the DSP control system and the model simulation is separate. As a result, it is time-consuming and there is great error between the real system and the simulation model. This paper develops the DSP control system on the System Level Development. In the Matlab environment, carry out the DSP control system , including concept design, modeling, and code generating, by using Simulink, SimPowerSystems, C2000lib toolbox , Matlab Link for CCS Development Tools, Target for TI C2000tools and DSP integrated development environment Code Composer Stadiu3.3(CCS3.3). This paper developed the Permanent Magnet Synchronous Motor DSP Control System based on this approach, and shows the procedure of the system modeling, DSP code generating.

10.3969/j.issn.1001-8972.2011.11.057

卢小锦,硕士研究生,助教;研究方向:运动控制与电力电子技术。

猜你喜欢
控制算法编码器永磁
融合CNN和Transformer编码器的变声语音鉴别与还原
永磁同步电动机的节能计算
水泥厂风扫煤磨机的永磁直驱改造
基于ARM+FPGA的模块化同步控制算法研究
基于双增量码道的绝对式编码器设计
高精度位置跟踪自适应增益调度滑模控制算法
基于数字信号处理的脉冲编码器
光电编码器故障诊断技术研究现状与展望
基于航迹差和航向差的航迹自动控制算法
一种非圆旋转工件支撑装置控制算法