Этот пример иллюстрирует один из нескольких способов настроить ПИД-регулятор для существующего объекта в Simulink. Здесь, вы используете блоки Автотюнера ПИДа С обратной связью, чтобы настроить два ПИ-контроллера в каскадной настройке. Блоки Автотюнера тревожат объект с экспериментом с обратной связью и выполняют ПИД, настраивающийся на основе частотных характеристик объекта, оцененных около желаемой пропускной способности. В отличие от блока Open-Loop PID Autotuner, здесь обратная связь остается закрытой, и начальные усиления контроллера не изменяются во время процесса автоматической настройки.
Модель в этом примере использует 3-фазовый двигатель BLDC вместе с понижающим конвертером и 3-фазовую ссылку степени инвертора. Понижающий конвертер моделируется с МОП-транзисторами и инвертором с IGBTs, а не идеальными переключателями так, чтобы устройство на сопротивлениях и характеристики были представлены правильно. И напряжениями ссылки конвертера DC-DC и инвертором можно управлять путем изменения полупроводниковых триггеров логического элемента, которые контролируют скорость двигателя.
mdl = 'scdbldcspeedcontrol';
open_system(mdl);
Модель электродвигателя следующие.
p = 4; % Number of pole pairs Rs = 0.1; % Stator resistance per phase [Ohm] Ls = 1e-4; % Stator self-inductance per phase, Ls [H] Ms = 1e-5; % Stator mutual inductance, Ms [H] psim = 0.0175; % Maximum permanent magnet flux linkage [Wb] Jm = 0.0005; % Rotor inertia [Kg*m^2] Ts = 5e-6; % Fundamental sample time [s] Tsc = 1e-4; % Sample time for inner control loop [s] Vdc = 48; % Maximum DC link voltage [V]
Модель предварительно сконфигурирована, чтобы начать устойчивую операцию замкнутого цикла с двумя каскадными ПИ-контроллерами, один для внутреннего цикла напряжения ссылки DC, и один для внешнего цикла частоты вращения двигателя.
Kpw = 0.1; % Proportional gain for speed controller Kiw = 15; % Integrator gain for speed controller Kpv = 0.1; % Proportional gain for voltage controller Kiv = 0.5; % Integrator gain for voltage controller
Сигнал для того, чтобы проверить производительность отслеживания является серией изменений скорости от 0-500 об/мин, 500-2000 об/мин и 2000-3000 об/мин. Симуляция модели с начальными усилениями контроллера показывает медленный ответ отслеживания, указывая, что перекалибровка контроллера необходима.
open_system([mdl '/Visualization/RPM (Outer)']);
sim(mdl);
В этом примере вы улучшаете производительность контроллера с помощью блоков Автотюнера ПИДа С обратной связью. Эти блоки оценивают частотную характеристику объекта с кругом, замкнутым во время эксперимента, и затем настраивают усиления контроллера. Исследуйте подсистему Управления, чтобы видеть блоки Автотюнера ПИДа С обратной связью в Автоматически настраивающейся Скорости и Автоматически настраивающихся подсистемах Напряжения.
open_system([mdl '/Control']);
При применении типичной каскадной настраивающей практики цикла сначала настройте внутренний цикл напряжения с внешним открытым циклом скорости. Затем настройте внешний цикл скорости с внутренним замкнутым кругом напряжения.
Чтобы задать настраивающиеся требования для ПИД-регуляторов, используйте параметры во вкладке "Tuning" каждого из блоков автотюнера ПИДа. В этом примере контроллеры являются параллельным, дискретным временем, ПИ-контроллерами. Шаг расчета контроллера составляет 100 микросекунд.
Целевой Запас по фазе 60 градусов для обоих контроллеров дает хороший баланс между эффективностью и робастностью.
Для внешнего управления циклом скорости выберите Target Bandwidth 100 рад/секунда. Для внутреннего управления циклом напряжения выберите предполагаемую целевую пропускную способность 400 рад/секунда. Эти значения гарантируют, что у контроллера внутреннего цикла есть более быстрый ответ, чем контроллер внешнего контура.
Блок Closed-Loop PID Autotuner выполняет эксперимент с обратной связью, чтобы получить частотную характеристику объекта. Вы задаете параметры для этого эксперимента во вкладке "Experiment" параметров блоков. Здесь, Знак Объекта Положителен как положительное изменение во входе объекта в номинальных результатах рабочей точки в положительном изменении на объекте выход, когда объект достигает нового устойчивого состояния. Когда объект устойчив, как в этом примере, знак объекта эквивалентен знаку своего усиления DC.
Для амплитуды синусоид, введенных во время процесса автоматической настройки, используйте 1, чтобы гарантировать, что объект соответственно взволнован при оставлении в пределе насыщения объекта. Если бы амплитуда выбрана слишком маленькая, блок автотюнера испытал бы затруднения, чтобы отличить сигналы ответа от пульсации в схемах силовой электроники.
Для настройки каскадных контроллеров, настроенных модель для настройки внутреннего цикла напряжения сначала, сопровождаемый внешним циклом скорости.
Чтобы включить настраивающий процесс для контроллера внутреннего цикла, в Автоматически настраивающейся подсистеме Напряжения, устанавливают постоянный блок Tune Inner Voltage Loop на 1, который в основном повреждает внешний контур, и используйте номинальную (постоянную) ссылку напряжения 12,5 вместо этого.
set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','1');
Также установите постоянный блок Tune Outer Speed Loop на 0 отключать настройку внешнего контура.
set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','0');
Эта установка включает блок Closed-Loop PID Autotuner, который сконфигурирован, чтобы запустить настраивающий эксперимент замкнутого цикла от 1 до 1,8 секунд времени симуляции. Объект использует первую секунду, чтобы достигнуть установившихся условий работы. Хорошей оценкой на время эксперимента с обратной связью является 200/target bandwidth
. Можно также использовать % conv
выход блока Closed Loop PID Autotuner, чтобы контролировать прогресс эксперимента и остановить его, когда % conv
сигнал стабилизирует близкие 100%.
Запустите симуляцию. Когда эксперимент заканчивается, блок Closed-Loop PID Autotuner возвращает настроенные усиления ПИД-регулятора для внутреннего цикла напряжения. Модель отправляет их в рабочее пространство MATLAB как массив VoltageLoopGains
.
close_system([mdl '/Visualization/RPM (Outer)']); open_system([mdl '/Visualization/VDC (Inner)']); sim(mdl);
Обновите ПИ-контроллер внутреннего цикла с новыми усилениями.
Kpv = VoltageLoopGains(1); Kiv = VoltageLoopGains(2);
Затем настройте внешний цикл скорости. В Автоматически настраивающейся подсистеме Напряжения измените значение постоянного блока Tune Inner Voltage Loop к 0, чтобы отключить внутреннюю настройку цикла напряжения. Обратите внимание на то, что диспетчер внутреннего цикла уже использует недавно настроенные усиления.
set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','0');
Точно так же в Автоматически настраивающейся подсистеме Скорости, измените постоянную Мелодию Внешний Цикл Скорости в Скорости Автоматической настройки подсистемы к 1, чтобы включить внешнюю настройку цикла скорости. Для этого цикла используйте длительность автоматической настройки с обратной связью 0,9 секунд, начинающихся в 1 секунду. Номинальная скорость для настройки составляет 2 000 об/мин.
set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','1');
Запустите симуляцию снова. Когда эксперимент заканчивается, блок Closed-Loop PID Autotuner возвращает настроенные усиления ПИД-регулятора для внешнего цикла скорости. Модель отправляет их в рабочее пространство MATLAB как массив SpeedLoopGains
.
close_system([mdl '/Visualization/VDC (Inner)']); open_system([mdl '/Visualization/RPM (Outer)']); sim(mdl);
Обновите ПИ-контроллер внешнего контура с новыми усилениями.
Kpw = SpeedLoopGains(1); Kiw = SpeedLoopGains(2);
Теперь вы настроили коэффициенты ПИД для обоих контроллеров, чтобы дать лучшую эффективность в регулировке скорости моторной модели объекта управления BLDC. Чтобы проверять настроенную эффективность контроллера, отключите настраивание обоих циклов.
set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','0'); set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','0');
Настроенные усиления приводят к лучшему отслеживанию тестовых сигналов пандуса.
sim(mdl);