Matlab平台下的仪表仿真技术.docx
《Matlab平台下的仪表仿真技术.docx》由会员分享,可在线阅读,更多相关《Matlab平台下的仪表仿真技术.docx(19页珍藏版)》请在冰点文库上搜索。
Matlab平台下的仪表仿真技术
《Matlab平台下的仪表仿真技术》
实验报告
班级:
371711班
学号:
37171114
姓名:
苑海涛
2010年12月
一、实验目的
用MATLAB软件仿真设计一些常用的飞行仪表(高度表、转弯侧滑仪、地平仪等)。
通过仪表仿真增加对飞机性能的了解,熟悉飞行仪表的工作原理,并能够进行仿真设计。
二、实验内容
使用MATLAB软件设计气压高度表并进行仿真。
三、实验要求
提供在功能上和外观上尽可能逼真的气压式高度表,可以实现至少两种类型高度(如标准气压高度、场压高度)的切换显示。
四、实验原理
图1各种高度示意图
高度表原理:
利用标准大气压下高度与大气压力的关系,利用真空膜盒测量大气压力,从而表示飞行高度。
理论依据:
在标准大气条件下,高度和大气压力具有一一对应的关系。
图2标准大气条件下高度和大气压力的关系
五、程序设计思路
本程序分为三个模块,分别是界面模块、指针数字模块和停止模块。
界面模块完成界面整体布局,以及程序载入时各参量变量的初始化工作。
指针数字模块主要实现是指针的移动和整千米一下数字的显示,完成指针加数字结合的显示气压高度的功能。
停止模块实现仿真过程中的停止功能。
六、详细程序流程
界面模块:
在程序加载时被调用,开始绘制表盘及指针。
此处在GUI界面内添加了开始、停止、加速、减速及输入高度的一些功能。
指针数字模块:
此模块主要实现高度的显示。
首先单击开始,高度表按照预先设定的速度匀速升高,再单击结束时可以停止。
在高度显示过程中若点击加速或者减速,在下一次开始时高度表的变化速度相应的增加或者减少。
当有高度输入时,高度表的起始显示从此高度开始,高度表相当于始终显示的是绝对高度。
停止模块:
当想结束程序时可以单击,用于停止程序。
七、仿真界面(程序运行截图和说明)
Figure1是程序载入时的截图。
Figure2是程序在仿真时的截图。
此时上升速度比较小,运行一段时间才到21m
Figure3是加速后过了一段时间的显示高度为672m
Figure4是在相对高度输入5000时,高度表从5km开始显示,此时为5112m。
Figure5是程序结束时截图,说明结束时指针显示保留。
八、实验体会
通过本课程的学习,对于MATLAB语言有了大致了解,以及MATLAB平台下的仪表仿真技术有了初步认识。
完成大作业是一个很考验人也很锻炼人的过程。
在开始做高度表时,感到压力很大,MATLAB这门语言以前虽有接触,但基本都停留在一些数学的应用上。
应用用户图形界面还是第一次,当然这才是MATLAB的精华所在。
这次大作业主要参考了老师给提供的第二个例子。
本来想把加速减速功能做成实时可以改变指针速度的,但是实际操作修改程序时,发现这么做还是有些难度的,所以就做成每再次运行程序时才是以最新的速度改变的。
MATLAB不仅是一个工具更是一个值得掌握的软件,它功能强大,并有适合基础比较弱的人掌握,在以后的学习中,我会更加认真学习此软件。
九、程序清单(附关键代码及注释)
alt.m
moreoff
clc
clear
closeall
globalFLAGSTOPiabcDsizeDATAMhptRidxX1idxX2idxY1idxY2idxAxpyp;
c=0;
a=0:
D:
11000;
D=0.1;
a=a/100;
b=a-1;
sizeDATA=max(size(a));
FLAGSTOP=0;
Mh=figure;
set(gcf,'menubar','none','Resize','off','Name','VIRTUALALTITUDEINDICATOR','NumberTitle','off');
axisequal;
boxon
axisoff
holdon
t=-pi:
0.1:
(pi+0.1);
R=12;
fill((R+3)*sin(t),(R+3)*cos(t),'k')
plot(16*cos(pi*1/4),16*sin(pi*1/4),'o','markersize',40,'LineWidth',40,'Color','k')
plot(16*cos(pi*3/4),16*sin(pi*3/4),'o','markersize',40,'LineWidth',40,'Color','k')
plot(16*cos(pi*5/4),16*sin(pi*5/4),'o','markersize',40,'LineWidth',40,'Color','k')
plot(16*cos(pi*7/4),16*sin(pi*7/4),'o','markersize',40,'LineWidth',40,'Color','k')
plot(16*cos(pi*1/4),16*sin(pi*1/4),'o','markersize',25,'LineWidth',20,'Color','w')
plot(16*cos(pi*3/4),16*sin(pi*3/4),'o','markersize',25,'LineWidth',20,'Color','w')
plot(16*cos(pi*5/4),16*sin(pi*5/4),'o','markersize',25,'LineWidth',20,'Color','w')
plot(16*cos(pi*7/4),16*sin(pi*7/4),'o','markersize',25,'LineWidth',20,'Color','w')
plot(16*cos(pi*1/4),16*sin(pi*1/4),'o','markersize',20,'LineWidth',20,'Color','k')
plot(16*cos(pi*3/4),16*sin(pi*3/4),'o','markersize',20,'LineWidth',20,'Color','k')
plot(16*cos(pi*5/4),16*sin(pi*5/4),'o','markersize',20,'LineWidth',20,'Color','k')
plot(16*cos(pi*7/4),16*sin(pi*7/4),'o','markersize',20,'LineWidth',20,'Color','k')
line([16*cos(pi*1/4)+1.6,16*cos(pi*1/4)-1.6],[16*sin(pi*1/4),16*sin(pi*1/4)],'LineWidth',5,'Color',[111]);
line([16*cos(pi*3/4)+1.6,16*cos(pi*3/4)-1.6],[16*sin(pi*3/4),16*sin(pi*3/4)],'LineWidth',5,'Color',[111]);
line([16*cos(pi*5/4)+1.6,16*cos(pi*5/4)-1.6],[16*sin(pi*5/4),16*sin(pi*5/4)],'LineWidth',5,'Color',[111]);
line([16*cos(pi*7/4)+1.6,16*cos(pi*7/4)-1.6],[16*sin(pi*7/4),16*sin(pi*7/4)],'LineWidth',5,'Color',[111]);
plot(R*sin(t),R*cos(t),'Color','w');
plot((R+0.3)*sin(t),(R+0.3)*cos(t),'Color','k');
plot(R*sin(t),R*cos(t),'LineWidth',1.5,'Color','w');
plot(0,0,'o','markersize',6,'LineWidth',5,'Color','w')
%text(-0.5,10,'0','FontSize',12,'FontWeight','bold')
plot((R+0.3)*sin(t),(R+0.3)*cos(t),'LineWidth',2.5,'Color','w')
axisequal;
boxon
axisoff
holdon
fill(R*sin(t),R*cos(t),'k')
p=a;
[sizexpsizeyp]=size(p);
xp=8*cos(p+pi/2);%Ö¸Õë
yp=8*sin(p+pi/2);
idxA=0:
pi/6:
2*pi;
idxX1=12*cos(idxA);%¿Ì¶È
idxY1=12*sin(idxA);
idxX2=11*cos(idxA);
idxY2=11*sin(idxA);
forj=1:
12
line([idxX1(j)+.1,idxX2(j)+.1],[idxY1(j),idxY2(j)],'LineWidth',6,'Color',[.5.5.5]);
end
forj=1:
60
line([12*cos(pi*j/30)+.1,11.5*cos(pi*j/30)+.1],[12*sin(pi*j/30),11.5*sin(pi*j/30)],'LineWidth',3,'Color',[.5.5.5]);
end
forj=1:
60
line([12*cos(pi*j/30),11.5*cos(pi*j/30)],[12*sin(pi*j/30),11.5*sin(pi*j/30)],'LineWidth',3,'Color','w');
end
forj=1:
12
line([idxX1(j),idxX2(j)],[idxY1(j),idxY2(j)],'LineWidth',6,'Color','w');
end
holdon
fortexti=0:
11
text(cos(pi/2-texti*pi/6)*(R-2),sin(pi/2-texti*pi/6)*(R-2),num2str(texti),'FontSize',12,'FontWeight','bold','Color','w')
end
plot(0,0,'o','markersize',6,'LineWidth',5,'color','w')
text(cos(2*pi/2)*(R-6)+0.3-2.5,sin(2*pi/2)*(R-6)+0.1,'ALT',...
'FontSize',24,...
'FontWeight','bold',...
'Color',[0.50.50.5])
text(cos(2*pi/2)*(R-6)-2.5,sin(2*pi/2)*(R-6),'ALT',...
'FontSize',24,...
'FontWeight','bold',...
'Color','w')
text(cos(pi/2)*(R-5)-1.3,sin(pi/2)*(R-5),'Km','FontSize',16,'FontWeight','bold','Color',[0.50.50.5])
text(cos(pi/2)*(R-5)-1.5,sin(pi/2)*(R-5),'Km','FontSize',16,'FontWeight','bold','Color','w')
axisequal;
boxon
axisoff
line([00],[04],'LineWidth',4,'Color','w');
line([00],[08],'LineWidth',2,'Color','w');
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.5850.480.080.07])
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.590.4850.070.06],...
'horizontal','center',...
'BackgroundColor','k');
edith=uicontrol(Mh,'style','edit','unit','normalized',...
'position',[0.470.000.110.09],...
'horizontal','center',...
'string','000',...
'callback','c=str2num(get(edith,''string''))');
uicontrol(Mh,'style','push','unit','normalized',...
'position',[0.080.050.110.09],...
'horizontal','left','string','¼ÓËÙ','fontsize',8,...
'callback','FLAGSTOP=0,plotABS');
uicontrol(Mh,'style','push','unit','normalized',...
'position',[0.850.050.110.09],...
'horizontal','left','string','¼õËÙ','fontsize',8,...
'callback','FLAGSTOP=0,plotREL');
uicontrol(Mh,'style','push','unit','normalized',...
'position',[0.080.850.110.09],...
'horizontal','left','string','¿ªÊ¼','fontsize',8,...
'callback','i=1;plotABS');
uicontrol(Mh,'style','push','unit','normalized',...
'position',[0.850.850.110.09],...
'horizontal','left','string','Í£Ö¹','fontsize',8,...
'callback','FLAGSTOP=1;plotSTOP');
plotABS.m
functionplotABS
globalFLAGSTOPiabcDsizeDATAMhptRidxX1idxX2idxY1idxY2idxAxpyp;
D=D+0.1;
p=a+(c/1000)*ones(size(a));
xp=8*cos(pi/2-p*pi/6);%Ö¸Õë
yp=8*sin(pi/2-p*pi/6);
idxA=0:
pi/6:
2*pi;
FLAGSTOP=0
plot(R*sin(t),R*cos(t),'LineWidth',1.5,'Color','w');
plot(0,0,'o','markersize',6,'LineWidth',5,'Color','w')
%text(-0.5,10,'0','FontSize',12,'FontWeight','bold')
plot((R+0.3)*sin(t),(R+0.3)*cos(t),'LineWidth',2.5,'Color','w')
fill(R*sin(t),R*cos(t),'k')
%idxA=0:
pi/6:
2*pi;
%idxX1=12*cos(idxA);%¿Ì¶È
%idxY1=12*sin(idxA);
%idxX2=11*cos(idxA);
%idxY2=11*sin(idxA);
forj=1:
12
line([idxX1(j)+.1,idxX2(j)+.1],[idxY1(j),idxY2(j)],'LineWidth',6,'Color',[.5.5.5]);
end
forj=1:
60
line([12*cos(pi*j/30)+.1,11.5*cos(pi*j/30)+.1],[12*sin(pi*j/30),11.5*sin(pi*j/30)],'LineWidth',3,'Color',[.5.5.5]);
end
forj=1:
60
line([12*cos(pi*j/30),11.5*cos(pi*j/30)],[12*sin(pi*j/30),11.5*sin(pi*j/30)],'LineWidth',3,'Color','w');
end
forj=1:
12
line([idxX1(j),idxX2(j)],[idxY1(j),idxY2(j)],'LineWidth',6,'Color','w');
end
fortexti=0:
11
text(cos(pi/2-texti*pi/6)*(R-2),sin(pi/2-texti*pi/6)*(R-2),num2str(texti),'FontSize',12,'FontWeight','bold','Color','w')
end
while(itext(cos(pi/2)*(R-5)-1.3,sin(pi/2)*(R-5),'Km','FontSize',16,'FontWeight','bold','Color',[0.50.50.5])
text(cos(pi/2)*(R-5)-1.5,sin(pi/2)*(R-5),'Km','FontSize',16,'FontWeight','bold','Color','w')
text(cos(2*pi/2)*(R-6)+0.3-2.5,sin(2*pi/2)*(R-6)+0.1,'ALT',...
'FontSize',24,...
'FontWeight','bold',...
'Color',[0.50.50.5])
text(cos(2*pi/2)*(R-6)-2.5,sin(2*pi/2)*(R-6),'ALT',...
'FontSize',24,...
'FontWeight','bold',...
'Color','w')
plot(0,0,'o','markersize',6,'LineWidth',5,'color','w')
line([0xp(i)/2],[0yp(i)/2],'LineWidth',4,'Color','w');
line([0xp(i)],[0yp(i)],'LineWidth',2,'Color','w');
pIFun=p(i);
DispStr=num2str(round((pIFun-floor(pIFun))*1000));
ifmax(size(DispStr))==2
DispStr=['0',DispStr];
end
ifmax(size(DispStr))==1
DispStr=['0','0',DispStr];
end
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.5850.480.080.07])
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.590.4850.070.06],...
'horizontal','center',...
'BackgroundColor','k',...
'ForegroundColor','w',...
'string',DispStr,...
'fontsize',15);
pause(0.07)
line([0xp(i)/2],[0yp(i)/2],'LineWidth',4,'Color','k');
line([0xp(i)],[0yp(i)],'LineWidth',4,'color','k');
ifFLAGSTOP==1
FLAGSTOP==0;
break
end
i=i+1;
end
line([0xp(i)/2],[0yp(i)/2],'LineWidth',4,'Color','w');
line([0xp(i)],[0yp(i)],'LineWidth',2,'Color','w');
FLAGSTOP==0;
plotREL.m
functionplotREL
globalFLAGSTOPiabcDsizeDATAMhptRidxX1idxX2idxY1idxY2idxAxpyp;
D=D-0.1;
p=a+(c/1000)*ones(size(a));
xp=8*cos(pi/2-p*pi/6);%Ö¸Õë
yp=8*sin(pi/2-p*pi/6);
idxA=0:
pi/6:
2*pi;
FLAGSTOP=0
plot(R*sin(t),R*cos(t),'LineWidth',1.5,'Color','w');
plot(0,0,'o','markersize',6,'LineWidth',5,'Color','w')
%text(-0.5,10,'0','FontSize',12,'FontWeight','bold')
plot((R+0.3)*sin(t),(R+0.3)*cos(t),'LineWidth',2.5,'Color','w')
fill(R*sin(t),R*cos(t),'k')
%idxA=0:
pi/6:
2*pi;
%idxX1=12*cos(idxA);%¿Ì¶È
%idxY1=12*sin(idxA);
%idxX2=11*cos(idxA);
%idxY2=11*sin(idxA);
forj=1:
12
line([idxX1(j)+.1,idxX2(j)+.1],[idxY1(j),idxY2(j)],'LineWidth',6,'Color',[.5.5.5]);
end
forj=1:
60
line([12*cos(pi*j/30)+.1,11.5*cos(pi*j/30)+.1],[12*sin(pi*j/30),11.5*sin(pi*j/30)],'LineWidth',3,'Color',[.5.5.5]);
end
forj=1:
60
line([12*cos(pi*j/30),11.5*cos(pi*j/30)],[12*sin(pi*j/30),11.5*sin(pi*j/30)],'LineWidth',3,'Color','w');
end
forj=1:
12
line([idxX1(j),idxX2(j)],[idxY1(j),idxY2(j)],'LineWidth',6,'Color','w');
end
fortexti=0: