Команда 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
.
TuningGoal.Margins
| TuningGoal.Tracking
| systune