Этот пример показывает, как использовать блок Frequency Response Estimator, чтобы выполнить оценку частотной характеристики, экспериментируют и хранят данные для более поздней оценки оффлайн. На практике можно использовать этот подход, чтобы выполнить эксперимент в режиме реального времени против материальной части, когда развернутая среда нуждается в ресурсах для онлайнового вычисления оценки. В этом примере, в целях рисунка, вы выполняете эксперимент на объекте, смоделированном в Simulink®.
Этот пример использует модель, которая уже содержит блок Frequency Response Estimator, сконфигурированный, чтобы собрать данные об эксперименте для оффлайновой оценки. Откройте модель.
mdl = "CollectFreqRespEstimDataEx.slx";
open_system(mdl)
Модель содержит объект в настройке с обратной связью с контроллером PI. Блок Frequency Response Estimator принимает управляющий сигнал как вход u
. Это питает управляющий сигнал плюс возмущение во вход объекта.
Блок Frequency Response Estimator сконфигурирован, чтобы запустить эксперимент в sinestream режиме с теми же параметрами эксперимента, используемыми в примере Онлайновая Оценка Частотной характеристики Во время Симуляции. В этом примере, однако, параметр Режима Оценки устанавливается на Оффлайн. В этой настройке блок вводит заданные сигналы возмущения и собирает данные об ответе, но не выполняет оценку. Блок сконфигурирован, чтобы использовать сигнал sinestream на частотах w = logspace(0,2,20)
.
Моделируйте модель. Блок выполняет эксперимент и собирает данные об ответе. Осциллограф показывает прикладной сигнал sinestream и отклик системы.
sim(mdl)
Модель сконфигурирована, чтобы регистрировать данные об оценке в выходном порту блока data
(см., что Данные сигнала Экспорта Используют Сигнал, Регистрирующий (Simulink) для получения информации о регистрации данных). Данные хранятся в рабочем пространстве MATLAB как объект Simulink.SimulationData.Dataset
logsout
. Поскольку data
является единственным регистрируемым портом, можно получить доступ к записанным данным в первой записи в logsout
. Поле Values
той записи является структурой, содержащей четыре поля.
logdata = logsout{1}.Values
logdata = struct with fields: Ready: [1×1 timeseries] Perturbation: [1×1 timeseries] PlantInput: [1×1 timeseries] PlantOutput: [1×1 timeseries]
Поле Ready
является timeseries, содержащим логический сигнал, который указывает, какие временные шаги содержат данные к используемому для оценки. Для сигнала sinestream это поле указывает который периоды возмущения для оценки отбрасыванием (улаживающий периоды). Perturbation
содержит sinestream возмущение, применился к объекту. PlantInput
и timeseries PlantOutput
содержат сигналы во входных параметрах блока u
и y
, соответственно.
Если вы собираете эти данные в развернутой среде с ограниченными вычислительными ресурсами, можно использовать данные, чтобы выполнить оценку частотной характеристики оффлайн, с помощью команды frestimate
. Дайте frestimate
структуру logdata
и те же частоты, которые вы использовали для параметра Частот в блоке. процессы frestimate
logdata
, чтобы получить модель (frd
) данных о частотной характеристике, содержащую предполагаемые ответы на тех частотах.
sys_estim = frestimate(logdata,w,'rad/s');
size(sys_estim)
FRD model with 1 outputs, 1 inputs, and 20 frequency points.
Исследуйте предполагаемую частотную характеристику.
figure
bode(sys_estim,'b*')
Средство оценки частотной характеристики