Моделирование семейства ответов как неопределенная система

В этом примере показано, как использовать команду Robust Control Toolbox™ ucover смоделировать семейство ответов LTI как неопределенная система. Эта команда полезна, чтобы подбирать неопределенную модель к группе представителя частотных характеристик системной изменчивости или уменьшать сложность существующей неопределенной модели, чтобы упростить синтез устойчивых контроллеров с musyn.

Моделирование изменчивости объекта как неопределенность

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

Pnom = tf(2,[1 -2])
Pnom =
 
    2
  -----
  s - 2
 
Continuous-time transfer function.

Другие модели являются изменениями Pnom. У них всех есть один нестабильный полюс, но местоположение этого полюса может меняться в зависимости от условий работы.

p1 = Pnom*tf(1,[.06 1]);              % extra lag
p2 = Pnom*tf([-.02 1],[.02 1]);       % time delay
p3 = Pnom*tf(50^2,[1 2*.1*50 50^2]);  % high frequency resonance
p4 = Pnom*tf(70^2,[1 2*.2*70 70^2]);  % high frequency resonance
p5 = tf(2.4,[1 -2.2]);                % pole/gain migration
p6 = tf(1.6,[1 -1.8]);                % pole/gain migration

Чтобы применить устойчивые инструменты управления, мы можем заменить этот набор моделей с одной неопределенной моделью объекта управления, чья область значений поведений включает p1 через p6. Это - одно использование команды ucover. Эта команда берет массив моделей LTI Parray и номинальная модель Pnom и модели различие Parray-Pnom как мультипликативная неопределенность в системной динамике.

Поскольку ucover ожидает массив моделей, используйте stack команда, чтобы собрать модели объекта управления p1 через p6 в один массив.

Parray = stack(1,p1,p2,p3,p4,p5,p6);

Затем используйте ucover "покрывать" область значений поведений Parray с неопределенной моделью формы

P = Pnom * (1 + Wt * Delta)

где вся неопределенность сконцентрирована в "несмоделированной динамике" Delta (ultidyn объект. Поскольку усиление Delta однородно ограничен 1 на всех частотах, фильтр "формирования" Wt используется, чтобы получить, как относительная сумма неопределенности меняется в зависимости от частоты. Этот фильтр также упоминается как функция взвешивания неопределенности.

Попробуйте фильтр 4-го порядка Wt для этого примера:

orderWt = 4;
Parrayg = frd(Parray,logspace(-1,3,60));
[P,Info] = ucover(Parrayg,Pnom,orderWt,'InputMult');

Получившаяся модель P одно вход, объект неопределенного пространства состояний (USS) одно выхода с номинальной стоимостью Pnom.

P
P =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 5 states.
  The model uncertainty consists of the following blocks:
    Parrayg_InputMultDelta: Uncertain 1x1 LTI, peak gain = 1, 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.

tf(P.NominalValue)
ans =
 
    2
  -----
  s - 2
 
Continuous-time transfer function.

Предвещать график величины подтверждает что формирующий фильтр Wt "покрывает" относительное изменение поведения объекта. Как функция частоты, уровень неопределенности составляет 30% в 5 рад/секунда (-10dB = 0.3), 50% в 10 рад/секунда и 100% вне 29 рад/секунда.

Wt = Info.W1;
bodemag((Pnom-Parray)/Pnom,'b--',Wt,'r'); grid
title('Relative Gaps vs. Magnitude of Wt')

Можно теперь использовать неопределенную модель P чтобы спроектировать устойчивый контроллер для исходного семейства моделей объекта управления, смотрите, что Одновременная Стабилизация Использует Устойчивое Управление для деталей.

Упрощение существующей неопределенной модели

В этом втором примере мы запускаем с подробной неопределенной модели объекта. Эта модель состоит из динамики первого порядка с неопределенным усилением и постоянной времени, последовательно с мягко underdamped резонанс и значительная несмоделированная динамика. Эта модель создается с помощью ureal и ultidyn команды для определения неопределенных переменных:

gamma = ureal('gamma',2,'Perc',30);  % uncertain gain
tau = ureal('tau',1,'Perc',30);      % uncertain time-constant
wn = 50; xi = 0.25;
P = tf(gamma,[tau 1]) * tf(wn^2,[1 2*xi*wn wn^2]);

% Add unmodeled dynamics and set SampleStateDim to 5 to get representative
% sample values of the uncertain model P
delta = ultidyn('delta',[1 1],'SampleStateDim',5,'Bound',1);
W = makeweight(0.1,20,10);
P = P * (1+W*delta)
P =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 4 states.
  The model uncertainty consists of the following blocks:
    delta: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences
    gamma: Uncertain real, nominal = 2, variability = [-30,30]%, 1 occurrences
    tau: Uncertain real, nominal = 1, variability = [-30,30]%, 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.

Набор переходных процессов иллюстрирует изменчивость объекта.

step(P,4)
title('Sampled Step Responses of Uncertain System')

Неопределенная модель объекта управления P содержит 3 неопределенных элемента. В целях системы управления часто желательно упростить эту модель неопределенности в то время как приблизительно сдерживающий ее полная изменчивость. Это - другое использование команды ucover.

Использовать ucover в этом контексте сначала сопоставьте неопределенную модель P в массив моделей LTI с помощью usample. Эта команда производит неопределенные элементы в неопределенной системе и возвращает соответствующие модели LTI, каждый модель, представляющая одно возможное поведение неопределенной системы. В этом примере, демонстрационном P в 60 точках (генератор случайных чисел отобран для воспроизводимости):

rng(0,'twister');
Parray = usample(P,60);

Затем используйте ucover покрывать все поведения в Parray простой моделью Usys неопределенности. Выберите номинальную стоимость P как центр покрытия и использование фильтр 2-го порядка, чтобы смоделировать плотность распределения несмоделированной динамики.

orderWt = 2;
Parrayg = frd(Parray,logspace(-3,3,60));
[Usys,Info] = ucover(Parrayg,P.NominalValue,orderWt,'InputMult');

Предвещать график величины показывает, как величина фильтра (в красном) "покрывает" относительную изменчивость частотной характеристики объекта (в синем).

Wt = Info.W1;
bodemag((P.NominalValue-Parray)/P.NominalValue,'b--',Wt,'r')
title('Relative Gaps (blue) vs. Shaping Filter Magnitude (red)')

Можно теперь использовать упрощенную модель Usys неопределенности чтобы спроектировать устойчивый контроллер для исходного объекта, см. Сначала сокращенный Устойчивый Проект для деталей.

Корректировка взвешивания неопределенности

В этом третьем примере мы запускаем с 40 частотных характеристик системы с 2 выходами, с 2 входами. Эти данные были собраны с частотой анализатор под различными условиями работы. Номинальная модель с двумя состояниями подбирается к самому типичному ответу:

A = [-5 10;-10 -5];
B = [1 0;0 1];
C = [1 10;-10 1];
D = 0;
Pnom = ss(A,B,C,D);

Данные о частотной характеристике загружаются в 40 1 массив моделей FRD:

load ucover_demo
size(Pdata)
40x1 array of FRD models.
Each model has 2 outputs, 2 inputs, and 120 frequency points.

Отобразите эти данные на графике и наложите номинальную модель.

bode(Pdata,'b--',Pnom,'r',{.1,1e3}), grid
legend('Frequency response data','Nominal model','Location','NorthEast')

Поскольку изменчивость ответа скромна, попытайтесь моделировать это семейство частотных характеристик с помощью аддитивной модели неопределенности формы

P = Pnom + w * Delta

где Delta ultidyn 2 на 2 объект, представляющий несмоделированную динамику и w скалярная функция взвешивания, отражающая плотность распределения неопределенности (изменчивость в Pdata).

Запустите с фильтра первого порядка w и сравните величину w с минимальным количеством неопределенности, необходимой на каждой частоте:

[P1,InfoS1] = ucover(Pdata,Pnom,1,'Additive');
w = InfoS1.W1;
bodemag(w,'r',InfoS1.W1opt,'g',{1e-1 1e3})
title('Scalar Additive Uncertainty Model')
legend('First-order w','Min. uncertainty amount','Location','SouthWest')

Величина w должен тесно совпадать с минимальной суммой неопределенности. Ясно, что подгонка первого порядка слишком консервативна и превышает это минимальное количество на большинстве частот. Попробуйте еще раз с фильтром третьего порядка w. Для скорости снова используйте данные в InfoS1 постараться не повторно вычислять оптимальную неопределенность, масштабирующуюся на каждой частоте.

[P3,InfoS3] = ucover(Pnom,InfoS1,3,'Additive');
w = InfoS3.W1;
bodemag(w,'r',InfoS3.W1opt,'g',{1e-1 1e3})
title('Scalar Additive Uncertainty Model')
legend('Third-order w','Min. uncertainty amount','Location','SouthWest')

Величина w теперь тесно совпадает с минимальной суммой неопределенности. Среди аддитивных моделей неопределенности, P3 обеспечивает трудное покрытие поведений в Pdata. Обратите внимание на то, что P3 имеет в общей сложности 8 состояний (2 от номинальной части и 6 от w).

P3
P3 =

  Uncertain continuous-time state-space model with 2 outputs, 2 inputs, 8 states.
  The model uncertainty consists of the following blocks:
    Pdata_AddDelta: Uncertain 2x2 LTI, peak gain = 1, 1 occurrences

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

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

P = Pnom + W1*Delta*W2

где W1 и W2 диагональные фильтры 2 на 2. В этом примере ограничьте, используют W2=1 и позвольте обоим диагональным элементам W1 быть третьим порядком.

[PM,InfoM] = ucover(Pdata,Pnom,[3;3],[],'Additive');

Сравните две записи W1 с минимальной суммой неопределенности, вычисленной ранее. Обратите внимание на то, что на всех частотах, одном из диагональных элементов W1 имеет величину, намного меньшую, чем скалярный фильтр w. Это предполагает, что по диагонали взвешенная модель неопределенности дает к менее консервативному покрытию семейства частотных характеристик.

bodemag(InfoS1.W1opt,'g*',...
    InfoM.W1opt(1,1),'r--',InfoM.W1(1,1),'r',...
    InfoM.W1opt(2,2),'b--',InfoM.W1(2,2),'b',{1e-1 1e3});
title('Diagonal Additive Uncertainty Model')
legend('Scalar Optimal Weight',...
    'W1(1,1), pointwise optimal',...
    'W1(1,1), 3rd-order fit',...
    'W1(2,2), pointwise optimal',...
    'W1(2,2), 3rd-order fit',...
    'Location','SouthWest')

Степень консервативности каждый покрывает, другой может быть частично определен количественно путем рассмотрения двух зависимых частотой количеств:

Fd2s = norm(inv(W1)*w) ,   Fs2d = norm(W1/w)

Эти количества измеряются тем, насколько одна модель неопределенности должна масштабироваться, чтобы покрыть другой. Например, модель Pnom + W1*Delta неопределенности потребности, которые будут увеличены факторным Fd2s включать все модели, представленные неопределенной моделью Pnom + w*Delta.

Постройте Fd2s и Fs2d как функция частоты.

Fd2s = fnorm(InfoS1.W1opt*inv(InfoM.W1opt));
Fs2d = fnorm(InfoM.W1opt*inv(InfoS1.W1opt));
semilogx(fnorm(Fd2s),'b',fnorm(Fs2d),'r'), grid
axis([0.1 1000 0.5 2.6])
xlabel('Frequency (rad/s)'), ylabel('Magnitude')
title('Scale factors relating different covers')
legend('Diagonal to Scalar factor',...
    'Scalar to Diagonal factor','Location','SouthWest');

Этот график показывает что:

  • Fs2d = 1 в большом частотном диапазоне так Pnom+w*Delta включает все поведения, смоделированные Pnom+W1*Delta

  • В том же самом частотном диапазоне, Pnom+W1*Delta не включает все поведения, смоделированные Pnom+w*Delta и, на самом деле, должен был бы быть увеличен фактором между 1,2 и 2.6 для того, чтобы сделать так.

  • В частотном диапазоне [1 20], никакая модель неопределенности не содержит другой, но на всех частотах, делая Pnom+W1*Delta покройте Pnom+w*Delta требует намного меньшего масштабного коэффициента, чем обратное.

Это указывает что Pnom+W1*Delta модель обеспечивает менее консервативное покрытие данных о частотной характеристике в Pdata.