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

The 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 для непосредственной настройки коэффициентов усиления и фильтрации ПИ 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.

Определение требований проект

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 для настройки коэффициента усиления и фильтра ПИ 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 для доступа к настроенным значениям коэффициентов усиления и фильтра ПИ:

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.

См. также

| |

Похожие темы