Проверьте характеристики частотного диапазона самолета

В этом примере показано, как проверять, удовлетворяет ли линейный ответ модели Simulink® требованиям частотного диапазона в процессе моделирования. Для этого можно пользоваться библиотеками Linear Analysis Plots и Model Verification Simulink Control Design™.

В этом примере вы проверяете запасы по амплитуде и фазе скоростного цикла управления самолета, когда топливная загрузка изменяется.

Модель самолета

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

mdl = 'scdaircraft';
open_system(mdl)

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

Проверьте запасы по амплитуде и фазе цикла

Модель самолета содержит блок Check Gain and Phase Margins. Этот блок вычисляет линеаризацию цикла, замеченного блоком Velocity Controller каждые 30 минут симулированного времени. Сконфигурировать

Блок вычисляет запасы по амплитуде и фазе цикла и проверки, удовлетворяют ли следующим условиям.

  • Запас по амплитуде, больше, чем 30 дБ

  • Запас по фазе, больше, чем 60 градусов

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

  • Если путь включает блок суммирования, используйте положительную обратную связь.

  • Если путь не включает блок суммирования, используйте обратную связь, заданную блоком суммирования.

В этом случае линеаризация, заданная в блоке Check Gain and Phase Margins, включает блок суммирования с отрицательной обратной связью. Поэтому вычислите запасы по амплитуде и фазе с помощью знака положительной обратной связи.

Во время симуляции блок показывает вычисленные запасы по амплитуде и фазе в табличном формате. Чтобы открыть таблицу, нажмите Show Plot.

На вкладке Assertion блок сконфигурирован, чтобы выдать предупреждение, когда утверждение перестало работать, то есть, когда запасам по амплитуде и фазе не удовлетворяют.

Модель также включает блок Nichols Plot, который вычисляет ответ цикла, когда топливная масса понижается во время симуляции. Сгенерировать блок событий динамического диапазона генерирует возрастающее ребро каждый раз, когда топливная масса является кратной 10% максимальной топливной массы. Эти возрастающие ребра инициировали линеаризацию и отображают результаты на графике Николса. Чтобы просмотреть график Николса, откройте блок Nichols Plot и нажмите Show Plot.

Менеджер по Верификации отображает блоки проверки, включенные в модель. Чтобы открыть менеджера по Верификации, дважды кликните блок Signal Builder и выберите значок настроек верификации Show. Для получения дополнительной информации смотрите Тесты Симуляции Построения при помощи менеджера по Верификации.

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

sim(mdl);
Warning: Assertion detected in 'scdaircraft/Check Gain and Phase Margins' at
time 27020.4 

Табличное отображение от блока Gain and Phase Margin показывает следующую информацию.

  • Времена, когда цикл управления линеаризуется

  • Соответствующие вычисленные запасы по амплитуде и фазе.

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

Таблица показывает, что линеаризация не вычисляется в точно каждые 30 min, но при маленьких изменениях 30 min. Это вызвано тем, что обнаружение пересечения нулем для блока не включено. Включение пересечения нулем для блока гарантирует, что линеаризация вычисляется точно в 30 интервалах min, но может увеличить время, симуляция исполняется.

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

set_param('scdaircraft/Check Gain and Phase Margins','ZeroCross','on')
sim(mdl);
Warning: Assertion detected in 'scdaircraft/Check Gain and Phase Margins' at
time 27000 

Регистрируйте линейные системы

На вкладке Logging можно сконфигурировать Линейные Графики для анализа и Model Verification, чтобы регистрировать вычисленные линейные системы к рабочей области MATLAB®.

Для этой модели блок Check Gain and Phase Margins сконфигурирован, чтобы сохранить линейные системы в структуре LinearAircraft. Эта структура содержит линейные системы и соответствующие времена симуляции в values и time поля, соответственно.

LinearAircraft
LinearAircraft = 

  struct with fields:

              time: [17x1 double]
            values: [1x1x17x1 ss]
         blockName: 'scdaircraft/Check Gain and Phase Margins'
    assertionValue: [17x1 logical]

values поле хранит линейные системы как массив систем в пространстве состояний LTI. Для получения дополнительной информации смотрите Массивы моделей.

Можно получить отдельные системы путем индексации в values поле .

L = LinearAircraft.values(:,:,17)
L =
 
  A = 
                 scdaircraft/  Continuous/I        Filter
   scdaircraft/      -0.01122             0             0
   Continuous/I      -0.01184             0             0
   Filter              0.7492             0       -0.4326
 
  B = 
                 Velocity Con
   scdaircraft/        0.3774
   Continuous/I             0
   Filter                   0
 
  C = 
                 scdaircraft/  Continuous/I        Filter
   Velocity Con    -1.998e-15             1       -0.4326
 
  D = 
                 Velocity Con
   Velocity Con             0
 
Continuous-time state-space model.

Закройте модель.

bdclose('scdaircraft')

Похожие темы