Разработка высокого угла управления режимом подачи нападения

Система управления Используя Simulink®

Этот пример показывает, как использовать Систему управления Toolbox™ и Simulink® Control Design™, чтобы взаимодействовать с Simulink, чтобы разработать цифровое управление подачей для самолета. В этом примере мы разработаем контроллер, чтобы разрешить самолету действовать под высоким углом нападения с минимальной экспериментальной рабочей нагрузкой.

Наш пример берет вас через первую передачу при разработке цифрового автопилота для высокого угла контроллера нападения. Чтобы запустить все в этом примере, у вас должны быть Control System Toolbox, Simulink Control Design, Simulink и Simulink® Coder™. Если у вас нет всех этих продуктов, можно все еще запустить фрагменты примера с помощью режима выполнения ячейки редактора MATLAB®.

Ниже модель Simulink самолета. Системы управления в блоке Controllers могут быть переключены в модель, чтобы позволить вам видеть аналоговый ответ и затем переключаться на дизайн, созданный с помощью объектов Линейного независимого от времени (LTI) Control System Toolbox. Контроллер также включен, который дискретная реализация аналогового дизайна, который подобен алгоритму, который вошел бы во встроенный компьютер полета. Займите некоторое время, чтобы исследовать модель.

Откройте модель самолета

Рисунок 1: модель Simulink системы управления полета.

Обрезка и линеаризация

Модель может линеаризоваться в менеджере по Инструментам Управления и Оценки, запущенном от модели slexAircraftPitchControlAutopilot Simulink. В меню Analysis выберите Control Design> Linear Analysis.

Когда менеджер по Инструментам Управления и Оценки откроется, выберите рабочую точку и нажмите кнопку Linearize Model. Средство просмотра LTI может быть создано, показав график шага линеаризации. Чтобы просмотреть вокруг Средства просмотра LTI, щелкните правой кнопкой мыши по окну графика, чтобы видеть ваши опции.

Для справки тип помогают slcontrol или помогают ltiview или смотрят на Control System Toolbox и документацию по продукту Simulink Control Design.

Откройте slexAircraftPitchControlAutopilot модель

Просмотреть линеаризовавшие параметры модели:

apmdl = 'slexAircraftPitchControlAutopilot';
open_system(apmdl)
op = operpoint(apmdl);
io = getlinio(apmdl);
contap = linearize(apmdl,op,io)
contap =
 
  A = 
                 Alpha-sensor  Pitch Rate L  Proportional  Stick Prefil
   Alpha-sensor        -2.526             0             0             0
   Pitch Rate L             0        -4.144             0             0
   Proportional         -1.71        0.9567             0            10
   Stick Prefil             0             0             0           -10
 
  B = 
                 Alpha Sensed         Stick      q Sensed
   Alpha-sensor             1             0             0
   Pitch Rate L             0             0             1
   Proportional             0             0       -0.8156
   Stick Prefil             0             1             0
 
  C = 
        Alpha-sensor  Pitch Rate L  Proportional  Stick Prefil
   Sum         2.986         -1.67        -3.864        -17.46
 
  D = 
        Alpha Sensed         Stick      q Sensed
   Sum             0             0         1.424
 
Continuous-time state-space model.

Рисунок 2: Исходный аналоговый автопилот.

Системы Линейного независимого от времени (LTI)

Существует три типа объектов LTI, которые что можно использовать, чтобы разработать линейную модель:

Пространство состояний (SS), Передаточная функция (TF) и объекты Нулевого полюсного Усиления (ZPG).

Переменная contap является объектом State Space. Можно затем получить один из других типов с другими командами. Когда вы создаете объект в MATLAB, можно управлять им операции использования такой как *, +, - и т.д. Это называется, "перегружая" операторы MATLAB. Попытайтесь создать собственный объект и смотрите то, что происходит при добавлении, умножаясь, и т.д. с объектом contap.

Чтобы видеть точно, что сохранено в объекте LTI, тип добирается (contap) или contap. InputName, например.

К передаточным функциям представления Zero/Pole/Gain:

contap = tf(contap);
contap = zpk(contap)
contap =
 
  From input "Alpha Sensed" to output "Sum":
  2.9857 (s+2.213)
  ----------------
    s (s+2.526)
 
  From input "Stick" to output "Sum":
  -17.46 (s+2.213)
  ----------------
      s (s+10)
 
  From input "q Sensed" to output "Sum":
  1.424 (s+2.971) (s+2.213)
  -------------------------
         s (s+4.144)
 
Continuous-time zero/pole/gain model.

Дискретизированный контроллер Используя Нулевой Порядок содержит

Теперь объект LTI будет использоваться, чтобы разработать цифровой автопилот, который заменит аналоговый автопилот. Аналоговая система закодирована в объект LTI, названный contap (Непрерывный AutoPilot).

Первая попытка создания цифрового автопилота будет использовать нулевой порядок, держатся одинаковых взглядов с частотой дискретизации 0,1 секунд. Обратите внимание на то, что дискретный объект поддерживает тип (ss, tf, или zpk).

Это ясно из Графика Боде ниже этого, системы не соответствуют в фазе от 3 радов/секунда до половины демонстрационной частоты (вертикальное черное пятно) для экспериментального входного параметра палки и угла датчика нападения. Этот дизайн имеет более плохой ответ, чем аналоговая система. Перейдите к модели Simulink и запуститесь, моделирование (убедитесь, что вы видите окна scope). В то время как моделирование запускается, дважды кликните, ручной переключатель маркировал Analog или Digital.

Моделирование проверяет вывод, сделанный путем интерпретации Предвещать схемы?

discap = c2d(contap, 0.1, 'zoh');
get(discap)
bode(contap,discap)
                Z: {[0.8016]  [0.8039]  [2x1 double]}
                P: {[2x1 double]  [2x1 double]  [2x1 double]}
                K: [0.2943 -1.2458 1.4240]
    DisplayFormat: 'roots'
         Variable: 'z'
          IODelay: [0 0 0]
       InputDelay: [3x1 double]
      OutputDelay: 0
               Ts: 0.1000
         TimeUnit: 'seconds'
        InputName: {3x1 cell}
        InputUnit: {3x1 cell}
       InputGroup: [1x1 struct]
       OutputName: {'Sum'}
       OutputUnit: {''}
      OutputGroup: [1x1 struct]
            Notes: [0x1 string]
         UserData: []
             Name: ''
     SamplingGrid: [1x1 struct]

Рисунок 3: Предвещайте схему, сравнивающую аналог и контроллеры ZOH.

Тастин (билинейная) дискретизация

Теперь попробуйте различные методы преобразования. Можно использовать преобразование Тастина. В командном окне вводят команды выше.

Должно быть ясно, что системы все еще не соответствуют в фазе от 3 радов/секунда до половины демонстрационной частоты, преобразование Тастина добивается большего успеха. Моделирование использует объект LTI, когда это разработано. Видеть, как объект используется взгляд в подсистеме Контроллеров при помощи браузера или путем двойного щелчка по значку. Блок LTI поднимает объект LTI с рабочей области. Можно поменять имя объекта, используемое в блоке к любому объекту LTI в рабочей области.

Попытайтесь использовать "discap1", дискретизацию Тастина аналогового дизайна:

discap1 = c2d(contap,0.1,'tustin');
bode(contap,discap,discap1)

Рисунок 4: Предвещайте схему, сравнивающую аналог и 0,1 секунды контроллеры Тастина.

Выбор частоты дискретизации

Преобразование Тастина выполняет лучше, чем нулевой порядок содержит от анализа до сих пор. Частота дискретизации 0,1 секунд, кажется, является слишком медленной для дискретной системы, чтобы отследить производительность аналоговой системы на половине демонстрационной частоты.

Теперь преобразуйте аналоговый дизайн с помощью преобразования Тастина с 0,05 вторыми демонстрационными периодами:

discap = c2d(contap,0.05,'tustin')
bode(contap,discap)
discap =
 
  From input "Alpha Sensed" to output "Sum":
  0.074094 (z-0.8951) (z+1)
  -------------------------
      (z-1) (z-0.8812)
 
  From input "Stick" to output "Sum":
  -0.36852 (z-0.8951) (z+1)
  -------------------------
        (z-1) (z-0.6)
 
  From input "q Sensed" to output "Sum":
  1.4629 (z-0.8617) (z-0.8951)
  ----------------------------
        (z-1) (z-0.8123)
 
Sample time: 0.05 seconds
Discrete-time zero/pole/gain model.

Рисунок 5: Предвещайте схему, сравнивающую аналог и 0,05 секунды контроллеры Тастина.

Реальные факторы

Теперь, когда мы имеем то, что, кажется, осуществимый дизайн, мы должны реализовать его в форме, которая будет включать некоторые необходимые элементы, которые были проигнорированы в линейном анализе. Например, если вы посмотрите на аналоговый автопилот, который находится в подсистеме Контроллеров, вы будете видеть некоторую логику, которая мешает интегратору закончиться, когда привод насыщает:

Откройте подсистему AnalogControl

Рисунок 6: подсистема AnalogControl.

Реализация полного дизайна

Завершение интегратора является только одной из практических проблем, которой должна быть решена. Другой - потребность устранить искаженные высокочастотные сигналы, которые могли войти в точках измерения. Эти искаженные сигналы могут быть предотвращены путем определения аналоговых фильтров перед выборкой и содержать (ZOH) блоки, которые моделируют устройства аналого-цифрового конвертера (ADC), обычно используемые для измерения сигналов во встраиваемом приложении. Кроме того, фильтры в цифровом разделе автопилота действуют на более высоком уровне выборки, чем компенсатор, чтобы предоставить обусловленный сигнал компенсатору. Аналоговые фильтры необходимы, потому что, если сигнал искажается, нет никакого способа разделить допустимое внутриполосное содержимое частоты от искаженного содержимого.

Этот новый контроллер называется Цифровым управлением. Фильтры имеют частоту дискретизации deltat1 (набор, чтобы быть 1/10 deltat). Нулевой порядок содержит блоки, задают эти частоты дискретизации для различных нисходящих блоков посредством наследования частоты дискретизации.

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

Попытайтесь моделировать систему снова и переключатель среди трех проектов автопилота. Необходимо видеть, что проекты не значительно затронуты, которым автопилот активен. Можно также увеличить амплитуду порыва ветра и проверить, что фильтры сглаживания работают удовлетворительно. Чтобы увеличить амплитуду порыва, откройте подсистему Порыва ветра Драйдена и изменение (путем двойного щелчка по значку) шумовое отклонение Белого шума, который управляет моделированием порыва.

Откройте подсистему DigitalControl:

Рисунок 7: подсистема DigitalControl.

Различные системы для вариантов дизайна

Приводы в модели Simulink используют блок Variant Subsystems, чтобы представлять несколько реализаций привода, где только одна реализация активна во время моделирования. Можно дважды кликнуть блок Variant Actuator Subsystem, чтобы просмотреть различные реализации привода.

Чтобы внести изменение моделирования, используйте нелинейный привод вместо линейного. Можно сделать это при помощи контекстного меню "Variant> Override using" блока Variant Subsystem.

Обратите внимание на то, что Simulink должен быть остановлен в порядке реконфигурировать выбор привода. Необходимо также отметить, что нелинейный привод имеет насыщенность на положении и уровне.

Рисунок 8: различная подсистема для приводов

Генерация кода

Дизайн автопилота может быть преобразован во встраиваемый код с помощью Simulink Coder. Отдельная модель цифрового автопилота, slexAircraftPitchControlDAP, открыта ниже; это было закодировано в основанную на хосте автономную программу с помощью Simulink Coder, и компилятор задал использование mex - настройка настройки. Результаты симуляции могут использоваться в качестве базовой линии валидации для функциональной корректности сгенерированного кода.

Исполняемым файлом, следующим из генерации кода и компиляции, является slexAircraftPitchControlDAP.exe. Если вы создаете его, это может быть запущено от интерпретатора ОС (DOS) командная строка непосредственно или из MATLAB путем ввода:

>> !slexAircraftPitchControlDAP.exe

Исполняемая программа создает файл, названный slexAircraftPitchControlDAP.mat, который можно загрузить путем ввода загрузки slexAircraftPitchControlDAP.

Две переменные, названные rt_tout и rt_yout, будут в рабочей области, и их отклонение против базовой линии моделирования может быть построено график. Обратите внимание на то, что отклонение является эффективно нулевым для этой модели на этом хосте. Некоторое небольшое числовое отклонение должно ожидаться в более комплексных вычислениях из-за отличающейся оптимизации компилятора и использования промежуточных регистровых переменных, имеющих выше точность, чем 64-битный формат устройства хранения данных двойного. Значительные отклонения должны быть исследованы, когда они могли указать на числовую проблему устойчивости в алгоритмах вашей модели, компиляторе или ошибке библиотеки времени выполнения или других проблемах.

Откройте slexAircraftPitchControlDAP модель:

Рисунок 9: Сравнение моделирования и результатов генерации кода.

Поведение первого дизайна передачи

Вот является ответ времени высокого угла режима нападения цифровым проектированием контроллера подачи:

Рисунок 10: Ответ самолета Цифровая Система управления Подачи.

Сводные данные

Дальнейшая работа над этим дизайном может включать слияние и анализ большего количества реальных эффектов на компенсатор, таких как эффект динамики фильтра сглаживания и вычислительная задержка встроенного компьютера на полном "заводе", замеченном цифровыми вычислениями. Комбинация действительного завода, вычислительной задержки, фильтров сглаживания и задержки выбирать-и-содержать является всего несколькими дополнительных элементов, которые могут влиять на дизайн цифровых параметров компенсатора.

Была ли эта тема полезной?