⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svpwm.m

📁 电压空间矢量调制的M语言实现
💻 M
字号:
%SVPWM
%author:gengtao
%date:2008.8.8
%version:1.0
function CMPR=svpwm(ualfa,ubeta)
global ts udc_ref;
%在IF语句中出现的变量必须赋初值
persistent T1on T2on T3on t1 t2 sectorNO;
if isempty(T1on)|isempty(T2on)|isempty(T3on)|isempty(t1)|isempty(t2)|isempty(sectorNO)
    T1on=0;
    T2on=0;
    T3on=0;
    t1=0;
    t2=0;
    sectorNO=0;
end

%#################################
%sectorNO 3(0 30')->1->5->4->6->2->3
%#################################
if ubeta>0
   a=1;
else a=0;
end
if sqrt(3)*ualfa-ubeta>0
   b=1;
else b=0;
end
if -sqrt(3)*ualfa-ubeta>0
    c=1;
else c=0;
end
sectorNO=a+2*b+4*c;
%#################################
%
%#################################
x=sqrt(3)*ubeta*ts/udc_ref;
y=(1.5*ualfa+sqrt(3)/2*ubeta)*ts/udc_ref;
z=(-1.5*ualfa+sqrt(3)/2*ubeta)*ts/udc_ref;
%#################################
%voltage vector on time 
%#################################
switch sectorNO
    case 3
        t1=-z;
        t2=x;
    case 1
        t1=z;
        t2=y;
    case 5
        t1=x;
        t2=-y;
    case 4
        t1=-x;
        t2=z;
    case 6
        t1=-y;
        t2=-z;
    case 2
        t1=y;
        t2=-x;
end
%#################################
%pwm timer value
%#################################
%饱和判断
if ts-t1-t2<0
    t1=ts*t1/(t1+t2);
    t2=ts-t1;
end  
ta=(ts-t1-t2)/4;
tb=ta+t1/2;
tc=tb+t2/2;
switch sectorNO
    case 3
        T1on=ta;
        T2on=tb;
        T3on=tc;
    case 1
        T1on=tb;
        T2on=ta;
        T3on=tc;
    case 5
        T1on=tc;
        T2on=ta;
        T3on=tb;
    case 4
        T1on=tc;
        T2on=tb;
        T3on=ta;
    case 6
        T1on=tb;
        T2on=tc;
        T3on=ta;
    case 2
        T1on=ta;
        T2on=tc;
        T3on=tb;
end
CMPR=[T1on T2on T3on];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -