В этом примере показан один из нескольких способов настройки ПИД-регулятора для существующего объекта в Simulink. Здесь вы используете блоки Closed-Loop ПИД Autotuner, чтобы настроить два ПИ-контроллеров в каскадном строении. Блоки Autotuner возмущают объект и выполняют настройку ПИД на основе частотной характеристики объекта, оцененной вблизи требуемой полосы пропускания. В отличие от блока Open-Loop PID Autotuner, здесь цикл обратной связи остается закрытым, и начальные усиления контроллера не изменяются в процессе автотунирования.
Модель в этом примере использует 3-фазный двигатель BLDC, соединенный с понижающим конвертером и 3-фазным инвертором степени ссылки. Моделируется понижающий конвертер с помощью MOSFET и инвертора с IGBT, а не идеальных переключателей, так что включенные сопротивления и характеристики устройства представлены правильно. И напряжениями ссылки преобразователя постоянного тока, и инвертором можно управлять, меняя полупроводниковые триггеры затвора, которые управляют скоростью двигателя.
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]
Модель предварительно сконфигурирована таким образом, чтобы иметь стабильную работу с обратной связью с двумя каскадными ПИ-контроллерами, одним для внутреннего контура постоянного напряжения и одним для внешнего контура скорость-двигатель.
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)
В этом примере вы улучшаете эффективность контроллера, используя блоки Closed-Loop PID Autotuner. Эти блоки оценивают частотную характеристику объекта с цикла, закрытой во время эксперимента, и затем настраивают коэффициент усиления контроллера. Исследуйте подсистему Control, чтобы увидеть блоки Closed-Loop PID Autotuner в подсистемах Autotuning Speed и Autotuning Voltage.
open_system([mdl '/Control'])
Следуя обычной практике настройки каскадного цикла, сначала настройте внутренний цикл напряжения, разомкнув внешний цикл скорости. Затем настройте внешний цикл скорости, замкнув внутренний цикл напряжения.
Чтобы задать требования к настройке для ПИД-регуляторов, используйте параметры на вкладке Tuning каждого из ПИД блоков autotuner. В этом примере контроллеры являются параллельными, дискретными по времени, ПИ-контроллерам. Шаг расчета контроллера составляет 100 микросекунд.
Целевой запас по фазе в 60 степени для обоих контроллеров дает хороший баланс между эффективностью и робастностью.
Для контроллера внешнего контура выберите целевую полосу пропускания 100 рад/сек. Для контроллера внутреннего контура выберите предполагаемую целевую полосу пропускания 400 рад/сек. Эти значения гарантируют, что контроллер с внутренним контуром имеет более высокую характеристику, чем контроллер с внешним контуром.
Блок Closed-Loop PID Autotuner выполняет эксперимент с обратной связью, чтобы получить частотную характеристику объекта. Параметры для этого эксперимента задаются на вкладке «Эксперимент» параметров блоков. Здесь Plant Sign положительно, поскольку положительное изменение входа объекта в номинальной рабочей точке приводит к положительному изменению выхода объекта, когда объект достигает нового устойчивого состояния. Когда объект является стабильным, как в этом примере, знак объекта эквивалентен признаку усиления постоянного тока.
Для амплитуды синусоид, впрыскиваемой в процессе автотунирования, используйте 1, чтобы убедиться, что объект соответствующим образом возбужден, оставаясь в пределах предела насыщения объекта. Если амплитуда, которую вы выбираете, слишком мала, блок autotuner испытывает трудности с различением ответных сигналов от пульсации в схемах силовой электроники.
Для каскадных контроллеров настройки, сначала настройте модель для настройки внутреннего цикла напряжения, затем внешний цикл скорости.
Чтобы включить процесс настройки для контроллера с внутренним контуром, в подсистеме Autotuning Voltage установите постоянное значение блока Tune Inner Voltage Loop равное 1. Установка этого значения открывает внешний контур и конфигурирует внутренний цикл, чтобы использовать вместо этого постоянную номинальную ссылку напряжения 12,5.
set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','1')
Кроме того, чтобы отключить настройку внешнего контура, задайте постоянный Цикл значение блока Tune Outer Speed равное 0.
set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','0')
Этот параметр позволяет блоку Closed-Loop PID Autotuner, который сконфигурирован для выполнения эксперимента по настройке замкнутой системы от 1 до 1,8 секунд времени симуляции. Объект использует первую секунду, чтобы достичь установившегося рабочего условия. Хорошей оценкой для длительности эксперимента с обратной связью является, где является целевая полоса пропускания. Можно использовать % conv
Выход блока Closed-Loop ПИД Autotuner, чтобы контролировать прогресс эксперимента и остановить его, когда % conv
сигнал стабилизируется около 100%.
Запустите симуляцию. Когда эксперимент завершается, блок Closed-Loop ПИД Autotuner возвращает настроенные коэффициенты усиления ПИД-регулятора для внутреннего цикла напряжения. Модель отправляет их в рабочее пространство MATLAB в качестве массива VoltageLoopGains
.
close_system([mdl '/Visualization/RPM (Outer)']) open_system([mdl '/Visualization/VDC (Inner)']) sim(mdl)
Обновите внутренний цикл ПИ-контроллера с новыми усилениями.
Kpv = VoltageLoopGains(1); Kiv = VoltageLoopGains(2);
Затем настройте внешний цикл скорости. В Подсистеме Autotuning Voltage измените значение Цикла постоянного блока Tune Inner Voltage на 0, что отключает настройку цикла внутреннего напряжения. Контроллер внутреннего контура использует недавно настроенные усиления, Kpv
и Kiv
.
set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','0')
Точно так же в подсистеме Autotuning Speed измените значение постоянного блока Tune Outer Speed Loop на 1, которое включает настройку цикла скорости. Для этого цикла используйте длительность автотунирования с обратной связью 0,9 секунды, начиная с 1 секунды. Номинальная скорость настройки - 2000 об/мин.
set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','1')
Еще раз запустите симуляцию. Когда эксперимент завершается, блок Closed-Loop ПИД Autotuner возвращает настраиваемые коэффициенты усиления ПИД-регулятора для внешнего цикла скорости. Модель отправляет их в рабочее пространство MATLAB в качестве массива SpeedLoopGains
.
close_system([mdl '/Visualization/VDC (Inner)']) open_system([mdl '/Visualization/RPM (Outer)']) sim(mdl)
Обновите ПИ-контроллер внешнего контура с новыми коэффициентами усиления.
Kpw = SpeedLoopGains(1); Kiw = SpeedLoopGains(2);
Чтобы проверить эффективность настроенного контроллера, отключите настройку в обоих циклах.
set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','0') set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','0')
Настроенные усиления приводят к лучшему отслеживанию тестовых сигналов наклона.
sim(mdl)