可能电气工程及其自动化电机方向的同学在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
结语
总的来说就这些内容,第一次写博客,这是我电拖课程三级项目自己设计的,希望对电气学生有所帮助吧!