Параметры блока настраивают модель Simulink ® несколькими способами. Например, параметры блока можно использовать для задания различных коэффициентов или времени выборки контроллера. Можно также использовать дискретный параметр, например, управляющий вход в блок многопортового коммутатора, для управления трактом данных в модели. Изменение значения параметра помогает понять его влияние на поведение модели. Кроме того, можно изменять параметры модели завода в системе управления для изучения устойчивости контроллера к изменениям растений.
При обрезке модели с помощью findopможно задать набор значений параметров для обрезки модели. Полный набор значений называется сеткой параметров или выборками параметров. findop вычисляет рабочую точку для каждой комбинации значений в сетке параметров. Можно изменять несколько параметров, расширяя тем самым размер сетки параметров.
Можно изменять любой параметр модели со значением, заданным переменной в рабочей области модели, рабочей области MATLAB ® или словаре данных. В случаях, когда все изменяющиеся параметры являются настраиваемыми ,findop требуется только одна компиляция модели для поиска рабочих точек для различных значений параметров. Эта эффективность особенно выгодна для моделей, которые дорого компилируются повторно.
Изменение значения одного параметра для отсечения партии с помощью findopукажите сетку параметров как структуру, имеющую два поля. Name содержит имя переменной рабочей области, указывающей параметр. Value содержит вектор значений для этого параметра во время обрезки.
Например, Watertank модель имеет три параметра, определенные как переменные рабочего пространства MATLAB, a, b, и A. Следующие команды задают сетку параметров для одного параметра для A.
param.Name = 'A';
param.Value = Avals;Здесь, Avals - массив, задающий значения образца для A.
В следующей таблице перечислены некоторые общие способы задания выборок параметров.
| Образец параметра - тип пространства | Определение образцов параметров |
|---|---|
| Линейно изменяющиеся | param.Value = linspace(A_min,A_max,num_samples) |
| Логарифмически изменяющиеся | param.Value = logspace(A_min,A_max,num_samples) |
| Случайный | param.Value = rand(1,num_samples) |
| Обычай | param.Value = custom_vector |
Если переменная, используемая моделью, не является скалярной переменной, укажите имя параметра как выражение, разрешающее числовое скалярное значение. Например, предположим, что Kpid является вектором усиления PID. Первая запись в этом векторе, Kpid, используется в качестве значения коэффициента усиления в блоке модели. Используйте следующие команды для изменения коэффициента усиления с использованием значений, заданных в векторе Kpvals:
param.Name = 'Kpid(1)';
param.Value = Kpvals;После создания структуры param, передайте его в findop в качестве param входной аргумент.
При одновременном изменении нескольких параметров создаются сетки параметров с более высоким размером. Например, изменение двух параметров дает матрицу параметров, а изменение трех параметров - сетку параметров 3-D. Рассмотрим следующую сетку параметров, используемую для обрезки партии:

Здесь можно изменить значения трех параметров: a, b и C. Образцы образуют сетку 3 на 4 на 5. op - массив с теми же размерами, который содержит соответствующие обрезанные объекты рабочих точек.
Изменение значения нескольких параметров для отсечения партии с помощью findop, укажите образцы параметров как массив структуры. Структура содержит запись для каждого параметра, значение которого изменяется. Структура каждого параметра такая же, как описано в разделе Варьировать один параметр. Можно указать Value для параметра в виде массива любого измерения. Однако размер Value поле должно соответствовать всем параметрам. Соответствующие записи массива для всех параметров, также называемые точками сетки параметров, должны соответствовать заданной комбинации параметров. При обрезке модели программа вычисляет рабочую точку для каждой точки сетки.
Предположим, что модель имеет два параметра, значения которых необходимо изменить, а и b:
b1, b2}
Требуется обрезать модель для каждой комбинации a и b, также называемой полной сеткой:
Создание прямоугольной сетки параметров с помощью ndgrid.
a1 = 1; a2 = 2; a = [a1 a2]; b1 = 3; b2 = 4; b = [b1 b2]; [A,B] = ndgrid(a,b)
>> A
A =
1 1
2 2
>> B
B =
3 4
3 4Создайте структурный массив, params, которая определяет сетку параметров.
params(1).Name = 'a'; params(1).Value = A; params(2).Name = 'b'; params(2).Value = B;
В общем случае, чтобы задать полную сетку для параметров N, используйте ndgrid для получения N массивов сетки.
[P1,...,PN] = ndgrid(p1,...,pN);
Здесь, p1,...,pN являются векторами выборки параметров.
Создайте массив структуры 1 x N.
params(1).Name = 'p1'; params(1).Value = P1; ... params(N).Name = 'pN'; params(N).Value = PN;
Если модель сложна или вы изменяете значение многих параметров, обрезка модели для полной сетки может стать дорогостоящей. В этом случае можно указать подмножество полной сетки с помощью табличного подхода. Используя пример в разделе Указать полную сетку (Specify Full Grid), предположим, что требуется обрезать модель для следующих комбинаций a и b:
Создайте структурный массив, params, которая задает эту сетку параметров.
A = [a1 a1]; params(1).Name = 'a'; params(1).Value = A; B = [b1 b2]; params(2).Name = 'b'; params(2).Value = B;
В этом примере показано, как получить несколько рабочих точек для модели путем изменения значений параметров. Можно изучить надежность контроллера для установки вариаций путем пакетной линеаризации модели с использованием обрезанных рабочих точек.
Откройте модель Simulink.
sys = 'watertank';
open_system(sys)

Изменение параметров A и b в пределах 10% от их номинальных значений. Укажите три значения для A и четыре значения для b, создание сетки значений 3 на 4 для каждого параметра.
[A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...
linspace(0.9*b,1.1*b,4));
Создайте массив структуры параметров, указав имя и точки сетки для каждого параметра.
params(1).Name = 'A'; params(1).Value = A_grid; params(2).Name = 'b'; params(2).Value = b_grid;
Создайте спецификацию рабочей точки по умолчанию для модели, которая указывает, что оба состояния модели неизвестны и должны находиться в установившемся состоянии в отсеченной рабочей точке.
opspec = operspec(sys)
Operating point specification for the Model watertank. (Time-Varying Components Evaluated at time t=0) States: ---------- (1.) watertank/PID Controller/Integrator/Continuous/Integrator spec: dx = 0, initial guess: 0 (2.) watertank/Water-Tank System/H spec: dx = 0, initial guess: 1 Inputs: None ---------- Outputs: None ----------
По умолчанию findop отображает отчет о поиске в рабочей точке в окне команд для каждой операции обрезки. Для подавления отображения отчета создайте набор опций обрезки и отключите отображение отчета поиска в операционной точке.
opt = findopOptions('DisplayReport','off');
Обрезать модель с помощью указанной спецификации рабочей точки, сетки параметров и набора опций.
[op,opreport] = findop(sys,opspec,params,opt);
findop обрезает модель для каждой комбинации параметров. Программное обеспечение использует только одну компиляцию модели. op представляет собой массив объектов рабочих точек 3 на 4, соответствующих указанным точкам сетки параметров.
Просмотр рабочей точки в первой строке и первом столбце op.
op(1,1)
Operating point for the Model watertank.
(Time-Varying Components Evaluated at time t=0)
States:
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
x: 1.41
(2.) watertank/Water-Tank System/H
x: 10
Inputs: None
----------
В этом примере показано, как выполнить пакетную обрезку модели, когда указанные вариации параметров влияют на известные состояния обрезки.
В примере Модель подстройки пакета для вариаций параметров (Batch Trim Model for Parameter Variations) модель обрезается в соответствии со спецификацией одной рабочей точки, содержащей неизвестные состояния. В других случаях состояния модели известны для обрезки, но зависят от значений изменяющихся параметров. В этом случае невозможно выполнить пакетную обрезку модели с помощью одной спецификации рабочей точки. Необходимо создать отдельную спецификацию для каждой точки сетки значений параметров.
Откройте модель Simulink.
sys = 'scdairframeTRIM';
open_system(sys)

В этой модели аэродинамические силы и моменты зависят от скорости,
и падения,.
Измените
параметры и. и создайте сетку параметров 6 на 4.
nA = 6; % number of alpha values nV = 4; % number of V values alphaRange = linspace(-20,20,nA)*pi/180; vRange = linspace(700,1400,nV); [alphaGrid,vGrid] = ndgrid(alphaRange,vRange);
Поскольку некоторые известные значения состояний для обрезки зависят от значений
и.,
необходимо создать отдельный объект спецификации операционной точки для каждой комбинации параметров.
for i = 1:nA for j = 1:nV % Set parameter values in model. alpha_ini = alphaGrid(i,j); v_ini = vGrid(i,j); % Create default specifications based on the specified parameters. opspec(i,j) = operspec(sys); % Specify which states are known and which states are at steady state. opspec(i,j).States(1).Known = [1;1]; opspec(i,j).States(1).SteadyState = [0;0]; opspec(i,j).States(3).Known = [1;1]; opspec(i,j).States(3).SteadyState = [0;1]; opspec(i,j).States(2).Known = 1; opspec(i,j).States(2).SteadyState = 0; opspec(i,j).States(4).Known = 0; opspec(i,j).States(4).SteadyState = 1; end end
Создайте структуру параметров для отсечения партии. Укажите имя и сетку значений для каждого параметра.
params(1).Name = 'alpha_ini'; params(1).Value = alphaGrid; params(2).Name = 'v_ini'; params(2).Value = vGrid;
Обрезка модели с использованием заданных параметров сетки и спецификаций рабочих точек. При указании массива спецификаций рабочих точек и переменных значений параметров размеры массива спецификаций должны соответствовать размерам сетки параметров.
opt = findopOptions('DisplayReport','off'); op = findop(sys,opspec,params,opt);
findop обрезает модель для каждой комбинации параметров. op - массив объектов рабочих точек 6 на 4, соответствующих указанным точкам сетки параметров.