В этом примере показано, как получить частотную характеристику моделей 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 входном сигнале симулирована в течение 4 периодов, то есть, NumPeriods
4 для всех частот, и конец первого периода задан, чтобы быть, где система достигает к устойчивому состоянию, то есть, SettlingPeriods
1 для всех частот. Поэтому frestimate
использует последние 3 периода выходных сигналов.
Используя этот 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')