飛翔体AGM-84 ~これは飛行機として飛ぶのか~

 *2021/11/21: 本文記入.記事を執筆途中から,完成済みに変更.

 下図のような飛行物体、一般に”ミサイル”と呼ぶもの、を観て、皆さんはそれらがどのように飛んでいることを想像するだろうか?恐らく、ロケットやロケット花火のように、推進機の推力で力ずくで空中留まっていると想像し、飛行機のように翼の有無揚力で”飛行”しているとは思っていないのではないだろうか。

 *”ミサイル”という単語は物騒だし、本記事は兵器としてのミサイルの機能について語るものではないので、以下、”使い捨て式無人高速化学エネルギ配達ドローン”または”無人配達ドローン”と称する。

 下図は”AGM-84 ハープーン”(型番はRGMやUGMのものもある)という機種で、戦闘攻撃機から切り離し・打ち出しされた瞬間のもの。本記事では、この機が”飛行機”らしく飛ぶのかをAircraftDynamicsライブラリを使ってシミュレートする。


*画像元:https://www.globalsecurity.org/military/systems/munitions/agm-84-pics.htm

記事を通して言いたいこと(結論)

 例によって、冒頭で述べておく。

  • 翼が小さい飛翔体である”AGM-84 ハープーン”は飛行機には見えないが、確かに翼が生む揚力により飛行機として巡行していることをシミュレーションで確かめた。


モデル化対象(とその周辺について)

    AGM-84 ハープーン(RGM-84, UGM-84)

     アメリカが誇るベストセラーの無人配達ドローン。遠方の艦船に対して”炸薬という形で実装された化学エネルギ”を配達し、配達先で化学エネルギを熱と空気の運動に変換する(爆発する)のが役割。航空機、海上艦船/地上、または潜水艦から発進し、長距離を亜音速で飛行する。

    下図は海上艦船のキャニスターからの発進。


    下図は潜水艦発射型が、浮上用カプセルから空中に飛び出す瞬間。



シミュレーションモデル

    Diagram

     2自由度質点運動モデル.Diagramが大規模に見えるが,下半分の複雑な部分は総て機体の挙動を意図したものにするための制御回路である.機体部分は有限スパン翼,抵抗体,質点のコンポーネントのみから成り非常にシンプルだ.

     制御回路は2つある.

     1つは機速(マッハ数)の命令値に応じて機の推力を操作するもの.PI制御にてセンサコンポーネントから得た値と命令値の乖離から推力を決定した後,レートリミット(変化率に制限を掛けて急激な操作を禁止する)と操作値リミットを通り,エンジンダイナミクスの代用品である2次遅れ要素を経て機体質点コンポーネントに入力される最終的な推力値が決まる(2次遅れ要素は制御回路の一部ではなく,物理コンポーネントとみなした方が正しいかもしれない).

     もう1つは,飛行高度の命令値に応じて機のピッチ角を操作するもので制御方式は機速同様PI.ただしフィードバックループは2つ有り,1つめが高度命令値とセンサから得た高度の乖離からPIで飛行経路角の目標値を定める.そして次に,飛行経路角の目標値とセンサから得た値の乖離からPIで機体のピッチ角を定め,操作値リミットを経てピッチ角指示が機体に入力されるようになっている.余談だが,高度命令値から直接PIでピッチ角指示値を決定しようとしたが,計算発散,異常姿勢に陥る,と言った事象が連発し,上手く制御ゲインを設定出来なかっという経緯が有る.ここに至る前に,高度命令値ではなく,飛行経路角命令値に機体を従わせる(機体に指示するのはピッチ角で同じ)制御ロジック持ったモデルを難無く作成出来ていたことから,それでは,その飛行経路角命令値を,目指したい高度と実際の高度の乖離から決めるロジックを手前に追加しようという流れとなった.

     接続線が多く煩雑なのは容赦願いたい.計算機能を造るという目的で使い勝手への考慮を欠いてライブラリを造り進めてしまっており,整備が行き届いていない.expandable connectorをより上手く活用して,変数の受け渡しがシンプルになるように改修することは目下の課題だ.


     この機体は,一般的な飛行機と異なり,下図に示すように主翼が水平にではなく上下斜め45°に取り付けられている.図中のベクトルが表す通り,翼が発生した揚力のうち機体フレームから見て上向きに働くのは,発生揚力*cos(45°)に限られる.これを加味するため,翼コンポーネントの出力Fzに定数掛けコンポーネントでcos(45°)を掛け算してから質点運動コンポーネントに渡している.

     *下図を見て,”何故翼が生じる揚力の向きが青色実線矢印の向きに決まるのか.反対(斜め下向き)に揚力が生じる事は無いのか?”と疑問に思う方がいるかも知れない.詳しくは航空力学を学んで頂きたいが,これに対する答えは,”翼が(斜め)下向きに揚力を発生することも当然有る.水平巡行時あ,機が,翼が(斜め)上向きに揚力を生ずるような姿勢をとっている.(加えて,上向き揚力を生みやすいような翼型に造られている)”となる.一般の飛行機もそうだが,翼が揚力を上向き/下向きどちらに生じるかは翼型と機体姿勢(正確には”翼の相対空気に対する姿勢”)によって決まる.そして,翼型は揚力が上向きに生じ易いよう造られており,機体姿勢も僅かだが頭上げ姿勢で飛んでいるのだ.恐らく,各種ミサイルは翼型は対象翼で姿勢によるもののみだろうとは考えられるが.


    ●シミュレーションモデル情報

    Parameters

     さて,この”飛行機”がこのような小さい翼で飛ぶのかを計算で確かめる,事が第1の目的なのだから,parameterのうち主翼の寸法情報,機体質量,エンジン推力が重要なparameterだ.

    • 翼寸法:
    •  公開された寸法値や図面は発見出来なかったが,wikipediaに非常に有用な絵が掲載されていた.1 [m] の長さを示す縮尺が併記された横面図だ.これをpower pointに取り込めば,1 [m] 縮尺と翼に合わせたオートシェイプのサイズ情報から翼部寸法が算出可能だ.

       横面図から読み取った寸法と,wikipediaに記載されている翼を含めた幅と胴体径の情報を合わせると,主翼1枚は下図に示す台形であると特定された.そしてここまで解れば,テーパー付き矩形翼のparameter,翼面積とアスペクト比も機械的算出される.



    • 翼型parameter
    •  翼には平面形状情報だけでなく,翼型(断面形状)から決まる,揚力係数傾きなどの諸元値も必要だが,それらは情報を発見出来ないため,現実的かつ見積が過大にならない仮定値を使う.航空力学の文献巻末に記載されていた,対象翼型NACA0012のCl,Cdの情報を読み取った値を与える.この翼型は非常に古典的なものであり,これを上回る性能を持つものは昨今数多有り,揚力・揚抗比を実物よりも過少に見積もることは有るだろうが,過大に見積もってしまうことはまず無い筈だ.

     残りは下記の通り,wikipediaに情報が有るものを使う.

    • 機体質量:519 [kg]
    • エンジンの定格推力:2900 [N]

シミュレーション実行

    Input

     本例題の最大目的,飛翔体AGM-84が飛行機として翼によって飛んでいるのかを計算で確かめること,に対してはinputを変化させる必要は無く,飛行高度・速度を現実的な値で一定に保った定常状態さえ作り出せれば良い.だが,飛行高度・速度を任意のものとするために制御回路を組み込んでいるので,それらが現実的な挙動となっているかを確かめるため,命令値を変化させておく.

    1. 飛行高度命令値:u_r_alt.y
    2.  飛行高度55 [m] でシミュレーションを開始し,45 [m] に降下させる.非常に低いが,実際本機は目標手前まで海面直上超低高度を巡行するのが一般的な挙動である(「シースキミング」).


    3. 飛行マッハ数命令値:u_r_Mn.y
    4.  命令速度を0.8から0.85に途中で増速させる.尚,本モデルでは,シミュレーション開始瞬間の飛行速度は飛行姿勢やエンジン推力などからoutputとして決まり,ある程度の時間を経て命令値0.8に静定してゆくことになる.


    Variables

    1. 飛行高度: aircraftMassCenter1.FltStatesBus1.fltStates.alt
    2.  多少オーバーシュート,振動を伴うが短時間で2,30 [s] の間に目標高度に静定している.オーバーシュートは2から3 [m] といった程度のもので,高度45 [m] 前後でシースキミングを実施する上では実害無い程度だろう.

       注目しておいて欲しいのは時刻300 [s] 後の僅かな動き.このタイミングでは高度に関わる操作はしておらず,飛行速度命令値を増加させ,エンジン推力が増されただけだ.しかしながら,昇降挙動に影響が出ており,推力増加に対して機体が上昇しようとし,その動きを高度制御ロジックが機体頭上げ姿勢を下げて抑えていることが後述の飛行状態角の挙動と合わせると読み取れる.小型飛行機をシミュレーションソフトで(若しくは実物)を飛ばすとよく解るが,飛行機と言うのは,スロットルレバーを推して推力を増すと真っ直ぐ飛びながら速度が増えるのではなく,上昇しようとするものなのだ.


    3. 飛行マッハ数: aircraftMassCenter1.FltStatesBus1.fltStates.Mn
    4.  多少オーバーシュートを伴いながら命令値に静定させられている.前述の高度に比べると,振動がほぼ伴わなず,静定に掛かる時間が長いが,飛行速度は高度に比べると応答性は求められないだろうとの考えから,ゆっくりと振動なく静定するようなゲインを設定した.また,”アクチュエータ”として操作するものがエンジン推力である点も理由の1つ.エンジンは舵面角度に比べると急激に動かす事が好ましくない筈だ.


    5. 飛行状態角度: aircraftMassCenter1.FltStatesBus1.fltStates.theta, .gamma, .alpha
    6.  これらが本例題の本題だ.過渡応答状態の挙動は無視し,静定後のものに注目だ.静定状態のピッチ角,迎角が,翼が失速するより手前の小さなものであれば,この機は飛行機として翼の生む揚力によって飛行していることになり,失速迎角より大きな角度で静定していれば,翼は機を持ち上げる機器として機能しておらず,推力の鉛直成分で無理矢理空中に保持されていることになる.

       結果は,飛行機として翼の揚力で機を持ち上げて飛んでいる事になる.加速前でピッチ角,迎角は10°弱(飛行経路角が0°なので,ピッチ角=迎角),加速後で9°弱と,翼失速を起こす角度より小さい角度で巡行している.約10°のと言うのは,一般的な飛行機から見ると大きな頭上げ姿勢だ.しかし,低速飛行や上昇時には取り得るピッチ,迎角だし,本モデルで用いている翼型の失速迎角は15°なので(正確な言い方をすると,15°で失速するように設定している),それに対して余裕を残して飛んでいるとは言える.


    7. エンジン推力: aircraftMassCenter1.thrust
    8.  翼が失速はしていないが,異常に大きなエンジン推力でもって水平飛行を維持していないか,エンジン推力についても,現実的範囲内(定格値以下)で作動しているか確認する.

       *速度制御ロジックが出す推力指示値が非現実的なものであっても,そのままその値をエンジン推力として機体に与えないようにリミッタは設けているが,シミュレーション開始直後の過渡時などに対応できるように,0 [N] ~ 定格推力値より若干広い範囲の推力を発生させられるよう広めの値としている.

       300 [s] からの加速応答時を含めて,定格2900 [N] を超える推力を出す事は無く済んでいる.0 [s] 直後に推力が 0 [N] を下回ってしまっている状態が有るが,これは,上述の通り,初期速度が他の初期値設定からoutputとして決まってきており,その初期状態の作り方が悪いがために起きているだけのものだ.初期速度がマッハ1を超過するような異常に高いものとなってしまっており,初期姿勢角の設定が過少なのだろう.


    9. エンジン推力比(定格値に対する比): thrust_nominal.u
    10.  前項の表示を,定格推力で無次元化しただけのもの.


       以下は,本題とは直接関係の無い参考情報.揚力係数の,2D(無限スパン)と3D(有限スパン)の違いや,翼の誘導抗力が,翼全体揚力に占める割合など,”翼のアスペクト比が極端に短い”事による特徴が多数確認できる.

    11. 揚力係数: wing.CL, wing.airfoilSimple001.Cl

    12. 揚抗比: aircraftMassCenter1.LqD, wing.LqD, dragObjSimple001.Df

    13. 抗力: aircraftMassCenter1.drag, wing.Df,

    14. 翼抗力内訳: wing.Df, wing.Df0, wing.DfFric, wing.DfInduced, wing.DfPress

後書き・まとめ

 毎度同様、ほぼ冒頭で述べたことの繰り返しとなるが、

  • 翼が小さい飛翔体である”AGM-84 ハープーン”は飛行機には見えないが、確かに飛行機として巡行していることをシミュレートした。

以上

コメント

タイトルとURLをコピーしました