В этом примере показано, как использовать блок 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')
Для получения дополнительной информации об использовании данных об эксперименте для оффлайновой оценки смотрите, Собирают Данные об Эксперименте Частотной характеристики для Оффлайновой Оценки.