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

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

Откройте модель

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

mdl = 'scdengine';
open_system(mdl)

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

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

Оцените частотную характеристику, используя входной сигнал Sinestream

Входные сигналы Sinestream являются наиболее надежными входными сигналами для оценки точной частотной характеристики модели Simulink с помощью frestimate функция. Сигнал синестрима состоит из отдельных синусоидальных сигналов, которые присоединены друг к другу. The 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);

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

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

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

  • Нахождение в нестабильности

Оцените частотную характеристику, используя входной сигнал щебета

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

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

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

bdclose('scdengine')

См. также

Похожие темы