这个例子展示了如何将固定翼飞机转换为线性时不变(LTI)状态空间模型进行线性分析。
这个例子描述了:
从DATCOM文件导入和填充数据。
用DATCOM数据建造固定翼飞机。
固定翼飞机静稳定性计算。
将固定翼飞机沿初始状态线性化。
用动态响应验证静力稳定性分析。
隔离电梯-俯仰传递函数,设计电梯反馈控制器。
这个例子使用了一个为Sky Hogg飞机创建的DATCOM文件。
首先,使用datcomimport导入DATCOM输出文件。
allData = datcomimport (“astSkyHoggDatcom.out”假的,0);skyHoggData = allData {1}
skyHoggData =结构体字段:案例:“SKYHOGG BODY-WING-HORIZONTAL TAIL-VERTICAL尾配置“马赫:[0.1000 - 0.2000 0.3000 - 0.3500]alt:(1000 3000 5000 7000 9000 11000 13000 15000)α:[-16 -12 8 4 2 0 2 4 8 12]nmach: 4 nalt: 8 nalpha: 10 rnnub:[]大卖场:0循环:2 sref: 225.8000 cbar: 5.7500 blref: 41.1500暗淡:“英尺”引出:“度”stmach: 0.6000 tsmach: 1.4000保存:0药栓:[]修剪:0潮湿:1建立:1部分:0 highsym: 1 highasy: 0 highcon: 0 tjet: 0 hypeff: 0磅:0压水式反应堆:0接地:0 wsspn: 18.7000 hsspn: 5.7000 ndelta: 5三角洲:[-20 -10 0 10 20]deltal: [] deltar:[]已:0 grndht:[]配置:[1 x1 struct]版本:1976 cd: [10 x4x8双]cl: [10 x4x8双]厘米:[10 x4x8双]cn: [10 x4x8双]ca:[10x4x8 double] cma: [10x4x8 double] cyb: [10x4x8 double] cnb: [10x4x8 double] cla: [10x4x8 double] qqinf: [10x4x8 double] eps: [10x4x8 double] depsdalp: [10x4x8 double] clq: [10x4x8 double] cmq: [10x4x8 double] cmq: [10x4x8 double] cmq: [10x4x8 double] cmad: [10x4x8 double] cyp: [10x4x8 double] cnp:[10x4x8 double] cnr: [10x4x8 double] clr: [10x4x8 double] dcl_sym: [5x4x8 double] dcl_sym: [5x4x8 double] dcl_sym: [5x4x8 double] dcl_sym: [5x4x8 double] dcdmin_sym: [5x4x8 double] clad_sym: [5x4x8 double] chd_sym: [5x4x8 double] dcdi_sym: [10x5x4x8 double]
接下来,准备DATCOM查找表。
DATCOM查找表可能缺少值,因为表只填充了整个列的一个值。
这个缺失的数据在查找表中以99999的值表示,可以使用fillmissing的“前一个”方法来填充。
在这个例子中, , , , 缺失的数据。
skyHoggData。中青文= fillmissing (skyHoggData.cyb,“以前”,“MissingLocations”, skyHoggData。的地方= = 99999);skyHoggData.cnb = fillmissing (skyHoggData.cnb,“以前”,“MissingLocations”, skyHoggData.cnb == 99999);skyHoggData。clq = fillmissing (skyHoggData.clq,“以前”,“MissingLocations”, skyHoggData。clq = = 99999);skyHoggData。cmq =, fillmissing (skyHoggData.cmq“以前”,“MissingLocations”, skyHoggData。cmq = =, 99999);
填补了缺失的数据后,就可以建造固定翼飞机了。
首先,固定翼飞机要准备好所需的飞机名称。
还可以通过传递一个空的固定翼对象,从DATCOM结构上的“case”字段提取飞机名称。
skyHogg = Aero.FixedWing ();skyHogg.Properties.Name =“Sky_Hogg”;skyHogg。DegreesOfFreedom =“3自由度”;[skyHogg, cruiseState] = datcomToFixedWing(skyHogg, skyHoggData);
datcomToFixedWing将从datcom结构转换到固定翼对象及其状态的所有兼容数据。然而,返回状态仍然需要处理,以获得所需的飞机初始条件。
在这个例子中,环境、质量、惯性、空速和压力中心都需要调整。
h = 2000;cruiseState。AltitudeMSL = h;cruiseState。环境= aircraftEnvironment (skyHogg,“是”、h);cruiseState。U = 169.42;cruiseState。质量= 1299.214;cruisestate . inerti . variables = [5787.969 0 117.64;0 6928.93 0;-117.64 0 11578.329];cruiseState。CenterOfPressure = [0.183, 0, 0];
执行静态稳定性分析有助于确定系统的动态稳定性,而无需计算系统的动态响应。
(skyHogg, cruiseState)
稳定=6×8表U V WαβP Q R ________ _________ ________ ________ _________ _________ ________ _________ 外汇“稳定 " "" "" "" "" "" "" "" “财政年度”“中立 " "" "" "" "" "" "" FZ”“”“”稳定 " "" "" "" "" "" L "" "" "" "" " 中性”“中性”““““M”稳定稳定”“”“”“”“”“”“稳定”““N "" "" "" "" " 中性”“”“”“中性”
在静稳定力和力矩、前向和垂直速度扰动以及攻角扰动的情况下,系统的动态稳定性在前向和垂直速度扰动时趋于振荡稳态。
要验证此行为,请使用Control System Toolbox™。
要使用控制系统工具箱™中的工具,请围绕一个状态将飞机线性化。
这是通过使用线性化方法与以前相同的巡航状态。
linSys = linearize(skyHogg, cruiseState)
linSys = = XN XD U W问XN 0 0 1 0 0 XD 0 0 0 1 0 U 0 1.319 e-06 -0.001714 - -0.0007608 0 W 0 0 -0.002705 -0.3319 2.557 Q 0 0 0.03443 -1.19 -24.84 -2.586θ0 0 0 0 1θXN e-07 XD -2.957 U -0.5617 W -4.867 e-08问θ0 B =δXN 0 XD U -0.0004314 W -0.02084 Q -2.239θ0 C = XN XD U W QθXN 1 0 0 0 0 0 XD 0 1 0 0 0 0 0 0 1 0 00 W 0 0 0 1 0 0 Q 0 0 0 0 1 0 Theta 0 0 0 0 0 1 D = Delta XN 0 XD 0 U 0 W 0 Q 0 Theta 0 Continuous-time state-space model.
通过构建线性状态空间模型,可以绘制系统的动态行为。
为了验证系统的静态稳定性结果与系统的动态行为,根据初始条件绘制状态空间模型。
为了在系统中引起扰动,在电梯信号中增加一个5度的步长,持续1秒。
x0 = getState(cruiseState, linSys.OutputName);T = linspace(0,50,500);u = 0(大小(t));U (t > 1 & t < 2) = 5;lsim (linSys, u, t, x0)
正如静态稳定性分析的预期,空速和俯仰率是稳定的,当响应一个小扰动在电梯。
除了静态稳定性验证之外,将控制面与它们预期的动态响应隔离开来,可以帮助设计特定于单个面的控制器。
在这种情况下,只有一个控制面,电梯。
电梯控制飞机的俯仰响应。为了显示一个俯仰响应,隔离电梯输入的俯仰角度到电梯传递函数。
linSysElevatorTF =特遣部队(linSys (6,1))
从输入“δ”输出linSysElevatorTF =“θ”:-2.239 s ^ 3 - 0.7221 s ^ 2 - 0.001232 - 8.935 e-09 ----------------------------------------------------------------- ^ 5 + 25.17年代^ 4 + 11.33 s ^ 3 + 0.0387 s ^ 2 + 0.008227 + 5.712 e-08连续时间传递函数。
步骤(linSysElevatorTF)
由阶跃图可以看出,电梯输入的俯仰响应具有不理想的振荡特性和较大的稳态误差。
通过在电梯输入端加入PID反馈控制器,可以获得更理想的俯仰响应。
C = pidtune (linSysElevatorTF“PID”)
C = 1 Ki *——s with Ki = -0.000596连续时间I-only控制器。
(linSysElevatorTF * C, 1)
“θ”elevatorFeedback =从输入到输出:0.001335 s ^ 3 + 0.0004304 s ^ 2 + 7.346 e-07 e-12 s + 5.327 ------------------------------------------------------------------------ ^ 6 + 25.17年代^ 5 + 11.33 s ^ 4 + 0.04004 s ^ 3 + 0.008657 s ^ 2 + 7.917 e-07 s + 5.327 e-12连续时间传递函数。
步骤(elevatorFeedback)