Этот пример показов, как эмулировать анализатор спектра, который измеряет частотную характеристику системы непрерывного времени, управляемой комплексным синусоидальным сигналом. В этой модели Simulink ® блок Plant описывает резонансную систему второго порядка вида
с естественной частотой (или 150 Гц) и коэффициентом затухания. Поскольку система недостаточно демпфирована (), система имеет два сложных сопряженных полюса. В реальном приложении замените этот блок подсистемой, состоящей из блоков xPC D/A и A/D, которые измеряют ответ тестируемого устройства (DUT).
Спектральный анализатор состоит из следующих компонентов:
Блок Синусоидального Генератора, который производит комплексный синусоидальный сигнал возрастающей частоты. Внутри блока график Stateflow ® использует временную логику для итерации в области значений частот.
Анализатор диаграммы Stateflow, который вычисляет частотную характеристику (величину и угол фазы) системы на заданной частоте. График регистрирует изменения частоты при помощи логики обнаружения изменений.
Диаграмма Stateflow Unwrap, которая обрабатывает измеренный угол фазы и разворачивает результат так, чтобы не было резких переходов между и.
Спектральный анализатор отображает измеренную частотную характеристику как пару дискретных диаграмм Боде.
Блок Синусоидного Генератора имеет два выхода:
Скалярное f
который представляет текущую частоту.
Комплексный сигнал y
который имеет частоту f
.
Можно управлять поведением блока, изменив его параметры диалогового окна маски. Для примера значения по умолчанию задают синусоидальный сигнал с частотами между 10Hz и 1000Hz. Блок удерживает каждое значение частоты в течение 0,2 секунд, а затем увеличивает частоту на шаг 10Hz.
Чтобы управлять синхронизацией генератора сигнала, блок содержит диаграмму Stateflow, которая применяет временную логику в абсолютном времени.
Во время симуляции график проходит следующие этапы:
Инициализация частоты: Переход по умолчанию устанавливает частоту сигнала f
к значению параметра fstart
. Задайте значение fstart
в диалоговом окне Sinusoid Generator mask.
Сгенерируйте сигнал: Пока Generate
состояние активно, график формирует комплексный сигнал y = exp(2*pi*f*t*1i)
на основе частотной f
и время t
с момента последнего изменения частоты. Чтобы определить истекшее время (в секундах), когда состояние стало активным, график вызывает оператора временной логики temporalCount
.
Частота обновления: после Generate
состояние активно для delay
секунд, график переходит из состояния, увеличивает частоту f
по fstep
, и возвращается к Generate
состояние. Чтобы определить время обновления частоты, график вызывает оператора временной логики after
и проверяет знак мнимой части сигнала до и после текущего временного шага. Знак проверяет, чтобы выход сигнал завершил полный цикл до обновления частоты, предотвращая большие изменения в выходе сигнале. Задайте значения fstep
и delay
в диалоговом окне Sinusoid Generator mask.
Остановите симуляцию: Когда частота f
достигает значения параметра fstop
график переходит к Stopped
состояние. Выходное состояние активного Stopped
запускает блок Stop Simulation (Simulink), и симуляция заканчивается. Задайте значение fstop
в диалоговом окне Sinusoid Generator mask.
Анализатор графика принимает комплексный сигнал u
и выходные yp
из блока Объекта и вычисляет величину и фазу объекта выхода.
Для каждого значения частоты график поддерживает две текущие суммы:
Сумма y
аппроксимирует интеграл продукта продукции объекта yp
(действительное число) и комплексный сигнал u
.
Сумма yn
аппроксимирует интеграл продукта входного сигнала объекта управления imag(u)
и комплексный сигнал u
. Этот интеграл представляет накопление гипотетического объекта с единичной передаточной функцией.
Чтобы обнаружить изменение частоты, график использует оператор hasChanged
охранять самопереход на состоянии Analyze
. Когда частота меняется, действия на этом переходе вычисляют величину и фазу выхода объекта путем нормализации y
относительно yn
.
Unwrap графика препятствует изменению измеренного угла фазы больше, чем радианы за один временной шаг.
На этом графике переходы проверяют изменение входа u
перед вычислением нового выходного значения y
.
Если вход увеличивается больше, чем радианы, график смещает выход радианов.
Если вход уменьшается больше, чем радианы, график смещает выход радианов.
Когда вы симулируете модель, блок scope показывает частотную характеристику системы (величину и фазу) как функцию времени симуляции.
На графике величины максимальное значение в указывает на реакцию блока Plant на резонансную частоту. Пиковая амплитуда составляет приблизительно 1,7.
На графике фазы угол изменяется от 0 до радианов. Каждый комплексный полюс системы добавляет радианы к углу фазы.
Чтобы определить измеренную резонансную частоту, постройте график измеренных величины и фазы относительно входной частоты объекта управления. Во время симуляции модель сохраняет эти значения в объекте логгирования сигналов logsout
в рабочем пространстве MATLAB. Вы можете получить доступ к записанным значениям с помощью
способ. Для примера, чтобы создать Диаграмму Боде для измеренной частотной характеристики системы и нарисовать красный курсор в 150Hz, введите:get
(Simulink)
figure; subplot(211); plot(logsout.get('frequency').Values.Data, logsout.get('magnitude').Values.Data); line([150 150],[0 2],'Color','red','LineStyle','--'); grid on; title('Magnitude (Output Amplitude/Input Amplitude)');
subplot(212); plot(logsout.get('frequency').Values.Data, logsout.get('phase').Values.Data*180/pi) grid on; title('Phase (Degrees)'); close_system(mdl, 0);
Диаграмма Боде показывает, что измеренная резонансная частота примерно 150Hz, совпадая со значением, предсказанным динамикой объекта.
after | hasChanged | temporalCount | get
(Simulink) | Stop Simulation (Simulink)