Настройте самолет с неподвижным крылом с интерфейсом объекта

В этом примере показано, как настроить самолет с неподвижным крылом в объектах использования MATLAB.

Для примера того, как начать использовать самолет с неподвижным крылом в MATLAB, см. “Начало работы с Самолетом с неподвижным крылом”.  

Для примера установки реалистических коэффициентов на самолете и вычислении static stability,  see    “Динамика Determine Nonlinear и Статическая Устойчивость Самолета с неподвижным крылом”.  

Для примера импорта коэффициентов от Цифрового анализа DATCOM и линеаризации к состоянию-space model, см., что   “Выполняет Средства управления и Статический Анализ Устойчивости с Линеаризовавшим Самолетом с неподвижным крылом”.  

Интерфейс объекта фиксированного крыла

Каждая функция самолета с неподвижным крылом возвращает объект своего типа определения.

Функции предоставляют удобство построению каждого объекта. Однако их предопределенная входная структура может быть неудобна для некоторых рабочих процессов. Например, рассмотрите использование объектов, если вы хотите больше управления определенными входными параметрами каждого компонента, или если вы хотите избежать вызовов repmat, чтобы создать массивы каждого компонента. Объекты позволяют вам непосредственно создать каждый компонент.

Таблица, сопоставляющая каждую функцию, чтобы возразить, видна ниже.

Component = ["Properties"; "Environment"; "Aircraft"; "States"; "Coefficients"; "Surfaces"; "Thrust"];
Formal = ["Aero.Aircraft.Properties"; "Aero.Aircraft.Environment"; "Aero.FixedWing"; "Aero.FixedWing.State"; "Aero.FixedWing.Coefficient";"Aero.FixedWing.Surface"; "Aero.FixedWing.Thrust"];
Informal = ["aircraftProperties"; "aircraftEnvironment"; "fixedWingAircraft"; "fixedWingState"; "fixedWingCoefficient"; "fixedWingSurface"; "fixedWingThrust"];
objMap = table(Formal, Informal, 'RowNames', Component, 'VariableNames',["Formal Interface", "Informal Interface"])
objMap=7×2 table
                          Formal Interface            Informal Interface  
                    ____________________________    ______________________

    Properties      "Aero.Aircraft.Properties"      "aircraftProperties"  
    Environment     "Aero.Aircraft.Environment"     "aircraftEnvironment" 
    Aircraft        "Aero.FixedWing"                "fixedWingAircraft"   
    States          "Aero.FixedWing.State"          "fixedWingState"      
    Coefficients    "Aero.FixedWing.Coefficient"    "fixedWingCoefficient"
    Surfaces        "Aero.FixedWing.Surface"        "fixedWingSurface"    
    Thrust          "Aero.FixedWing.Thrust"         "fixedWingThrust"     

Конструктор для каждого компонента самолета с неподвижным крылом структурирован тот же путь:

  • Первый аргумент является или вектором или повторяющимся набором целых чисел, который задает размер массива возвращенного объекта, как "нулевая" функция, со значением по умолчанию, являющимся размером 1.

  • Каждый аргумент после первого аргумента является парой "имя-значение", задающей свойство объекта и значение для того, чтобы установить значения не по умолчанию.

  • Каждое значение не по умолчанию установлено для каждого объекта в массиве возвращенного объекта.

Например, создание вектора состояния фиксированного крыла с 3 элементами, где каждое состояние имеет массу 50 кг, имело бы следующий синтаксис:

states = Aero.FixedWing.State(1,3, Mass=50)
states=1×3 object
  1x3 State array with properties:

    Alpha
    Beta
    AlphaDot
    BetaDot
    Mass
    Inertia
    CenterOfGravity
    CenterOfPressure
    AltitudeMSL
    GroundHeight
    XN
    XE
    XD
    U
    V
    W
    Phi
    Theta
    Psi
    P
    Q
    R
    Weight
    AltitudeAGL
    Airspeed
    GroundSpeed
    MachNumber
    BodyVelocity
    GroundVelocity
    Ur
    Vr
    Wr
    FlightPathAngle
    CourseAngle
    InertialToBodyMatrix
    BodyToInertialMatrix
    BodyToWindMatrix
    WindToBodyMatrix
    DynamicPressure
    Environment
    ControlStates
    OutOfRangeAction
    DiagnosticAction
    Properties
    UnitSystem
    AngleSystem
    TemperatureSystem

states.Mass
ans = 50
ans = 50
ans = 50

Как видно из возвращенных Массовых значений каждое состояние имеет массу 50 в векторе.

После этого формата этот пример создает тот же самолет из "Начало работы с Самолетом с неподвижным крылом" пример, заменяя функциональный интерфейс со связанным интерфейсом объекта.

Настройка самолета с неподвижным крылом

Создайте 3 поверхности управления с помощью Aero.FixedWing.Surface.

По умолчанию объекты подложки заданы, чтобы быть симметричными и не управляемыми, таким образом, эти два свойства должны быть установлены для элерона наряду с максимальными и минимальными значениями.

aileron = Aero.FixedWing.Surface(...
              Controllable="on", ...
              Symmetry="Asymmetric", ...
              MinimumValue=-20, ...
              MaximumValue=20)
aileron = 
  Surface with properties:

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

Кроме того, набор имя на свойствах объекта подложки элерона. Это полезно для установки коэффициентов позже.

aileron.Properties.Name = "aileron"
aileron = 
  Surface with properties:

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

Для лифта и руководящего принципа, симметрия уже является требуемым значением, таким образом, аргумент значения имени "Симметрии" может быть исключен.

elevator = Aero.FixedWing.Surface(...
              Controllable="on", ...
              MinimumValue=-20, ...
              MaximumValue=20)
elevator = 
  Surface with properties:

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

rudder = Aero.FixedWing.Surface(...
               Controllable="on", ...
               MinimumValue=-20, ...
               MaximumValue=20)
rudder = 
  Surface with properties:

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

elevator.Properties.Name = "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]

rudder.Properties.Name = "Rudder"
rudder = 
  Surface with properties:

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

С заданными поверхностями управления задайте объект тяги использование Aero.FixedWing.Thrust object.

По умолчанию минимальные и максимальные значения для объекта тяги 0 и 1, которые представляют положение рычага дросселя.

В этом самолете они ограничиваются 0 и 0.75.

propeller = Aero.FixedWing.Thrust(MaximumValue=0.75)
propeller = 
  Thrust with properties:

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

Имя вектора тяги может также быть определено в это время.

propeller.Properties.Name = "propeller"
propeller = 
  Thrust with properties:

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

С этими поверхностями управления и заданными векторами тяги, они могут теперь быть установлены на корпусе самолета.

Корпус самолета задан через Aero.FixedWing object.

Для простоты этот самолет будет иметь область ссылки, промежуток и длину 3, 2, и 1, соответственно.

aircraft = Aero.FixedWing(...
           ReferenceArea=3, ...
           ReferenceSpan=2, ...
           ReferenceLength=1)
aircraft = 
  FixedWing with properties:

        ReferenceArea: 3
        ReferenceSpan: 2
      ReferenceLength: 1
         Coefficients: [1x1 Aero.FixedWing.Coefficient]
     DegreesOfFreedom: "6DOF"
             Surfaces: [1x0 Aero.FixedWing.Surface]
              Thrusts: [1x0 Aero.FixedWing.Thrust]
          AspectRatio: 1.3333
           Properties: [1x1 Aero.Aircraft.Properties]
           UnitSystem: "Metric"
          AngleSystem: "Radians"
    TemperatureSystem: "Kelvin"

aircraft.Surfaces = [aileron, elevator, rudder]
aircraft = 
  FixedWing with properties:

        ReferenceArea: 3
        ReferenceSpan: 2
      ReferenceLength: 1
         Coefficients: [1x1 Aero.FixedWing.Coefficient]
     DegreesOfFreedom: "6DOF"
             Surfaces: [1x3 Aero.FixedWing.Surface]
              Thrusts: [1x0 Aero.FixedWing.Thrust]
          AspectRatio: 1.3333
           Properties: [1x1 Aero.Aircraft.Properties]
           UnitSystem: "Metric"
          AngleSystem: "Radians"
    TemperatureSystem: "Kelvin"

aircraft.Thrusts = propeller
aircraft = 
  FixedWing with properties:

        ReferenceArea: 3
        ReferenceSpan: 2
      ReferenceLength: 1
         Coefficients: [1x1 Aero.FixedWing.Coefficient]
     DegreesOfFreedom: "6DOF"
             Surfaces: [1x3 Aero.FixedWing.Surface]
              Thrusts: [1x1 Aero.FixedWing.Thrust]
          AspectRatio: 1.3333
           Properties: [1x1 Aero.Aircraft.Properties]
           UnitSystem: "Metric"
          AngleSystem: "Radians"
    TemperatureSystem: "Kelvin"

Установите коэффициенты самолета с помощью setCoefficient и getCoefficient методов, создав коэффициент с помощью Aero.FixedWing.Coefficient object, или индексировав непосредственно к содействующим значениям.

coeff = Aero.FixedWing.Coefficient
coeff = 
  Coefficient with properties:

                     Table: [6x1 table]
                    Values: {6x1 cell}
            StateVariables: "Zero"
               StateOutput: [6x1 string]
            ReferenceFrame: "Wind"
    MultiplyStateVariables: on
            NonDimensional: on
                Properties: [1x1 Aero.Aircraft.Properties]

aircraft.Coefficients.Values{3,3} = 0.2
aircraft = 
  FixedWing with properties:

        ReferenceArea: 3
        ReferenceSpan: 2
      ReferenceLength: 1
         Coefficients: [1x1 Aero.FixedWing.Coefficient]
     DegreesOfFreedom: "6DOF"
             Surfaces: [1x3 Aero.FixedWing.Surface]
              Thrusts: [1x1 Aero.FixedWing.Thrust]
          AspectRatio: 1.3333
           Properties: [1x1 Aero.Aircraft.Properties]
           UnitSystem: "Metric"
          AngleSystem: "Radians"
    TemperatureSystem: "Kelvin"

aircraft.Coefficients.Table
ans=6×9 table
          Zero    U    Alpha    AlphaDot    Q    Beta    BetaDot    P    R
          ____    _    _____    ________    _    ____    _______    _    _

    CD     0      0       0        0        0     0         0       0    0
    CY     0      0       0        0        0     0         0       0    0
    CL     0      0     0.2        0        0     0         0       0    0
    Cl     0      0       0        0        0     0         0       0    0
    Cm     0      0       0        0        0     0         0       0    0
    Cn     0      0       0        0        0     0         0       0    0

Состояния самолета с неподвижным крылом

Задайте состояния самолета с неподвижным крылом с помощью Aero.FixedWing.State object.

Чтобы непосредственно создать массив состояний, что у всех есть те же свойства, используйте конструктора состояния вместо того, чтобы использовать функцию repmat.

В этом примере 11 состояний создаются различной массой, но с постоянной скоростью полета.

mass = num2cell(1000:50:1500)
mass=1×11 cell array
  Columns 1 through 6

    {[1000]}    {[1050]}    {[1100]}    {[1150]}    {[1200]}    {[1250]}

  Columns 7 through 11

    {[1300]}    {[1350]}    {[1400]}    {[1450]}    {[1500]}

states = Aero.FixedWing.State(size(mass), U=100);
[states.Mass] = mass{:}
states=1×11 object
  1x11 State array with properties:

    Alpha
    Beta
    AlphaDot
    BetaDot
    Mass
    Inertia
    CenterOfGravity
    CenterOfPressure
    AltitudeMSL
    GroundHeight
    XN
    XE
    XD
    U
    V
    W
    Phi
    Theta
    Psi
    P
    Q
    R
    Weight
    AltitudeAGL
    Airspeed
    GroundSpeed
    MachNumber
    BodyVelocity
    GroundVelocity
    Ur
    Vr
    Wr
    FlightPathAngle
    CourseAngle
    InertialToBodyMatrix
    BodyToInertialMatrix
    BodyToWindMatrix
    WindToBodyMatrix
    DynamicPressure
    Environment
    ControlStates
    OutOfRangeAction
    DiagnosticAction
    Properties
    UnitSystem
    AngleSystem
    TemperatureSystem

Однако различающийся функция fixedWingState, состояния управления автоматически не настраиваются на состояниях от самолета.

Чтобы настроить состояния управления, используйте функцию setupControlStates.

states = setupControlStates(states, aircraft)
states=1×11 object
  1x11 State array with properties:

    Alpha
    Beta
    AlphaDot
    BetaDot
    Mass
    Inertia
    CenterOfGravity
    CenterOfPressure
    AltitudeMSL
    GroundHeight
    XN
    XE
    XD
    U
    V
    W
    Phi
    Theta
    Psi
    P
    Q
    R
    Weight
    AltitudeAGL
    Airspeed
    GroundSpeed
    MachNumber
    BodyVelocity
    GroundVelocity
    Ur
    Vr
    Wr
    FlightPathAngle
    CourseAngle
    InertialToBodyMatrix
    BodyToInertialMatrix
    BodyToWindMatrix
    WindToBodyMatrix
    DynamicPressure
    Environment
    ControlStates
    OutOfRangeAction
    DiagnosticAction
    Properties
    UnitSystem
    AngleSystem
    TemperatureSystem

Похожие темы