То В этом примере показано, как использовать комбинацию верификации Simulink® Control Design™ Simulink, блокируется, чтобы утверждать, что характеристики линейной системы для самолета удовлетворяют одному из следующих условий.
Запас по фазе, больше, чем 60 градусов
Запас по фазе меньше чем 60 градусов со скоростью, меньше чем или равной 90% скорости круиза
Откройте модель Simulink самолета.
open_system('scdmultiplechecks')
Модель самолета основана на пассажирском самолете долгого пути, летящем на крейсерской высоте и скорости. Самолет запускается с полной топливной загрузки и следует за предварительно заданным восьмичасовым скоростным профилем. Модель является упрощенной версией скоростного цикла управления, который настраивает топливную скорость потока, чтобы управлять скоростью самолета.
V <= 0.9*vCruise и Утверждают что: PM> = 60 или если PM <60 затем v <= 0.9*vCruise блоки являются Проверкой Статические блоки Верхней границы и Утверждения, соответственно, от библиотеки Simulink Model Verification. В этом примере вы используете эти блоки с блоком Check Gain and Phase Margins, чтобы спроектировать сложную логику для утверждения.
Блок Check Gain and Phase Margins сконфигурирован, чтобы линеаризовать цикл, замеченный блоком Velocity Controller каждые 30 минут симулированного времени. Чтобы просмотреть настройки линеаризации, откройте график Запасов по амплитуде и фазе Проверки и откройте вкладку Linearization.
Блок Check Gain and Phase Margins сконфигурирован, чтобы выполнить утверждение. Утверждение перестало работать, когда запас по фазе линеаризованной системы больше 60 градусов. Можно просмотреть связанные настройки запаса по фазе на вкладке Bounds.
Поскольку цикл, замеченный контроллером, содержит блок суммирования с отрицательной обратной связью, установите обратную связь, расписываются за вычисление запаса по фазе positive feedback
.
Чтобы просмотреть вычисленные запасы по фазе в табличном формате во время симуляций, установите параметр типа Графика на Tabular
и нажмите Show Plot.
Спроектируйте логику утверждения, которая заставляет комбинацию блоков верификации приводить их утверждение к сбою, когда оба из следующих условий утверждения являются ложными. Другими словами, утверждение передает, если любое условие верно
Запас по фазе больше 60 градусов
Запас по фазе меньше 60 градусов, когда скорость меньше чем или равна 90% скорости круиза
Во-первых, сконфигурируйте блок Check Gain and Phase Margins, чтобы вывести его сигнал утверждения. Для этого на вкладке Assertion, выберите сигнал утверждения Output и нажмите Apply.
Затем сконфигурируйте v <= 0.9*vCruise блок к:
Проверяйте, превышает ли скорость самолета скорость круиза к 0,9 разам
Добавьте выходной порт утверждения в блок
Не останавливают симуляцию, когда утверждение перестало работать
Для этого откройте бок и сконфигурируйте параметры как показано в следующем рисунке.
Наконец, соедините блоки верификации в модели как показано в следующем рисунке. Когда оба из условий утверждения являются ложными, вход к Утверждению что: PM> = 60 или если PM <60 затем v <= 0.9*vCruise блок является нулем. В результате блок приводит свое утверждение к сбою и останавливает симуляцию.
scdmultiplechecks_final
модель сконфигурирована с этими настройками и связями.
mdl = 'scdmultiplechecks_final';
open_system(mdl)
Чтобы симулировать модель, запустите следующий код.
sim(mdl)
Во время симуляции v <= 0.9*vCruise блок утверждает многократно, и блок Check Gain and Phase Margins утверждает дважды.
Можно просмотреть запасы по фазе, которые нарушают направляющееся в блок Check Gain and Phase Margins в таблице.
Утверждение, что: PM> = 60 или если PM <60 затем v <= 0.9*vCruise не сталкивается с условием утверждения. Поэтому симуляция не останавливается.
Когда блок утверждает, модель генерирует предупреждения. Чтобы открыть Диагностическое средство просмотра, в окне модели, щелкают по ссылке предупреждения.
В Диагностическом Средстве просмотра можно посмотреть детали утверждений путем щелчка по ссылке.
Check Gain and Phase Margins | Check Static Upper Bound