搜档网
当前位置:搜档网 › 基于FPGA的SVPWM算法的实现

基于FPGA的SVPWM算法的实现

基于FPGA的SVPWM算法的实现

基于FPGA的SVPWM算法的实现

摘要:为了数字实现SVPWM的算法,文中采用了以FPGA作为硬件基础,给出了基于FPGA的SVPWM 算法的具体算法以及软件设计。文中使用Verilog HDL编写FPGA程序,采用语句和图形编辑相结合的方式进行编程以达到程序结构清晰的目的。程序采用Mealy型状态机的程序结构,以达到增加硬件资源的利用率,结构清晰,便于数字设计的目的。其中,软件通过了Modelsim Altera进行仿真,给出了其相关的仿真波形图以说明其无误。文中使用Storm ⅢFPGA开发板对软件进行验证,其中开发板的核心芯片为Altera 公司生产的EP3C10E144C8这款FPGA芯片,使用了RC滤波电路对PWM信号进行滤波处理并且给出了输出信号的示波器波形图和借助硬件电路驱动一台三相交流电机以说明其算法实现的准确性。

关键词:SVPWM;FPGA;空间矢量脉宽调制;Verilog HDL

The Realization of SVPWM Algorithm Based on FPGA Abstract: To realize digital SVPWM algorithm, this paper adopted in hardware based on FPGA, and gives the specific algorithm of SVPWM algorithm based on FPGA and the software design. FPGA program written in this paper, we use Verilog HDL, adopt the way of combining statements and graphics editing program in order to achieve the purpose of the program structure is clear. Program type with Mealy state machine structure, increase the utilization of hardware resources, in order to achieve the structure is clear, for the purpose of digital design. Among them, the software through the Modelsim Altera simulation, its related simulation waveform graph is given to illustrate its correct. In this paper, we use the Storm ⅢFPGA development threatening the software validation, in which development board of the core chip of Altera company EP3C10E144C8 the FPGA chip, using the RC filter circuit to filter

the PWM signal and output signal oscilloscope waveform diagram is given to illustrate the accuracy of the algorithm.

Key words: Space vector pulse width modulation; SVPWM; FPGA; Verilog HDL

目录

1 绪论 (1)

1.1 空间矢量控制技术 (1)

1.2 现场可编程门阵列 (2)

1.3 本文研究内容 (3)

2 空间矢量控制 (4)

2.1 空间矢量控制基本原理 (4)

2.1.1空间矢量的定义 (4)

2.1.2电压与磁链空间矢量的关系 (5)

2.1.3六拍阶梯波逆变器与正六边形空间旋转磁场 (6)

2.1.4 电压空间矢量的线性组合 (8)

2.2 空间矢量控制算法 (10)

2.2.1恒压频比 (10)

2.2.2 Clark变换 (10)

2.2.3 开关矢量持续时间计算 (11)

2.2.4 扇区判断 (12)

2.2.5 合成参考矢量 (12)

3 基于FPGA的SVPWM算法的软件设计 (12)

3.1 运算模块 (13)

3.1.1 三相参考电压峰值计算模块 (13)

3.1.2 三相电压矢量发生模块 (14)

3.1.3 坐标变换模块 (15)

3.1.4 开关导通时间计算模块 (15)

3.1.5 参考矢量位置判断模块 (17)

3.2 PWM信号发生模块 (18)

3.3 死区模块 (19)

3.4 软件总系统 (19)

4 硬件与调试 (20)

5 总结与展望 (22)

致谢 (23)

参考文献 (24)

附录 (25)

基于FPGA的SVPWM算法的实现

1 绪论

1.1 空间矢量控制技术

直流电机和交流电机在19世纪先后诞生,鉴于直流电机具有优越的调速性能,高性能的可调速场合都采用直流电机,而约占所有电机总容量80%以上的不变速拖动系统则采用了交流电机,交流调速系统多种方案虽然已经早已问世,并已经投入到了实际应用当中,但是其性能却始终无法与直流调速系统相比。在早期的交—直—交变压变频器所输出的交流波形都是六拍阶梯波或者是矩形波,当时,只能采用半控式的可控硅来控制其导通,但是其不能控制关断,由于它的不可控性和比较低的开关频率导致了逆变器输出的波形不能近似按正弦波变化,只能按照阶梯波变化,从而会产生较大的谐波,使电机输出转矩也存在脉动的分量,影响其实际工作性能,为了提高交流电机变压变频调速系统的性能。在出现全控式电力电子开关器件后,脉宽调制(PWM)技术也相应得到了广泛的应用,对交流电机的变压变频调速系统起到了很大的推动作用。在20世纪80年代出现了应用PWM技术的逆变器,由于它的优良的调速性能,如今,在国内外生产的变压变频器都已经采用了脉宽调制技术,只有在全控器件尚未能够承受的特大容量的场合才没有应用上脉宽调制技术[2]。

脉宽调制(PWM)控制技术的原理是在采样理论中,冲量相等而形状不同的窄脉冲加在具有惯性环节上,其作用效果基本相同。其中,冲量即指窄脉冲的面积。而这里所说的效果基本相同,是指环节的输出响应波形基本相同。如果把各输出波形采用傅里叶变换来分析,那么低频段的时候其输出波形是非常接近的,只在高频段范围有差异。例如图1.1所示的三个窄脉冲形状不同,其中a 为矩形脉冲,b为三角形脉冲,c为正弦半波脉冲,但他们的面积都相等,那么,当它们脉冲函数为d所示时即δ(t),环节的响应即为该环节的脉冲过度函数。我们称上述原理为面积等效原理,它就是PWM控制技术的重要理论基础[1]。

?(t)

O t ?(t)

O t

?(t)

O

?(t)

O

δ

a)b)c)d)

图1.1 形状不同而冲量相同的各种窄脉冲

在众多的PWM技术中,其中正弦波脉宽调制(SPWM)技术广泛应用于逆变器,而经典的正弦脉宽调制主要着眼于使变压变频器的输出电压尽量接近正弦波,并未考虑到输出电流的波形。然而交流电机需要输入三相对称正弦电流的最终目的是在电机空间中形成一个圆形的旋转磁场,从而产生恒定的电磁转矩,才能保证电机以良好的状态转动。如果我们对准这一目标,把逆变器和交流电机看成一个整体,那么按照形成圆形磁场的控制要求来控制逆变器的开关工作,那么其效果应该会更好。这种控制方法叫作磁链跟踪控制,磁链的轨迹是交替使用不同的电压空间矢量通过矢量合成所得到的,所以又称“电压空间矢量PWM (SVPWM)控制”[2]。SVPWM控制相比于SPWM控制主要有以下优点[7]:

(1)直流侧电压利用率相比于SPWM高出15%左右;

(2)开关次数减少1/3左右;

(3)能获得较好的谐波抑制等特点。

其中最为主要的是第一和第二点,因为开关次数减少和电压利用率增高就相当于间接节能。但是SVPWM在算法的数字实现上较SPWM困难,主要原因是SVPWM 在实现过程中,需要进行一些几何变换和运算,所以它的运算量比较大,导致普通单片机已经无法满足运算要求,无法保证实时性要求,所以这里需要一种快速器件才能满足性能要求。

1.2 现场可编程门阵列(FPGA)

可编程逻辑器件(PLD)是20世纪70年代发展起来的一种新型的集成器件。PLD是大规模集成电路技术发展的产物,同时也是一种半定制的集成电路,结合计算机软件技术(EDA技术)可以快速、方便地构建数字系统[3]。

不论是简单的还是复杂的数字电路系统都是由基本门构成的,如与门、或门、非门、传输门等。其中由基本门可构成两类数字电路:一类是组合电路;另一类是时序电路,含有存储元件,经过实践,人们发现在数字电路当中并不是所有的基本门都是必需的,其中,用单一的基本门——与非门也可以构建成其它的基本门;任何的组合逻辑都是可以通过“与或”这种逻辑关系来组合,即任何组合电路都可用门.或门这种二级电路实现;同样,任何时序电路都可以由组合电路加上存储元件(RAM、锁存器、触发器等)构成。由此,人们提出一种可

编程电路结构,即乘积项逻辑可编程结构,其原理结构如图1.2[3]。

输入缓冲电路

输出

缓冲

电路

或阵

与阵

输入

出·

·

·

·

·

·

图1.2 基本PLD器件的原理结构图“与-或”结构组成的PLD器件功能比较简单,此后又从ROM的工作原理、地址信号与输出数据间的关系以及ASIC的们阵列法中获得启发,构造除了另一种可编辑的逻辑结构,即SRAM查找表的可编程逻辑构建方式。此类可编程逻辑的逻辑函数发生是采用了RAM“数据”查找方式,并使用多个查找表构成了一个查找表阵列,成为可编程们阵列(PGA),随着可编程器件的规模不断扩大,随着发展FPGA也就应运而生[3][4]。

现今,实现空间矢量控制主要采用的芯片是TI公司生产的DSP芯片,其独特的结构为空间矢量控制提供了一个较好的硬件平台。但是,DSP芯片实现空间矢量控制当中仍然有它的不足之处。FPGA与DSP相比有以下几个特点:

(1)DSP只能产生固定6路或者12路的PWM波,FPGA只要硬件资源足够则可产生多路PWM;

(2)DSP需要占用CPU资源,而FPGA以其独特的结构特点硬件实现功能;

(3)纯硬件并行处理,可靠性高,速度快;

(4)设计灵活,可任意定制硬件。

所以,对于完成一些单一的运算过程或者功能,FPGA能够在几个时钟周期内完成,实时控制上完全能够满足性能要求,在一些大型系统的应用当中,完全能担任各种固定不变的功能,在一些多微机相互配合使用的大型系统应用中,使用FPGA来完成功能还能够为其他微机节省CPU资源,所以基于FPGA的SVPWM 的算法的实现具有一定的前景。

1.3 本文研究内容

对于现今已有的多种SVPWM的实现算法中,在保证完全能正常工作的前提下选取一种运算量较小,便于数字实现,便于FPGA实现的算法。本文所采取的算法主要是通过了前人的验证和大量资料的搜集以确保算法可行,其中所需要的算法主要有恒压频比、坐标变换、导通持续时间计算、扇区计算,PWM信号发生

等,其中PWM信号发生则主要采用七段式的开关模式进行矢量合成以达到减少谐波的目的。

在FPGA的软件编程实现过程中,在保证性能的前提下,尽可能地提高硬件资源的利用率。由于FPGA主要是消耗硬件资源来完成各项功能,所以提高硬件资源的利用率是必要的一个环节。在各模块的设计当中,文中主要采用Mealy 型状态机的结构,在运算编写当中,使用移位求和的方法代替乘法、除法运算。

在软件编程过程中,充分利用现有的软件资源,通过软件仿真验证等方法减少软件开发周期。文中主要采用Altera公司的Modelsim Altera 这款仿真软件对所编写的软件进行功能仿真,先在软件上进行软件仿真确保无误后才进行硬件调试,提高设计效率。

完成软件设计后进行有效可靠的硬件验证,文中将输出的PWM信号接入一个低通RC滤波电路,通过滤波电路滤波后的波形观察间接地检验软件编写的正确性。

2 空间矢量控制

本章内容主要是叙述了SVPWM(空间矢量)控制的基本原理和相对应的算法其中逆变器的开关电压矢量合成参考电压空间矢量的过程将会在本章节的内容有详细的讲解和推导。本章中还给出了具体的几何数学关系、公式等都将会详细给出,有了这些公式作为我们下一章节所讲述的软件实现提供一个理论基础。

2.1 空间矢量控制基本原理

2.1.1空间矢量的定义

交流电机绕组的电压、电流、磁链等物理量都是随时间变化,但如果考虑到它们所在绕组的空间位置,我们建立一个空间坐标轴则可以将电压、电流磁链等定义为空间矢量[2]。如图2.1:

u ω1

A

B

U a

U b

U c

图2.1 电压空间矢量合成图

A ,B,C 分别表示在空间静止的电机定子三相绕组的轴线,它们在空间中互差2π/3,三相定子正弦波相电压UA,UB,UC 分别加在三相绕组上。可以定义三个定子电压空间矢量Ua ,Ub,Uc 使它们的方向始终位于各相绕组的轴线上,而其幅值则随时间按正弦规律脉动,时间相位相互错开的角度也是2π/3。与电机原理中三相脉动磁动势相加后产生旋转磁动势相仿,就可以证明,三相定子电压空间矢量相加的合成得空间矢量u ref 是一个旋转的空间矢量,它的幅值不变,其幅值是每相电压值的3/2倍。其中合成矢量u ref 以电源角频率ω1为电气角速度作恒速旋转[2]。用公式表示,则有:

ref a b c u U U U =++ (2.1)

与定子电压空间矢量相仿,可以定义定子电流和磁链的空间矢量I ref 和Ψref 。 2.1.2电压与磁链空间矢量的关系

当三相异步电机的三相对称定子绕组由三相平衡正弦电压供电时,对每一相都可以写出电压平衡方程式,三相电压平衡方程式相加,即得用合成空间矢量表示定子电压方程式为:

ref ref ref ref d u R I dt

ψ=+

(2.2)

式中 u ref 定子三相电压合成空间矢量; 式中I ref 定子三相电流合成空间矢量; 式中Ψref 定子三相磁链合成空间矢量。

当电动机转速不是很低时,定子电阻压降很小,可忽略不计,所以定子合成

磁链空间矢量的近似关系为:

ref ref d u dt

ψ≈

(2.3)

当电机由三相平衡正弦电压供电时,电机定子磁链的幅值恒定,其在空间中以恒速旋转,磁链矢量顶端的运动轨迹呈圆形(简称为磁链圆)。这样定子磁链旋转矢量可用下式表示:

1

j t ref m e ωψψ=

(2.4)

其中,Ψm 是磁链Ψref 的幅值,ω1为其旋转角速度。 由式2.3和式2.4可得:

111j j j t 2

1m 1m d (e )j e =e d t ref

m u t

π

ωωωψωψωψ≈=(t+)

(2.5)

当磁链幅值Ψm 一定时,u ref 的大小与ω1(或电压频率f 1)成正比,其方向则与磁链矢量Ψref 正交,即磁链圆的切线方向,如图2.2所示:

ω1

ψref

u ref u ref

图2.2 旋转磁场与电压空间矢量的运动轨迹

当磁链矢量Ψref 在空间旋转一周时,电压矢量也连续地按磁链圆的切线方向运动了2πrad ,其轨迹与磁链圆重合。这样,我们可以看到电机旋转磁场的问题就转化为电压矢量旋转的问题[2]。

2.1.3六拍阶梯波逆变器与正六边形空间旋转磁场

在常规的PWM 变压变频调速系统当中,三相异步电动机由六拍阶梯波逆变器

供电时,电压并不是三相正弦电压,那么,电压空间矢量如图2.3:

Ψ3

Ψ4

Ψ5

Ψ6

Ψ1

Ψ2

u 5

u 6

u 1u 2

u 3

4

ΔΨ21

O

图2.3 六拍阶梯波逆变

器供电电压矢量

可以从图中看到,六拍的阶梯波逆变器电压矢量在空间坐标轴上所产生的磁链增量将会形成一个封闭的正六边形,所以在电机运行过程当中会在空间中产生脉动的转矩。如果我们分析其开关矢量,如图2.4,取上桥臂开关VT1、VT3、VT5导通时取1,下桥臂VT4、VT6、VT2导通时取0可得8种开关状态,而8种开关状态形成图2.5中的开关矢量[2]

A

B

C

VT1

VT2

VT3

VT4VT5

VT6

N

U dc

100

010

011001

101

u 1u 4

u 5u 6

u 7

u 8u 2

110

000111

图2.4 三相逆变器示意图

图2.5 各开关合成矢量

其中111、000这两种开关模式所形成的电压矢量为0,其余开关状态形成的矢量相互间隔隔π/3。开关状态的合成矢量原理如图2.6:

A

C

B

u 1

u a u c

u b

图 2.6 开关

合成矢量

我们以100这种开关模式为例,如图2.4取N 点为电压参考点,VT1导通,

VT4关断,在空间坐标系中形成u a 矢量,其幅值为2U dc /3,VT3关断,VT6导通,VT5关断,VT2导通分别形成u c ,u b 矢量,其幅值为U dc /3,在空间坐标轴当中通过矢量合成矢量u 1,u 1的幅值为Udc 。

我们设逆变器工作开始时定子磁链空间矢量为1ψ,在第一个π/3期间,电机上施加的电压空间矢量为图2.7,按照式2.3就可以写成

1

1

u t ψ?=?

(2.6)

也就是说,在π/3所对应的时间Δt 内,施加u 1的结果是使定子磁链Ψ1产生一个磁链增量ΔΨ1,其幅值与|u 1|成正比,方向与u 1一致,最后得到图所示的新的磁链Ψ2,而以此类推可以写成ΔΨ的通式

i i u t ψ?=? i=1,2,3……,6

(2.7)

1i i i ψψψ+=+? (2.8)

Ψ2

ΔΨ2

ΔΨi u 1

A B Ψ1

图2.7 Δt 与ΔΨ间的关系

2.1.4 电压空间矢量的线性组合

可以设想,如果我们能够使磁链的增量如图2.8中的ΔΨ11、ΔΨ12ΔΨ13ΔΨ14那样变化,我们就可以得到一个轨迹逼近圆形的磁链,磁链增量越密集,磁链轨迹就越接近圆形。为了能合成这样的多个磁链增量,我们可以采取使用开关电压矢量的线性组合来完成,如图2.9,采用u 1矢量和u 2矢量的线性组合则能合成新的矢量Tu ,也就相当于采用两个磁链增量在空间中矢量合成一个新的磁链增量,当每个扇区都采取相邻的两个开关电压矢量合成新的磁链,我们可以得到一个逼近圆形的磁链,也就达到了我们电机旋转的要求[2]。

Ψ2

u 1ΔΨ11

ΔΨΔΨΔΨ14

Ψ1

O

ΔΨ1

Ψ3

Ψ4

Ψ5

Ψ

6

Ψ1

Ψ2u 5

u 6

u u 2

u 3

4

ΔΨ2ΔΨ1

O Δt 1u 1

Δt 2u 2Tu

图2.8 逼近圆形磁链增量轨迹

图2.9 合成矢量

而为了实现这一目的,如图2.10我们引入了一个旋转的人为合成的旋转矢量u ref ,作为我们的参考的电压矢量,我们将采用开关电压矢量矢量合成这个参考矢量,例如使用开关电压矢量u 1,u 2合成参考矢量[5][10]。公式如下:

1212ref t t

Tu u u T T

=

+ (2.9)

u 11t u T

2

2t u T

u 2

Tu ref

图2.10 电压矢量线性组合

同样其他不同的参考矢量位置我们采取离参考矢量最近的开关电压矢量来进行线性合成。如图2.11把整个空间坐标分成六个扇区,每个扇区都使用相邻的开关矢量合成参考矢量[2]。

100

010

011001

101

Ⅱu 1u 4

u 5

u 6

u 7

u 82

110

000111

图2.11 扇区分布图

2.2 空间矢量控制算法 2.2.1恒压频比

在异步电机的VVVF 系统当中,进行电机调速时为了保持电机每极磁通量为

额定值不变可以由以下公式得

1m 4.44g s Ns E f N k φ=

(2.10)

式中g E 为隙磁通在定子每相中感应电动势的有效值(V);

1f 为定子频率(Hz); s N 定子每相绕组串联匝数; Ns k 定子基波绕组系数;

m φ每极气隙磁通量(Wb)。 在基频以下调速需要满足

1

g E f =常数

(2.11)

当电动势较高时,可以忽略定子绕组的漏磁阻,而认定相电压U s ≈E g ,可得下式:

1

s

U f =常数

(2.12)

在低频时不能忽略漏磁阻抗,则将U s 抬高,在基频以上调速则U s 恒定不变

[2]。如下图

f 1

U s f 1N U sN

图2.12 频率与电压关系图

2.2.2 Clark 变换

三相静止坐标系变换到两相静止坐标系在满足总功率不变的条件[2][9]其公式

如下

A 111--222=333

B

C U

U U U U αβ???????

????????????

(2.13)

2.2.3 开关矢量持续时间计算

开关矢量持续时间我们按照公式2.14进行矢量的合成

1122ref Tu t u t u =+

(2.14)

α

β

u ref

11t u T

22t u T

θ

图2.13 参考矢量投影到两相直角坐标

如果直接使用正弦定理来进行几何运算其运算量会较大,而我们这里使用将参考矢量投影到互为90°的两相坐标轴上运算[11],我们可以得到以下式子:

1212cos cos 3ref t t

U u u u T T

απθ==+ (2.15)

2

2

sin sin

3ref t U u u T

βπθ==

(2.16)

其他扇区使用同样的方法求解可得所求解出来的时间都只与三个量有关如下,所以我们采取三个中间变量X 、Y 、Z 来存放这三个量。

3s dc

U T X U β=

(2.17)

332s

U U T Y Udc

αβ=

(2.18)

332s

dc

U U T Z U αβ=

(2.19)

通过整理可得每个扇区的每个矢量的导通持续时间如下表

表2.1 各扇区开关状态时间说明表 扇区号 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ T 1 Z Y X Z -Y -X T 2

X

Z

Z

-X

-Z

Y

2.2.4 扇区判断

参考矢量所在扇区位置判断有好几种,其中,比较常用的方法是先对每个扇

区进行编号,然后用Clark 变换后的U α和U β通过计算可以算出当前参考矢量所在扇区对应的编号[7]。由于FPGA 作运算需要耗费的硬件资源比较多,所以为了减少运算我们这里采取直接对参考矢量旋转一周的时间进行分块的方法来判断参考矢量的位置。如图2.11我们可以看到6个扇区在空间坐标轴中将坐标轴分成了6块Ⅰ—Ⅱ—Ⅲ—Ⅳ—Ⅴ—Ⅵ,每块所占的角度为60°,而参考电压矢量在坐标轴中按逆时针匀速旋转时,按顺序经过这6个扇区,那么我们这里将其一个周期分成了6段时间,每个时间段都对应一个扇区。 2.2.5 合成参考矢量

为了使矢量对称,这里主要采取七段式的开关模式进行矢量合成方式,每个

扇区的开关组合方式[6]见表

表2.2 开关顺序表

开关模式

Ⅰ000 100 110 111 110 100 000 Ⅱ000 010 110 111 110 010 000 Ⅲ000 010 011 111 011 010 000 Ⅳ000 001 011 111 011 001 000 Ⅴ000 001 101 111 101 001 000 Ⅵ000 100 101 111 101 100 000 3 基于FPGA的SVPWM算法的软件设计

本章主要介绍了使用Altera公司的软件Quartus II 11.0来对上章所讲述的算法进行编程实现,主要采用了Verilog HDL编程语言和图形编辑的方式来进行软件编程,并使用Altera Modelsim 软件对其编程结果进行仿真验证。文中简单介绍一些编程技巧,例如使用Mealy型状态机的程序结构以增加程序的可读性和使用移位代替乘除法运算减少硬件资源的使用。而SVPWM算法的实现当中最主要分成如图3.1运算模块、PWM发生模块、死区模块三大模块顺序处理以完成各种所需要的功能,其中运算模块在整个软件设计当中占核心地位。

恒压频比Clark变换

三相电压矢

量合成

PWM生成

死区生成

求解导通时

扇区判别频率

PWM控制信号

图3.1 软件结构图

3.1 运算模块

3.1.1 三相参考电压峰值计算模块

图3.2 恒压频比模块

其中主要的运算程序如下:

if(F>50) Um=310;//超过基频50HZ输出峰值310

else if(F<10) Um=62; //低于频率10HZ输出峰值62

else Um=(F<<2)+(F<<1)+(F>>2);//10至50HZ输出Um=4.4F*21/2

当输入频率大于基频50HZ的时候我们就输出电压的峰值Um为310,当频率低于10HZ时,电压峰值Um为62,如果输入10至50HZ则按公式 4.42

=?

Um f

运算,程序当中主要采取了移位逼近的方式来完成。

仿真图如下:

图3.3 10HZ以下电压峰值图

图3.4 50HZ以上电压峰值图如图所示输入频率满足 4.42

Um f

=?的公式运算结果,10HZ及以下恒定电压值恒定,50HZ以上电压值恒定。

3.1.2 三相电压矢量发生模块

图3.5 三相电压矢量发生模块这一模块的功能块主要由三个模块组成,ROM_CTR、COS_ROM、Serial_Paralell三个模块组成,三相电压矢量发生模块输入电压频率F和时钟信号CLK,ROM_CTR模块将输入的频率通过运算转化为计数时钟脉冲的次数进行计数,以此达到改变参考三相电压矢量的旋转角度的周期变化,并且输出端口

相关主题