В этом примере показано, как использовать комбинацию Simulink® Управляйте Design™ и блоками верификации Simulink, чтобы утверждать, что характеристики линейной системы удовлетворяют одному из следующих границ:
Запас по фазе более 60 степени
Запас фазы менее 60 степени и скорость менее или равная 90% от крейсерской скорости.
Откройте модель Simulink самолета.
scdmultiplechecks
Модель самолёта основана на дальнемагистральном пассажирском самолете, летающем на крейсерской высоте и скорости. Самолет запускается с полной топливной нагрузки и следует предварительно заданному 8-часовому профилю скорости. Модель является упрощенной версией цикла управления скорости, которая регулирует скорость потока жидкости топлива, чтобы контролировать скорость самолета.
Модель включает блоки для модели:
Расход топлива и, как следствие, изменения массы самолета
Нелинейные эффекты уклона, ограничивающие скорость самолета
Константы, используемые в модели, такие как коэффициент перетаскивания, заданы в рабочем пространстве модели и инициализированы из скрипта.
The v <= 0.9*vCruise
и Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise
блоки являются Check Static Upper Bound и Assertion блоками, соответственно, из библиотеки Simulink Model Verification. В этом примере вы используете эти блоки с блоком Check Gain and Phase Margins для разработки сложной логики для утверждения.
Просмотрите вход, вывод и настройки линеаризации на вкладке Linearizations диалогового окна параметров Check Gain and Phase Margins блоков.
Модель уже сконфигурирована с:
Вход и выход линеаризации для вычисления коэффициента усиления и запасов по фазе
Настройки для вычисления линейной системы
Программа линеаризирует цикл, наблюдаемый блоком Velocity Controller, каждые 30 минуты моделируемого времени и вычисляет коэффициент усиления и запасов по фазе.
Задайте границы запасов по фазе на вкладке Bounds блока Check Gain and Phase Margins.
В этом примере входные и выходные входы линеаризации включают блок суммирования с отрицательной обратной связью. Измените Feedback sign, используемое для вычисления запаса, на positive feedback
.
Чтобы просмотреть запасы по фазе, которые будут вычисляться позже во время симуляции, задайте Tabular
в Plot type и нажмите Show Plot.
Логика утверждения проекта, которая заставляет блоки верификации утверждать, когда запас фазы больше 60 степени или если запас фазы меньше 60 степени, скорость меньше или равна 90% крейсерской скорости.
В диалоговом окне Check Gain and Phase Margins Block Parameters, на вкладке Assertion, выберите Output assertion signal и нажмите Apply.
Это действие добавляет выхода порт z-1
в блок.
Дважды кликните v <= 0.9*vCruise
блокируйте, и задайте параметры блоков, как показано на следующем рисунке. После установки параметров нажмите Apply.
Эти параметры конфигурируют блок так:
Проверьте, превышает ли скорость самолета крейсерскую скорость в 0,9 раза
Добавьте к блоку выхода порт
Соедините Check Gain and Phase Margins, v <= 0.9*vCruise
и Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise
блоки, как показано на следующем рисунке.
Это соединение вызывает Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise
блок для утверждения и остановки симуляции, если запас по фазе меньше 60 градусов и скорость больше 90% от крейсерской скорости.
Кроме того, можно вводить scdmultiplechecks_final
в MATLAB® приглашение открыть модель Simulink, уже настроенную с этими настройками.
Симулируйте модель.
Во время симуляции:
The v <= 0.9*vCruise
блок утверждает несколько раз.
Блок Check Gain and Phase Margins утверждает два раза. Вы можете просмотреть запасы по фазе, которые нарушают границу в окне графика.
The Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise
не встречается с условием утверждения. Поэтому симуляция не останавливается.
Щелкните ссылку в нижней части модели Simulink, чтобы открыть окно Diagnostic Viewer.
Когда блок утверждает, в этом окне появляются предупреждения. Подробные сведения об утверждениях можно просмотреть, щелкнув ссылку в этом окне.