Настройка систем управления с SYSTUNE

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

Управление блоком главного диска

Этот пример использует модель 9-го порядка блока главного диска (HDA) в жестком диске. Эта модель получает первые несколько гибких режимов в HDA.

load rctExamples G
bode(G), grid

Мы используем обратную связь, которая, как показывают ниже, расположила голову на правильную дорожку. Эта управляющая структура состоит из контроллера PI и фильтра нижних частот в обратном пути. Положение головы y должно отследить ступенчатое изменение r со временем отклика приблизительно одной миллисекунды, минимального перерегулирования и никакой установившейся ошибки.

Рисунок 1: управляющая структура

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

Указывание настраиваемых элементов

Существует два настраиваемых элемента в управляющей структуре рисунка 1: контроллер PI и фильтр нижних частот

Можно использовать объект tunablePID параметризовать блок PI:

C0 = tunablePID('C','pi');  % tunable PI

Чтобы параметризовать фильтр lowpass, создайте настраиваемый действительный параметр и создайте передаточную функцию первого порядка с числителем и знаменателем:

a = realp('a',1);    % filter coefficient
F0 = tf(a,[1 a]);    % filter parameterized by a

См. "Создающие Настраиваемые Модели" пример для обзора доступных настраиваемых элементов.

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

Затем создайте модель с обратной связью обратной связи в рисунке 1. Чтобы упростить анализ разомкнутого цикла и задать требования разомкнутого цикла, такие как желаемые запасы устойчивости, добавьте аналитическую точку во входе u объекта:

AP = AnalysisPoint('u');

Рисунок 2: аналитический блок точки

Используйте feedback, чтобы создать модель передачи с обратной связью от ссылочного r до положения головы y:

T0 = feedback(G*AP*C0,F0);  % closed-loop transfer from r to y
T0.InputName = 'r';
T0.OutputName = 'y';

T0 результата является обобщенной моделью в пространстве состояний (genss), который зависит от настраиваемых элементов и.

Определение конструктивных требований

Пакет TuningGoal содержит множество требований системы управления для определения желаемого поведения системы управления. Они включают требования ко времени отклика, детерминированным и стохастическим усилениям, форме цикла, запасам устойчивости и местоположениям полюса. Здесь мы используем два требования, чтобы получить цели управления:

  • Отслеживание требования: положение y должно отследить ссылочный r с 1 временем отклика миллисекунды

  • Требование запаса устойчивости: обратная связь должна иметь 6 дБ поля усиления и 45 градусов поля фазы

Используйте TuningGoal.Tracking, и TuningGoal.Margins возражает, чтобы получить эти требования. Обратите внимание на то, что требование полей применяется к ответу разомкнутого цикла, измеренному во входе u объекта (местоположение, отмеченное анализом, указывают AP).

Req1 = TuningGoal.Tracking('r','y',0.001);
Req2 = TuningGoal.Margins('u',6,45);

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

Можно теперь использовать systune, чтобы настроить усиление PI и коэффициент фильтра. Эта функция берет настраиваемую модель T0 с обратной связью и требования Req1,Req2. Используйте несколько рандомизированных отправных точек, чтобы улучшить возможности получения глобально оптимального проекта.

rng('default')
Options = systuneOptions('RandomStart',3);
[T,fSoft] = systune(T0,[Req1,Req2],Options);
Final: Soft = 1.35, Hard = -Inf, Iterations = 70
Final: Soft = 1.35, Hard = -Inf, Iterations = 113
Final: Soft = 1.18e+03, Hard = -Inf, Iterations = 28
       Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Soft = 1.35, Hard = -Inf, Iterations = 80

Все требования нормированы так, требование удовлетворено, когда его значение - меньше чем 1. Здесь окончательное значение немного больше, чем 1, указывая, что требования почти удовлетворены. Используйте вывод fSoft, чтобы видеть настроенное значение каждого требования. Здесь мы видим, что первое требование (отслеживание) немного нарушено, в то время как второе требование (поля) удовлетворено.

fSoft
fSoft =

    1.3461    0.6326

Первый вывод T systune является "настроенной" моделью с обратной связью. Используйте showTunable или getBlockValue, чтобы получить доступ к настроенным значениям усилений PI и коэффициента фильтра:

getBlockValue(T,'C')  % tuned value of PI controller
ans =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 0.00104, Ki = 0.0122
 
Name: C
Continuous-time PI controller in parallel form.

showTunable(T)  % tuned values of all tunable elements
C =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 0.00104, Ki = 0.0122
 
Name: C
Continuous-time PI controller in parallel form.
-----------------------------------
a = 3.19e+03

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

Сначала используйте viewGoal, чтобы осмотреть, как настроенная система делает против каждого требования. Первый график показывает ошибку отслеживания функцией частоты, и второй график показывает нормированные дисковые поля функцией частоты (см. diskmargin). Смотрите "пример" Конструктивных требований Создания для деталей.

clf, viewGoal([Req1 Req2],T)

Затем постройте переходной процесс с обратной связью от ссылочного r до положения головы y. Ответ не имеет никакого перерегулирования, но колеблется немного.

clf, step(T)

Чтобы заняться расследованиями далее, используйте getLoopTransfer, чтобы получить ответ разомкнутого цикла во входе объекта.

L = getLoopTransfer(T,'u');
bode(L,{1e3,1e6}), grid
title('Open-loop response')

Колебание происходит из-за первого резонанса после перекрестного соединения усиления. Чтобы устранить его, вы могли добавить фильтр метки в обратную связь и настроить ее коэффициенты наряду с lowpass коэффициентом и усилениями PI с помощью systune.