Этот пример показывает один из нескольких способов настроить ПИД-регулятор для существующего объекта в 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, чтобы гарантировать, что объект соответственно взволнован при оставлении в пределе насыщения объекта. Если амплитуда, которую вы выбираете, слишком мала, блок автотюнера испытывает затруднения при различении сигналов ответа от пульсации в схемах силовой электроники.
Для настройки каскадных контроллеров, настроенных модель для настройки внутреннего цикла напряжения сначала, сопровождаемый внешним циклом скорости.
Чтобы включить настраивающий процесс для контроллера внутреннего цикла, в Автоматически настраивающейся подсистеме Напряжения, устанавливают Мелодию Внутренний Цикл Напряжения постоянное значение блока к 1. Устанавливание этого значения открывает внешний контур и конфигурирует внутренний цикл к использованию постоянная номинальная ссылка напряжения 12,5 вместо этого.
set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','1')
Кроме того, чтобы отключить настройку внешнего контура, установите Мелодию Внешний Цикл Скорости постоянное значение блока к 0.
set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','0')
Эта установка включает блок Closed-Loop PID Autotuner, который сконфигурирован, чтобы запустить настраивающий эксперимент с обратной связью от 1 до 1,8 секунд времени симуляции. Объект использует первую секунду, чтобы достигнуть установившихся условий работы. Хорошая оценка на время эксперимента с обратной связью, где целевая полоса пропускания. Можно использовать % 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);
Затем настройте внешний цикл скорости. В Автоматически настраивающейся подсистеме Напряжения измените значение Мелодии Внутренний Цикл Напряжения постоянное значение блока к 0, который отключает внутреннюю настройку цикла напряжения. Диспетчер внутреннего цикла использует недавно настроенные усиления, Kpv
и Kiv
.
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);
Чтобы проверять настроенную эффективность контроллера, отключите настраивание обоих циклов.
set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','0') set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','0')
Настроенные усиления приводят к лучшему отслеживанию тестовых сигналов пандуса.
sim(mdl)