Этот пример показывает, как подтвердить блок блоком аналитический результат линеаризации с помощью оценки частотной характеристики. Чтобы запустить этот пример, вам нужно программное обеспечение Aerospace Blockset™.
Откройте модель Simulink для легкого самолета. Для получения дополнительной информации об этой модели см. Легкий Проект Самолета (Aerospace Blockset).
mdl = 'scdskyhogg';
open_system(mdl)
Можно линеаризовать легкую модель самолета от высотного сигнала команды, AltCmd
, к обнаруженной высоте, h_sensed
. Эти линейные аналитические точки уже заданы в модели.
io = getlinio(mdl)
2x1 vector of Linearization IOs: -------------------------- 1. Linearization input perturbation located at the following signal: - Block: scdskyhogg/Pilot/Add - Port: 1 - Signal Name: AltCmd 2. Linearization output measurement located at the following signal: - Block: scdskyhogg/Vehicle System Model/Avionics/Autopilot/Bus Selector1 - Port: 1 - Signal Name: <h_sensed>
Линеаризуйте модель с помощью функции linearize
. Модель предварительно сконфигурирована, чтобы использовать полученное использование рабочей точки снимка состояния симуляции в t = 75.
sys = linearize(mdl,io); bode(sys)
Чтобы определить, получают ли результаты линеаризации правильно характеристики нелинейной модели, такие как антирезонанс приблизительно 6,28 рад/с, можно подтвердить результат линеаризации с помощью frestimate
.
Создайте sinestream входной сигнал. Используйте результат линеаризации в качестве входного параметра, чтобы автоматически установить различные параметры sinestream входного сигнала, такие как набор частот и количество периодов для каждой частоты, на основе линейной системы.
in = frest.Sinestream(sys); in.Amplitude = 0.5
The sinestream input signal: Frequency : [0.0034142;0.0054345;0.0086502;0.013768 ...] (rad/s) Amplitude : 0.5 SamplesPerPeriod : [110417;69370;43582;27381 ...] NumPeriods : [4;4;4;4 ...] RampPeriods : 0 FreqUnits (rad/s,Hz): rad/s SettlingPeriods : [1;1;1;1 ...] ApplyFilteringInFRESTIMATE (on/off) : on SimulationOrder (Sequential/OneAtATime): Sequential
Программное обеспечение выбирает 25 частот, на которых можно вычислить ответ. Эти частоты отличаются между 0,0034 рад/с и 14,5 рад/с. Частоты, которые автоматически выбраны особое внимание на том, где интересные движущие силы происходят (такие как антирезонанс на уровне 6,28 рад/с). Количество периодов, которые это возьмет для системы, чтобы достигнуть устойчивого состояния, оценивается для каждой из этих частот и отличается между 1 периодом (для 0,0034 рад/с) и 188 периодами (для 14,5 рад/с).
Оцените частотную характеристику с помощью этого входного сигнала. frestimate
моделирует модель с входным сигналом, который может занять много времени в нормальной имитационной модели. Чтобы ускорить симуляцию, сконфигурируйте модель, чтобы использовать быстрый режим Accelerator.
set_param(mdl,'SimulationMode','rapid');
Используя быстрый режим Accelerator может значительно увеличить скорость симуляции. Фактическое улучшение скорости зависит от вашей конфигурации компьютера.
Чтобы запустить оценку частотной характеристики используют следующую команду.
sysest = frestimate(mdl,in,io);
В данном примере можно загрузить результат оценки MAT-файла.
load scdskyhogg_frestresults.mat;
Сравните аналитический результат линеаризации с данными о частотной характеристике из frestimate
. Данные о частотной характеристике и аналитический результат линеаризации соответствуют хорошо, подтверждая тот антирезонанс между частотами, 1 и 10 рад/с действительно существуют в фактической нелинейной модели самолета.
bode(sys,sysest,'r*')
Закройте модель.
bdclose('scdskyhogg')