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

Используйте следующую модель четвертого порядка динамики механизма.
load rctExamples Engine bode(Engine) grid

Необходимо настроить эти четыре коэффициента ПИД, чтобы достигнуть желаемой эффективности. Используйте 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, показанную в следующем рисунке. Эта обратная связь моделирует взаимодействие между объектом и контроллером. Обратите внимание на то, что это - соединение положительной обратной связи.

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

Использовать looptune, создайте модели для и . Присвойте имена к вводам и выводам каждой модели, чтобы задать пути к обратной связи между объектом и контроллером. Обратите внимание на то, что контроллер имеет два входных параметров: ссылка скорости 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)

Затем постройте ответ с обратной связью на команду шага в скорости вращения двигателя. Настроенный ответ удовлетворяет требованиям.
T = connect(G,C,'r','speed'); % closed-loop transfer function from r to speed clf step(T)
