В этом примере показано, как эмулировать спектр анализатор, который измеряет частотную характеристику системы непрерывного времени, управляемой комплексным синусоидальным сигналом. В этой модели Simulink® блок Plant описывает резонирующую систему второго порядка формы
с собственной частотой (или 150 Гц) и коэффициент затухания. Поскольку система является underdamped (), система имеет два комплексно-сопряженных полюса. В реальном приложении замените этот блок на подсистему, состоявшую из xPC D/A и блоков A/D, которые измеряют ответ устройства под тестом (DUT).
Спектр анализатор состоит из этих компонентов:
Блок Sinusoidal Generator, который производит комплексный синусоидальный сигнал увеличивающейся частоты. В блоке график Stateflow® использует временную логику, чтобы выполнить итерации в области значений частот.
Анализатор диаграммы Stateflow, который вычисляет частотную характеристику (величина и угол фазы) системы на заданной частоте. График указывает изменения в частоте при помощи логики обнаружения изменения.
Диаграмма Stateflow Разворачивает, который обрабатывает измеренный угол фазы и разворачивает результат так, чтобы не было никаких резких скачков между и.
Спектр анализатор отображает измеренную частотную характеристику как пару дискретных Диаграмм Боде.
Блок Sinusoid Generator имеет два выходных параметров:
Скалярный f
это представляет частоту тока.
Комплексный y
сигнала это имеет частоту
f
.
Можно управлять поведением блока путем изменения его параметров диалогового окна маски. Например, значения по умолчанию задают синусоидальный сигнал с частотами между 10 Гц и 1000 Гц. Блок содержит каждое значение частоты в течение 0,2 секунд, и затем постепенно увеличивает частоту шагом 10 Гц.
Чтобы управлять синхронизацией генератора сигнала, блок содержит диаграмму Stateflow, которая применяет абсолютно-разовую временную логику.
В процессе моделирования график проходит эти этапы:
Инициализируйте Частоту: переход по умолчанию устанавливает частоту сигнала f
к значению параметра fstart
. Задайте значение fstart
в диалоговом окне маски Генератора Синусоиды.
Сгенерируйте сигнал: в то время как Generate
состояние активно, график производит комплексный y = exp(2*pi*f*t*1i)
сигнала на основе частоты
f
и время t
начиная с последнего изменения в частоте. Чтобы определить прошедшее время (в секундах) начиная с, состояние стало активным, график вызывает временный логический оператор temporalCount
.
Частота обновления: после Generate
состояние активно для delay
секунды, переходы графика из состояния, увеличивают частоту f
fstep
, и возвращается к Generate
состояние. Чтобы определить синхронизацию обновлений частоты, график вызывает временный логический оператор after
и проверяет знак мнимой части сигнала до и после шага текущего времени. Проверки знака гарантируют, что выходной сигнал завершает полный цикл, прежде чем частота будет обновлена, предотвращая большие изменения в выходном сигнале. Задайте значения fstep
и delay
в диалоговом окне маски Генератора Синусоиды.
Симуляция остановки: Когда частота f
достигает значения параметра fstop
, переходы графика к Stopped
состояние. Активный выход Stopped
состояния инициировал блок Stop Simulation и концы симуляции. Задайте значение
fstop
в диалоговом окне маски Генератора Синусоиды.
График Анализатора берет комплексный u
сигнала и выход
yp
от блока Plant и вычисляет величину и фазу объекта выход.
Для каждого значения частоты график обеспечивает две рабочих суммы:
Сумма y
аппроксимирует интеграл продукта объекта выход yp
(вещественное число) и комплексный u
сигнала.
Сумма yn
аппроксимирует интеграл продукта входа imag(u)
объекта и комплексный
u
сигнала. Этот интеграл представляет накопление гипотетического объекта с модульной передаточной функцией.
Чтобы обнаружить изменение в частоте, график использует оператор hasChanged
охранять самопереход на Analyze
состояния. Когда частота изменяется, действия с этим переходом вычисляют величину и фазу объекта, выведенного путем нормализации
y
относительно yn
.
Разворачивать график препятствует тому, чтобы измеренный угол фазы изменился больше, чем радианами в одном временном шаге.
В этом графике переходы тестируют изменение во входе u
прежде, чем вычислить новое выходное значение y
.
Если входные увеличения больше, чем радианами, график возмещает выход радианами.
Если входные уменьшения больше, чем радианами, график возмещает выход радианами.
Когда вы симулируете модель, блок scope показывает частотную характеристику системы (величина и фаза) как функция времени симуляции.
В графике величины максимальное значение в указывает на ответ блока Plant к резонансной частоте. Пиковая амплитуда - приблизительно 1,7.
В графике фазы угол изменяется от 0 до радианов. Каждый комплексный полюс системы добавляет радианы в угол фазы.
Чтобы определить измеренную резонансную частоту, постройте измеренную величину и фазу против входной частоты объекта. В процессе моделирования модель сохраняет эти значения в объекте logsout
логгирования сигнала в рабочем пространстве MATLAB. Можно получить доступ к регистрируемым значениям при помощи
метод. Например, чтобы создать Диаграмму Боде для измеренной частотной характеристики системы и чертить красный курсор на уровне 150 Гц, введите:get
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);
Диаграмма Боде показывает, что измеренная резонансная частота составляет приблизительно 150 Гц, совпадая со значением, предсказанным динамикой объекта.
after | get
| hasChanged | Stop Simulation | temporalCount