【永磁同步电机(PMSM)】 6. 矢量空间算法(SVPWM)

【永磁同步电机(PMSM)】 6. 矢量空间算法(SVPWM)

    • [1. SVPWM 的基本原理](#1. SVPWM 的基本原理)
      • [1.1 SVPWM 的优点](#1.1 SVPWM 的优点)
      • [1.2 SVPWM 的电路拓扑](#1.2 SVPWM 的电路拓扑)
      • [1.3 连续旋转的空间矢量](#1.3 连续旋转的空间矢量)
    • [2. SVPWM 的算法实现](#2. SVPWM 的算法实现)
      • [2.1 电压矢量组合方案](#2.1 电压矢量组合方案)
      • [2.2 SVPWM 的实现步骤](#2.2 SVPWM 的实现步骤)
    • [3. 基于 Simulink 的 SVPWM 仿真模型](#3. 基于 Simulink 的 SVPWM 仿真模型)
      • [3.1 SVPWM 的仿真模型](#3.1 SVPWM 的仿真模型)
      • [3.2 SVPWM 的仿真结果](#3.2 SVPWM 的仿真结果)
    • [4. 基于 s 函数的 SVPWM 仿真模型。](#4. 基于 s 函数的 SVPWM 仿真模型。)

本节讨论矢量空间脉宽调制(Space Vector Pulse Width Modulation, SVPWM)的原理和实现步骤,在Matlab/Simulink 环境下,搭建 SVPWM 仿真模型。

  • 磁场定向控制(FOC)又称矢量控制,是常用的 PMSM控制方法,能够实现对转矩和磁场的独立控制。空间矢量脉宽调制(SVPWM)用来生成逆变器驱动电机的 PWM 信号。

  • 空间矢量调制 (SVPWM) 是 PMSM 磁场定向控制的常用方法,用于生成脉宽调制信号以控制逆变器的开关,由此产生所需的调制电压,以所需的速度或转矩驱动电机。

1. SVPWM 的基本原理

空间矢量调制 (SVPWM) 是负责生成脉宽调制信号以控制逆变器的开关,由此产生所需的调制电压,以所需的速度或转矩驱动电机。

1.1 SVPWM 的优点

SPWM 控制的目标是使输出电流尽量接近正弦波,三相交流负载进而还要求保持三相电流的平衡和相位差,按照圆形旋转磁场进行控制可以实现更好的性能。

SVPWM 基于空间矢量坐标变换理论,通过逆变器不同开关状态的变化,来控制空间矢量轨迹逼近理想磁链,获得准圆形旋转磁场,对 PMSM 电机的控制性能比 SPWM 更高。

SVPWM 的优点是:

  • 动态性能好,输出电压和电流谐波小,可以减小电机的转矩脉动、改善电机的运行性能;
  • 电压利用效率高,输出电压最大幅值为 U d / 3 U_d/ \sqrt{3} Ud/3 ,线电压最大幅值为 U d U_d Ud,直流电压利用率可以达到100%;
  • 开关损耗小,在每次状态变化时只有一个开关切换,开关损耗小。

1.2 SVPWM 的电路拓扑

考虑三相逆变器电机控制的空间矢量调制方法。三相桥式PWM逆变器具有3组桥臂6个开关器件,上下桥臂的开关状态互补,可以产生8种开关组合。每种开关组合都会产生特定的电压,施加于电机端子。

连接到电机定子绕组的三相逆变器电路如下图所示。开关 S2、S4、S6 分别与 S1、S3、S5 互补。

交流测相电压 V A N V_{AN} VAN、 V B N V_{BN} VBN、 V C N V_{CN} VCN 与开关函数的关系为:

{ V A N = U d c ( 2 s a − s b − s c ) / 3 V B N = U d c ( 2 s b − s a − s c ) / 3 V C N = U d c ( 2 s c − s a − s b ) / 3 \begin{cases} \begin{aligned} V_{AN} &= U_{dc}(2s_a-s_b-s_c)/3\\ V_{BN} &= U_{dc}(2s_b-s_a-s_c)/3\\ V_{CN} &= U_{dc}(2s_c-s_a-s_b)/3 \end{aligned} \end{cases} ⎩ ⎨ ⎧VANVBNVCN=Udc(2sa−sb−sc)/3=Udc(2sb−sa−sc)/3=Udc(2sc−sa−sb)/3

电压是基本空间矢量,以空间矢量六边形表示其幅值和方向。8 种开关组合对应于 8 个基本的电压空间矢量V_0(0,0,0)、V_1(0,0,1)、V_2(0,1,0)、V_3(0,1,1)、V_4(1,0,0)、V_5(1,0,1)、V_6(1,1,0)和V_7(1,1,1)。

2个零矢量 V 0 V_0 V0、 V 7 V_7 V7 位于原点,幅值为零,称为零矢量。6个非零矢量 V 1 V 6 V_1~V_6 V1 V6 的幅值相同(相电压幅值都是 U_dc*2/3),空间位置依次相差60°,位于正六边形的6个顶点。

将 8 种开关状态函数代入上式,得到 8种开关组合与电压的关系如下表所示。

这8个电压空间矢量可以构成一个封闭的正六边形磁链矢量轨迹,但不能产生连续的电压空间矢量运行轨迹,带有较大的谐波分量,将导致转矩脉动。

1.3 连续旋转的空间矢量

把一个工作周期划分为 6个扇区,通过分配 8个矢量的工作时间,可以合成产生正 6N 边形旋转磁场所需的期望电压空间矢量,可以逼近圆形的旋转磁场。

在每一个扇区,选择相邻的两个电压矢量以及零矢量,按照伏秒平衡的原则来合成每个扇区内的任意电压矢量:

∫ 0 T U r e f d t = ∫ 0 T x U x d t + ∫ T x T y U y d t + ∫ T y T U 0 ∗ d t \int_0^T U_{ref} dt = \int_0^{T_x} U_x dt + \int_{T_x}^{T_y} U_y dt + \int_{T_y}^T U_0^* dt ∫0TUrefdt=∫0TxUxdt+∫TxTyUydt+∫TyTU0∗dt

U r e f T = U x T x + U y T y + U 0 T 0 U_{ref} T = U_x T_x + U_y T_y + U_0 T_0 UrefT=UxTx+UyTy+U0T0

式中,Uref 为期望电压矢量,T为采样周期,Tx、Ty、T0分别为对应两个非零电压矢量 Ux、Uy 和零电压矢量 U0 在一个采样周期内的作用时间。其中U0包括了U0和U7两个零矢量。

上式的意义是,矢量 Uref 在 T 时间内所产生的积分值,与 Ux、Uy、U0 分别在时间 Tx、Ty、T0 内产生的积分值之和 相同。

由于三相正弦波电压在电压空间向量中合成一个等效的旋转电压,其旋转速度是输入电源角频率,等效旋转电压的轨迹将是如图2-9 所示的圆形。要产生三相正弦波电压,可以利用以上电压向量合成方法,在电压空间向量上,将设定的电压向量由 U4(100) 位置开始,每一次增加一个小增量,每一个小增量设定电压向量可以用该区中相邻的两个基本非零向量与零电压向量予以合成,如此所得到的设定电压向量就等效于一个在电压空间向量平面上平滑旋转的电压空间向量,从而达到电压空间向量脉宽调制的目的。

通过对开关区间内的基本空间矢量(方向)和零矢量(幅值)作用时间进行调节,可以近似得到空间矢量六边形内任意位置、任意幅值的电压矢量。例如图中,一个脉宽调制 (PWM) 周期内,选择两个相邻空间矢量(图中的 U3 和 U4)分别作用一段时间、在周期其余时间内由零矢量(U7 或 U8)作用,从而得到近似平均参考矢量 Uref。

通过控制开关序列,即控制脉冲的导通持续时间,就可以在每个 PWM 周期获得具有变化幅值和方向的任何电压矢量。空间矢量调制方法的目标是在每个 PWM 周期生成与参考电压矢量相符的开关序列,以实现连续旋转的空间矢量。

2. SVPWM 的算法实现

2.1 电压矢量组合方案

通过对开关区间内的基本空间矢量(方向)和零矢量(幅值)作用时间进行调节,可以近似得到空间矢量六边形内任意位置、任意幅值的电压矢量。

用零矢量 V 0 V_0 V0 和最近的两个相邻的非零矢量 V k V_k Vk、 V k + 1 V_{k+1} Vk+1 合成参考矢量,零矢量的作用时间 T 0 T_0 T0 和非零矢量 V k V_k Vk、 V k + 1 V_{k+1} Vk+1 的作用时间 T k T_k Tk、 T k + 1 T_{k+1} Tk+1 分别为:

{ T 0 = ( T k + T k + 1 ) T s / 2 [ T k T k + 1 ] = 3 2 T s U d [ s i n ( k π / 3 ) − c o s ( k π / 3 ) − s i n ( ( k − 1 ) π / 3 ) c o s ( ( k − 1 ) π / 3 ) ] [ u r α u r β ] \begin{cases} \begin{aligned} T_0 &= (T_k + T_{k+1}) T_s/2\\ \begin{bmatrix} T_k \\ T_{k+1} \end{bmatrix} &= \frac{\sqrt{3}}{2} \frac{T_s}{U_d} \begin{bmatrix} sin(k\pi/3)& -cos(k\pi/3)\\ -sin((k-1)\pi/3)&cos((k-1)\pi/3)\\ \end{bmatrix} \begin{bmatrix}u_{r\alpha}\\u_{r\beta}\end{bmatrix} \end{aligned} \end{cases} ⎩ ⎨ ⎧T0[TkTk+1]=(Tk+Tk+1)Ts/2=23 UdTs[sin(kπ/3)−sin((k−1)π/3)−cos(kπ/3)cos((k−1)π/3)][urαurβ]

电压矢量的组合方式很多,最常用的是如下表所示的7段式组合方案。

表2-2:SVPWM输出电压矢量的7段式组合方案

2.2 SVPWM 的实现步骤

SVPWM 基于参考电压矢量进行操作,在每个 PWM 周期为逆变器生成适当的导通信号,目标是实现连续旋转的空间矢量。

SVPWM 主要包括如下步骤:

(1)判断参考空间电压矢量所在的扇区;

(2)根据 7 段式组合的信号时序,计算各矢量的作用时间;

(3)确定扇区矢量切换的时间点。

(4)使用三角载波型号与各个扇区矢量切换点进行比较,产生所需的 PWM 开关信号。

(1)判断扇区

要对参考电压 U r e f U_ref Uref 进行控制,首先要确定参考电压所处的扇区。

设 U r e f U_ref Uref 在α-β直角坐标系中的分量分别为 u α u_α uα、 u β u_β uβ,定义变量 U r e f 1 U_{ref1} Uref1、 U r e f 2 U_{ref2} Uref2、 U r e f 3 U_{ref3} Uref3:

{ U r e f 1 = u β U r e f 2 = 3 2 u α − 1 2 u β U r e f 3 = − 3 2 u α − 1 2 u β \begin{cases} \begin{aligned} U_{ref1} &= u_{\beta}\\ U_{ref2} &= \frac{\sqrt{3}}{2} u_{\alpha} - \frac{1}{2} u_{\beta}\\ U_{ref3} &= -\frac{\sqrt{3}}{2} u_{\alpha} - \frac{1}{2} u_{\beta} \end{aligned} \end{cases} ⎩ ⎨ ⎧Uref1Uref2Uref3=uβ=23 uα−21uβ=−23 uα−21uβ

然后判断:

(1) 若U1>0 则 A=1,否则A=0;

(2) 若U2>0 则 B=1,否则B=0;

(3) 若U3>0 则 C=1,否则C=0。

令 N = 4 C + 2 B + A N=4C + 2B + A N=4C+2B+A,则可以得到 N 与扇区的关系,得到参考电压 U r e f U_ref Uref 所在的扇区为:

N 3 1 5 4 6 2
扇区 I II III IV V VI

(2)计算矢量作用时间

(3)计算矢量切换时间点

当 U r e f U_{ref} Uref 所在扇区和对应有效电压矢量的作用时间确定后,再根据 PWM 调制原理,计算每一相对应比较器的值:

{ t a o n = ( T s − T x − T y ) / 4 t b o n = t a o n + T x / 2 t c o n = t b o n + T y / 2 \begin{cases} \begin{aligned} t_{aon} &= (T_s - T_x - T_y)/4\\ t_{bon} &= t_{aon} + T_x/2\\ t_{con} &= t_{bon} +T_y/2 \end{aligned} \end{cases} ⎩ ⎨ ⎧taontbontcon=(Ts−Tx−Ty)/4=taon+Tx/2=tbon+Ty/2

式中 t a o n t_{aon} taon、 t b o n t_{bon} tbon、 t c o n t_{con} tcon 分别是相应的比较器的值。

不同扇区比较器的值分配如下:

N 1 2 3 4 5 6
Ta t b o n t_{bon} tbon t a o n t_{aon} taon t a o n t_{aon} taon t c o n t_{con} tcon t c o n t_{con} tcon t b o n t_{bon} tbon
Tb t a o n t_{aon} taon t c o n t_{con} tcon t b o n t_{bon} tbon t b o n t_{bon} tbon t a o n t_{aon} taon t c o n t_{con} tcon
Tc t c o n t_{con} tcon t b o n t_{bon} tbon t c o n t_{con} tcon t a o n t_{aon} taon t b o n t_{bon} tbon t a o n t_{aon} taon

3.1 SVPWM 的仿真模型

基于以上分析,基于 Matlab/Simulink 建立 SVPWM 的仿真模型。

参数设置为:

(2)输入角速度为100π,幅值为200,相位互差90度的正弦波: A = 200 A = 200 A=200, f = 50 f=50 f=50, u α = A c o s ( 2 π f t ) u_{\alpha} = A cos(2\pi ft) uα=Acos(2πft), u β = A s i n ( 2 π f t ) u_{\beta} = A sin(2\pi ft) uβ=Asin(2πft)。

(2)PWM 开关频率 5kHz,即开关周期 T p w m = 0.0002 s T_{pwm}=0.0002s Tpwm=0.0002s。

(3) U d c = 700 V U_{dc} = 700V Udc=700V。

建立SVPWM 仿真模型如下:

各模块说明如下:

(1)判断扇区:根据输入的 u α u_{\alpha} uα 和 u β u_{\beta} uβ 判断电压矢量所在扇区。

switch 模块设置为:u2>=0(如果满足条件则 u1 通过,如果不满足条件则 u3 通过)。

(2)计算中间变量 X、Y、Z,用于计算扇区矢量作用时间

输入 u α u_{\alpha} uα 、 u β u_{\beta} uβ 、母线电压 U d c U_{dc} Udc、载波周期 T s T_s Ts,计算中间变量 X、Y、Z。

(3)根据 N 值和X、Y、Z,计算扇区中矢量的作用时间

输入X/Y/Z、N、载波周期 T s T_s Ts,计算扇区中矢量作用时间。

Mutiport Switch 模块根据输入的 N 值选择哪个端口通过。

(4)扇区矢量切换点的确定

计算 3个PWM通道输出电平的改变点。定时器配置为中央对齐模式。

在每个载波周期中改变输出通道的比较值,Tcm1、Tcm2、Tcm3分别就是3个通道的比较值。

(5)输出逆变桥的控制信号

用三角波模拟定时器中央对齐模式

(6)使用3个通道的PWM控制逆变桥,计算相电压 U a U_a Ua、 U b U_b Ub、 U c U_c Uc:

3.2 SVPWM 的仿真结果

运行 SVPWM 仿真模型,仿真结果如下图所示。

图1 是切换时间 T c m 1 T_cm1 Tcm1、 T c m 2 T_cm2 Tcm2、 T c m 3 T_cm3 Tcm3 的波形,波形为马鞍形,称为 马鞍波。生成的马鞍波能够最大程度地利用直流总线电压。将生成的导通信号应用于三相逆变器的开关,可以以所需的速度或转矩驱动电机。

图2 是相电压 U a U_a Ua、 U b U_b Ub、 U c U_c Uc 的波形。

4. 基于 s 函数的 SVPWM 仿真模型。

基于 Simulink,也可以使用 s 函数建立 SVPWM 仿真模型,更加简单高效。

matlab 复制代码
function [Tcmp1,Tcmp2,Tcmp3,sector] = fcn(Valpha,Vbeta,Udc,Tpwm)
%#codegen

sector = 0;
Tcmp1 = 0;
Tcmp2 = 0;
Tcmp3 = 0;

%========Parameters statement================

    Vref1 = Vbeta;							                   
    Vref2 = (sqrt(3)*Valpha - Vbeta)/2; 				    
    Vref3 = (-sqrt(3)*Valpha - Vbeta)/2;					
   
 %========Sector calculation=================

  if (Vref1>0)
	   sector = 1;
  end
  if (Vref2>0)
	   sector = sector+2;
  end
  if (Vref3>0)
       sector = sector+4;
  end

%======== X Y Z calculation===================

X = sqrt(3)*Vbeta*Tpwm/Udc;
Y = Tpwm/Udc*(3/2*Valpha+sqrt(3)/2*Vbeta);
Z = Tpwm/Udc*(-3/2*Valpha+sqrt(3)/2*Vbeta);	         

%==========Duty ratio calculation================
switch (sector)   
    case 1
        T1 = Z; T2 = Y; 
	case 2
        T1 = Y; T2 = -X; 
	case 3
        T1 = -Z; T2 = X; 
	case 4
        T1 = -X; T2 = Z;
	case 5
        T1 = X; T2 = -Y;
    otherwise
        T1 = -Y; T2 = -Z;
end

if T1+T2 > Tpwm
    T1 = T1/(T1+T2);
    T2 = T2/(T1+T2);
else
    T1 = T1;
    T2 = T2;
end
ta = (Tpwm-(T1+T2))/4.0;
tb = ta+T1/2;
tc = tb+T2/2;

%==========Duty ratio calculation================
switch (sector)
    case 1 
        Tcmp1=tb;
        Tcmp2=ta;
        Tcmp3=tc; 
        
    case 2 
        Tcmp1=ta;
        Tcmp2=tc;
        Tcmp3=tb; 
       
    case 3 
        Tcmp1=ta;
        Tcmp2=tb;
        Tcmp3=tc; 
        
    case 4 
        Tcmp1=tc;
        Tcmp2=tb;
        Tcmp3=ta;
        
    case 5 
        Tcmp1=tc;
        Tcmp2=ta;
        Tcmp3=tb;
        
   case 6
       Tcmp1=tb;
       Tcmp2=tc;
       Tcmp3=ta;
end
end

参考文献:袁雷等,现代永磁同步电机控制原理及MATLAB仿真,北京航空航天大学出版社,2016

相关推荐
chenziang119 分钟前
leetcode hot100
算法·leetcode·职场和发展
执着的小火车27 分钟前
02-18.python入门基础一基础算法
数据结构·python·算法·排序算法
梦茹^_^28 分钟前
排序算法(系列)
数据结构·python·算法·排序算法·希尔排序·基数排序·计数排序和桶排序
花开盛夏^.^34 分钟前
Timsort算法
数据结构·算法·排序算法
code monkey.36 分钟前
【排序算法】—— 计数排序
c++·算法·排序算法
云青山水林37 分钟前
2024.12.21 周六
c++·算法·贪心算法
chenziang142 分钟前
leetcode hot二叉树的层序遍历
数据结构·算法
pianmian11 小时前
完全平方数
数据结构·算法
A_Tai23333331 小时前
贪心算法解决用最少数量的箭引爆气球问题
算法·贪心算法
唐叔在学习1 小时前
【唐叔学算法】第19天:交换排序-冒泡排序与快速排序的深度解析及Java实现
java·算法·排序算法