exponenta event banner

Оценка частотного отклика с использованием методов моделирования

В этом примере показано, как получить частотную характеристику моделей Simulink, когда аналитическая поблочная линеаризация не дает и точного ответа из-за динамики на основе событий в пути линеаризации. Примерами таких систем являются модели с запускаемыми подсистемами или модели, использующие входные сигналы широтно-импульсной модуляции (ШИМ).

Открытие модели

Откройте модель Simulink для синхронизации двигателя.

mdl = 'scdengine';
open_system(mdl)

Аналитическая поблочная линеаризация этой модели от угла дросселя до частоты вращения двигателя дает нулевой результат линеаризации из-за запущенной подсистемы сжатия в пути линеаризации.

io = getlinio(mdl);
linsys = linearize(mdl,io)
linsys =
 
  D = 
                ThrottleAngl
   EngineSpeed             0
 
Static gain.

Оценка частотной характеристики с использованием входного сигнала синестрима

Входные сигналы синестрима являются наиболее надежными входными сигналами для оценки точной частотной характеристики модели Simulink с использованием frestimate функция. Синестрименный сигнал состоит из отдельных синусоидальных сигналов, которые присоединены друг к другу. frestimate функция моделирует модель для каждой частоты во входном сигнале синестрима, как указано с помощью Frequency для соответствующего количества периодов, как указано с помощью NumPeriods параметр. После моделирования frestimate использует выходной сигнал для вычисления отклика на каждой частоте. frestimate использует только периоды после достижения системой устойчивого состояния для этой входной частоты, то есть после ряда периодов установления, как указано с помощью SettlingPeriods параметр.

Создайте синестрименный сигнал с 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
 

По умолчанию каждая частота во входном сигнале синестрима моделируется в течение 4 периодов, то есть NumPeriods равно 4 для всех частот, а конец первого периода определяется как то, где система достигает устойчивого состояния, то есть SettlingPeriods равно 1 для всех частот. Поэтому frestimate использует последние 3 периода выходных сигналов.

Используя этот входной сигнал синестрима, выполните оценку частотного отклика с использованием frestimate и постройте график полученных данных частотной характеристики.

[sys,simout] = frestimate(mdl,io,in);
bode(sys)

Результаты оценки можно проверить с помощью средства просмотра результатов моделирования. Средство просмотра показывает результаты моделирования во временной и частотной областях для выбранных частот и график сводки, на котором можно интерактивно переключаться между частотами.

frest.simView(simout,in,sys);

Средство просмотра можно использовать для диагностики проблем, влияющих на точность оценки частотного отклика, например:

  • Не достигает устойчивого состояния

  • Возбуждение нелинейностей

  • Наезд на неустойчивости

Оценка частотной характеристики с использованием входного сигнала Chirp

Другим входным сигналом, который можно использовать при оценке данных частотной характеристики из модели Simulink, является частотная частота. Частотный чирп отличается от синестрима тем, что частота мгновенно изменяется.

Для получения более быстрой оценки частотной характеристики можно использовать входные сигналы с частотной характеристикой. Однако результаты оценки частоты, полученные с использованием входных сигналов частотной частоты, могут быть менее надежными, чем результаты, полученные с использованием входов синестрима, поскольку каждая частота не моделируется достаточно долго, чтобы привести систему в устойчивое состояние на этой частоте.

Создайте чирп-сигнал, который логарифмически сдвигается между частотами 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);

Постройте график результатов, полученных как от синестрименного, так и от чирпового входных сигналов.

bode(sys,sys_chirp,'r')

Оценка частотной характеристики с использованием входного сигнала PRBS

Другим входным сигналом, который можно использовать при оценке частотной характеристики модели 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 и синестрима.

bode(sys_PRBS,sys,'r',{0.1 10})

Закройте модель.

bdclose('scdengine')

См. также

Связанные темы