yongbang 发表于 2010-4-6 10:14

求永磁无刷直流电机(BLDCM)仿真中,反电势部分和参考电流模块S函数的编写!

如题!
我只知道基于S函数的永磁无刷直流电机本体模块仿真中,实现反电势的S函数的主要程序如下:
function=mdlOutputs(t,x,u,k)
sq3=1.732050808;
pos=u(1);
w=u(2);
sq=0.866025;
per=fix(pos/2/pi)*360;
if(sin(pos)<sq3/2)&(cos(pos)>0.5)&(sin(pos)>=0),
    fa=1;fb=-1;fc=((per-pos*180/pi)/30+1);end;
if(sin(pos)>sq3/2)&(abs(cos(pos))<0.5),
    fa=1;fb=((pos*180/pi-60-per)/30-1);fc=-1;end;
if(sin(pos)<sq3/2)&(cos(pos)<-0.5)&(sin(pos)>=0),
    fa=((per+120-pos*180/pi)/30+1);fb=1;fc=-1;end;
if(sin(pos)>-sq3/2)&(cos(pos)<-0.5)&(sin(pos)<0),
    fa=-1;fb=1;fc=((pos*180/pi-180-per)/30-1);end;
if(sin(pos)<-sq3/2)&(abs(cos(pos))<=0.5),
    fa=-1,fb=((per+240-pos*180/pi)/30+1);fc=1;end;
if(sin(pos)>-sq3/2)&(cos(pos)>0.5)&(sin(pos)<0),
    fa=((pos*180/pi-300-per)/30-1);fb=-1;fc=1;end;
ean=k*w*fa;
ebn=k*w*fb;
ecn=k*w*fc;
sys=;
elseif flag==0,
    x0=[];
    sys=;
但由于不熟悉S函数格式,不知道完整的程序应当怎么写。
同样,参考电流模块的S函数M文件主要程序如下:
function sys=mdloutput(t,x,u,k)
sq3=1.732050808;
pos=u(1);
sq=0.866025;
per=fix(pos/2/pi)*360;
if(sin(pos)<sq3/2)&(cos(pos)>0.5)&(sin(pos)>=0),
    iar=ir;ibr=-ir;icr=0;end;
if(sin(pos)>sq3/2)&(abs(cos(pos))<0.5),
    iar=ir;ibr=0;icr=-ir;end;
if(sin(pos)<sq3/2)&(cos(pos)<-0.5)&(sin(pos)>=0),
    iar=0;ibr=ir;icr=-ir;end;
if(sin(pos)>-sq3/2)&(cos(pos)<-0.5)&(sin(pos)<0),
    iar=-ir;ibr=ir;icr=0;end;
if(sin(pos)<-sq3/2)&(abs(cos(pos))<=0.5),
    iar=-ir;ibr=0;icr=ir;end;
if(sin(pos)>-sq3/2)&(cos(pos)>0.5)&(sin(pos)<0),
    iar=0;ibr=-ir;icr=ir;end;
sys=;
同样只有程序的主要部分,不知道怎样写完整,请各位高手帮帮忙完善一下!
还有就是s-function parameters该怎么设?

yufeng 发表于 2010-4-6 13:37

if 都有end了 怎么后面又出来一个elseif你写程序直接在模版里面写 不用flag

yongbang 发表于 2010-4-7 21:12

回复 沙发 yufeng 的帖子

谢谢。。。。。
页: [1]
查看完整版本: 求永磁无刷直流电机(BLDCM)仿真中,反电势部分和参考电流模块S函数的编写!