В этом примере показано, как получить частотную характеристику моделей Simulink®, когда аналитическая линеаризация блока блоком не предоставляет точный ответ из-за основанной на событии динамики в пути к линеаризации. Примерами таких систем являются модели с триггируемыми подсистемами или модели с помощью входных сигналов модуляции ширины импульса (PWM).
Откройте модель Simulink для синхронизации механизма.
mdl = 'scdengine';
open_system(mdl)
Аналитическая линеаризация блока блоком этой модели от угла дросселя до скорости вращения двигателя дает нулевой результат линеаризации из-за инициированной подсистемы Сжатия в пути к линеаризации.
io = getlinio(mdl); linsys = linearize(mdl,io)
linsys = D = ThrottleAngl EngineSpeed 0 Static gain.
Входные сигналы Sinestream являются самыми надежными входными сигналами для оценки точной частотной характеристики модели Simulink с помощью frestimate
функция. Сигнал sinestream состоит из отдельных синусоидальных сигналов, которые добавлены друг другу. frestimate
функция симулирует модель для каждой частоты в sinestream входном сигнале, как задано использование Frequency
параметр, для соответствующей суммы периодов, как задано использование NumPeriods
параметр. После симуляции, frestimate
использует выходной сигнал, чтобы вычислить ответ на каждой частоте. frestimate
использование только периоды после системы достигает устойчивого состояния для той входной частоты, то есть, после многих обосновывающихся периодов, как задано использование SettlingPeriods
параметр.
Создайте сигнал sinestream с 50 логарифмически расположенными с интервалами отличными частотами между 0,1 и 10 рад/с.
in = frest.Sinestream('Frequency',logspace(-1,1,50),'Amplitude',1e-3)
The sinestream input signal: Frequency : [0.1 0.10985 0.12068 0.13257 ...] (rad/s) Amplitude : 0.001 SamplesPerPeriod : 40 NumPeriods : 4 RampPeriods : 0 FreqUnits (rad/s,Hz): rad/s SettlingPeriods : 1 ApplyFilteringInFRESTIMATE (on/off) : on SimulationOrder (Sequential/OneAtATime): Sequential
По умолчанию каждая частота в sinestream входном сигнале симулирована в течение четырех периодов, то есть, NumPeriods
4
для всех частот. Кроме того, конец первого периода задан, чтобы быть, где система достигает устойчивого состояния, то есть, SettlingPeriods
1
для всех частот. Поэтому frestimate
использует последние три периода выходных сигналов.
Используя этот sinestream входной сигнал, выполните оценку частотной характеристики с помощью frestimate
функция, и отображает получившиеся данные о частотной характеристике на графике.
[sys,simout] = frestimate(mdl,io,in); bode(sys)
Можно смотреть результаты оценки с помощью Средства просмотра Результатов симуляции. Средство просмотра показывает временной интервал и результаты симуляции частотного диапазона для выбранных частот и итоговой диаграммы Боде, где можно в интерактивном режиме переключиться между частотами.
frest.simView(simout,in,sys);
Можно использовать средство просмотра в качестве инструмента, чтобы диагностировать проблемы, которые влияют на точность оценки частотной характеристики, такой как:
Не достижение устойчивого состояния
Возбуждение нелинейности
Столкновение с нестабильностью
Другой входной сигнал, который можно использовать при оценке данных о частотной характеристике из модели Simulink, является щебетом частоты. Щебет частоты отличается от sinestream, по которому мгновенно варьируется частота.
Можно использовать входные сигналы щебета, чтобы получить более быструю оценку частотной характеристики. Однако получившаяся частотная характеристика может быть менее надежной, чем то полученное использование sinestream входные параметры, поскольку каждая частота не симулирована достаточно долго, чтобы управлять системой к устойчивому состоянию на той частоте.
Создайте сигнал щебета что развертки между частотами 0.1 и 10 рад/с логарифмически.
in_chirp = frest.Chirp('FreqRange',[0.1 10],'Amplitude',1e-3,... 'SweepMethod','logarithmic','NumSamples',3000);
Выполните оценку частотной характеристики с помощью сигнала щебета.
sys_chirp = frestimate(mdl,io,in_chirp);
Постройте результаты, полученные от обоих sinestream и входные сигналы щебета вместе.
bode(sys,sys_chirp,'r')
Другой входной сигнал, который можно использовать при оценке данных о частотной характеристике из модели Simulink, является псевдослучайной двоичной последовательностью (PRBS). PRBS является периодическим, детерминированным сигналом с подобными белому шуму свойствами что сдвиги между двумя значениями.
Можно использовать входные сигналы PRBS, чтобы получить более быструю оценку частотной характеристики с более высоким разрешением частоты, чем сигнал щебета.
Создайте сигнал PRBS с порядком 12
и один период в сигнале. Используя один период производит апериодический PRBS. Длина сгенерированного PRBS 4095 (2^12 - 1). Чтобы получить точную оценку частотной характеристики, длина PRBS должна быть достаточно большой. Чтобы гарантировать, что система правильно взволнована, задайте амплитуду возмущения PRBS как 0.01
.
in_PRBS = frest.PRBS('Order',12,'NumPeriods',1,'Amplitude',1e-2,'Ts',0.1);
Выполните оценку частотной характеристики с помощью сигнала PRBS.
sys_PRBS = frestimate(mdl,io,in_PRBS);
Постройте результаты, полученные и с PRBS и с sinestream входными сигналами вместе.
bode(sys_PRBS,sys,'r',{0.1 10})
Закройте модель.
bdclose('scdengine')