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

Рис. 1: Контур управления частотой вращения двигателя
Мы используем следующую модель динамики двигателя четвертого порядка.
load rctExamples Engine bode(Engine), grid

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

Рис. 3: Контур обратной связи для управления частотой вращения двигателя
Использовать looptune, создайте модели для и на рисунке 3. Присвойте имена входам и выходам каждой модели для указания путей обратной связи между установкой и контроллером. Следует отметить, что контроллер имеет два входа: эталон скорости «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), которая зависит от настраиваемого блока PID PID0.
Теперь вы можете использовать looptune для настройки усиления PID с учетом простого требования к полосе пропускания управления. Для достижения 5-секундного времени установки частота пересечения коэффициента усиления отклика с разомкнутым контуром должна составлять приблизительно 1 рад/с. Учитывая это основное требование, looptune автоматически формирует отклик с разомкнутым контуром, чтобы обеспечить интегральное действие, высокочастотное скатывание и адекватные пределы устойчивости. Обратите внимание, что можно указать дополнительные требования для дальнейшего ограничения конструкции, например, в разделе «Контроллер разъединения для дистилляционной колонны».
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 для извлечения настроенного значения блока PID.
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)

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