直流电机与异步电机的基于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
    评论
三相异步电机是目前应用最广泛的电动机之一,具有结构简单、可靠性高、使用寿命长等优点。在电机的设计和调试过程中,需要对其机械特性进行仿真分析,以便更好地理解其工作原理和性能特点。下面是三相异步电机机械特性MATLAB仿真步骤: 1. 确定仿真模型 在MATLAB中建立三相异步电机的模型,包括电路模型和机械模型。电路模型可以采用等效电路法或有限元法,机械模型可以采用转子定子耦合的方法。 2. 设定电机参数 根据实际情况,设置三相异步电机的参数,包括额定功率、额定转速、极对数、定子电阻、转子电阻、定子电感、转子电感、定子漏抗、转子漏抗等。 3. 编写仿真程序 根据三相异步电机机械特性编写仿真程序。可以采用MATLAB的Simulink模块进行仿真,也可以手动编写MATLAB脚本进行仿真。 4. 运行仿真程序 运行仿真程序,获取三相异步电机机械特性数据。可以绘制电机的转速-负载特性曲线、转矩-转速特性曲线、效率-转速特性曲线等。 5. 分析仿真结果 根据仿真结果,分析三相异步电机机械特性。可以找出电机的最优工作点,确定其最大输出功率和效率等性能指标。 总之,三相异步电机机械特性MATLAB仿真可以帮助工程师更好地理解电机的工作原理和性能特点,为电机的设计和调试提供重要的参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

电气的小穆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值