Онлайн-оценка частотных характеристик нелинейного объекта

Этот пример показывает, как использовать блок 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);

Онлайн-оценка с использованием режима Sinestream

Модель 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')

Для получения дополнительной информации об использовании данных эксперимента для автономной оценки, смотрите Сбор данных эксперимента частотной характеристики для автономной оценки.

См. также

Похожие темы