南京航空航天大学。
研究生实验报告。
课程名称:matlab**技术与应用
课程**:e030008
实验名称:伸缩翼变体飞行器飞行控制律**。
学生姓名:史浩明。
班级学号:sz1303059
学科名称:控制工程。
2024年 10月 13日。
伸缩翼变体飞行器飞行控制律**。
1.项目背景。
机翼是产生飞机飞行所需升力以及操纵力的主要部件,而机翼的气动外形也决定了飞机在特定飞行条件下的飞行性能,因此,改变机翼的外部形状对于改变飞机的气动性和机动性更为显著和直接。
可变体飞行器是一种全新概念的飞行器,能够根据不同的飞行环境以及飞行任务的要求而改变其外形从而保证优化的飞行性能。伸缩翼飞机是变体飞机的一种,飞机在飞行过程中通过机翼的伸缩变形,能够有效改变自身气动特性,适应不同的飞行状态,如起飞降落、机动、盘旋以及巡航等,并且可以保证在飞行中具有优化的气动性能,满足多种任务需求。外翼向外伸展时,机翼参考面积变化不大,但翼展增加较大,展弦比随之增大,进而可以提高全机升阻比,改善飞机的续航性能。
外翼完全伸出时,构成大展弦比构型,可以获得较高的升阻比和升力线斜率,适合于执行追求巡航距离和续航时间的任务,并可以改善起飞与着陆状态的性能。外翼完全收缩进内翼时,构成小展弦比构型,可以使总阻力减小,能够改善高速冲刺性能,提高对时敏目标的反应速度。此外,外翼收起后,还可以减小飞机停放时占用的空间。
两侧机翼伸出量不对称时,可以因为左右升力不对称而获得附加滚转力矩,用于飞机的横航向操纵。
伸缩翼飞机是变体飞机技术的主要发展方向之一。
2.设计要求。
通过分析伸缩翼飞机的变形方式,建立飞机的动力学模型,对飞机方程进行线性化,可以计算出飞机各个通道的传递函数。基于上述的线性模型,设计飞机的纵向控制律。纵向控制的结构框图如下所示:
图1 变体飞机纵向控制结构框图。
通过pid控制实现对伸缩翼飞机纵向飞行控制,利用matlab的simulink模块对飞机的俯仰通道和高度保持通道进行**,并验证前述pid控制律设计的有效性。
3.系统总体方案以及matlab软件设计方案。
对系统的俯仰角控制回路和高度保持回路进行设计和**。**主要运用matlab的simulink模块,在表述飞机的时变模型以及pid控制器中的比例环节时,利用s-function模块,将控制器运用到非线性模型中。
3.1俯仰角控制回路。
俯仰角的控制回路用来稳定和控制飞机的俯仰角,一般可作为高度控制回路的内回路。控制结构图如下:
图2 俯仰角控制回路结构图。
在simulink窗口搭建如下模型,其中的比例环节以及俯仰系统均由s-function函数编写。其中pid控制器的ki=0.7,kd=0.25。
图3俯仰回路子系统。
图4俯仰角回路。
**结果如下图所示:
图5俯仰角随时间变化曲线。
3.2 高度保持回路。
在俯仰角控制回路的基础上利用升降舵实现伸缩翼变体飞机飞行高度的控制。控制结构图如下:
图6高度保持回路控制结构图。
在simulink窗口搭建如下模型,其中的比例环节以及俯仰系统均由s-function函数编写。其中pid控制器的ki=0.2,kd=0.7。
图7高度保持回路。
图8俯仰回路子系统。
**结果如下图所示:
图9高度随时间变化曲线。
4.实验结果总结。
分析**的结果,可以看到在引入控制器后,飞机在变形过程中能够保持良好的稳定性。俯仰角控制回路在阶跃输入下能够在较短的时间内做出的响应,并保持一个稳定的输出。高度保持回路在扰动条件下会有一个短暂的振荡过程,最终高度变化回趋近于零,实现良好的高度保持效果。
通过对设计好的控制器进行**,验证了该控制器能够得到较好的俯仰角稳定输出,保持飞机的飞行高度,并且在变体飞行器外形发生变化的时候也能够进行稳定的飞行。
5.本门课程实验心得体会。
作为matlab的初学者,此实验课程给了我很大的帮助,能够让我在短时间内快速的入门,学到很多实用的东西,对今后的学习和研究工作有很大的帮助。
本次大作业试验的内容是跟我研究的课题密切相关的,通过simulink搭建模型进行**,让我对课题本身又有了比较直观的理解,在感慨matlab强大功能的同时,不得不说还是很受启发的。
最后感谢崔江老师辛勤的教学,认真的授课,在我们遇到问题时能够给出详细的解答,是我们学习道路上不可多得的良师益友。
附录。1. 俯仰通道的比例环节s-function函数。
function [sys,x0,str,ts] =kp(t,x,u,flag)
switch flag,case 0,sys,x0,str,ts]=mdlinitializesizes;
case 3,sys=mdloutputs(t,x,u);
case sys=
otherwise
simulink:blocks:unhandledflag', num2str(flag));
endfunction [sys,x0,str,ts]=mdlinitializesizes
sizes = simsizes;
sys = simsizes(sizes);
x0 = str =
ts = 0 0];
function sys=mdloutputs(t,x,u)
if t<15,c=4.8;
elseif 15<=t&&t<27, c=4.8+0.25*0.05*(t-15);
elseif t>=27, c=4.95;
endsys=c*u;
2. 俯仰角系统的s-function函数。
function [sys,x0,str,ts] =fysys(t,x,u,flag)
switch flag,case 0,sys,x0,str,ts]=mdlinitializesizes;
case 1,sys=mdlderivatives(t,x,u);
case 3,sys=mdloutputs(t,x,u);
case sys=
otherwise
simulink:blocks:unhandledflag', num2str(flag));
endfunction [sys,x0,str,ts]=mdlinitializesizes
sizes = simsizes;
sys = simsizes(sizes);
x0 = 34,9.39,0,9.39];
str =
ts = 0 0];
function sys=mdlderivatives(t,x,u)
if t<15,m=0;
elseif 15<=t&&t<27, m=0.05*(t-15);
elseif t>=27, m=0.6;
endsys(1)=(0.0189*m^2+0.0452*m-0.
0547)*x(1)+(0.0687*m^2-0.6392*m+6.
5588)*x(2)-9.8*x(4);
sys(2)=(0.0002*m^2-0.0004*m-0.
0173)*x(1)+(0.0377*m^2-1.4241*m-1.
4204)*x(2)+x(3)-0.0776*u;
sys(3)=(0.0063*m^2-0.0137*m+0.
0216)*x(1)+(1.8565*m^2-7.2430*m-5.
5584)*x(2)+(0.3994*m^2-0.7136*m-3.
2815)*x(3)-4.3188*u;
sys(4)=x(3);
function sys=mdloutputs(t,x,u)
sys=x(4);
3. 高度保持回路的比例环节s-function函数。
function [sys,x0,str,ts] =kp1(t,x,u,flag)
switch flag,case 0,sys,x0,str,ts]=mdlinitializesizes;
case 3,sys=mdloutputs(t,x,u);
case sys=
otherwise
simulink:blocks:unhandledflag', num2str(flag));
endfunction [sys,x0,str,ts]=mdlinitializesizes
sizes = simsizes;
sys = simsizes(sizes);
x0 = str =
ts = 0 0];
function sys=mdloutputs(t,x,u)
if t<15,c=0.03;
elseif 15<=t&&t<27, c=0.03+0.025*0.05*(t-15);
elseif t>=27, c=0.045;
endsys=c*u;
4. 高度保持回路中俯仰角子系统的s-function函数。
function [sys,x0,str,ts] =fysys1(t,x,u,flag)
switch flag,case 0,sys,x0,str,ts]=mdlinitializesizes;
case 1,sys=mdlderivatives(t,x,u);
case 3,sys=mdloutputs(t,x,u);
matlab大作业
matlab语言及应用。周一晚作业廖育州07010559 第一组程序。绘制选用潍柴发动机wd615.50时汽车行驶性能曲线图,ft ua图clear,clc 清除内存变量,清屏 n为发动机的转速。n 1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,...
MATLAB大作业
实验七图像的形态 算。一 实验目的。1.掌握图像的奇异值分解与合成。2.能够利用模板操作实现图像的腐蚀运算3.能够利用模板操作实现图像的膨胀运算4.掌握图像的开 闭运算。二 实验内容。1.读下面的程序,分析该程序要完成什么样的功能。a 1 2 1 2 3 2 1 2 1 u d v svd a nx...
MATLAB大作业
1.设计一个程序,要求用户用键盘输入10次,输入内容可以是数字 英文 汉字 或者其他文字或者符号。如果输入的是数字,则把存入一个数字数组当中 如果输入的是英文的字符,则存入一个英文字符数组当中 如果是其他字符,则存入一个字符串数组中。当10次内容都输入完毕后,先输出英文数组中的内容,然后输出字符串数...