Настройка циклов обратной связи с LOOPTUNE

Этот пример показывает базовый рабочий процесс настройки циклов обратной связи с looptune команда. looptune аналогичен systune и предназначен для облегчения проекта цикла путем автоматического формирования требований к настройке.

Регулирование Скорости Вращения Двигателя

Этот пример использует простое приложение регулирования скорости вращения двигателя в качестве иллюстрации. Система управления состоит из одного ПИД цикл и коэффициент усиления ПИД-регулятора должен быть настроен, чтобы адекватно реагировать на изменения шага в желаемой скорости. В частности, мы хотим, чтобы ответ осел менее чем за 5 секунд с небольшим перерегулированием или без него.

Фигура 1: Цикл управления скоростью вращения двигателя

Мы используем следующую модель динамики двигателя четвертого порядка.

load rctExamples Engine
bode(Engine), grid

Figure contains 2 axes. Axes 1 with title From: thottle To: speed contains an object of type line. This object represents Engine. Axes 2 contains an object of type line. This object represents Engine.

Определение настраиваемых элементов

Нам нужно настроить четыре коэффициентов ПИД, чтобы достичь желаемой эффективности. Используйте tunablePID класс для параметризации ПИД-регулятора.

PID0 = tunablePID('SpeedController','pid')
PID0 = 
  Tunable continuous-time PID controller "SpeedController" with formula:

             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  and tunable parameters Kp, Ki, Kd, Tf.

Type "pid(PID0)" to see the current value and "get(PID0)" to see all properties.

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

looptune настраивает обобщенный цикл обратной связи SISO или MIMO, показанный на фиг.2. Этот цикл обратной связи моделирует взаимодействие между объектом и контроллером. Обратите внимание, что это положительная обратная связь соединение.

Фигура 2: Типовой цикл обратной связи

Для цикла управления скорости, объект G является моделью двигателя и контроллером C состоит из ПИД и предфильтра F.

Фигура 3: Цикл обратной связи для управления скорости вращения двигателя

Как использовать looptune, создайте модели для G и C на фигуре 3. Присвойте имена входам и выходам каждой модели, чтобы задать пути обратной связи между объектом и контроллером. Обратите внимание, что контроллер C имеет два входа: ссылку скорости «r» и измерение скорости «скорость».

F = tf(10,[1 10]);  % prefilter

G = Engine;
G.InputName = 'throttle';
G.OutputName = 'speed';

C0 = PID0 * [F , -1];
C0.InputName = {'r','speed'};
C0.OutputName = 'throttle';

Вот C0 - обобщенная модель пространства состояний (genss), что зависит от настраиваемого блока ПИД PID0.

Настройка параметров контроллера

Теперь можно использовать looptune для настройки коэффициентов ПИД при соблюдении простого требования к полосе пропускания управления. Чтобы достичь 5-секундного времени урегулирования, частота среза усиления разомкнутого контура отклика должен быть приблизительно 1 рад/с. Учитывая это основное требование, looptune автоматически формирует ответ разомкнутого контура, чтобы обеспечить интегральное действие, высокочастотный откат и адекватные запасы устойчивости. Обратите внимание, что для дальнейшего ограничения проекта можно задать дополнительные требования, см., например, «Decoupling Контроллера for a Distillation Столбца».

wc = 1;  % target gain crossover frequency 

[~,C,~,Info] = looptune(G,C0,wc);
Final: Peak gain = 0.928, Iterations = 7
Achieved target gain value TargetGain=1.

Окончательное значение меньше 1, что указывает на то, что требуемая полоса пропускания была достигнута с адекватными запасами по откату и устойчивости. looptune возвращает настроенный контроллер C. Использование getBlockValue для извлечения настроенного значения блока ПИД.

PIDT = getBlockValue(C,'SpeedController')
PIDT =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 0.000855, Ki = 0.00269, Kd = -7.83e-05, Tf = 0.877
 
Name: SpeedController
Continuous-time PIDF controller in parallel form.

Проверка результатов

Использование loopview для проверки проекта и визуализации требований к формированию цикла, неявно соблюдаемых looptune.

clf, loopview(G,C,Info)

Figure contains 3 axes. Axes 1 contains 4 objects of type line. These objects represent S, T, Loop gain(s), Target loop shape, S bound, T bound. Axes 2 contains an object of type line. These objects represent Required margins, Stability margins. Axes 3 contains an object of type line. These objects represent Required margins, Stability margins, Tuned lower bound.

Затем постройте график обратной связи с командой step по скорости вращения двигателя. Настроенный ответ удовлетворяет нашим требованиям.

T = connect(G,C,'r','speed');  % closed-loop transfer from r to speed
clf, step(T)

Figure contains an axes. The axes with title From: r To: speed contains an object of type line. This object represents T.

См. также

Похожие темы