声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1324|回复: 4

[综合讨论] S 函数 这个程序运行时 说Va未定义?

[复制链接]
发表于 2008-3-20 15:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function output=district0(in)  
%
ua=in(1);ub=in(2);uc=in(3);ts=in(4);vcd=in(5);t=in(6);
%输入参考电压ua,ub,uc,%采样时间ts,直流侧电压vcd,导通时间参量t
ur=3*(ua+ub*exp(j*2*pi/3)+uc*exp(j*4*pi/3))/vcd; %转换为电压空间矢量
theta0=angle(ur);  %电压空间矢量的相角
%扇区及其角度
if theta0<0       %0<=theta0<2pi
    theta0=theta0+2*pi;
end
si=fix(theta0*3/pi)+1;  %求取参考矢量在三电平矢量图中的扇区
theta=rem(theta0,pi/3); %转换到第一扇区后0<=theta<pi/3
%区域判断及对应两电平参考电压
ual=abs(ur)*cos(theta)  ;%空间矢量在alpha和beta轴上的投影
ube=abs(ur)*sin(theta);
h=sqrt(3)/2;             %定义一个常量h
k1=fix(ual+ube*sqrt(3));
k2=fix(ube/h);
uali=ual-k1+0.5*k2;
ubei=ube-k2*h;
if (ubei/uali)<sqrt(3)
    ual0=uali;        %参考矢量转换为两电平时在alpha轴上的投影
    ube0=ubei;        %参考矢量转换为两电平时在beta轴上的投影
    di=k1^2+2*k2;     %参考空间矢量在三电平矢量图中的小区域
else
    ual0=0.5-uali;
    ube0=h-ubei;
    di=k1^2+2*k2+1;
end
%三电平的空间矢量
v00=[0 0 0];v01=[1 1 1];v02=[-1 -1 -1];
v1n=[0 -1 -1];v1p=[1 0 0];
v2n=[0 -1 0];v2p=[1 0 1];
v3n=[-1 -1 0];v3p=[0 0 1];
v4n=[-1 0 0];v4p=[0 1 1];
v5n=[-1 0 -1];v5p=[0 1 0];
v6n=[0 0 -1];v6p=[1 1 0];
v7=[1 -1 -1];
v8=[1 -1 0];
v9=[1 -1 1];
v10=[0 -1 1];
v11=[-1 -1 1];
v12=[-1 0 1];
v13=[-1 1 1];
v14=[-1 1 0];
v15=[-1 1 -1];
v16=[0 1 -1];
v17=[1 1 -1];
v18=[1 0 -1];
%把三电平的各个扇区转换到第一扇区
switch si
    case 1
        v20=v00;
        v21n=v1n;v21p=v1p;v22n=v2n;v22p=v2p;
        v23=v7;v24=v8;v25=v9;
    case 2
        v20=v00;
        v21n=v2n;v21p=v2p;v22n=v3n;v22p=v3p;
        v23=v9;v24=v10;v25=v11;
    case 3
        v20=v00;
        v21n=v3n;v21p=v3p;v22n=v4n;v22p=v4p;
        v23=v11;v24=v12;v25=v13;
    case 4
        v20=v00;
        v21n=v4n;v21p=v4p;v22n=v5n;v22p=v5p;
        v23=v13;v24=v14;v25=v15;
    case 5
        v20=v00;
        v21n=v5n;v21p=v5p;v22n=v6n;v22p=v6p;
        v23=v15;v24=v16;v25=v17;
    case 6
        v20=v00;
        v21n=v6n;v21p=v6p;v22n=v1n;v22p=v1p;
        v23=v17;v24=v18;v25=v7;
end
%三电平变换为两电平
switch di
    case 0
        v0=v20;va=v21n;vb=v22p;
    case 1
        v0=v21n;va=v23;vb=v24;
    case 2
        v0=v24;va=v22n;vb=v21p;
    case 3
        v0=v22p;va=v24;vb=v25;
end
%两电平三个矢量的导通时间导通时间
ta=ts*(ual0-ube0/(2*h));
tb=ts*ube0/h;
t0=ts-ta-tb;
%任意时段输出的电压空间矢量为v
if 0<=t<t0
    v=v0;
    output=pulse(v);
elseif t0<=t<t0+ta
    v=va;
    output=pulse(v);
else
    v=vb;
    output=pulse(v);
end

%三电平脉冲
function p=pulse(in)
v=in;
a=v(1);
b=v(2);
c=v(3);
switch a
    case -1
        pa=[0 0 1 1];
    case 0
        pa=[0 1 1 0];
    case 1
        pa=[1 1 0 0];
end
switch b
    case -1
        pb=[0 0 1 1];
    case 0
        pb=[0 1 1 0];
    case 1
        pb=[1 1 0 0];
end
switch c
    case -1
        pc=[0 0 1 1];
    case 0
        pc=[0 1 1 0];
    case 1
        pc=[1 1 0 0];
end
p=[pa pb pc];
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-3-20 15:10 | 显示全部楼层
大家可以帮我检查上面那个程序的错误吗?
发表于 2008-4-5 20:16 | 显示全部楼层

s函数是这样的吗

s函数不是有固定模板吗?你这个不是按照模板来的,可以这样写s函数吗
发表于 2008-4-6 10:43 | 显示全部楼层
s函数应该用固定模板套改才行,自己写的应该不可以吧
 楼主| 发表于 2008-4-7 00:13 | 显示全部楼层
S 函数固定的模板是怎样
哪个大虾 可以发个上来
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 10:45 , Processed in 0.052440 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表