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

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

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

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

load rctExamples G
bode(G), grid

Figure contains 2 axes. Axes 1 with title From: u To: y contains an object of type line. This object represents G. Axes 2 contains an object of type line. This object represents G.

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

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

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

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

Существует два настраиваемых элемента в структуре управления рисунка 1: ПИ-контроллер C(s) и фильтр lowpass

F(s)=as+a.

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

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

Параметрировать фильтр lowpass F(s), создайте настраиваемый действительный параметр a и создайте передаточную функцию первого порядка с числителем a и знаменатель s+a:

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) это зависит от настраиваемых элементов C и F.

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

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 и коэффициент фильтра a. Эта функция берет настраиваемую модель T0 с обратной связью и требования Req1,Req2. Используйте несколько рандомизированных начальных точек, чтобы улучшить возможности получения глобально оптимального проекта.

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

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

fSoft
fSoft = 1×2

    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)

Figure contains 3 axes. Axes 1 contains 2 objects of type line. These objects represent Tracking error, Max error, Effective 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.

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

clf, step(T)

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

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

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

Figure contains 2 axes. Axes 1 with title From: u To: u contains an object of type line. This object represents L. Axes 2 contains an object of type line. This object represents L.

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

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

| |

Похожие темы