直流电机与异步电机的基于matlabGUI机械特性分析

可能电气工程及其自动化电机方向的同学在matlab课设时会遇到这样的问题:基于电机去设计一个分析机械特性的GUI界面。有时候会感觉无从下手,就是这种电机从哪分析。下面我会分享我的成果,也是借鉴CSDN上大佬的经验,原创,希望能帮助到大家。

界面设计结果

 

 

 

 

代码

下面是回调函数的代码,同学们自己找对应关系,相信GUI有一定基础的的同学可以完成这个任务。里面的文本框按钮等需要同学自己命名找对应关系。顺序为直流,异步。

直流电机

%计算按钮
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
UN=get(handles.edit1,'String');
PN=get(handles.edit2,'String');
IN=get(handles.edit3,'String');
nN=get(handles.edit4,'String');
Ra=get(handles.edit5,'String');
CEN=(str2num(UN)-str2num(Ra)*str2num(IN))/str2num(nN);%电动势常数乘磁通
CTN=9.55*CEN;%转矩常数乘磁通
TN=(str2num(PN)*1000)/(2*pi*str2num(nN)/60)%输出转矩
Tn=num2str(TN);
set(handles.edit6,'String',Tn);
Tem=CTN*str2num(IN)%电磁转矩
Te=num2str(Tem);
set(handles.edit7,'String',Te);
T0=Tem-TN%空载制动转矩
To=num2str(T0);
set(handles.edit8,'String',To);

%绘图按钮
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.axes1);
cla
var=get(handles.popupmenu1,'value');
a=get(handles.edit1,'String');
b=get(handles.edit2,'String');
c=get(handles.edit3,'String');
d=get(handles.edit4,'String');
e=get(handles.edit5,'String');
UN=str2num(a);
PN=str2num(b);
IN=str2num(c);%已知参数
nN=str2num(d);
Ra=str2num(e);
IaN=IN;
CEN=(UN-Ra*IaN)/nN;%电动势常数乘磁通
CTN=9.55*CEN;%转矩常数乘磁通
Ia=0:IaN;
n=UN/CEN-Ra/(CEN)*Ia;
Te=CTN*Ia;
P1=UN*Ia;
T2_N=9550*PN/nN;
if var==1
    plot(Te,n,'rs');
    xlabel('电磁转矩 Te/N.m');
    ylabel('转速n/rpm');
    hold on;
    Rc=0;
for coef=1:-0.25:0.25
    U=UN*coef;
    n=U/CEN-(Ra+Rc)/(CEN*CTN)*Te;
    plot(Te,n,'k-');
    str=strcat('U=',num2str(U),'V');
    s_y=1650*coef;
    text(50,s_y,str);
end
else
    if var==2
   Rc=0;
   n=UN/CEN-(Ra+Rc)/(CEN*CTN)*Te;
   plot(Te,n,'rs');
   xlabel('电磁转矩Te/N.m');
   ylabel('转速n/rpm');
   hold on;
   U=UN;Rc=0.02;
for Rc=0:0.5:1.9
    n=U/CEN-(Ra+Rc)/(CEN*CTN)*Te;
    plot(Te,n,'k-');
    str=strcat('R=',num2str(Rc+Ra),'\Omega');
    s_y=400*(4-Rc*1.8);
    text(120,s_y,str);
end
else
    if var==3
   fail=0;
   Cefain = (UN-IN*Ra)/nN;
   Ctfain = 9.55*Cefain;
   Tn = Ctfain*IN;

for fail=0.6:0.1:1
    Cefai=Cefain*fail;
    Ctfai=9.55*Cefai;
    for i=1:800
        Tem(i)=6*Tn*i/800;
        n(i)=UN/Cefai-Ra/(Cefai*Ctfai)*Tem(i);
        TL(i)=2*Tn;
    end
    plot(Tem,n,'-',TL,n,'-')
    hold on;
end
    xlabel('电磁转矩Te/N.m');
    ylabel('转速n/rpm'); 
end
    end
end


% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
close

 异步电机

%计算按钮
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=get(handles.edit1,'String');
b=get(handles.edit2,'String');
c=get(handles.edit3,'String');
d=get(handles.edit4,'String');
e=get(handles.edit5,'String');
f=get(handles.edit6,'String');
g=get(handles.edit11,'String');
o=get(handles.edit7,'String');
UN=str2num(a);
R2=str2num(b);
R1=str2num(c);
X2=str2num(d);
X1=str2num(e);
nN=str2num(f);
f1=str2num(g);
p=str2num(o);
n1=60*f1/p;
s=(n1-nN)/n1;
oX=2*pi*f1;
TM=(3*p/oX)*(UN^2/(X1+X2))/2;
Tm=num2str(TM);
set(handles.edit9,'String',Tm);
TS=(3*p/oX)*((UN^2*R2)/((R1+R2)^2+(X1+X2)^2));
Ts=num2str(TS);
set(handles.edit10,'String',Ts);
TN=(3*p/oX)*(UN^2*R2*n1/(n1-nN))/((R1+R2*n1/(n1-nN))^2+(X1+X2)^2);
Tn=num2str(TN);
set(handles.edit8,'String',Tn);

%绘图按钮
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.axes1);
cla
var=get(handles.popupmenu1,'value');
a=get(handles.edit1,'String');
b=get(handles.edit2,'String');
c=get(handles.edit3,'String');
d=get(handles.edit4,'String');
e=get(handles.edit5,'String');
f=get(handles.edit6,'String');
g=get(handles.edit11,'String');
o=get(handles.edit7,'String');
UN=str2num(a);
R2=str2num(b);
R1=str2num(c);
X2=str2num(d);
X1=str2num(e);
nN=str2num(f);
f1=str2num(g);
p=str2num(o);
n1=60*f1/p;
s=(n1-nN)/n1;
oX=2*pi*f1
TN=(3*p/oX)*(UN^2*R2*n1/(n1-nN))/((R1+R2*n1/(n1-nN))^2+(X1+X2)^2);


if var==1
    plot(TN,nN,'rs');
    xlabel('电磁转矩 Tn/N.m');
    ylabel('转速/rpm');
    hold on;
for coef=1:-0.25:0.25
    U=UN*coef;
    TN=(3*p/oX)*(U^2*R2*n1/(n1-nN))/((R1+R2*n1/(n1-nN))^2+(X1+X2)^2);
    for i=1:2000
    S=i/2000;
    Teml=(3*p/oX)*(U^2*R2/S)/((R1+R2/S)^2+(X1+X2)^2)
    Nr1=n1*(1-S);
%     Tem1=Nph*Poles/(4*pi)*(E1/F1)^2*(F1*R2p/S/((R2p/S)^2+X2p^2));
    plot(Teml,Nr1,'.k');
    hold on;
    end
end

else
    if var==2
   plot(TN,nN,'rs');
   xlabel('电磁转矩Te/N.m');
   ylabel('转速/rpm');
   hold on;
for coef=1:0.5:2.5
    R=R2*coef;  
    TN=(3*p/oX)*(UN^2*R*n1/(n1-nN))/((R1+R*n1/(n1-nN))^2+(X1+X2)^2);
    for i=1:2000
    S=i/2000;
    Teml=(3*p/oX)*(UN^2*R/S)/((R1+R/S)^2+(X1+X2)^2)
    Nr1=n1*(1-S);
%     Tem1=Nph*Poles/(4*pi)*(E1/F1)^2*(F1*R2p/S/((R2p/S)^2+X2p^2));
    plot(Teml,Nr1,'.k');
    hold on;
    
%     R=R1*coef;
%     TN=(p/Os)*(UN^2*R2*nN/(nN-n))/((R+R2*nN/(nN-n))^2+(X1+X2)^2);
%     plot(TN,n,'k-');
%     str=strcat('R=',num2str(R),'\Omega');
%     s_y=400*(4-R1*1.8);
%     text(120,s_y,str);
    end
end
else
    if var==3
   plot(TN,nN,'rs');
   xlabel('电磁转矩Te/N.m');
   ylabel('转速/rpm');
   hold on;
for coef=1:0.5:2.5
    R=R1*coef;  
    TN=(3*p/oX)*(UN^2*R2*n1/(n1-nN))/((R+R2*n1/(n1-nN))^2+(X1+X2)^2);
    for i=1:2000
    S=i/2000;
    Teml=(3*p/oX)*(UN^2*R2/S)/((R+R2/S)^2+(X1+X2)^2)
    Nr1=n1*(1-S);
%     Tem1=Nph*Poles/(4*pi)*(E1/F1)^2*(F1*R2p/S/((R2p/S)^2+X2p^2));
    plot(Teml,Nr1,'.k');
    hold on;
end
    end
    end
    end
end

结语

总的来说就这些内容,第一次写博客,这是我电拖课程三级项目自己设计的,希望对电气学生有所帮助吧!

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电气的小穆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值