systune
команда может совместно настроить усиления вашей системы управления независимо от ее архитектуры и количества обратной связи. Этот пример обрисовывает в общих чертах systune
рабочий процесс на простом приложении.
Этот пример использует модель 9-го порядка блока главного диска (HDA) в жестком диске. Эта модель получает первые несколько гибких режимов в HDA.
load rctExamples G bode(G), grid
Мы используем обратную связь, которая, как показывают ниже, расположила голову на правильную дорожку. Эта управляющая структура состоит из ПИ-контроллера, и lowpass просачиваются обратный путь. Положение головы y
должен отследить ступенчатое изменение r
со временем отклика приблизительно одной миллисекунды, минимального перерегулирования и никакой установившейся ошибки.
Рисунок 1: управляющая структура
Можно использовать systune
непосредственно настроить усиления PI и коэффициент фильтра подвергните разнообразию времени - и требования частотного диапазона.
Существует два настраиваемых элемента в управляющей структуре рисунка 1: ПИ-контроллер и фильтр lowpass
Можно использовать 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 = 72 Final: Soft = 1.35, Hard = -Inf, Iterations = 102 Final: Soft = 2.78e+03, Hard = -Inf, Iterations = 187 Some closed-loop poles are marginally stable (decay rate near 1e-07) Final: Soft = 1.35, Hard = -Inf, Iterations = 63
Все требования нормированы так, требованию удовлетворяют, когда его значение меньше 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)
Затем постройте переходной процесс с обратной связью от ссылочного 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