Создание и управление неопределенными моделями

Этот пример показывает, как использовать Robust Control Toolbox™, чтобы создать неопределенные модели в пространстве состояний и анализировать робастность систем управления с обратной связью с неопределенными элементами.

Мы покажем, как задать неопределенные физические параметры и создать неопределенные модели в пространстве состояний из этих параметров. Вы будете видеть, как оценить эффекты случайных и изменений параметра худшего случая с помощью функций usample и robstab.

2D корзина и система Spring

В этом примере мы используем следующую систему, состоящую из двух лишенных трения корзин, соединенных пружинным k:

Рисунок 1: 2D корзина и пружинная система.

Вход управления является силой, u1 применился к левой корзине. Вывод, которым будут управлять, является положением y1 правильной корзины. Управление с обратной связью имеет следующую форму:

u1=C(s)(r-y1)

Кроме того, мы используем тройной ведущий компенсатор:

C(s)=100(s+1)3/(0.001s+1)3

Мы создаем этот компенсатор с помощью этого кода:

s = zpk('s'); % The Laplace 's' variable
C = 100*ss((s+1)/(.001*s+1))^3;

Модель блок-схемы

2D корзина и пружинная система моделируются блок-схемой, показанной ниже.

Рисунок 2: Блок-схема 2D корзины и пружинная модель.

Неопределенные действительные параметры

Проблема управления корзинами осложнена тем, что значения коэффициента упругости k и массы корзины m1,m2 известны только с 20%-й точностью: k=1.0±20% , m1=1.0±20% , и m2=1.0±20%. Чтобы получить эту изменчивость, мы создадим три неопределенных действительных параметра с помощью функции ureal:

k = ureal('k',1,'percent',20);
m1 = ureal('m1',1,'percent',20);
m2 = ureal('m2',1,'percent',20);

Неопределенные модели корзины

Мы можем представлять модели корзин можно следующим образом:

G1(s)=1m1s2,G2(s)=1m2s2

Учитывая неопределенные параметры m1 и m2, мы создадим неопределенные модели в пространстве состояний (USS) для G1 и G2 можно следующим образом:

G1 = 1/s^2/m1;
G2 = 1/s^2/m2;

Неопределенная модель системы с обратной связью

Сначала мы создадим модель объекта управления P, соответствующий блок-схеме, показанной выше (P сопоставляет u1 с y1):

% Spring-less inner block F(s)
F = [0;G1]*[1 -1]+[1;-1]*[0,G2]
F =

  Uncertain continuous-time state-space model with 2 outputs, 2 inputs, 4 states.
  The model uncertainty consists of the following blocks:
    m1: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences
    m2: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences

Type "F.NominalValue" to see the nominal value, "get(F)" to see all properties, and "F.Uncertainty" to interact with the uncertain elements.

Соединитесь с пружиной k

P = lft(F,k)
P =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 4 states.
  The model uncertainty consists of the following blocks:
    k: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences
    m1: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences
    m2: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences

Type "P.NominalValue" to see the nominal value, "get(P)" to see all properties, and "P.Uncertainty" to interact with the uncertain elements.

Управление с обратной связью u1 = C* (r-y1) управляет на объекте P как показано ниже:

Рисунок 3: Неопределенная модель системы с обратной связью.

Мы будем использовать функцию feedback, чтобы вычислить передачу с обратной связью от r до y1.

% Uncertain open-loop model is
L = P*C
L =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 7 states.
  The model uncertainty consists of the following blocks:
    k: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences
    m1: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences
    m2: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences

Type "L.NominalValue" to see the nominal value, "get(L)" to see all properties, and "L.Uncertainty" to interact with the uncertain elements.

Неопределенная передача с обратной связью от r до y1

T = feedback(L,1)
T =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 7 states.
  The model uncertainty consists of the following blocks:
    k: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences
    m1: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences
    m2: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences

Type "T.NominalValue" to see the nominal value, "get(T)" to see all properties, and "T.Uncertainty" to interact with the uncertain elements.

Обратите внимание на то, что, поскольку G1 и G2 сомнительны, и P и T являются неопределенными моделями в пространстве состояний.

Извлечение номинального объекта

Номинальная передаточная функция объекта

Pnom = zpk(P.nominal)
Pnom =
 
        1
  -------------
  s^2 (s^2 + 2)
 
Continuous-time zero/pole/gain model.

Номинальная устойчивость с обратной связью

Затем, мы оцениваем номинальную передаточную функцию с обратной связью Tnom, и затем проверяем, что все полюса номинальной системы имеют отрицательные действительные части:

Tnom = zpk(T.nominal);
maxrealpole = max(real(pole(Tnom)))
maxrealpole = -0.8232

Устойчивый запас устойчивости

Обратная связь останется стабильной для всех возможных значений k,m1,m2 в заданной области значений неуверенности? Мы можем использовать функцию robstab, чтобы ответить на этот вопрос строго.

% Show report and compute sensitivity
opt = robOptions('Display','on','Sensitivity','on');
[StabilityMargin,wcu] = robstab(T,opt);
Computing peak...  Percent completed: 100/100
System is robustly stable for the modeled uncertainty.
 -- It can tolerate up to 288% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 289% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 575 rad/seconds.
 -- Sensitivity with respect to each uncertain element is:           
      12% for k. Increasing k by 25% decreases the margin by 3%.     
      47% for m1. Increasing m1 by 25% decreases the margin by 11.8%.
      47% for m2. Increasing m2 by 25% decreases the margin by 11.8%.

Отчет указывает, что замкнутый цикл может терпеть до трех раз как больше в k,m1,m2 прежде, чем идти нестабильный. Это также предоставляет полезную информацию о чувствительности устойчивости к каждому параметру. Переменная wcu содержит самые маленькие изменения параметра дестабилизации (относительно номинальной стоимости).

wcu
wcu = struct with fields:
     k: 1.5773
    m1: 0.4227
    m2: 0.4227

Анализ производительности худшего случая

Обратите внимание на то, что пиковое усиление через частоту передачи с обратной связью T показательно из уровня перерегулирования в переходном процессе с обратной связью. Чем ближе это усиление к 1, тем меньше перерегулирование. Мы используем wcgain, чтобы вычислить усиление худшего случая PeakGain T в заданной области значений неуверенности.

[PeakGain,wcu] = wcgain(T);
PeakGain
PeakGain = struct with fields:
           LowerBound: 1.0449
           UpperBound: 1.0796
    CriticalFrequency: 9.5123

Замените изменением параметра худшего случая wcu в T, чтобы вычислить худший случай передача с обратной связью Twc.

Twc = usubs(T,wcu);         % Worst-case closed-loop transfer T

Наконец, выберите от случайных выборок неопределенных параметров и сравните, соответствующие передачи с обратной связью с худшим случаем передают Twc.

Trand = usample(T,4);         % 4 random samples of uncertain model T
clf
subplot(211), bodemag(Trand,'b',Twc,'r',{10 1000});  % plot Bode response
subplot(212), step(Trand,'b',Twc,'r',0.2);           % plot step response

Рисунок 4: Диаграмма Боде и переходной процесс.

В этом анализе мы видим, что компенсатор C выполняет надежно для заданной неуверенности на k, m1, m2.