当前位置:文档之家› Matlab平台下的仪表仿真技术

Matlab平台下的仪表仿真技术

Matlab平台下的仪表仿真技术
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

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','?aê?','fontsize',8,...

'callback','i=1;plotABS');

uicontrol(Mh,'style','push','unit','normalized',...

'position',[0.85 0.85 0.11 0.09],...

'horizontal','left','string','�1','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

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

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');

相关主题
文本预览
相关文档 最新文档