Этот пример показывает, как использовать блок Frequency Response Estimator, чтобы выполнить онлайновую оценку частотных характеристик объекта. Для нелинейного объекта оценка в различных номинальных рабочих точках производит различные частотные характеристики.
Частотная характеристика описывает ответ устойчивого состояния системы к синусоидальному входному сигналу. Если система является линейным G (s), выходной сигнал является синусоидой той же частоты с различным значением и сдвигом фазы. Модель (frd
) данных о частотной характеристике, которая хранит информацию частотной характеристики на нескольких частотах, полезна для задач, таких как анализ динамики объекта, проверка результатов линеаризации, разработка системы управления и оценка параметрической модели.
Существуют различные способы получить модель frd
в окружении Simulink. Наиболее распространенный подход должен линеаризовать модель Simulink и вычислить частотные характеристики непосредственно от полученной системы пространства состояний. Когда модель Simulink не может линеаризоваться, можно использовать команду frestimate
или использовать приложение Linear Analysis Tool, чтобы запустить симуляцию с некоторыми сигналами возмущения. Впоследствии, частотные характеристики объекта оцениваются оффлайн на основе собранных данных об эксперименте. Этот подход называется оффлайновой оценкой.
Этот пример показывает, что альтернативный онлайновый подход оценки с помощью блока Frequency Response Estimator должен провести эксперимент и оценить частотную характеристику во время симуляции. Несмотря на то, что этот пример использует объект, смоделированный в Simulink, если у вас нет модели объекта управления в Simulink, можно развернуть блок в целевой системе и выполнить оценку частотной характеристики против материальной части в режиме реального времени. Для получения дополнительной информации смотрите Онлайновые Основы Оценки Частотной характеристики.
Этот пример использует стабильный нелинейный объект SISO. Объект имеет два состояния. Обрежьте модель, чтобы найти начальную установившуюся рабочую точку, в которой объект вывод является нулем.
plantMDL = 'scdfrePlant'; y0 = 0; op = operspec(plantMDL); op.Outputs.Known = true; op.Outputs.y = y0; options = findopOptions('DisplayReport','off'); [op_point, op_report] = findop(plantMDL,op,options); x0 = [op_report.States(1).x;op_report.States(2).x]; y0 = op_report.Outputs.y; u0 = op_report.Inputs.u;
Цель этого примера состоит в том, чтобы получить частотные характеристики объекта от 0,1 рад/с до 10 рад/с в двух других установившихся рабочих точках, объект вывод = 0.5 и объект вывод =-0.5. Чтобы принести объект к этим рабочим точкам, разработайте дискретный ПИД-регулятор в начальной рабочей точке. Используйте шаг расчета контроллера 0,01 секунд, и пропускная способность разомкнутого цикла составляет 20 рад/с.
Ts = 0.01;
G0 = c2d(linearize(plantMDL,op_point),Ts);
c = pidtune(G0,'pidf',20);
Модель scdfreSinestream
включает объект в цикл управления ПИДа с помощью контроллера c
. Это также содержит блок Frequency Response Estimator в действии управления + возмущение выходная настройка. В той настройке вы вставляете блок в цикл управления между контроллером и объектом.
mdlSS = 'scdfreSinestream';
open_system(mdlSS);
Можно использовать запустить/остановить сигнал запустить и остановить онлайновый эксперимент оценки. Когда блок неактивен, управляющий сигнал проходит через блок без любого изменения.
Во время эксперимента, когда Режимом Experiement является Sinestream, блок вводит синусоидальные сигналы в к объекту одна частота за другим от самого низкого до самого высокого. По сравнению с режимом Superposition эксперимент sinestream менее навязчив и более точен. Однако это требует, чтобы намного более длительное время провело эксперимент.
В этом примере можно получить точную линеаризацию модели. Поэтому можно использовать его в качестве базовой линии в блоке, позволяя вам непосредственно сравнить результат оценки с этой "истиной" во время выполнения. Блок сконфигурирован, чтобы использовать модель G1
в качестве базовой линии для Диаграммы Боде, которую это генерирует. Найдите установившуюся рабочую точку, в которой объект вывод 0.5, и линеаризуйте в этой рабочей точке, чтобы получить G1
.
op.Outputs.y = 0.5; op_point = findop(plantMDL,op,options); G1 = c2d(linearize(plantMDL,op_point),Ts);
Эксперимент запускается в 10 секунд после того, как ПИД-регулятор переместит объект в новую рабочую точку (y = 0.5). После того, как эксперимент запускается, ПИД-регулятор пытается отклонить введенные синусоиды, которые являются эффективно воздействием загрузки. Таким образом контроллер гарантирует, что объект не перемещается слишком далеко от номинальной рабочей точки во время эксперимента и уменьшает влияние нелинейности объекта на результате оценки. Моделируйте модель и наблюдайте относительно Диаграммы Боде, как предполагаемый ответ развивается во время эксперимента. Результат оценки совпадает с базовой линией очень хорошо.
sim(mdlSS);
figSS = gcf;
hold on;
Откройте другую модель, scdfreeSuperposition
. В этой модели блок Frequency Response Estimator сконфигурирован для возмущения только вывод. В этой настройке можно расположить, чтобы блокироваться за пределами цикла управления. Когда блок неактивен, сигнал возмущения, который ввод блока Sum 0, таким образом, цикл незатронут.
mdlSP = 'scdfreSuperposition';
open_system(mdlSP);
Эта модель имеет тот же объект и контроллер. Однако блок Frequency Response Estimator в этой модели сконфигурирован, чтобы использовать режим эксперимента Суперпозиции. В этом режиме все синусоиды добавлены вместе и введены к объекту одновременно. По сравнению с экспериментом sinestream эксперимент суперпозиции, должен быстрее (особенно, когда вы предназначаетесь для низких частот).
Найдите установившуюся рабочую точку с объектом выводом-0.5. Линеаризуйте объект, чтобы найти базовый ответ в этой рабочей точке, G2
. Блок Frequency Response Estimator сконфигурирован, чтобы использовать эту базовую линию, чтобы сгенерировать Диаграмму Боде.
op.Outputs.y = -0.5; op_point = findop(plantMDL,op,options); G2 = c2d(linearize(plantMDL,op_point),Ts);
Эксперимент запускается в 10 секунд после того, как ПИД-регулятор переместит объект в новую рабочую точку (y =-0.5). Обратите внимание на то, что рекомендуемая продолжительность эксперимента составляет 377 секунд, намного короче, чем 1 738 секунд, используемых в эксперименте sinestream. Моделируйте модель и снова наблюдайте прогресс оценки на Диаграмме Боде.
sim(mdlSP);
figSP = gcf;
hold on;
Блок Frequency Response Estimator имеет выходной порт data
, который позволяет вам регистрировать данные об эксперименте от симуляции или в режиме реального времени. Можно обработать тот набор данных оффлайн с командой frestimate
, чтобы сгенерировать объект frd
.
w = logspace(-1,1,20);
Сравните онлайновая и оффлайновая оценка следует из эксперимента sinestream.
G1frd = frestimate(dataSS,w,'rad/s'); figure(figSS); bodeplot(gca,G1frd,w,'o'); legend('truth','online','offline')
Сравните онлайновая и оффлайновая оценка следует из эксперимента суперпозиции.
G2frd = frestimate(dataSP,w,'rad/s'); figure(figSP); bodeplot(gca,G2frd,w,'o'); legend('truth','online','offline')
Для получения дополнительной информации об использовании данных об эксперименте для оффлайновой оценки смотрите, Собирают Данные об Эксперименте Частотной характеристики для Оффлайновой Оценки.
Средство оценки частотной характеристики