exponenta event banner

Анализ надежности в Simulink

В этом примере показано, как использовать блоки Simulink ® и вспомогательные функции, предоставляемые Toolbox™ надежного управления, для определения и анализа неопределенных систем в Simulink и как использовать эти инструменты для моделирования неопределенных систем по методу Монте-Карло.

Введение

Модель Simulink usim_model состоит из неопределенной установки с обратной связью с датчиком:

open_system('usim_model')

Завод представляет собой модель первого порядка с двумя источниками неопределенности:

  • Реальный полюс, расположение которого варьируется от -10 до -4

  • Немодулированная динамика, которая составляет 25% относительной неопределенности при низкой частоте, возрастающей до 100% неопределенности при 130 рад/с.

Путь обратной связи имеет дешевый датчик, который моделируется фильтром первого порядка со скоростью 20 рад/с и неопределенным коэффициентом усиления в диапазоне от 0,1 до 2. Чтобы указать эти неопределенные переменные, введите

% First-order plant model
unc_pole = ureal('unc_pole',-5,'Range',[-10 -4]);
plant = ss(unc_pole,5,1,1);

% Unmodeled plant dynamics
input_unc = ultidyn('input_unc',[1 1]);
wt = makeweight(0.25,130,2.5);

% Sensor gain
sensor_gain = ureal('sensor_gain',1,'Range',[0.1 2]);

Блоки Simulink для моделирования и анализа неопределенности

RCTblocks содержит блоки для моделирования и анализа эффектов неопределенности в Simulink. Чтобы открыть библиотеку, введите

open('RCTblocks')

Uncertain State Space блок позволяет задать неопределенные линейные системы (объекты USS). usim_model содержит три таких блока, которые выделены синим цветом. Ниже появится диалоговое окно для блока «Plant».

В этом диалоговом окне

  • Параметр «Неопределенная системная переменная» определяет неопределенную модель установки (модель первого порядка с неопределенным полюсом unc_pole).

  • Параметр «Значение неопределенности» определяет значения неопределенных переменных блока (unc_pole в данном случае).

uval - структура, имена полей и значения которой являются неопределенными именами переменных и значениями, используемыми для моделирования. Можно задать uval кому [] использование номинальных значений для неопределенных переменных или изменение uval для анализа того, как неопределенность влияет на реакции модели.

MultiPlot Graph блок является удобным способом визуализации разброса ответа, когда вы изменяете неопределенность. Этот блок накладывает результаты моделирования, полученные для каждого значения неопределенности.

Моделирование неопределенных систем Монте-Карло

Чтобы легко управлять значением неопределенности, используемым для моделирования, usim_model использует то же самое «значение неопределенности» uval во всех трех Uncertain State Space блоки. Настройка uval кому [] моделирует отклик по замкнутому контуру для номинальных значений unc_pole, input_unc, и sensor_gain:

uval = [];   % use nominal value of uncertain variables
sim('usim_model',10);   % simulate response

Чтобы проанализировать, как неопределенность влияет на ответы модели, можно использовать ufind и usample команды для генерации случайных значений unc_pole, input_unc, и sensor_gain. Первое использование ufind чтобы найти Uncertain State Space блоки в usim_model и составить список всех неопределенных переменных в этих блоках:

[uvars,pathinfo] = ufind('usim_model');
uvars          % uncertain variables
uvars = 

  struct with fields:

      input_unc: [1x1 ultidyn]
    sensor_gain: [1x1 ureal]
       unc_pole: [1x1 ureal]

pathinfo(:,1)  % paths to USS blocks
ans =

  3x1 cell array

    {'usim_model/Plant'                   }
    {'usim_model/Sensor Gain'             }
    {'usim_model/Unmodeled Plant Dynamics'}

Затем использовать usample для генерации значений неопределенности uval соответствует заданным диапазонам неопределенности. Например, можно смоделировать отклик по замкнутому контуру для 10 случайных значений unc_pole, input_unc, и sensor_gain следующим образом:

for i=1:10;
   uval = usample(uvars);   % generate random instance of uncertain variables
   sim('usim_model',10);   % simulate response
end

MultiPlot Graph Теперь окно показывает 10 возможных откликов неопределенного цикла обратной связи. Обратите внимание, что каждый uval экземпляр - это структура, содержащая значения неопределенных переменных input_unc, sensor_gain, и unc_pole:

uval  % sample value of uncertain variables
uval = 

  struct with fields:

      input_unc: [1x1 ss]
    sensor_gain: 0.5893
       unc_pole: -4.9557

Рандомизированное моделирование

При необходимости можно настроить модель на использование другого значения неопределенности. uval для каждого нового моделирования. Для этого добавьте uvars в рабочее пространство «База» или «Модель» и присоедините usample вызов модели InitFcn:

bdclose('usim_model'), open_system('usim_model')
% Write the uncertain variable list in the Base Workspace
evalin('base','uvars=ufind(''usim_model'');')
% Modify the model InitFcn
set_param('usim_model','InitFcn','uval = usample(uvars);');

% Simulate ten times (same as pressing "Start simulation" ten times)
for i=1:10;
   sim('usim_model',10);
end

% Clean up
set_param('usim_model','InitFcn','');

Снова MultiPlot Graph окно показывает 10 возможных откликов неопределенного цикла обратной связи.

Линеаризация неопределенных моделей симуляторов

При наличии Design™ Simulink Control можно использовать тот же рабочий процесс для линеаризации и анализа неопределенных систем в частотной области. Например, можно построить график обратной реакции Боде для 10 случайных выборок неопределенности модели:

clear sys
wmax = 50;  % max natural frequency for unmodeled dynamics (input_unc)
for i=1:10;
   uval = usample(uvars,1,wmax);
   sys(:,:,i) = linearize('usim_model');
end

bode(sys)
title('Ten linearizations of usim\_model');

Если рабочая точка не зависит от неопределенных переменных, более быстрый подход заключается в вычислении неопределенной линеаризации (объекта USS) за один снимок с использованием ulinearize команда:

usys = ulinearize('usim_model')
usys =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 3 states.
  The model uncertainty consists of the following blocks:
    input_unc: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences
    sensor_gain: Uncertain real, nominal = 1, range = [0.1,2], 1 occurrences
    unc_pole: Uncertain real, nominal = -5, range = [-10,-4], 1 occurrences

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

Затем можно выполнить выборку модели неопределенного состояния-пространства usys для создания аналогичного графика Боде:

bode(usample(usys,10,wmax))
title('Ten linearizations of usim\_model');

См. также

Блоки

Функции

Связанные темы