跳轉至內容

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%。這樣你就不會看到圖上的混亂。

現在讓我們批判性地評估一下這種方法的缺點。

  • 旋轉中心並不完全在重心處,而是在原點處,因此這會影響俯仰力矩。因此,當你執行此模擬時,嘗試將原點定位在你認為重心將要位於的位置附近(如果你願意,可以迴圈進行細化)。
  • 恢復過程中的真實路徑並不完全是圓形的,並且速度也不恆定。強力恢復涉及不穩定的過渡,在此期間氣動力以不同的方式演變。
  • 氣動力是針對單個參考速度獲得的(雷諾數受限)。
  • 我們沒有包含推進力(儘管在大多數情況下,其影響可能可以忽略不計)。

這些負面因素並不意味著這種分析毫無用處。對於大多數實際應用,它將為你提供飛機效能的快速且相對準確的描述。原則上,它應該比大多數傳統的數學描述要好。

華夏公益教科書