Matlab平台下的仪表仿真技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《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
more off
clc
clear
close all
global FLAGSTOP i a b c D sizeDATA Mh p t R idxX1 idxX2 idxY1 idxY2 idxA xp yp;
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','VIRTUAL ALTITUDE INDICATOR','NumberTitle','off');
axis equal;
box on
axis off
hold on
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(p i*1/4)],'LineWidth',5,'Color',[1 1 1]);
line([16*cos(pi*3/4)+1.6,16*cos(pi*3/4)-1.6],[16*sin(pi*3/4),16*sin(p i*3/4)],'LineWidth',5,'Color',[1 1 1]);
line([16*cos(pi*5/4)+1.6,16*cos(pi*5/4)-1.6],[16*sin(pi*5/4),16*sin(p i*5/4)],'LineWidth',5,'Color',[1 1 1]);
line([16*cos(pi*7/4)+1.6,16*cos(pi*7/4)-1.6],[16*sin(pi*7/4),16*sin(p i*7/4)],'LineWidth',5,'Color',[1 1 1]);
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')
axis equal;
box on
axis off
hold on
fill(R*sin(t),R*cos(t),'k')
p=a;
[sizexp sizeyp]=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);
for j=1:12
line([idxX1(j)+.1,idxX2(j)+.1],[idxY1(j),idxY2(j)],'LineWidth',6,'Col or',[.5 .5 .5]);
end
for j=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
for j=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
for j=1:12
line([idxX1(j),idxX2(j)],[idxY1(j),idxY2(j)],'LineWidth',6,'Color','w ');
end
hold on
for texti=0:11
text(cos(pi/2-texti*pi/6)*(R-2),sin(pi/2-texti*pi/6)*(R-2),num2str(te
xti),'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.5 0.5 0.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,'FontWeig ht','bold','Color',[0.5 0.5 0.5])
text(cos(pi/2)*(R-5)-1.5,
sin(pi/2)*(R-5),'Km','FontSize',16,'FontWeight','bold','Color','w')
axis equal;
box on
axis off
line([0 0],[0 4],'LineWidth',4,'Color','w');
line([0 0],[0 8],'LineWidth',2,'Color','w');
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.585 0.48 0.08 0.07])
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.59 0.485 0.07 0.06],...
'horizontal','center',...
'BackgroundColor','k');
edith=uicontrol(Mh,'style','edit','unit','normalized',...
'position',[0.47 0.00 0.11 0.09],...
'horizontal','center',...
'string','000',...
'callback','c=str2num(get(edith,''string''))');
uicontrol(Mh,'style','push','unit','normalized',...
'position',[0.08 0.05 0.11 0.09],...
'horizontal','left','string','¼ÓËÙ','fontsize',8,...
'callback','FLAGSTOP=0,plotABS');
uicontrol(Mh,'style','push','unit','normalized',...
'position',[0.85 0.05 0.11 0.09],...
'horizontal','left','string','¼õËÙ','fontsize',8,...
'callback','FLAGSTOP=0,plotREL');
uicontrol(Mh,'style','push','unit','normalized',...
'position',[0.08 0.85 0.11 0.09],...
'horizontal','left','string','¿ªÊ¼','fontsize',8,...
'callback','i=1;plotABS');
uicontrol(Mh,'style','push','unit','normalized',...
'position',[0.85 0.85 0.11 0.09],...
'horizontal','left','string','Í£Ö¹','fontsize',8,...
'callback','FLAGSTOP=1;plotSTOP');
pl otABS.m
function plotABS
global FLAGSTOP i a b c D sizeDATA Mh p t R idxX1 idxX2 idxY1 idxY2 idxA xp yp;
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);
for j=1:12
line([idxX1(j)+.1,idxX2(j)+.1],[idxY1(j),idxY2(j)],'LineWidth',6,'Col or',[.5 .5 .5]);
end
for j=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
for j=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
for j=1:12
line([idxX1(j),idxX2(j)],[idxY1(j),idxY2(j)],'LineWidth',6,'Color','w ');
end
for texti=0:11
text(cos(pi/2-texti*pi/6)*(R-2),sin(pi/2-texti*pi/6)*(R-2),num2str(te xti),'FontSize',12,'FontWeight','bold','Color','w')
end
while (i<sizeDATA)
text(cos(pi/2)*(R-5)-1.3,sin(pi/2)*(R-5),'Km','FontSize',16,'FontWeig ht','bold','Color',[0.5 0.5 0.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.5 0.5 0.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([0 xp(i)/2],[0 yp(i)/2],'LineWidth',4,'Color','w');
line([0 xp(i)],[0 yp(i)],'LineWidth',2,'Color','w');
pIFun=p(i);
DispStr=num2str(round((pIFun-floor(pIFun))*1000));
if max(size(DispStr))==2
DispStr=['0',DispStr];
end
if max(size(DispStr))==1
DispStr=['0','0',DispStr];
end
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.585 0.48 0.08 0.07])
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.59 0.485 0.07 0.06],...
'horizontal','center',...
'BackgroundColor','k',...
'ForegroundColor','w',...
'string',DispStr,...
'fontsize',15);
pause(0.07)
line([0 xp(i)/2],[0 yp(i)/2],'LineWidth',4,'Color','k');
line([0 xp(i)],[0 yp(i)],'LineWidth',4,'color','k');
if FLAGSTOP==1
FLAGSTOP==0;
break
end
i=i+1;
end
line([0 xp(i)/2],[0 yp(i)/2],'LineWidth',4,'Color','w');
line([0 xp(i)],[0 yp(i)],'LineWidth',2,'Color','w');
FLAGSTOP==0;
pl otREL.m
function plotREL
global FLAGSTOP i a b c D sizeDATA Mh p t R idxX1 idxX2 idxY1 idxY2 idxA xp yp;
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);
for j=1:12
line([idxX1(j)+.1,idxX2(j)+.1],[idxY1(j),idxY2(j)],'LineWidth',6,'Col or',[.5 .5 .5]);
end
for j=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
for j=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
for j=1:12
line([idxX1(j),idxX2(j)],[idxY1(j),idxY2(j)],'LineWidth',6,'Color','w ');
end
for texti=0:11
text(cos(pi/2-texti*pi/6)*(R-2),sin(pi/2-texti*pi/6)*(R-2),num2str(te xti),'FontSize',12,'FontWeight','bold','Color','w')
end
while (i<sizeDATA)
text(cos(pi/2)*(R-5)-1.3,sin(pi/2)*(R-5),'Km','FontSize',16,'FontWeig ht','bold','Color',[0.5 0.5 0.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.5 0.5 0.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([0 xp(i)/2],[0 yp(i)/2],'LineWidth',4,'Color','w');
line([0 xp(i)],[0 yp(i)],'LineWidth',2,'Color','w');
pIFun=p(i);
DispStr=num2str(round((pIFun-floor(pIFun))*1000));
if max(size(DispStr))==2
DispStr=['0',DispStr];
end
if max(size(DispStr))==1
DispStr=['0','0',DispStr];
end
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.585 0.48 0.08 0.07])
uicontrol(Mh,'style','text',...
'unit','normalized','position',[0.59 0.485 0.07 0.06],...
'horizontal','center',...
'BackgroundColor','k',...
'ForegroundColor','w',...
'string',DispStr,...
'fontsize',15);
pause(0.07)
line([0 xp(i)/2],[0 yp(i)/2],'LineWidth',4,'Color','w');
line([0 xp(i)],[0 yp(i)],'LineWidth',4,'color','k');
if FLAGSTOP==1
FLAGSTOP==0;
break
end
i=i+1;
end
line([0 xp(i)/2],[0 yp(i)/2],'LineWidth',4,'Color','w');
line([0 xp(i)],[0 yp(i)],'LineWidth',2,'Color','w');
FLAGSTOP==0;
pl otSTOP.m
function plotSTOP
global FLAGSTOP i a b sizeDATA Mh p t R idxX1 idxX2 idxY1 idxY2 idxA xp yp;
xp(i)
line([0 xp(i)/2],[0 yp(i)/2],'LineWidth',4,'Color','w');
line([0 xp(i)],[0 yp(i)],'LineWidth',2,'Color','w');。

相关文档
最新文档