The systune
команда может совместно настроить усиления вашей системы управления независимо от ее архитектуры и количества циклов обратной связи. Этот пример очерчивает systune
рабочий процесс в простом приложении.
Этот пример использует модель 9-го порядка сборки головного диска (HDA) в жестком диске. Эта модель захватывает первые несколько гибких режимов в HDA.
load rctExamples G bode(G), grid
Мы используем цикл обратной связи, показанный ниже, чтобы расположить голову на правильной дорожке. Эта структура управления состоит из ПИ-контроллера и lowpass фильтра в пути возврата. Положение головы y
следует отследить изменение шага r
со временем отклика около одной миллисекунды, мало или нет перерегулирования и без статической ошибки.
Фигура 1: Структура управления
Можно использовать systune
для непосредственной настройки коэффициентов усиления и фильтрации ПИ удовлетворяющее различным требованиям во временной и частотной областях.
В структуре управления Фигуры 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
), что зависит от настраиваемых элементов и .
The 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
для настройки коэффициента усиления и фильтра ПИ . Эта функция принимает настраиваемую модель замкнутой системы 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
для доступа к настроенным значениям коэффициентов усиления и фильтра ПИ:
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
.
systune
| TuningGoal.Margins
| TuningGoal.Tracking