В этом примере показано, как использовать блоки 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]);
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');
