メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

固定翼航空機の非線形ダイナミクスと静的安定性を決定する

この例では、セスナ C182 のジオメトリと係数データを使用して、MATLAB ® で固定翼航空機を作成および解析するプロセスを示します。

航空機の作成に使用されたデータは、Jan Roskam著『Airplane Flight Dynamics and Controls』[1]から取得されました。

この例では次のことを説明します。

  • エレベーター制御面を作成してネストし、次にエルロン、ラダー、翼、垂直安定板を作成して、固定翼の空力面と制御面を設定します。

  • 操縦翼面に類似した固定翼航空機モデル上の推進モデルを作成します。

  • 航空機全体を定義します。

  • 航空機の係数を定義します。

  • 数値解析のために航空機を準備します。

  • 数値解析を実行します。

固定翼の空力および操縦面の設定

Aero.FixedWing.Surface クラスは、空力面と制御面の両方として機能します。

この動作は、クラスの Controllable プロパティによって制御されます。

Controllableon に設定すると、コントロール サーフェスと ControlState 変数が作成されます。

操縦面を空力面上にネストすることで、航空機の実際の構造を模倣します。

以下の例では、エレベーターのコントロール サーフェスを作成し、それを水平安定板上にネストします。

elevator = fixedWingSurface("Elevator", "on","Symmetric",[-20,20])
elevator = 
  Surface with properties:

            Surfaces: [1x0 Aero.FixedWing.Surface]
        Coefficients: [1x1 Aero.FixedWing.Coefficient]
        MaximumValue: 20
        MinimumValue: -20
        Controllable: on
            Symmetry: "Symmetric"
    ControlVariables: "Elevator"
          Properties: [1x1 Aero.Aircraft.Properties]

elevator.Coefficients = fixedWingCoefficient("Elevator")
elevator = 
  Surface with properties:

            Surfaces: [1x0 Aero.FixedWing.Surface]
        Coefficients: [1x1 Aero.FixedWing.Coefficient]
        MaximumValue: 20
        MinimumValue: -20
        Controllable: on
            Symmetry: "Symmetric"
    ControlVariables: "Elevator"
          Properties: [1x1 Aero.Aircraft.Properties]

horizontalStabilizer = fixedWingSurface("HorizontalStabilizer", "Surfaces", elevator)
horizontalStabilizer = 
  Surface with properties:

            Surfaces: [1x1 Aero.FixedWing.Surface]
        Coefficients: [1x1 Aero.FixedWing.Coefficient]
        MaximumValue: Inf
        MinimumValue: -Inf
        Controllable: off
            Symmetry: "Symmetric"
    ControlVariables: [0x0 string]
          Properties: [1x1 Aero.Aircraft.Properties]

固定翼オブジェクトの各プロパティは、構築時に Name、Value 引数を通じて設定することもできます。この作成方法は、例の残りの部分でも使用されます。

次に、エルロン、ラダー、翼、垂直安定板を組み立てます。

aileron = fixedWingSurface("Aileron", "on", "Asymmetric", [-20,20], ...
    "Coefficients", fixedWingCoefficient("Aileron"));

rudder = fixedWingSurface("Rudder", "on", "Symmetric", [-20,20], ...
    "Coefficients", fixedWingCoefficient("Rudder"));

wing = fixedWingSurface("Wing","Surfaces", aileron);

verticalStabilizer = fixedWingSurface("VerticalStabilizer","Surfaces", rudder);

推進力の定義

Aero.FixedWing.Thrust オブジェクトを使用して、操縦翼面に似た固定翼航空機モデルの推進モデルを作成します。

Aero.FixedWing.Thrust オブジェクトは常に制御可能です。空力面や操縦面のようにネストすることはできません。

propeller = fixedWingThrust("Propeller","Coefficients", fixedWingCoefficient("Propeller"))
propeller = 
  Thrust with properties:

        Coefficients: [1x1 Aero.FixedWing.Coefficient]
        MaximumValue: 1
        MinimumValue: 0
        Controllable: on
            Symmetry: "Symmetric"
    ControlVariables: "Propeller"
          Properties: [1x1 Aero.Aircraft.Properties]

航空機の建造

空力面、操縦面、および推力コンポーネントを定義したら、航空機全体を定義します。

まず、航空機用に別の Aero.Aircraft.Properties クラスを定義します。このクラスを使用して、コンポーネントのバージョンと、特定の航空機が使用しているコンポーネントを追跡します。

すべての Aero.FixedWing クラスと Aero.Aircraft クラスにこのプロパティが含まれています。

C182Properties = Aero.Aircraft.Properties(...
    "Name"       , "Cessna C182", ...
    "Type"       , "General Aviation", ...
    "Version"    , "1.0", ...
    "Description", "Cessna 182 Example")
C182Properties = 
  Properties with properties:

           Name: "Cessna C182"
    Description: "Cessna 182 Example"
           Type: "General Aviation"
        Version: "1.0"

C182 = Aero.FixedWing(...
    "Properties"       , C182Properties, ...
    "UnitSystem"       , "English (ft/s)", ...
    "AngleSystem"      , "Radians", ...
    "TemperatureSystem", "Fahrenheit", ...
    "ReferenceArea"    , 174, ...
    "ReferenceSpan"    , 36, ...
    "ReferenceLength"  , 4.9, ...
    "Surfaces"         , [wing, horizontalStabilizer, verticalStabilizer], ...
    "Thrusts"          , propeller)
C182 = 
  FixedWing with properties:

        ReferenceArea: 174
        ReferenceSpan: 36
      ReferenceLength: 4.9000
         Coefficients: [1x1 Aero.FixedWing.Coefficient]
     DegreesOfFreedom: "6DOF"
             Surfaces: [1x3 Aero.FixedWing.Surface]
              Thrusts: [1x1 Aero.FixedWing.Thrust]
          AspectRatio: 7.4483
           Properties: [1x1 Aero.Aircraft.Properties]
           UnitSystem: "English (ft/s)"
    TemperatureSystem: "Fahrenheit"
          AngleSystem: "Radians"

航空機係数の設定

次に、航空機の係数を定義します。

これらの係数は航空機の動的動作を表します。この例では、航空機の線形動作を定義するスカラー定数係数を定義します。

固定翼航空機の非線形動的動作を定義するには、Simulink.LookupTable 係数を定義します。Simulink .LookupTables は、この例では使用されません。Simulink .LookupTables を使用した例を見るには、線形制御と静的安定性解析のための状態空間モデルの解析 の例を開いてください。

デフォルトでは、すべての係数は 0 です。

BodyCoefficients = {
    'CD', 'Zero', 0.027;
    'CL', 'Zero', 0.307;
    'Cm', 'Zero', 0.04;
    'CD', 'Alpha', 0.121;
    'CL', 'Alpha', 4.41;
    'Cm', 'Alpha', -0.613;
    'CD', 'AlphaDot', 0
    'CL', 'AlphaDot',  1.7;
    'Cm', 'AlphaDot', -7.27;
    'CD', 'Q', 0;
    'CL', 'Q', 3.9;
    'Cm', 'Q', -12.4;
    'CY', 'Beta', -0.393;
    'Cl', 'Beta', -0.0923;
    'Cn', 'Beta', 0.0587;
    'CY', 'P', -0.075;
    'Cl', 'P', -0.484;
    'Cn', 'P', -0.0278;
    'CY', 'R', 0.214;
    'Cl', 'R', 0.0798;
    'Cn', 'R', -0.0937;
    };
 
C182 = setCoefficient(C182, BodyCoefficients(:, 1), BodyCoefficients(:, 2), BodyCoefficients(:, 3));

係数は航空機の任意のコンポーネントに定義できます。これらのコンポーネントには、任意の Aero.FixedWing.Surface または Aero.FixedWing.Thrust を含めることができます。

setCoefficient メソッドは Component Name,Value 引数を提供します。この引数は、目的のコンポーネント名の係数を取得するため、航空機上のコンポーネントの正確な位置を知る必要がなくなります。

有効なコンポーネント名は、コンポーネントの Name プロパティによって異なります。

AileronCoefficients = {
    'CY', 'Aileron', 0;
    'Cl', 'Aileron', 0.229;
    'Cn', 'Aileron', -0.0216;
    };
RudderCoefficients = {
    'CY', 'Rudder', 0.187;
    'Cl', 'Rudder', 0.0147;
    'Cn', 'Rudder', -0.0645;
    };
ElevatorCoefficients = {
    'CD', 'Elevator', 0;
    'CL', 'Elevator', 0.43;
    'Cm', 'Elevator', -1.122;
    };
PropellerCoefficients = {
    'CD', 'Propeller', -21.1200;
    };

C182 = setCoefficient(C182, AileronCoefficients(:, 1), AileronCoefficients(:, 2), AileronCoefficients(:, 3), "Component", "Aileron");
C182 = setCoefficient(C182, ElevatorCoefficients(:, 1), ElevatorCoefficients(:, 2), ElevatorCoefficients(:, 3), "Component", "Elevator");
C182 = setCoefficient(C182, RudderCoefficients(:, 1), RudderCoefficients(:, 2), RudderCoefficients(:, 3), "Component", "Rudder");
C182 = setCoefficient(C182, PropellerCoefficients(:, 1), PropellerCoefficients(:, 2), PropellerCoefficients(:, 3), "Component", "Propeller");

現在の状態の定義

固定翼航空機は完全に構築されており、数値解析の準備が整っています。

固定翼航空機の数値解析を実行するには、Aero.FixedWing.State オブジェクトを定義します。

Aero.FixedWing.State オブジェクトは、ある時点における Aero.FixedWing オブジェクトの現在の状態を定義します。Aero.FixedWing.State では、質量や慣性などの航空機の動的な物理的特性も定義されます。

この例では、巡航状態を分析します。

CruiseState = Aero.FixedWing.State(...
    "UnitSystem",C182.UnitSystem,...
    "AngleSystem",C182.AngleSystem, ...
    "TemperatureSystem",C182.TemperatureSystem, ...
    "Mass",82.2981, ...
    "U", 220.1, ...
    "AltitudeMSL",5000);

CruiseState.Inertia.Variables = [
    948, 0,    0   ;
    0  , 1346, 0   ;
    0  , 0   , 1967;
    ];

CruiseState.CenterOfGravity = [0.264, 0 , 0] .* C182.ReferenceLength;
CruiseState.CenterOfPressure = [0.25, 0, 0] .* C182.ReferenceLength;
CruiseState.Environment = aircraftEnvironment(C182,"ISA",CruiseState.AltitudeMSL);

制御状態の設定

環境と動的物理特性に加えて、Aero.FixedWing.State クラスは現在の制御面の偏向と推力の位置も保持します。これらの位置は ControlStates プロパティに保持されます。このクラスを使用して、コントロールの状態を設定します。

デフォルトでは、このプロパティは空です。航空機の操縦面および推力情報からプロパティを初期化します。

これらの制御状態を設定するには、以下の setupControlStates メソッドを使用します。

CruiseState = setupControlStates(CruiseState, C182)
CruiseState = 
  State with properties:

                    Alpha: 0
                     Beta: 0
                 AlphaDot: 0
                  BetaDot: 0
                     Mass: 82.2981
                  Inertia: [3x3 table]
          CenterOfGravity: [1.2936 0 0]
         CenterOfPressure: [1.2250 0 0]
              AltitudeMSL: 5000
             GroundHeight: 0
                       XN: 0
                       XE: 0
                       XD: -5000
                        U: 220.1000
                        V: 0
                        W: 0
                      Phi: 0
                    Theta: 0
                      Psi: 0
                        P: 0
                        Q: 0
                        R: 0
                   Weight: 2.6488e+03
              AltitudeAGL: 5000
                 Airspeed: 220.1000
              GroundSpeed: 220.1000
               MachNumber: 0.2006
             BodyVelocity: [220.1000 0 0]
           GroundVelocity: [220.1000 0 0]
                       Ur: 220.1000
                       Vr: 0
                       Wr: 0
          FlightPathAngle: 0
              CourseAngle: 0
     InertialToBodyMatrix: [3x3 double]
     BodyToInertialMatrix: [3x3 double]
         BodyToWindMatrix: [3x3 double]
         WindToBodyMatrix: [3x3 double]
    BodyToStabilityMatrix: [3x3 double]
    StabilityToBodyMatrix: [3x3 double]
          DynamicPressure: 49.6090
              Environment: [1x1 Aero.Aircraft.Environment]
            ControlStates: [1x6 Aero.Aircraft.ControlState]
         OutOfRangeAction: "Limit"
         DiagnosticAction: "Warning"
               Properties: [1x1 Aero.Aircraft.Properties]
               UnitSystem: "English (ft/s)"
        TemperatureSystem: "Fahrenheit"
              AngleSystem: "Radians"

航空機の構成ごとにこれを 1 回だけ実行します。航空機に制御面または推力が追加または削除されていない場合は、この手順をスキップします。

数値解析の実行

この時点で、航空機と状態は完全に構築され、定義されています。

固定翼航空機には、力とモーメント、非線形ダイナミクス、静的安定性など、さまざまな数値解析手法が付属しています。

力とモーメント

ある瞬間に航空機にかかる力とモーメントを計算するには、forcesAndMoments メソッドを使用します。

これらの力とモーメントは航空機の物体力内にあります。別のフレームで定義された係数には、ボディ座標系に変換するために適切な変換行列が適用されます。

[F, M] = forcesAndMoments(C182, CruiseState)
F = 3×1

 -233.0633
         0
   -1.2484

M = 3×1
103 ×

         0
    1.5101
         0

非線形ダイナミクス

航空機の動的動作を計算するには、nonlinearDynamics メソッドを使用します。

nonlinearDynamics メソッドは、航空機の選択された自由度の変化率のベクトルを返します。ベクトルのサイズは自由度によって異なります。時間の経過に伴う航空機の動的動作を計算するには、ode45 などの ode ソルバーと組み合わせてベクトルを使用します。

さまざまな航空機設計の忠実度をすばやく反復処理したり、出力ベクトルから不要な状態を削除したりするには、選択した自由度を変更します。これらの変化率は以下のように定義されます。

load("astFixedWingDOFtable.mat").DOFtable
ans=12×4 table
                  PM4    PM6    3DOF    6DOF
                  ___    ___    ____    ____

    dXN /dt       "X"    "X"    "X"     "X" 
    dXE /dt       ""     "X"    ""      "X" 
    dXD /dt       "X"    "X"    "X"     "X" 
    dU /dt        "X"    "X"    "X"     "X" 
    dV /dt        ""     "X"    ""      "X" 
    dW /dt        "X"    "X"    "X"     "X" 
    dP /dt        ""     ""     ""      "X" 
    dQ /dt        ""     ""     "X"     "X" 
    dR /dt        ""     ""     ""      "X" 
    dPhi /dt      ""     ""     ""      "X" 
    dTheta /dt    ""     ""     "X"     "X" 
    dPsi /dt      ""     ""     ""      "X" 

dydt = nonlinearDynamics(C182, CruiseState)
dydt = 12×1

  220.1000
         0
         0
   -2.8319
         0
   -0.0152
         0
    1.1219
         0
         0
      ⋮

静的安定性

静的安定性とは、航空機が初期状態から小さな変動を受けた後に元の状態に戻ろうとする傾向のことです。これは民間航空機の重要な機能であり、動的安定性を維持するための複雑なコントローラーの必要性を減らします。状況によっては、高度な操縦性を必要とする航空機は静的不安定性を選択する場合があります。

Aero.FixedWing オブジェクトの静的安定性法は、航空機の現在の状態における摂動による力とモーメントの変化から計算します。

この方法では、変動を、ゼロ未満、ゼロより大きい、ゼロに等しいなどの事前定義された一連の基準と比較します。カスタム基準を指定することもできます。この方法では、静的安定性を次のように評価します。

  • 基準が満たされると、摂動は静的に安定します。

  • 基準が満たされない場合、摂動は静的に不安定になります。

  • 摂動が 0 の場合、摂動は静的に中立です。

staticStability メソッドは要件ベースの分析を実行しません。この方法は予備設計段階でのみ使用してください。

[stability, derivatives] = staticStability(C182, CruiseState)
stability=6×8 table
             U            V            W         Alpha        Beta         P           Q           R    
          ________    __________    ________    ________    ________    ________    ________    ________

    FX    "Stable"    ""            ""          ""          ""          ""          ""          ""      
    FY    ""          "Unstable"    ""          ""          ""          ""          ""          ""      
    FZ    ""          ""            "Stable"    ""          ""          ""          ""          ""      
    L     ""          ""            ""          ""          "Stable"    "Stable"    ""          ""      
    M     "Stable"    ""            ""          "Stable"    ""          ""          "Stable"    ""      
    N     ""          ""            ""          ""          "Stable"    ""          ""          "Stable"

derivatives=6×8 table
             U            V            W       Alpha       Beta          P          Q          R   
          _______    ___________    _______    ______    _________    _______    _______    _______

    FX    -2.1178    -7.2191e-07     7.2946    1605.9    -0.035089          0          0          0
    FY          0         14.354          0         0       3159.3     52.945          0    -151.07
    FZ     -24.08    -5.0022e-07    -174.01    -38300      -0.0265          0    -374.73          0
    L           0           -138          0         0       -30374     -12300          0       2028
    M      13.722    -5.8208e-06    -129.74    -28555     -0.28018          0    -5863.8          0
    N           0         81.892          0         0        18024    -710.13          0    -2370.9

参考文献

  1. Roskam, J.、「飛行機の飛行力学と自動飛行制御 (パート 1)」、DAR Corporation、2003 年。

参考

| | | | |

トピック