首页 理论教育 实现SVPWM算法:一种高效的控制方法

实现SVPWM算法:一种高效的控制方法

时间:2023-06-18 理论教育 版权反馈
【摘要】:前面提到了SVPWM与SPWM方法的关联,通过引入一个系数λ,可以在SP-WM中方便地实现SVPWM算法。该方式已经集成在DSP事件管理器内部的硬件空间矢量调制单元,使用该单元实现五段式SVPWM算法称为硬件法。表11-1 DSP内硬件法与软件法SVPWM对比注意:两种方式中CMPR1、CMPR2数值的含义是不同的。图11-8 硬件法主程序流程图实现SVPWM算法的中断服务程序的流程如图11-9所示。

实现SVPWM算法:一种高效的控制方法

前面提到了SVPWM与SPWM方法的关联(式9-22),通过引入一个系数λ,可以在SP-WM中方便地实现SVPWM算法。如果λ设定为0或者1,就会发现此时某一相在一个开关周期中将会出现没有开关转换的时刻,原本的七段式波形将会简化成为五段式波形,此时的开关方式称为线电压调制的方式。该方式已经集成在DSP事件管理器内部的硬件空间矢量调制单元,使用该单元实现五段式SVPWM算法称为硬件法。它与软件法(未使用DSP的硬件空间矢量调制单元而是通过程序灵活设置CMPR来控制输出脉冲)的对比见表11-1。

表11-1 DSP内硬件法与软件法SVPWM对比

978-7-111-50228-9-Chapter11-5.jpg

注意:两种方式中CMPR1、CMPR2数值的含义是不同的。

1.硬件法SVPWM

所谓硬件法就是利用DSP片内EV模块内嵌的硬件单元来产生SVPWM波形的方法,这种方法编程相对简单,所以把它放在软件法之前讲述。有些DSP芯片的内部没有支持SVP-WM的硬件配置,这时可用后面的软件法实现SVPWM,软件法的编程相对复杂,但整体思路和硬件法是一致的。

(1)硬件法实现SVPWM的原理

由硬件法产生SVPWM的波形与图11-5中七段式SVPWM波形有一个重要的不同,那就是T0T7的分配方式不同,如图11-5所示。在七段式SVPWM中,当有零电压矢量作用时,通常按1∶1把零电压矢量的作用时间t0平均分配成T0T7,所以整个PWM周期的时间被分成七段,这种波形叫做七段式波形。而用硬件法时,DSP的硬件内部已经固定好T0T7的时间分配关系——根据功率开关器件开关次数最少的原则,有时仅有U0作用,有时只有U7作用。这样一个PWM周期的时间就分成了五段:ta/2、tb/2、T0tb/2、ta/2或ta/2、tb/2、T7tb/2、ta/2,这种波形叫做五段式波形。

DSP内部的硬件SVPWM单元固化了T0T7的时间分配,通过设置比较方式控制寄存器ACTRX(X=A、B)的高四位就可以选择不同的时间分配组合,第15位SVRDIR置“0”表示电压空间矢量逆时针旋转,置“1”表示顺时针旋转。第14~12位的D2D1D0分别表示C、B、A三相电压信号,如当空间矢量位置为60°时,对应A、B、C三相电压信号应该是“110”,所以D2D1D0为“011”。图11-6按扇区的不同以及顺/逆时针把各种组合方式一一列出扇区如图9-30所示。

978-7-111-50228-9-Chapter11-6.jpg

图11-5 七段式波形与五段式波形

978-7-111-50228-9-Chapter11-7.jpg

图11-6 硬件法中开关时刻的组合方式

978-7-111-50228-9-Chapter11-8.jpg

图11-6 硬件法中开关时刻的组合方式(续)

虽然DSP自身固化的零电压矢量时间分配方式不同,但是如果电压矢量始终保持逆时针转动或顺时针转动,仍能保证逆变器一次只切换一个开关状态的原则。例如当电压矢量逆时针方向从第五扇区旋转到第六扇区时,开关状态由“100”变为“101”,逆变器功率开关中只有A相发生了变化。

DSP控制的五段式SVPWM波的产生原理如图11-7所示。

图11-7中的三角波代表通用定时器的计数寄存器T1CON的值,通用定时器的工作模式设置为连续增/减计数模式。通用定时器内部有三个比较寄存器CMPR1、CMPR2和CMPR3,在CMPR1中存放第一个比较匹配点(即ta/2);在CMPR2中存放第二个比较匹配点(即ta/2+tb/2)。在通用定时器周期寄存器T1PR中存入周期值的一半。通用定时器的计数寄存器T1CON从0开始增计数,在T1CON的值与比较寄存器CMPR1的值相等之前事件管理器A(EVA)的PWM信号保持不变,始终输出U4;当T1CON的值与CMPR1的值相等时,开始输出U6,然后保持不变;当T1CON的值与CMPR2的值相等时EVA开始输出U7,然后保持不变;当T1CON的值与周期寄存器T1PR的值相等时,计数器开始减计数;当T1CON的值再次与CMPR2的值相等时,输出U6,然后保持不变;当T1CON的值再次与CMPR1的值相等时,输出U4,然后保持不变,直到T1CON的值为零。这时计数器自动开始下一周期的增计数,如果在此处使能定时器1的下溢中断,即当T1CON的值为零时产生中断,且中断没有被屏蔽,则会跳入中断服务程序(参见图11-4)。在中断服务程序中可以计算出下一周期内的两个比较匹配值,并设置ACTRA以修改下一周期内的时间分配方式。

978-7-111-50228-9-Chapter11-9.jpg

图11-7 五段式SVPWM波形的产生

硬件法除了自动分配零电压矢量作用的时间外,还自动分配作为A、B、C三相输出的PWM口。通常把PWM端口1、3、5为一组,控制逆变器上桥臂的三个开关;端口2、4、6为一组,用以控制逆变器下桥臂的三个开关。

(2)软件编程

为了产生连续的SVPWM波形,通用定时器必须持续不停地计数,计数方式为连续增/减方式。当每个计数周期结束时产生下溢中断并跳入相应的中断服务程序,在中断服务程序中完成下一个计数周期内比较寄存器数据的计算。硬件法的主程序流程如图11-8所示。

978-7-111-50228-9-Chapter11-10.jpg

图11-8 硬件法主程序流程图

实现SVPWM算法的中断服务程序的流程如图11-9所示。

汇编语言为例,一个完整的DSP软件程序由以下三类文件组成:

1)命令文件(*.cmd),该文件对DSP内程序存储器和数据存储器的空间进行分配,见附录E。它由三部分组成:第一部分是输入/输出文件和选项等,在本设计中并没有用到;第二部分是目标存储器的定义,由MEMORY命令定义;第三部分是各段的定义,由SEC-TIONS命令定义。

2)头文件(*.h),该文件的内容为用户自定义的常量、寄存器和DSP内部寄存器的助记符,或者是中断向量表。通常在主程序的开始用汇编指示符“.include”和“.copy”对头文件进行调用。本设计的头文件有两个,一个是“lf2407_regs.h”,这个程序包括了LF2407所需的各种寄存器(开发软件已经自带);另一个头文件是中断向量表,内容见附录F。

3)汇编语言源文件(*.asm),该文件内容是源程序代码,见附录G。

有关主程序的说明如下:

4)正弦函数表里只存储了0~60°的61个正弦值。当电压矢量的扇区号确定时,根据当前给定的电压矢量角度可以算出它与ua矢量的夹角θθ的范围就在0~60°之间。当计算ta/2时需要知道sin(60-θ)的值,可以用表尾地址减去θ,即可查到sin(60-θ)的值;当计算tb/2时需要sinθ,就用表头地址加上θ,即可查到sinθ的值。

5)程序中的计算方法采用Qx格式,例如:正弦函数表中存储的数据是Q14格式的,即为(sinθ)×214,这样可以提高正弦值的精度。在计算过程中,要十分注意Q格式的转换,左移一位相当于Q+1,右移一位相当于Q-1。不同Q格式的数字不能直接相加减,若要进行加减计算必须先统一Q值。Qm格式的数与Qn格式的数相乘或除,等于两数直接相乘或除,所得的积或商的Q值为(m+n)或(m-n)。

978-7-111-50228-9-Chapter11-11.jpg

图11-9 硬件法中断服务程序流程图

6)此程序的中断响应采用了两次跳转方式:第一次跳转发生在定时器1产生下溢中断时,此中断为2级中断,程序会自动跳至通用中断服务程序(入口为:GISR2)。在此中断服务中将PIVR的值左移一位作为偏移值,加上外设中断向量表的起始地址后,通过BACC指令产生第二次跳转,进入中断服务程序T1U_ISR。这里的PIVR是外设中断向量寄存器,它是一个只读寄存器,当CPU响应外设中断请求时,会将当前中断对应的外设中断向量值自动存入PIVR中。把PIVR的值左移一位的原因是,在中断向量表(pwm_generate_vec.h)中使用的都是跳转指令B,此指令为两个字长,所以实际的偏移地址应为PIVR值乘2。

7)电压旋转矢量角度增量的确定:此程序每次退出中断之前都要在辅助寄存器AR1中加上18,这是因为电压旋转矢量的周期是0.02s,即0.02s内电压矢量转过360°。中断每0.02/20s进入一次(对应的开关频率为1kHz),所以每次进入中断的时候电压矢量都转360/20=18°。当然如果提高进入中断的频率,电压矢量每次进入中断的角度增量就会变小,这样产生的电机定子旋转磁链就更接近圆形。在本程序中,由于正弦函数表的精度是1度,所以进入中断的频率最高只能调至50Hz×360=18kHz,若要再高,必须修改正弦函数表。

8)死区的设置:实际逆变器中功率开关器件的开通和关断都会有一定的过渡时间。如果逆变器上半桥臂的开关尚未关断,此时同一桥臂的另一开关却已经导通,那么就会使电源短路,产生很大的电流,极易造成功率开关的损坏。为了避免这一现象的发生,除了功率转换电路自身要采取措施进行硬件保护之外,还需要在用户程序层面进行保护,使得跨接在电源两端的两个功率开关能够在一个开关关断以后,另一个开关才开始导通,即需要在程序中设置“不灵敏区域”(死区)。本程序具有死区控制的功能,在前述程序的设置中并没有使能。如果要使用此程序控制逆变器工作,需要对相关的语句进行适当的修改,相关语句如下(具体设置方法已在附录程序的注释中给出):SPLK#0000h,DBTCONA。该语句用来配置死区控制寄存器A。

9)此程序的输出结果是可以控制逆变器工作的PWM波,其中1、3、5PWM端口是一组,高电平有效,分别控制A、B、C三相的上桥臂开关管;2、4、6PWM端口是一组,低电平有效,分别控制A、B、C三相下桥臂开关管。

10)从程序的编写思路可以看出,如果需要改变期望电压矢量的频率或幅值,或者改变逆变器直流电压等,程序中用到的参数就需要编程人员手工计算后再修改,程序的灵活性不强。实际上可以将参数的计算过程编入程序,让DSP根据输入量自动计算参数,也可以通过实时的数据采集取得计算SVPWM参数所需的基本给定值,从而更灵活地控制DSP发出期望的开关指令。

(3)实验结果

运行上述程序,测量PWM1口得到如下实验波形。

978-7-111-50228-9-Chapter11-12.jpg

图11-10 硬件法SVPWM波形

由上面的两幅图可以看出,硬件法产生的SVPWM波形与前述的七段式SVPWM波形不大相同,它虽然也有中间宽两边窄的总特点,但并不严格遵守这种规律。造成这种现象的原因是硬件法对于零电压矢量的时间分配与七段式方法不同。采用硬件法时,有的扇区只有T0(000)时间而没有T7(111)时间,如逆时针旋转时的2、4、6扇区;有的扇区则刚好相反,只有T7时间而没有T0时间,如逆时针旋转时的1、3、5扇区。

2.软件法SVPWM

(1)算法原理(www.xing528.com)

软件法SVPWM的产生原理与前面MATLAB仿真中开关信号波形的产生原理一致,产生的波形是七段式SVPWM波,如图11-11所示。

978-7-111-50228-9-Chapter11-13.jpg

图11-11 软件法的SVPWM波形

软件法与硬件法最重要的差别在于前者不能自动为A、B、C三相分配输出端口。例如在图11-12中定时器仍然按照连续增/减方式计数,在匹配点1的两次匹配之间,1号电压为高电平;在匹配点2的两次匹配之间,2号电压为高电平;依次类推。但是究竟1号电压对应A、B、C三相中的哪一相却不能由系统自动确定,而要通过编程人员在软件里面设置。

978-7-111-50228-9-Chapter11-14.jpg

图11-12 软件法波形产生示意图

使用软件法产生SVPWM时,CMPR1、CMPR2、CMPR3将分别控制PWM端口1和2、3和4、5和6,所以一般设置1、2PWM端口为A相上、下桥臂开关管的控制信号,3、4PWM端口为B相上、下桥臂开关管的控制信号,5、6PWM端口为C相上、下桥臂开关管的控制信号。

978-7-111-50228-9-Chapter11-15.jpg978-7-111-50228-9-Chapter11-16.jpg978-7-111-50228-9-Chapter11-17.jpg,则不同扇区内三相逆变器中上桥臂导通时间规律见表11-2。假定开关频率为fs,那么某相导通时间t与对应CMPR的关系为

CMPR=PWMPRD×(1-t×fs) (11-1)

表11-2 三相上桥臂导通时间的1/2与扇区关系

978-7-111-50228-9-Chapter11-18.jpg

(2)软件法的流程图

978-7-111-50228-9-Chapter11-19.jpg

图11-13 软件法中断服务程序流程图

软件法使用的“lf2407_refs.h”、“pwm_generate_vec.h”与硬件法的文件相同,不再列出。其“*.asm”文件的程序编写思路也与硬件法相同,只是算法上做了调整。图11-14是用示波器观测PWM1端口波形的实验记录,图11-14b为局部放大后的波形。

(3)DSP中常用的一种空间电压矢量(SVPWM)算法流程

在软件实现SVPWM控制算法的过程中,SVPWM波形计算需要的已知量有:静止坐标系中两个正交电压分量指令uu、直流母线电压Udc、PWM载波周期T,具体的计算步骤如下:

978-7-111-50228-9-Chapter11-20.jpg

图11-14 示波器测量到的SVPWM波形

1)判断矢量us所处的扇区

通过分析uu的关系,可按如下规律计算扇区SECTOR

978-7-111-50228-9-Chapter11-21.jpg

则扇区为

SECTOR=A+2B+4C (11-2)

2)计算逆变器相邻两个电压空间矢量工作导通时间T1T2

为了方便说明,定义中间变量XYZ

978-7-111-50228-9-Chapter11-22.jpg

SVPWM的空间矢量和扇区的划分以及第3扇区的空间矢量的合成,如图11-15所示。

线性工作区内,不同扇区对应的导通时间T1T2按表11-3取值。

978-7-111-50228-9-Chapter11-23.jpg

图11-15 电压空间矢量图及第3扇区工作周期的分配

表11-3 在线性工作区扇区号与工作周期T1T2对照表

978-7-111-50228-9-Chapter11-24.jpg

非线性区饱和情况下的计算(将两个非零电压矢量的作用时间按比例缩小):

978-7-111-50228-9-Chapter11-25.jpg

978-7-111-50228-9-Chapter11-26.jpg

其中PWMPRD为周期寄存器的值,与T/2的时间是对应的。

3)计算三相桥臂各自所需的工作周期为

978-7-111-50228-9-Chapter11-27.jpg

根据参考电压矢量所在扇区,把正确的工作周期分配给三相电机的正确相,也就是正确的寄存器CMPRX。表11-4给出了确定方法。

表11-4 扇区号与寄存器CMPRX的取值对照表

978-7-111-50228-9-Chapter11-28.jpg

图11-16给出了第3扇区PWM开通模式以及寄存器CMPRX的取值。

978-7-111-50228-9-Chapter11-29.jpg

图11-16 第3扇区PWM模式和工作周期

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈