В этом примере показано, как использовать блок Frequency Response Estimator, чтобы выполнить оценку частотной характеристики, экспериментируют и хранят данные для более поздней оценки оффлайн. На практике можно использовать этот подход, чтобы выполнить эксперимент в режиме реального времени против физического объекта, когда развернутая среда нуждается в ресурсах для онлайнового расчета оценки. В этом примере, в целях рисунка, вы выполняете эксперимент на объекте, смоделированном в Simulink®.
Этот пример использует модель, которая уже содержит блок Frequency Response Estimator, сконфигурированный, чтобы собрать данные об эксперименте для оффлайновой оценки. Откройте модель.
mdl = "CollectFreqRespEstimDataEx.slx";
open_system(mdl)
Модель содержит объект в настройке с обратной связью с ПИ-контроллером. Блок 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
и PlantOutput
timeseries содержит сигналы во входных параметрах блока 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*')