Этот пример показывает, как использовать блок Frequency Response Estimator для выполнения онлайн-оценки частотных характеристик объекта. Для нелинейного объекта оценка в различных номинальных рабочих точках производит различные частотные характеристики.
Частотная характеристика описывает статическую характеристику системы на синусоидальный входной сигнал. Если система является линейной G (s), выходной сигнал является синусоидой той же частоты с другой величиной и сдвигом фазы. Данные частотной характеристики (frd
) модель, которая хранит информацию частотной характеристики на нескольких частотах, полезна для таких задач, как анализ динамики объекта, валидация результатов линеаризации, разработка системы управления и оценка параметрической модели.
Существуют различные способы получить frd
модель в окружение Simulink. Наиболее распространенным подходом является линеаризация модели Simulink и вычисление частотных характеристик непосредственно от полученной системы в пространстве состояний. Когда модель Simulink не может быть линеаризирована, можно использовать frestimate
команда или используйте приложение Model Linearizer, чтобы запустить симуляцию с некоторыми сигналами возмущения. После этого частотные характеристики объекта оценивают в автономном режиме на основе собранных данных эксперимента. Этот подход называется оффлайн-оценкой.
Этот пример показывает альтернативный подход онлайн-оценки, используя блок 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
. Он также содержит блок Частотной характеристики Estimator в действии управления + возмущении выхода строения. В этом строении вы вставляете блок в цикл управления между контроллером и объектом.
mdlSS = 'scdfreSinestream';
open_system(mdlSS);
Можно использовать сигнал start/stop, чтобы начать и остановить онлайн-эксперимент по оценке. Когда блок находится в простое, управляющий сигнал проходит через блок без каких-либо изменений.
Во время эксперимента, когда Режим Эксперимента является 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
. В этой модели блок Частотной характеристики Estimator сконфигурирован для возмущения только выходом. В этом строении можно расположить, чтобы заблокировать вне цикла управления. Когда блок находится в простое, сигнал возмущения, входящий в блок Sum, равен 0, поэтому цикл не влияет.
mdlSP = 'scdfreSuperposition';
open_system(mdlSP);
Эта модель имеет один и тот же объект и контроллер. Однако блок Частотной характеристики Estimator в этой модели сконфигурирован, чтобы использовать режим эксперимента с Суперпозицией. В этом режиме все синусоиды складываются вместе и впрыскиваются на объект одновременно. По сравнению с экспериментом с синестримом, эксперимент с суперпозицией должен быть быстрее (особенно когда вы нацелены на низкие частоты).
Найдите установившуюся рабочую точку с выходом объекта -0,5. Линеаризируйте объект, чтобы найти базовый ответ в этой рабочей точке, G2
. Блок Частотной характеристикой Estimator сконфигурирован, чтобы использовать эту базовую линию для генерации Диаграммы Боде.
op.Outputs.y = -0.5; op_point = findop(plantMDL,op,options); G2 = c2d(linearize(plantMDL,op_point),Ts);
Эксперимент начинается с 10 секунд после того, как ПИД-регулятор перемещает объект к новой рабочей точке (y = -0,5). Обратите внимание, что рекомендуемая длина эксперимента составляет 377 секунд, что намного короче 1738 секунд, используемых в эксперименте с синестримом. Симулируйте модель и снова наблюдайте прогресс оценки на диаграмме Боде.
sim(mdlSP);
figSP = gcf;
hold on;
Блок Оценки Частотной Характеристики имеет data
outport, который позволяет вам записывать данные эксперимента из симуляции или в реальном времени. Можно обработать этот набор данных в автономном режиме с frestimate
команда для генерации frd
объект.
w = logspace(-1,1,20);
Сравните результаты оценки в режиме онлайн и вне сети из эксперимента с синестримом.
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')
Для получения дополнительной информации об использовании данных эксперимента для автономной оценки, смотрите Сбор данных эксперимента частотной характеристики для автономной оценки.