Настройте Обратную связь с помощью looptune

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

Управление скоростью вращения двигателя

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

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

load rctExamples Engine
bode(Engine)
grid

Figure contains 2 axes objects. Axes object 1 with title From: throttle To: speed contains an object of type line. This object represents Engine. Axes object 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, показанную в следующем рисунке. Эта обратная связь моделирует взаимодействие между объектом и контроллером. Обратите внимание на то, что это - соединение положительной обратной связи.

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

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

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) это зависит от настраиваемого блока PID PID0.

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

Можно теперь использовать looptune чтобы настроить коэффициенты ПИД подвергают простому требованию полосы пропускания управления. Чтобы достигнуть 5-секундного времени урегулирования, частота среза усиления ответа разомкнутого контура должна составить приблизительно 1 рад/с. Учитывая это основное требование, looptune автоматически формирует ответ разомкнутого контура, чтобы обеспечить интегральное действие, высокочастотный спад и соответствующие запасы устойчивости. Обратите внимание на то, что вы могли задать дополнительные требования, чтобы далее ограничить проект. Для примера смотрите Разъединяющийся Контроллер для Столбца Дистилляции.

wc = 1;  % target gain crossover frequency 

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

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

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

  with Kp = 0.00112, Ki = 0.00252, Kd = 0.000318, Tf = 1
 
Name: SpeedController
Continuous-time PIDF controller in parallel form.

Подтвердите результаты

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

clf
loopview(G,C,Info)

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

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

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

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

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

Похожие темы