В этом примере показано, как использовать блоки в библиотеках линейного анализа и проверки модели Simulink Control Design. Программное обеспечение Simulink Control Design предоставляет блоки, которые можно добавить в модели Simulink для проверки соответствия линейной характеристики модели характеристикам частотной области во время моделирования. В этом примере по мере изменения топливной нагрузки проверяется коэффициент усиления и фазовые поля контура управления скоростью летательного аппарата.
Откройте модель Simulink самолета:
open_system('scdaircraft')

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

Блок вычисляет коэффициент усиления контура и поля фазы и проверяет, что:
Запас усиления больше 30 дБ
Запас по фазе больше 60 градусов
При вычислении полей должен быть указан знак обратной связи цикла. Для определения знака обратной связи проверьте, включает ли путь, определенный IO, суммирование обратной связи:
Если путь включает в себя блок суммирования, используйте положительную обратную связь.
Если путь не включает в себя блок суммирования, используйте обратную связь, определенную блоком суммирования.
IO линеаризации, указанные в Check Gain and Phase Margins блок включает в себя блок суммирования с отрицательной обратной связью. Следовательно, знак обратной связи, используемый для вычисления коэффициента усиления и полей фазы, должен быть положительным.

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

Модель также включает Nichols Plot блок из библиотеки графиков линейного анализа Simulink Control Design, которая вычисляет отклик контура при падении массы топлива во время моделирования. Generate dynamic range events блок генерирует передний край всякий раз, когда масса топлива кратна 10% от максимальной массы топлива. Эти поднимающиеся края запускают линеаризацию и отображают результаты на графике Николса. Откроется диалоговое окно Показать график (Show Plot) в диалоговом окне Параметры блока (Block Parameters).
Signal Builder блок в модели определяет профиль скорости для самолета. Дважды щелкните блок, чтобы показать инструмент «Диспетчер проверки» (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 мин, но может увеличить время, необходимое для выполнения моделирования.
В диалоговом окне «Параметры блока» можно выбрать параметр «Включить обнаружение пересечения нуля» или использовать 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
Вкладка «Ведение журнала» в 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]
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')