systune команда может совместно настраивать коэффициенты усиления системы управления независимо от ее архитектуры и количества петель обратной связи. В этом примере описывается systune рабочий процесс в простом приложении.
В этом примере используется модель 9го порядка сборки head-disk (HDA) на жестком диске. Эта модель фиксирует первые несколько гибких режимов в HDA.
load rctExamples G bode(G), grid

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

Рис. 1: Структура управления
Вы можете использовать systune для непосредственной настройки коэффициента усиления и фильтрации PI в зависимости от различных требований к времени и частотной области.
В структуре управления, показанной на фиг.1, имеется два настраиваемых элемента: PI-контроллер ) и фильтр нижних частот.
+ a.
Вы можете использовать tunablePID объект для параметризации блока PI:
C0 = tunablePID('C','pi'); % tunable PI
Для параметризации фильтра нижних частот ) создайте настраиваемый вещественный параметр a и создайте передаточную функцию первого порядка с числителем a и знаменателем + 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), которая зависит от перестраиваемых элементов и .
TuningGoal пакет содержит различные требования к конструкции управления для определения требуемого поведения системы управления. К ним относятся требования к времени отклика, детерминированным и стохастическим коэффициентам усиления, форме петли, полям устойчивости и местоположениям полюсов. Здесь мы используем два требования, чтобы зафиксировать цели контроля:
Требование к отслеживанию: Позиция y должен отслеживать ссылку r с 1 миллисекундным временем отклика
Требования к запасу устойчивости: контур обратной связи должен иметь 6dB запаса усиления и 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 = 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 elementsC =
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')

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