網絡上已有不少相關內容的具體講解,本文為SVPWM調制策略的要點講解,重點在于SIMULINK仿真。
1.前言
SVPWM(Space Vector Pulse Width Modulation,空間矢量脈寬調制)是近年發展的一種比較新穎的電機控制方法,是 由三相功率逆變器的六個功率開關元件組成的特定開關模式以產生的脈寬調制波 ,能夠使輸出電流波形盡可能接近于理想的正弦波形。SVPWM與傳統的正弦PWM不同,它是從三相輸出電壓的整體效果出發,著眼于如何使電機獲得理想圓形磁鏈軌跡。
為什么要使用SVPWM策略?為電機控制所需,SVPWM可以依據電機磁鏈和電壓的關系,從而實現對電動機恒磁通變壓變頻調速,并且SVPWM比SPWM的直流母線的電壓利用率高15%,更易于實現數字化。
2.SVPWM的輸入輸出分別是什么?
輸入:
1.旋轉坐標系dq軸電壓、自然坐標系下的ABC三相電壓等等載波信號
2.供電
輸出:
三相PWM信號
2.1輸入從何而來
控制器輸出的控制電壓、參考電壓等帶有所需信息的電壓信號
2.2輸出用去做什么
作為永磁同步電機等被控對象的輸入:輸出的三相PWM信號可分別加在空間上互差120°的三相靜止坐標系上,可等效為幅度、頻率、相位的三相交流電,輸入信號含有的信息在這個三相交流電的幅度、頻率、相位中體現。由此可作為PMSM等被控對象的輸入,因為PMSM的轉速取決于該三相電壓的頻率。
3.理論基礎和結構組成
平均值等效原理:在一個開關周期內通過對基本電壓矢量加以組合,使其平均值與給定電壓矢量相等。通過改變計算機(數字控制器)輸出PWM波的占空比等效所需要的三相電壓。
3.1電路:三相逆變器
三相逆變器的電路圖和工作流程圖解如圖所示,
逆變器的開關電路有如下八種開合狀態
八種開合狀態的相電壓和線電壓的對應關系為:
3.2開關邏輯:如何為三相電路的開關賦值?
八個基本電壓空間矢量的大小和位置:其中非零矢量的幅值(相電壓幅值)相同(模長為),相鄰的矢量間隔為60°,而兩個零矢量幅值為零,位于中心。在每一個扇區,選擇相鄰的兩個電壓矢量以及零矢量,按照伏秒平衡的原則來合成每個扇區內的任意電壓矢量。滿足如下數學表達式:
其中,為期望電壓矢量; 為采樣周期; 分別為對應兩個非零電壓矢量和零電壓矢量在一個采樣周期內的作用時間;其中包括了 和 兩個零矢量。上式的意義是,矢量在 時間內所產生的積分效果值和分別在時間內產生的積分效果相加總和值相同。
至此,問題轉換為如何選取8種開關以及其對應的持續時間.
通過空間矢量的計算可以得出各開關狀態持續時間(以第一扇區為例):
以減少開關次數為目標,將基本矢量作用順序的分配原則選定為:在每次開關狀態轉換時,只改變其中一相的開關狀態。并且對零矢量在時間上進行了平均分配,以使產生的PWM 對稱,從而有效地降低PWM的諧波分量。開關順序的選取有七段式序列。詳細圖解可參考:https://zhuanlan.zhihu.com/p/115067276
下面動態展示工作流程(圖中是以三角波為例,正弦波與之類似)
本圖來源于:Space Vector PWM Intro—Switchcraft
4.Simulink仿真和程序講解
總體仿真模型(代碼來源見圖中備注)
4.1三相逆變電路部分由總體模型所示
4.2開關邏輯的實現如下圖所示
本代碼輸入為旋轉坐標系下的軸電壓,首先對扇區的選取進行判斷(圖中Selec.Setor)
通過將軸電壓轉換為坐標系下,對矢量分解至各坐標軸,并結合角度進行判斷。
function [Mag,ang,Sec] = fcn(u)
complexo=u(2)+ i* u(3);
Mag=abs(complexo);
ang=atan2(imag(complexo),real(complexo));
alpha=ang*180/pi;
Sec = (alpha>0 & alpha<=60)*1+ (alpha>60 & alpha<=120)*2 + (alpha>120 & alpha<=180)*3 ...
+(alpha>-180 & alpha<-120)*4+ (alpha>-120 & alpha<=-60)*5 + (alpha>-60 & alpha<=0)*6;
接下來進行開關量的實時選取,采用七段式的選取方法
function pwm = fcn(Fs,Mag,ang,Sec,Vdc,clk)
% Time synchronization with the simulink clock.
t=clk;
% Vdc at workspace
% General expression for the calculation of T1, T2 and T0.
T1=(sqrt(3)*(Mag/Vdc))*sin(Sec*pi/3 -ang)/Fs;
T2=(sqrt(3)*(Mag/Vdc))*sin(ang - ((Sec-1)*pi/3))/Fs;
T0= (1/Fs -T1- T2)/2;
% Change of sectors
sec_ant=mod(floor(Sec),2);
if(sec_ant~=1) % detection sector exchange
T1=(sqrt(3)*(Mag/Vdc))*sin(ang - ((Sec-1)*pi/3))/Fs;
T2=(sqrt(3)*(Mag/Vdc))*sin(Sec*pi/3 -ang)/Fs;
end
% Sawtooth
ref= 1/Fs * rem(t,1/Fs)/(1/Fs);
% Time intervals
int1=T0/4;
int2=int1+T1/2;
int3=int2+T2/2;
int4=int3+T0/2;
int5=int4+T2/2;
int6=int5+T1/2;
timet=1+(ref>=int1)+(ref>=int2)+(ref>=int3)+(ref>=int4)+(ref>=int5)+(ref>=int6);
sw_array=zeros(3,7,6); %Initialize table of key states -> 3 rows (arms), 7 columns (times) and 6 vectors (sectors).
% ------Arm A -------- -------Arm B -------- -------Arm C --------
sw_array(:,:,1)=[0 1 1 1 1 1 0;0 0 1 1 1 0 0; 0 0 0 1 0 0 0]; %setor 1
sw_array(:,:,2)=[0 0 1 1 1 0 0;0 1 1 1 1 1 0; 0 0 0 1 0 0 0]; %setor 2
sw_array(:,:,3)=[0 0 0 1 0 0 0;0 1 1 1 1 1 0; 0 0 1 1 1 0 0]; %setor 3
sw_array(:,:,4)=[0 0 0 1 0 0 0;0 0 1 1 1 0 0; 0 1 1 1 1 1 0]; %setor 4
sw_array(:,:,5)=[0 0 1 1 1 0 0;0 0 0 1 0 0 0; 0 1 1 1 1 1 0]; %setor 5
sw_array(:,:,6)=[0 1 1 1 1 1 0;0 0 0 1 0 0 0; 0 0 1 1 1 0 0]; %setor 6
if t<1e-6
Sec=1;
end;
S1=sw_array(1,timet,Sec);
S2= ~S1;
S3=sw_array(2,timet,Sec);
S4= ~S3;
S5=sw_array(3,timet,Sec);
S6= ~S5;
% SVPWM
pwm= [S1 S2 S3 S4 S5 S6];
end
開關量輸出至IGBT處,然后三相逆變電路產生PWM波
-
電流
+關注
關注
40文章
7116瀏覽量
134179 -
逆變器
+關注
關注
293文章
4857瀏覽量
210064 -
脈寬調制
+關注
關注
3文章
232瀏覽量
38761 -
SVPWM
+關注
關注
14文章
615瀏覽量
91379
發布評論請先 登錄
采用FPGA來實現SVPWM調制算法
為什么要使用SVPWM策略?SVPWM調制策略要點講解

評論