В этом примере показов, как использовать блоки в библиотеках 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')