跳转至内容

OpenVOGEL/用户指南/指南 3 第 2 部分

来自维基教科书,开放世界中的开放书籍

使用控制台进行批量扫描

[编辑 | 编辑源代码]

虽然飞行力学中的经典方法是将模型和空气动力作用分解(例如“由于下洗气流引起的尾翼升力变化”),然后编写复杂的平衡方程,但这里我们将利用我们拥有的空气动力方法,并提出一些只使用空气动力合力和力矩的数值模拟。这将让我们专注于模型的最终行为,而不必考虑相互作用。

这些例子将作为软件在现实生活问题解决中能做什么的说明。没有什么能阻止你为其他情况创建你自己的定制分析,这些情况不同于我们将在下面介绍的情况。要构建适合每个人需求的软件是困难的(或几乎不可能的),因此我们认为你将更愿意这样做。这是我们能提供的最大自由度,它依赖于控制台和脚本提供的强大功能和灵活性。

在开始使用标准批量分析来帮助我们解决飞机设计的不同方面之前,我们将了解如何在控制台上运行最简单的模拟。从该模拟中产生的原始数据可用于定制后处理,因此它可能很有趣。

单次模拟的稳态分析

[编辑 | 编辑源代码]

在通过控制台进行最简单的自动分析中,你必须自己(在 Tucan 中)创建所需的*.vog 文件集。然后打开控制台并为每个文件输入

load
enter file name:
<your file path>
[there comes a message describing what has been loaded]
steady
[the calculation starts]

扫描迎角

[编辑 | 编辑源代码]

如果你想快速分析空气动力载荷,而之前的方法似乎过于繁琐,则有更快的替代方法。我们将看到的第一个自动化程序称为“alfa 扫描”,它将让你一次运行一系列模拟,用于预定义的迎角范围。

首先,你需要在 Tucan 中创建模型,该模型在你认为是零迎角时的模型。准备就绪后,打开控制台并加载文件

load
enter file name:
<your file path>
[there comes a message describing what has been loaded]

接下来你需要指定要运行alfa 扫描

alfa_scan;<alfa_1>;<alfa_2>;<alfa_step>
[the calculation starts for each incidence in the given set]

起始迎角alfa_1和最终迎角alfa_2始终包含在内,alfa_step是在达到alfa_2之前保持的增量。

扫描的结果会在与输入文件相同的目录中写入一个输出文件,名为<input_file_name>_batch.dat。以下是一个输出文件示例

OpenVOGEL alfa scan

A = 1.485717E+000m²
L = 1.485717E+000m
q = 1.159693E+004Pa

# Force coefficients
Alfa   CL             CDi            CDp           
 0.000  7.443804E-001  4.707133E-002  1.146459E-002
 2.000  8.550402E-001  6.360122E-002  1.446163E-002
 ...

# Forces and moments ([N] and  [Nm])
Alfa   Fx             Fy             Fz             Mx             My             Mz            
 0.000  1.004243E+003  1.317944E-014  1.278442E+004  1.558601E+004 -1.781820E+003 -1.224195E+003
 2.000  8.247472E+002  1.538323E-014  1.470960E+004  1.793306E+004 -2.047669E+003 -1.005339E+003
 ...

直线飞行中的纵向控制性能

[编辑 | 编辑源代码]

虽然alfa_scan旨在进行简单的性能分析,但如果飞机配备了控制面,它并不能说明静力平衡。在实践中,当我们计算飞机的升力曲线以研究其性能时,我们需要参考平衡状态。因此,平衡和性能必须一起分析。

在设计飞机时,出现的许多基本问题之一是:重心允许在何处,以使飞机在整个所需飞行包线内保持稳定并处于静力平衡状态。有些飞机的设计方式使得通过移动重心来获得平衡(最常见的例子是滑翔机)。然而,所有其他飞机通常都包含一个襟翼或一个额外的表面(称为尾翼)配备一个襟翼(称为升降舵)来提供纵向控制。在后一种情况下,尾翼本身增加了模型的稳定性,而襟翼的偏转提供了控制。尾翼和升降舵的大小和位置起着关键作用,因此之前的问题转化为一个包含许多变量的优化问题。

关于飞行力学,只有少数几本书让读者意识到升降舵的偏转不仅影响俯仰力矩,还会影响升力和阻力。对于机翼-尾翼配置,对升力的影响不像飞翼那样明显,而飞翼的影响非常强烈。因此,即使对于最简单的纵向稳定性分析(找到直线水平飞行的平衡状态),我们也需要处理许多变量。由于升力和力矩通过迎角和控制偏转角耦合,因此找到平衡状态并不像求解一组简单的非耦合方程那样简单。如果平衡方程中只包含升力和力矩,并且对于这两种作用,相关系数被认为是迎角和偏转角的线性函数,那么最多我们可以将问题简化为一个包含两个线性方程的系统,并且只需运行四次模拟即可。你可以这样做(并节省计算时间),但我们这里不强制这样做,以保持通用性。如果你想添加推力,那么问题会变得更加复杂,可能更容易转向多变量图形和蛮力计算。

OpenVOGEL 为你提供了一个基本工具来找到直线飞行的平衡状态,它被称为alfa_delta_scan。该方法非常简单:对于一系列迎角,模拟一系列升降舵偏转的飞行。由于两个角度在本质上都是有限制的(分别是失速和襟翼铰链约束),通过提供正确的范围,分析可以覆盖整个飞行包线。然后将得到的空气载荷转移到 Scilab 中的一个脚本中,以进行绘图。在那里,空气载荷(升力和俯仰力矩)在给定范围内插值,并为重心和升力系数绘制等高线。生成的图形(在 alpha-delta 空间中)提供了三个基本问题的答案

可以保持最大升力的最前重心位置是什么?

该状态由穿过最大 alpha 和 delta 值的重心曲线表示(对于后置尾翼,alpha-delta 图的右上角,对于前置尾翼,alpha-delta 图的右下角)。如果重心位置限制在该坐标处,飞机仍将能够以最小 [失速] 速度保持水平飞行(或者换句话说,如果重心超过该限制,飞机将无法以最小 [失速] 速度飞行 - 想象一下这对试图着陆的飞行员来说是多么残酷)。在该坐标之后定位重心是业余航空模型爱好者常见的错误。小心,因为你通常不会意识到问题,直到你准备着陆!(因为那是当你想要用一些空速换取机翼周围的额外循环时 - 称为 CL-)。实际上,该状态最关键的条件是当俯仰力矩达到最大值时,这种情况通常发生在最大升力下从俯冲中恢复时,所有 [主翼] 襟翼都放下。在 OpenVOGEL 中,你可以使用气流旋转来模拟这种情况。但是,我们将把这种情况留到下一节。

典型机翼-尾翼配置的 Alpha-Delta 域中的稳定性图。该图由 Scilab 使用输出脚本创建。
用于示例稳定性图的模型(机翼原点位于 X=5)。

使控制过于敏感或完全不稳定的最靠后的重心位置是什么?

这种状态由(几乎)水平的 CG 曲线表示。如果 CG 位于该坐标太靠近的位置,飞机将完全不稳定,因为即使最小的升降舵偏转也会导致 [平衡] 入射角发生巨大变化。现在,即使是理论上的,因为飞行动力学将使平衡变得不可能,所以飞机最终会沿着不稳定的路径飞行(与之前的问题不同,您会在尝试起飞的那一刻就注意到这一点)。对于没有任何计算机控制的飞机,正确的设计将限制 CG 到一个远离该坐标的位置。这个 CG 坐标通常被称为*中性点*或*气动中心*。不幸的是,民航(以及更多航空模型!)中的许多事故都是由于 CG 超过了这个点而造成的,因此了解它非常有意义。通常,民用飞机的认证规范会对不同飞机类别的重力加速度对操纵力梯度的上限进行限制。这个量可以通过 CG 曲线的斜率获得(但也需要知道升降舵铰链力矩和控制机构的特性)。对于航空模型或无人机,这个最后的值是无用的(因为飞行员无法感受到控制的机载刚度),并且可以直接从斜率中设置限制。

对于给定的升力系数和重心,需要多大的升降舵偏转?

这些状态由给定的 CG 曲线与 CL 曲线交叉的点给出。由于 CG 在飞行过程中通常只发生一点变化,因此这些点对于了解飞机在航程和续航方面的性能非常重要。

请注意,由于平衡是使用 Z 力分量和 Y 力矩分量考虑的,因此重心必须位于 X 轴上,才能使解有效。此外,由于没有包含油门,因此油门力也应该作用在 X 轴上。除此之外,该方法没有对动作的执行方式进行任何假设,甚至包括阻力对力矩的贡献,因此可以用于任何配置。如果您需要添加油门或任何其他动作,可以在 Scilab 脚本中手动添加。

要执行*alfa delta 扫描*,您可以输入以下命令

alfa_delta_scan;<alfa_1>;<alfa_2>;<alfa_step>;<surface_name>;<region_index>;<delta_1>;<delta_2>;<delta_step>

前三个参数与*alfa 扫描*相同。接下来的两个参数是将要偏转的襟翼的标识:升力面的名称(不区分大小写)和区域的索引(从 1 开始)。最后三个参数与前三个类似,但它们控制襟翼偏转范围。

如果在输入命令后,表面或襟翼无效(未找到),则该过程将中止。

以下数据是 OpenVOGEL *alfa delta 扫描*自动生成的 Scilab 脚本示例。您可以尝试在 Scilab 上运行它,以了解结果的外观。

// OpenVOGEL automatic script for alfa-delta scan
// Kernel version: 2.1-2020.05
// Original model: C:\...\scan.vog

X = [    2.00    4.00    6.00    8.00   10.00   12.00]
Y = [  -20.00  -15.00  -10.00   -5.00    0.00    5.00   10.00   15.00   20.00]
CL = [
  4.608154E-001  4.204594E-001  3.785778E-001  3.356219E-001  2.920815E-001  2.484650E-001  2.052767E-001  1.630145E-001  1.221453E-001
  6.028028E-001  5.630714E-001  5.216956E-001  4.791117E-001  4.357995E-001  3.922644E-001  3.490148E-001  3.065488E-001  2.653438E-001
  7.425317E-001  7.035352E-001  6.627821E-001  6.206924E-001  5.777329E-001  5.344030E-001  4.912140E-001  4.486656E-001  4.072419E-001
  8.789988E-001  8.408440E-001  8.008280E-001  7.593512E-001  7.168683E-001  6.738680E-001  6.308602E-001  5.883504E-001  5.468256E-001
  1.011228E+000  9.740175E-001  9.348486E-001  8.941022E-001  8.522159E-001  8.096694E-001  7.669651E-001  7.246132E-001  6.831051E-001
  1.138275E+000  1.102106E+000  1.063892E+000  1.023990E+000  9.828203E-001  9.408495E-001  8.985733E-001  8.564985E-001  8.151244E-001
]
CFz = [
  4.608527E-001  4.203977E-001  3.784443E-001  3.354460E-001  2.918928E-001  2.482961E-001  2.051587E-001  1.629757E-001  1.222121E-001
  6.026229E-001  5.627078E-001  5.212022E-001  4.785446E-001  4.352170E-001  3.917455E-001  3.485989E-001  3.063077E-001  2.653303E-001
  7.414089E-001  7.021558E-001  6.612238E-001  6.190391E-001  5.760721E-001  5.328664E-001  4.898604E-001  4.475741E-001  4.065132E-001
  8.759254E-001  8.374476E-001  7.972121E-001  7.556280E-001  7.131549E-001  6.703403E-001  6.276564E-001  5.854794E-001  5.444539E-001
  1.005720E+000  9.681273E-001  9.287057E-001  8.878469E-001  8.459948E-001  8.036856E-001  7.614793E-001  7.196228E-001  6.786699E-001
  1.128576E+000  1.091976E+000  1.053485E+000  1.013476E+000  9.723749E-001  9.306980E-001  8.890987E-001  8.477344E-001  8.070631E-001
]
CMy = [
 -3.864378E+000 -3.398209E+000 -2.912021E+000 -2.411109E+000 -1.901380E+000 -1.388781E+000 -8.795103E-001 -3.797225E-001  1.048313E-001
 -4.860076E+000 -4.398087E+000 -3.914910E+000 -3.415767E+000 -2.906407E+000 -2.392466E+000 -1.881052E+000 -1.377425E+000 -8.878010E-001
 -5.835478E+000 -5.379238E+000 -4.900740E+000 -4.405003E+000 -3.897652E+000 -3.384237E+000 -2.871843E+000 -2.366306E+000 -1.873239E+000
 -6.782238E+000 -6.333272E+000 -5.861016E+000 -5.370292E+000 -4.866604E+000 -4.355576E+000 -3.843656E+000 -3.337756E+000 -2.842890E+000
 -7.689027E+000 -7.248774E+000 -6.784290E+000 -6.300191E+000 -5.801808E+000 -5.294886E+000 -4.785464E+000 -4.280343E+000 -3.785410E+000
 -8.549503E+000 -8.119354E+000 -7.664151E+000 -7.188262E+000 -6.696827E+000 -6.195587E+000 -5.690682E+000 -5.188234E+000 -4.694368E+000
]
clf
title("Stability plot", "fontsize", 4)
xlabel("alpha [degrees]", "fontsize", 3)
ylabel("delta [degrees]", "fontsize", 3)
xgrid(3)
legends(["iso-CL", "iso-Xcg"], [2,5], "lr")
// CL countour lines
N_CL = 30
Stl_CL = 2*ones(1,N_CL)
contour2d(X, Y, CL, N_CL, Stl_CL)
// Expand CL And CM to refine Xcg
CFz_Spline = splin2d(X, Y, CFz)
CMy_Spline = splin2d(X, Y, CMy)
X_Int = linspace(  2.00,  12.00, 100)
Y_Int = linspace(-20.00,  20.00, 100)
[X_Grid,Y_Grid] = ndgrid(X_Int, Y_Int)
CFz_Int = interp2d(X_Grid, Y_Grid, X, Y, CFz_Spline)
CMy_Int = interp2d(X_Grid, Y_Grid, X, Y, CMy_Spline)
Xcg_Int = CMy_Int./ CFz_Int
N_Xcg = 45
Stl_Xcg = 5*ones(1,N_Xcg)
contour2d(X_Int, Y_Int, Xcg_Int, N_Xcg, Stl_Xcg)

圆周路径恢复性能

[edit | edit source]

在 α-δ 分析中,我们重点关注了稳定直线飞行期间的纵向控制特性。但是,我们在那一节中提到,CG 存在一个更严格的前方极限,并且这种情况发生在飞机在低速情况下沿圆周路径旋转(实际上:从俯冲中恢复)时。想象一下,飞机在接近失速空速的情况下飞行,因此升力系数和入射角处于允许的最大值。现在想象一下,飞机需要在紧急情况下尽快转弯。飞行员会将油门推到最大,并逐渐将升降舵拉到最大 [允许] 偏转,试图尽可能地将轨迹向上弯曲。对于给定的质量配置,飞机将如何表现?

仿真方法

[edit | edit source]

OpenVOGEL 允许您通过调整流体角速度(称为*Ω*的向量)来模拟飞机的旋转。现在让我们找出这种情况的简单数学描述。飞机在 XZ 平面上移动,因此速度和角速度的一些分量为零

然后,轨迹的曲率取决于角速度与速度之比

气流速度为

由于对于相同的曲率,流动的运动学将相同,我们可以固定一个参考速度,只调整角速度来获得一系列曲率(不同的圆周路径)。这就是我们所说的*omega_scan*的基础。

用于模拟恢复动作的自由体图。

借助自由体图(见图),我们可以写出飞机在轨迹最低点的平衡方程。在与升力方向对齐的垂直轴上(不要与 Z 轴混淆!),我们有

请注意,这里我们没有包括推进力。在 Y 轴周围,我们有力矩平衡方程

请注意,我们通过引入稳定的圆周路径简化了动力学,但是这种情况仍然类似于原始问题。

从力矩方程,我们可以直接获得每个圆周路径的 CG 坐标。对于这种简化的方法,该坐标将不依赖于速度或质量,因此为了清楚起见,曲率与 CG 坐标之间存在函数关系。

从力平衡方程,我们可以获得给定质量所需的飞机速度。这里我们必须考虑到升力取决于动压,因此也是速度平方的一个函数。通过进行一些算术*魔术*,我们得到

以及相关的重力加速度系数(总加速度与重力加速度之比)将为

所有这些意味着什么?如果你在数学上迷路了(这种情况会发生),这意味着通过获取我们omega_scan模拟集在最大升力和最大升降舵偏转时的结果,我们可以绘制等高线图,其中最大重力系数针对一系列质量和一系列重心坐标绘制。如果我们然后为高迎角机动选择一个最小目标重力系数,该图将为我们提供给定质量的允许最前重心位置。非常有用,不是吗?这也意味着,通过运行alfa_delta_scanomega_scan,你将能够理解你的模型在[准]稳定飞行中的大多数纵向控制(不是动态响应!我们还没有达到那里!)。

质量配置域中恢复图的示例。等高线对应于恒定的重力系数和恒定的速度。该图由 Scilab 使用输出脚本创建。

我们可以用数字举例说明。在所示图的模型中,如果着陆质量为 1200 公斤,我们仍然希望能够以 1.3g 的重力系数恢复,则重心不应放置在 X=0.94 后面。我们想要的重力系数越高,重心就必须越靠近气动中心。

omega 扫描分析需要调用omega_scan命令(毫不奇怪)。此模拟的典型脚本如下所示

readback
load;C:\...\omega_model.vog
set_velocity;80
set_alfa;12
set_delta;empenage;1;20
set_altitude;1000
pause
omega_scan;0.4;10;2000;4000;50

如你所见,该脚本允许你轻松调整迎角和偏转角,它们不是omega_scan函数的参数的一部分。该函数的签名如下所示

omega_scan;<Maximum Omega>;<Number of simulations>;<Minimum mass>;<Maximum mass>;<Mass range refinement>

第一个参数是角速度的最大 Y 分量,第二个参数是气动模拟的数量(等于评估的重心坐标的数量)。扫描将涵盖从 0 rad/s(直线路径)到提供的值的范围。接下来的两个参数分别是最小质量和最大质量,最后一个参数是质量范围内控制点的数量。结果,该命令将返回可以在 Scilab 环境中执行以获得设计图的 Scilab 脚本。脚本文件的文件名等于原始 OpenVOGEL 项目文件的名称,附加字符串_script和一个新的.sce扩展名。

最终状态(最急剧的恢复)

[编辑 | 编辑源代码]

你可能已经注意到,速度方程有点棘手,因为它有一个奇点,并且在某个路径曲率或质量之上可能采用复数解。事实上,这意味着飞机将无法以给定质量超过某个路径曲率(或者换句话说,如果你希望飞机能够以某个曲率拉升,它将无法超过某个质量)。这是合乎逻辑的,因为升力不是无限的,并且值是我们提供的任何可能空气速度的最大值。因此,你必须小心提供质量和曲率(以角速度和空速的形式)的范围。

如果你提供一个不切实际的质量范围,Scilab 脚本将警告你已超过最大范围,并且它会将上限降低到临界质量的 90%。这样你就不会看到图上的混乱。

现在让我们批判性地评估一下这种方法的缺点。

  • 旋转中心并不完全在重心处,而是在原点处,因此这会影响俯仰力矩。因此,当你运行此模拟时,尝试将原点定位在你认为重心将要位于的位置附近(如果你愿意,可以循环进行细化)。
  • 恢复过程中的真实路径并不完全是圆形的,并且速度也不恒定。强力恢复涉及不稳定的过渡,在此期间气动力以不同的方式演变。
  • 气动力是针对单个参考速度获得的(雷诺数受限)。
  • 我们没有包含推进力(尽管在大多数情况下,其影响可能可以忽略不计)。

这些负面因素并不意味着这种分析毫无用处。对于大多数实际应用,它将为你提供飞机性能的快速且相对准确的描述。原则上,它应该比大多数传统的数学描述要好。

华夏公益教科书