Верификация характеристик частотного диапазона

В этом примере показов, как использовать блоки в библиотеках Linear Графиков для анализа и Model Verification Simulink Control Design. Программное обеспечение Simulink Control Design предоставляет блоки, которые можно добавить к моделям Simulink, чтобы проверить, что линейная характеристика модели удовлетворяет характеристикам частотного диапазона во время симуляции. В этом примере коэффициент усиления и запасов по фазе цикла управления скорости самолета проверяются, когда изменяется нагрузка на топливо.

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

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

open_system('scdaircraft')

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

Верификация Цикла коэффициент усиления и Запасов по фазе

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

Блок вычисляет коэффициент усиления и запасов по фазе цикла и проверяет, что:

  • Значение запаса по амплитуде превышает 30 дБ

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

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

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

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

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

Блок показывает вычисленные запасы по усилению и фазе в табличном формате. Нажатие кнопки Показать график (Show Plot) открывает табличное отображение.

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

Модель также включает в себя Nichols Plot блок из библиотеки Simulink Control Design Linear Графиков для анализа, которая вычисляет цикл ответ, когда масса топлива падает во время симуляции. The Generate dynamic range events блок генерирует восходящее ребро, когда масса топлива кратна 10% от максимальной массы топлива. Эти восходящие ребра запускают линеаризацию и отображают результаты на графике Николса. Диалоговое окно Показать график в параметрах блока (Show Plot in the Параметры Блоков) открывает график Николс (Nichols).

The Signal Builder блок в модели определяет скоростной профиль для самолета. Дважды кликните блок, чтобы показать инструмент Verification Manager Tool, который отображает блоки проверки, включенные в модель. См. «Конструкция симуляционных тестов при помощи Verification Manager» для получения дополнительной информации.

Чтобы проверить, удовлетворены ли указанные запасы по усилению и фазе, симулируйте модель, нажав на Start simulation кнопка в Signal Builder блочное окно или модель Simulink.

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

Табличное отображение показывает:

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

  • Вычисленные запасы по усилению и фазе.

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

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

Можно выбрать пересечение нулем Enable опции detection в диалоговом окне Параметров блоков или использовать командную строку блока API, чтобы включить пересечение нулем обнаружение:

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

Логгирование линейных систем

Вкладка Logging в Check Gain and Phase Margins блок задает, чтобы вычисленные линейные системы были сохранены в переменной рабочей области.

Линейные системы регистрируются в структуре с time и values поля.

LinearAircraft
LinearAircraft = 

  struct with fields:

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

The 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.

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

bdclose('scdaircraft')
clear('LinearAircraft','L')

Похожие темы