メインコンテンツ

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

航空機の状態の追加による固定翼航空機のカスタマイズ

この例では、固定翼機のカスタム状態を構築および定義する方法を示します。

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

  • カスタム状態とそれが使用されるタイミングを定義します。

  • 基本的なカスタム状態を作成します。

  • 高度なカスタム状態を作成します。

  • 固定翼機の解析でカスタム状態を使用します。

カスタム状態とは何ですか?

デフォルトでは、固定翼状態オブジェクトには固定された状態値のセットが存在します。これらには、迎角、対気速度、高度などが含まれます。

これらの状態は、固定翼オブジェクト内で、無次元係数を次元化したり、ルックアップ テーブルのブレークポイントにデータを提供したりするために使用されます。

ただし、このデフォルトの状態セットでは、航空機の望ましい状態がすべて取り込まれない場合があります。これはカスタム状態が使用される場合です。

カスタム状態を定義することで、固定翼機の任意のコンポーネント内で使用できる新しい状態値を作成できます。

カスタム状態の定義

Aero.FixedWing.State クラスを使用してカスタム状態を作成するには:

  1. 新しいクラスを定義します。このクラスは Aero.FixedWing.State から継承する必要があります。

  2. クラスに新しい依存プロパティを追加して、カスタム状態を定義します。

  3. カスタム状態クラスで get.State メソッドを定義します。

以下は、カスタム状態クラス MyState がカスタム状態値 MyValue で定義されている単純な状態の例です。

依存プロパティの get メソッドは、状態にある他の任意のプロパティにアクセスできます。この場合、MyValue は地上前進速度 U を使用します。

classdef MyState < Aero.FixedWing.State
    
    properties (Dependent)
        MyValue
    end
    
    methods
        function value = get.MyValue(obj)
            value = obj.U * 10;
        end
    end
end

カスタム状態のより高度な例としては、デ・ハビランド・ビーバー航空機モデル[1]があり、このモデルでは、多数のカスタム状態を使用して係数を次元化しています。このカスタム状態は、以下では「astDehavillandBeaverState」として表示されます。

classdef astDehavillandBeaverState < Aero.FixedWing.State
    
    properties (Dependent)
        Alpha2
        Alpha3
        Beta2
        Beta3
        
        b2V
        cV
        qcV
        pb2V
        rb2V
        betab2V
        
        AileronAlpha
        FlapAlpha
        ElevatorBeta2
        RudderAlpha
    end
    
    methods
        function value = get.Alpha2(obj)
            value = obj.Alpha ^ 2;
        end
        function value = get.Alpha3(obj)
            value = obj.Alpha ^ 3;
        end
        function value = get.Beta2(obj)
            value = obj.Beta ^ 2;
        end
        function value = get.Beta3(obj)
            value = obj.Beta ^ 3;
        end
        
        function value = get.b2V(obj)
           value = 14.6300 / (2*obj.Airspeed);
        end
        function value = get.cV(obj)
           value = 1.5875 / (obj.Airspeed);
        end
        
        function value = get.qcV(obj)
           value = obj.Q * obj.cV;
        end
        function value = get.pb2V(obj)
           value = obj.P * obj.b2V;
        end
        function value = get.rb2V(obj)
           value = obj.R * obj.b2V;
        end
        function value = get.betab2V(obj)
           value = obj.Beta * obj.b2V;
        end
        
        function value = get.AileronAlpha(obj)
            value = obj.getState("Aileron") * obj.Alpha;
        end
        function value = get.FlapAlpha(obj)
            value = obj.getState("Flap") * obj.Alpha;
        end
        function value = get.ElevatorBeta2(obj)
            value = obj.getState("Elevator") * obj.Beta2;
        end
        function value = get.RudderAlpha(obj)
            value = obj.getState("Rudder") * obj.Alpha;
        end
    end
end

このカスタム状態は、固定翼状態の定義済み状態プロパティを直接使用するだけでなく、getState メソッドを使用して操舵面の偏向角度を抽出します。カスタム状態の get メソッドでは、状態またはメソッドの任意の組み合わせを使用できます。

カスタム状態の使用

カスタム状態を定義したら、分析方法でカスタム状態を使用します。

[beaver, cruise] = astDehavillandBeaver()
beaver = 
  FixedWing with properties:

        ReferenceArea: 23.2300
        ReferenceSpan: 14.6300
      ReferenceLength: 1.5875
         Coefficients: [1×1 Aero.FixedWing.Coefficient]
     DegreesOfFreedom: "6DOF"
             Surfaces: [1×3 Aero.FixedWing.Surface]
              Thrusts: [1×1 Aero.FixedWing.Thrust]
          AspectRatio: 9.2138
           Properties: [1×1 Aero.Aircraft.Properties]
           UnitSystem: "Metric"
    TemperatureSystem: "Kelvin"
          AngleSystem: "Radians"

cruise = 
  astDehavillandBeaverState with properties:

                   Alpha2: 0.0170
                   Alpha3: 0.0022
                    Beta2: 0.0036
                    Beta3: 2.1974e-04
                      b2V: 0.1625
                       cV: 0.0353
                      qcV: 0
                     pb2V: 0
                     rb2V: 0
             AileronAlpha: 0.0012
                FlapAlpha: 0
            ElevatorBeta2: -1.5476e-04
              RudderAlpha: -0.0060
                    Alpha: 0.1303
                     Beta: 0.0603
                 AlphaDot: 0
                  BetaDot: 0
                     Mass: 2.2882e+03
                  Inertia: [3×3 table]
          CenterOfGravity: [0 0 0]
         CenterOfPressure: [0 0 0]
              AltitudeMSL: 2202
             GroundHeight: 0
                       XN: 0
                       XE: 0
                       XD: -2202
                        U: 44.5400
                        V: 2.7140
                        W: 5.8360
                      Phi: 0
                    Theta: 0.1309
                      Psi: 0
                        P: 0
                        Q: 0
                        R: 0
                   Weight: 2.2448e+04
              AltitudeAGL: 2202
                 Airspeed: 45.0026
              GroundSpeed: 45.0026
               MachNumber: 0.1357
             BodyVelocity: [44.5400 2.7140 5.8360]
           GroundVelocity: [44.5400 2.7140 5.8360]
                       Ur: 44.5400
                       Vr: 2.7140
                       Wr: 5.8360
          FlightPathAngle: 0.1303
              CourseAngle: 0.0609
     InertialToBodyMatrix: [3×3 double]
     BodyToInertialMatrix: [3×3 double]
         BodyToWindMatrix: [3×3 double]
         WindToBodyMatrix: [3×3 double]
    BodyToStabilityMatrix: [3×3 double]
    StabilityToBodyMatrix: [3×3 double]
          DynamicPressure: 998.6513
              Environment: [1×1 Aero.Aircraft.Environment]
            ControlStates: [1×5 Aero.Aircraft.ControlState]
         OutOfRangeAction: "Limit"
         DiagnosticAction: "Warning"
               Properties: [1×1 Aero.Aircraft.Properties]
               UnitSystem: "Metric"
        TemperatureSystem: "Kelvin"
              AngleSystem: "Radians"

cruise.Alpha2
ans = 
0.0170
[F, M] = forcesAndMoments(beaver, cruise)
F = 3×1
103 ×

    0.4037
   -1.3285
    4.7465

M = 3×1
103 ×

   -1.5125
    2.3497
    0.3744

dydt = nonlinearDynamics(beaver, cruise)
dydt = 12×1

   44.9207
    2.7140
   -0.0276
    0.1764
   -0.5806
    2.0743
   -0.2619
    0.3391
    0.0297
         0
         0
         0
      ⋮

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

    FX    "Stable"    ""          ""          ""          ""          ""          ""          ""      
    FY    ""          "Stable"    ""          ""          ""          ""          ""          ""      
    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    -32.531     2.7704     601.22          26968     124.91          0    -552.22          0
    FY    -33.152    -398.64    -16.894        -558.01     -17973    -467.59          0     1382.4
    FZ    -410.16    -4.8834    -2867.8    -1.2531e+05    -220.18          0    -2445.2          0
    L     -37.919    -469.28    -10.703        -254.35     -21158     -27832          0     9350.9
    M      222.86     74.529     -930.3         -42740     3360.4          0     -20214    -1866.5
    N      12.771     62.732     1.6733       -0.35231     2828.4    -8744.1     1909.6    -6134.6

状態は、 fixedWingStateCustom 関数を使用して作成することもできます。

この関数は、作成する状態オブジェクトを指定する文字列入力が追加されていることを除いて、 fixedWingState 関数と同じです。

state = fixedWingStateCustom("astDehavillandBeaverState",beaver)
state = 
  astDehavillandBeaverState with properties:

                   Alpha2: 0
                   Alpha3: 0
                    Beta2: 0
                    Beta3: 0
                      b2V: 0.1463
                       cV: 0.0318
                      qcV: 0
                     pb2V: 0
                     rb2V: 0
             AileronAlpha: 0
                FlapAlpha: 0
            ElevatorBeta2: 0
              RudderAlpha: 0
                    Alpha: 0
                     Beta: 0
                 AlphaDot: 0
                  BetaDot: 0
                     Mass: 0
                  Inertia: [3×3 table]
          CenterOfGravity: [0 0 0]
         CenterOfPressure: [0 0 0]
              AltitudeMSL: 0
             GroundHeight: 0
                       XN: 0
                       XE: 0
                       XD: 0
                        U: 50
                        V: 0
                        W: 0
                      Phi: 0
                    Theta: 0
                      Psi: 0
                        P: 0
                        Q: 0
                        R: 0
                   Weight: 0
              AltitudeAGL: 0
                 Airspeed: 50
              GroundSpeed: 50
               MachNumber: 0.1469
             BodyVelocity: [50 0 0]
           GroundVelocity: [50 0 0]
                       Ur: 50
                       Vr: 0
                       Wr: 0
          FlightPathAngle: 0
              CourseAngle: 0
     InertialToBodyMatrix: [3×3 double]
     BodyToInertialMatrix: [3×3 double]
         BodyToWindMatrix: [3×3 double]
         WindToBodyMatrix: [3×3 double]
    BodyToStabilityMatrix: [3×3 double]
    StabilityToBodyMatrix: [3×3 double]
          DynamicPressure: 1.5312e+03
              Environment: [1×1 Aero.Aircraft.Environment]
            ControlStates: [1×5 Aero.Aircraft.ControlState]
         OutOfRangeAction: "Limit"
         DiagnosticAction: "Warning"
               Properties: [1×1 Aero.Aircraft.Properties]
               UnitSystem: "Metric"
        TemperatureSystem: "Kelvin"
              AngleSystem: "Radians"

state2 = fixedWingStateCustom("astDehavillandBeaverState",beaver,aircraftEnvironment(beaver,"COESA",1000))
state2 = 
  astDehavillandBeaverState with properties:

                   Alpha2: 0
                   Alpha3: 0
                    Beta2: 0
                    Beta3: 0
                      b2V: 0.1463
                       cV: 0.0318
                      qcV: 0
                     pb2V: 0
                     rb2V: 0
             AileronAlpha: 0
                FlapAlpha: 0
            ElevatorBeta2: 0
              RudderAlpha: 0
                    Alpha: 0
                     Beta: 0
                 AlphaDot: 0
                  BetaDot: 0
                     Mass: 0
                  Inertia: [3×3 table]
          CenterOfGravity: [0 0 0]
         CenterOfPressure: [0 0 0]
              AltitudeMSL: 0
             GroundHeight: 0
                       XN: 0
                       XE: 0
                       XD: 0
                        U: 50
                        V: 0
                        W: 0
                      Phi: 0
                    Theta: 0
                      Psi: 0
                        P: 0
                        Q: 0
                        R: 0
                   Weight: 0
              AltitudeAGL: 0
                 Airspeed: 50
              GroundSpeed: 50
               MachNumber: 0.1486
             BodyVelocity: [50 0 0]
           GroundVelocity: [50 0 0]
                       Ur: 50
                       Vr: 0
                       Wr: 0
          FlightPathAngle: 0
              CourseAngle: 0
     InertialToBodyMatrix: [3×3 double]
     BodyToInertialMatrix: [3×3 double]
         BodyToWindMatrix: [3×3 double]
         WindToBodyMatrix: [3×3 double]
    BodyToStabilityMatrix: [3×3 double]
    StabilityToBodyMatrix: [3×3 double]
          DynamicPressure: 1.3896e+03
              Environment: [1×1 Aero.Aircraft.Environment]
            ControlStates: [1×5 Aero.Aircraft.ControlState]
         OutOfRangeAction: "Limit"
         DiagnosticAction: "Warning"
               Properties: [1×1 Aero.Aircraft.Properties]
               UnitSystem: "Metric"
        TemperatureSystem: "Kelvin"
              AngleSystem: "Radians"

参考文献

  1. Rauw, M.O.:「飛行力学と制御の解析のための Simulink 環境 - DHC-2「ビーバー」への応用」パートI:「Simulink でのモデル ライブラリの実装」。パートII:「『ビーバー』自動操縦の非線形解析」デルフト工科大学、航空宇宙工学部、修士論文。デルフト、オランダ、1993年。

参考

クラス

メソッド