Настройте запланированный на усиление контроллер Используя блок автотюнера ПИДа с обратной связью

В этом примере показано, как использовать блок Closed-Loop PID Autotuner, чтобы настроить запланированный на усиление контроллер в одной симуляции.

Системная модель бака с водой

Этот пример использует запланированный на усиление контроллер, чтобы управлять уровнем воды нелинейного Системного объекта Бака с водой. Системным объектом Бака с водой первоначально управляет один ПИ-контроллер в watertank Модель Simulink®. Для получения дополнительной информации о нелинейном Системном объекте Бака с водой см. watertank Модель Simulink.

Следующие разделы описывают, как изменить watertank модель для настройки и проверки запланированного на усиление контроллера. В качестве альтернативы используйте watertank_gainscheduledcontrol модели предоставляют этот пример.

Соедините блок автотюнера ПИДа с обратной связью с объектом и контроллером

Вставьте блок Closed-Loop PID Autotuner между контроллером и объектом как показано в следующей схеме. Запустить/остановить сигнал запускает и останавливает эксперимент с обратной связью. Когда никакой эксперимент не запускается, блок Closed-Loop PID Autotuner ведет себя как блок усиления единицы, где u сигнализируют о передачах непосредственно в u +Δu.

Соедините блоки, чтобы сохранить настроенные усиления

Чтобы создать расписание усиления, автоматически настроенные усиления зарегистрированы в каждой рабочей точке. В этом примере триггируемая подсистема используется, чтобы записать ссылочные высоты, и усиления контроллера к рабочей области на падающие ребра автотюнера запускают/останавливают сигнал. Симуляция этой модели производит массив настроенных усилений и точек останова для легкого использования с динамическими интерполяционными таблицами, чтобы протестировать контроллер.

Подтвердите эффективность запланированного на усиление контроллера

После того, как вы получаете набор точек останова и настроенных усилений, тестируете настроенный запланированный на усиление контроллер с Системным объектом Бака с водой. Для этого удалите блок автотюнера, измените источник блока PID Controller к внешнему, и вставьте Интерполяционную таблицу Динамические блоки как показано в схеме.

Интегрируйте и настройку и тестирование в модели в качестве примера

В этом примере запланированный на усиление контроллер настраивается с помощью блока Closed-Loop PID Autotuner, и его производительность затем проверена в той же модели. Модель в качестве примера использует различную подсистему, чтобы организовать настройку и тестирование рабочих процессов.

Чтобы переключиться между Настройкой и Режимами тестирования, дважды кликните Различный блок Subsystem.

Настройте контроллер в одной рабочей точке

Прежде, чем настроить запланированный на усиление контроллер в нескольких рабочих точках, настраиваясь в одной рабочей точке помогает вам сконфигурировать блок Closed-Loop PID Autotuner. Откройте модель watertank_gainscheduledcontrol в качестве примера с усилениями контроллера, используемыми watertank Модель Simulink.

mdl = 'watertank_gainscheduledcontrol';
Kp = 1.599340;
Ki = 0.079967;
open_system(mdl);
set_param([mdl,'/Variant Subsystem'],'SimMode','Tuning');

Сконфигурируйте блок автотюнера ПИДа с обратной связью

После соединения блока Closed-Loop PID Autotuner с Системной моделью объекта управления Бака с водой и блока PID Controller, используйте параметры блоков, чтобы задать настройки настройки и эксперимента. Этот пример использует те же конструктивные требования, найденные в Компенсаторе Проекта в качестве примера Используя Автоматизированную Настройку ПИДа, и Графический Предвещают Проект. Эти конструктивные требования в форме характеристик переходного процесса с обратной связью.

  • Перерегулирование меньше чем 5%

  • Время нарастания меньше чем 5 секунд

Чтобы настроить ПИД-регулятор, чтобы соответствовать вышеупомянутым конструктивным требованиям, параметры блока Closed-Loop PID Autotuner предварительно заполняются. Вкладка Tuning имеет три основных настраивающих настройки.

  • Целевая полоса пропускания — Определяет, как быстро вы хотите, чтобы контроллер ответил. Целевая полоса пропускания является примерно 2/желаемыми временами нарастания. Для желаемого времени нарастания 4 секунд набор предназначается для полосы пропускания = 2/4 = 0,5 рад/с.

  • Целевой запас по фазе — Определяет, как устойчивый вы хотите, чтобы контроллер был. В этом примере начните со значения по умолчанию 60 градусов.

  • Шаг расчета эксперимента — Шаг расчета для эксперимента выполняется блоком автотюнера. Используйте рекомендуемую 0.02/полосы пропускания для шага расчета = 0.02/0.5 = 0,04 с.

Вкладка Experiment имеет три основных настройки эксперимента.

  • Тип объекта — Задает, устойчив ли объект асимптотически или объединяется. В этом примере объединяется Системный объект Бака с водой.

  • Знак объекта — Задает, имеет ли объект положительный или знак минус. Знак объекта положителен, если положительное изменение во входе объекта в номинальной рабочей точке приводит к положительному изменению на объекте выход, когда объект достигает нового устойчивого состояния. В этом примере Системный объект Бака с водой имеет положительный знак объекта.

  • Амплитуды синуса — Задают амплитуды введенных возмущений синусоиды. В этом примере задайте амплитуду синуса 0,3.

Симулируйте в одной рабочей точке

Запустите эксперимент в 140 секунд, чтобы гарантировать, что уровень воды достиг установившийся H=10. Рекомендуемая длительность эксперимента составляет 200/полос пропускания секунд = 200/0.4 = 500 с. Со временем начала 140 секунд время остановки составляет 640 секунд. Время остановки симуляции далее увеличено, чтобы получить полный эксперимент.

set_param([mdl,'/Variant Subsystem/Tuning/Closed-Loop PID Autotuner1'],'TargetPM','60');
set_param([mdl,'/Signal Editor'],'ActiveScenario','TuningSignal_OnePoint');
simOut = sim(mdl,'StopTime','800');
simOut.Kp_tuned
ans = 1.8257
simOut.Ki_tuned
ans = 0.2037

В watertank Модель Simulink, начальными усилениями ПИ-контроллера является Kp = 1.599340 и Ки = 0.079967. После настройки усилениями контроллера является Kp = 1.82567 и Ки = 0.20373.

Проверяйте настраивающийся результат и настройте автоматически настраивающиеся параметры

Замените усиления контроллера на новые автоматически настроенные усиления и подтвердите конструктивные требования.

Kp = simOut.Kp_tuned;
Ki = simOut.Ki_tuned;
simOut = sim(mdl,'StopTime','100');
figure;
plot(simOut.ScopeDataGS.time,simOut.ScopeDataGS.signals.values);
grid on
title('Step Response of Controller Tuned with 60-Degree Target Phase Margin');

StepPerformance_OnePoint = stepinfo(simOut.ScopeDataGS.signals.values(:),simOut.ScopeDataGS.time(:),10,1)
StepPerformance_OnePoint = struct with fields:
         RiseTime: 3.6251
    TransientTime: 22.5219
     SettlingTime: 22.5219
      SettlingMin: 9.1089
      SettlingMax: 10.7821
        Overshoot: 8.6895
       Undershoot: 0
             Peak: 9.7821
         PeakTime: 9.5500

Переходной процесс имеет время нарастания 3,6251 секунд и перерегулирование 8,6895%. Перерегулирование больше, чем желаемый; увеличьте целевой запас по фазе до 75 градусов, чтобы улучшить переходный процесс с обратной связью.

set_param([mdl,'/Variant Subsystem/Tuning/Closed-Loop PID Autotuner1'],'TargetPM','75');

Исследуйте результат симуляции. Система в установившемся, когда эксперимент запускается и возвращается к установившемуся после того, как настройка завершается. Как индикация относительно контроллера, настраивающего эффективность, блок Closed-Loop PID Autotuner достигает 100%-го уровня сходимости раньше, чем рекомендуемые 500 секунд. В результате уменьшайте длительность эксперимента до 300 секунд, означая время остановки 440 секунд. Соответственно, уменьшите время остановки симуляции с 800 секунд до 500 секунд.

Kp = 1.599340;
Ki = 0.079967;
set_param([mdl,'/Signal Editor'],'ActiveScenario','TuningSignal_OnePointAdjusted');
simOut = sim(mdl,'StopTime','500');
simOut.Kp_tuned
ans = 1.9351
simOut.Ki_tuned
ans = 0.1141

Симуляция новыми параметрами эксперимента производит настроенные усиления Kp = 1.93514 и Ки = 0.11415. Исследуйте переходной процесс снова с помощью усилений, настроенных с увеличенным целевым значением запаса по фазе.

Kp = simOut.Kp_tuned;
Ki = simOut.Ki_tuned;
simOut = sim(mdl,'StopTime','100');
figure;
plot(simOut.ScopeDataGS.time,simOut.ScopeDataGS.signals.values);
grid on
title('Step Response of Controller Tuned with 75-Degree Target Phase Margin');

StepPerformance_OnePointAdjusted = stepinfo(simOut.ScopeDataGS.signals.values(:),simOut.ScopeDataGS.time(:),10,1)
StepPerformance_OnePointAdjusted = struct with fields:
         RiseTime: 4.1398
    TransientTime: 21.4047
     SettlingTime: 21.4047
      SettlingMin: 9.1044
      SettlingMax: 10.2829
        Overshoot: 3.1438
       Undershoot: 0
             Peak: 9.2829
         PeakTime: 12.1100

Переходной процесс имеет время нарастания 4,1398 секунд и перерегулирование 3,1438%, оба из которых соответствуют конструктивным требованиям.

Симулируйте модель с настроенными усилениями для нескольких рабочих точек H = [5, 10, 15, 20].

set_param([mdl,'/Signal Editor'],'ActiveScenario','TuningSignal_SinglePID');
simOut_single = sim(mdl,'StopTime','2400');

Настройте запланированный на усиление контроллер в нескольких рабочих точках

Набор настроенных усилений производит желаемый ответ. Можно теперь выполнить настройку в нескольких рабочих точках, чтобы создать запланированный на усиление контроллер.

Создайте входной настраивающий сигнал

Рабочий диапазон планирования переменной H от 1 до 20 покрыт рабочими точками для автоматической настройки. В этом примере запланированные на усиление усиления контроллера настраиваются в четырех рабочих точках с H = [5, 10, 15, 20]. Чтобы настроиться в нескольких рабочих точках, используйте блок Signal Editor, чтобы создать ссылку, и автотюнер запускают/останавливают сигнал

Симулируйте несколько рабочих точек

Используя входной сигнал, симулируйте watertank_gainscheduledcontrol модель в течение целой продолжительности процесса автоматической настройки. В конце симуляции сохраните и настроенные усиления и точки останова как векторы в MATLAB® Workspace.

Kp = 1.599340;
Ki = 0.079967;
set_param([mdl,'/Signal Editor'],'ActiveScenario','TuningSignal');
simOut = sim(mdl,'StopTime','2400');
Kp_tuned = simOut.Kp_tuned
Kp_tuned = 4×1

    1.9283
    1.9351
    1.9382
    1.9400

Ki_tuned = simOut.Ki_tuned
Ki_tuned = 4×1

    0.1277
    0.1141
    0.1082
    0.1046

breakpoints = simOut.breakpoints
breakpoints = 4×1

    0.1550
    0.1579
    0.1592
    0.1600

Повышения производительности запланированного на усиление контроллера

Чтобы исследовать эффективность запланированного на усиление контроллера, установите Различную Подсистему на Режим тестирования и симулируйте модель.

set_param([mdl,'/Variant Subsystem'],'SimMode','Testing');
simOut_GS = sim(mdl,'StopTime','2400');

Используя запланированный на усиление контроллер, переходные процессы уровня воды на Системном объекте Бака с водой намного быстрее и имеют меньше перерегулирования, чем ненастроенный контроллер, используемый в watertank Модели Simulink.

Кроме того, настроенный запланированный на усиление контроллер приводит к лучшей эффективности переходного процесса, чем один набор усилений, настроенных в уровне воды H = 10.

Используйте compareControllers_watertank скрипт, чтобы вычислить характеристики переходного процесса для ПИД-регулятора, настроенного в H = 10 и запланированный на усиление контроллер. Скрипт генерирует две таблицы, которые содержат время нарастания (в секундах) и перерегулирование процента для запланированного на усиление контроллера и одного набора усилений контроллера.

compareControllers_watertank
RiseTime=2×4 table
                      H = 1 to 5    H = 5 to 10    H = 10 to 15    H = 15 to 20
                      __________    ___________    ____________    ____________

    Single PID          4.6721        3.7818           3.715          3.6826   
    Gain-Scheduled      4.8012         3.845          3.7744          3.7402   

Overshoot=2×4 table
                      H = 1 to 5    H = 5 to 10    H = 10 to 15    H = 15 to 20
                      __________    ___________    ____________    ____________

    Single PID         0.69606        5.2553           5.888          6.2236   
    Gain-Scheduled     0.14074        4.6827          5.3208          5.6592   

Запланированный на усиление контроллер приводит к меньшему перерегулированию для сопоставимого времени нарастания, по сравнению с одним набором усилений, настроенных в одной рабочей точке. Этот рабочий процесс полезен, когда это необходимо, чтобы настроить запланированный на усиление контроллер, использующий блок Closed-Loop PID Autotuner.

Закройте модель.

close_system(mdl,0);

Смотрите также

| | | |

Похожие темы