Линейная аппроксимация модели Simulink или подсистемы
задает порядок состояний в линеаризовавшей модели для любого из предыдущих синтаксисов.linsys
= linearize(___,'StateOrder',stateorder
)
Откройте модель Simulink.
mdl = 'watertank';
open_system(mdl)
Задайте вход линеаризации при выходе блока PID Controller, который является входным сигналом для блока Water-Tank System.
io(1) = linio('watertank/PID Controller',1,'input');
Задайте выходную точку линеаризации при выходе блока Water-Tank System. При определении выходной точки, когда разомкнутый цикл удаляет эффекты сигнала обратной связи на линеаризации, не изменяя рабочую точку модели.
io(2) = linio('watertank/Water-Tank System',1,'openoutput');
Линеаризуйте модель с помощью заданного набора ввода-вывода.
linsys = linearize(mdl,io);
linsys
линейная аппроксимация объекта в рабочей точке модели.
Откройте модель Simulink.
mdl = 'magball';
open_system(mdl)
Найдите установившуюся рабочую точку, в которой высотой шара является 0.05
. Создайте спецификацию рабочей точки по умолчанию и установите состояние высоты на известное значение.
opspec = operspec(mdl); opspec.States(5).Known = 1; opspec.States(5).x = 0.05;
Обрежьте модель, чтобы найти рабочую точку.
options = findopOptions('DisplayReport','off'); op = findop(mdl,opspec,options);
Задайте сигналы ввода и вывода линеаризации вычислить передаточную функцию с обратной связью.
io(1) = linio('magball/Desired Height',1,'input'); io(2) = linio('magball/Magnetic Ball Plant',1,'output');
Линеаризуйте модель в заданной рабочей точке с помощью заданного набора ввода-вывода.
linsys = linearize(mdl,io,op);
Откройте модель Simulink.
mdl = 'watertank';
open_system(mdl)
Чтобы вычислить передаточную функцию с обратной связью, сначала задайте сигналы ввода и вывода линеаризации.
io(1) = linio('watertank/PID Controller',1,'input'); io(2) = linio('watertank/Water-Tank System',1,'output');
Симулируйте sys
для 10
секунды и линеаризуют модель.
linsys = linearize(mdl,io,10);
Откройте модель Simulink.
mdl = 'scdcascade';
open_system(mdl)
Задайте изменения параметра для контроллера внешнего цикла усиления, Kp1
и Ki1
. Создайте сетки параметра для каждого значения усиления.
Kp1_range = linspace(Kp1*0.8,Kp1*1.2,6); Ki1_range = linspace(Ki1*0.8,Ki1*1.2,4); [Kp1_grid,Ki1_grid] = ndgrid(Kp1_range,Ki1_range);
Создайте структуру значения параметров с полями Name
и Value
.
params(1).Name = 'Kp1'; params(1).Value = Kp1_grid; params(2).Name = 'Ki1'; params(2).Value = Ki1_grid;
params
6 4 сетка значения параметров, где каждый узел решетки соответствует уникальной комбинации Kp1
и Ki1
значения.
Задайте точки ввода и вывода линеаризации для вычисления ответа с обратной связью системы.
io(1) = linio('scdcascade/setpoint',1,'input'); io(2) = linio('scdcascade/Sum',1,'output');
Линеаризуйте модель в рабочей точке модели с помощью заданных значений параметров.
linsys = linearize(mdl,io,params);
Откройте модель Simulink.
mdl = 'scdpwm';
open_system(mdl)
Извлеките ввод и вывод линеаризации из модели.
io = getlinio(mdl);
Линеаризуйте модель в рабочей точке модели.
linsys = linearize(mdl,io)
linsys = D = Step Plant Model 0 Static gain.
Разрывы в блоке Voltage to PWM заставляют модель линеаризовать, чтобы обнулить. Чтобы обработать этот блок как модульное усиление во время линеаризации, задайте линеаризацию замены для этого блока.
blocksub.Name = 'scdpwm/Voltage to PWM';
blocksub.Value = 1;
Линеаризуйте модель с помощью заданной замены блока.
linsys = linearize(mdl,blocksub,io)
linsys = A = State Space( State Space( State Space( 0.9999 -0.0001 State Space( 0.0001 1 B = Step State Space( 0.0001 State Space( 5e-09 C = State Space( State Space( Plant Model 0 1 D = Step Plant Model 0 Sample time: 0.0001 seconds Discrete-time state-space model.
Откройте модель Simulink.
mdl = 'watertank';
open_system(mdl)
Чтобы линеаризовать блок Water-Tank System, задайте ввод и вывод линеаризации.
io(1) = linio('watertank/PID Controller',1,'input'); io(2) = linio('watertank/Water-Tank System',1,'openoutput');
Создайте набор опции линеаризации и задайте шаг расчета для линеаризовавшей модели.
options = linearizeOptions('SampleTime',0.1);
Линеаризуйте объект с помощью заданных опций.
linsys = linearize(mdl,io,options)
linsys = A = H H 0.995 B = PID Controll H 0.02494 C = H Water-Tank S 1 D = PID Controll Water-Tank S 0 Sample time: 0.1 seconds Discrete-time state-space model.
Линеаризовавший объект является моделью в пространстве состояний дискретного времени с шагом расчета 0.1
.
Откройте модель Simulink.
mdl = 'watertank';
open_system(mdl)
Задайте полный блок path для блока, который вы хотите линеаризовать.
blockpath = 'watertank/Water-Tank System';
Линеаризуйте заданный блок в рабочей точке модели.
linsys = linearize(mdl,blockpath);
Открытая модель Simulink.
mdl = 'magball';
open_system(mdl)
Найдите установившуюся рабочую точку, в которой высотой шара является 0.05
. Создайте спецификацию рабочей точки по умолчанию и установите состояние высоты на известное значение.
opspec = operspec(mdl); opspec.States(5).Known = 1; opspec.States(5).x = 0.05;
options = findopOptions('DisplayReport','off'); op = findop(mdl,opspec,options);
Задайте блок path для блока, который вы хотите линеаризовать.
blockpath = 'magball/Magnetic Ball Plant';
Линеаризуйте заданный блок в заданной рабочей точке.
linsys = linearize(mdl,blockpath,op);
Откройте модель Simulink.
mdl = 'magball';
open_system(mdl)
Линеаризуйте объект в рабочей точке модели.
blockpath = 'magball/Magnetic Ball Plant';
linsys = linearize(mdl,blockpath);
Просмотрите порядок состояния по умолчанию для линеаризовавшего объекта.
linsys.StateName
ans = 3x1 cell array {'height' } {'Current'} {'dhdt' }
Линеаризуйте объект и переупорядочьте состояния в линеаризовавшей модели. Установите скорость изменения высоты как второе состояние.
stateorder = {'magball/Magnetic Ball Plant/height';... 'magball/Magnetic Ball Plant/dhdt';... 'magball/Magnetic Ball Plant/Current'}; linsys = linearize(mdl,blockpath,'StateOrder',stateorder);
Просмотрите новый порядок состояний.
linsys.StateName
ans = 3x1 cell array {'height' } {'dhdt' } {'Current'}
Откройте модель Simulink.
mdl = 'watertank';
open_system(mdl)
Чтобы вычислить передаточную функцию с обратной связью, сначала задайте сигналы ввода и вывода линеаризации.
io(1) = linio('watertank/PID Controller',1,'input'); io(2) = linio('watertank/Water-Tank System',1,'output');
Симулируйте sys
и линеаризуйте модель в 0
и 10
секунды. Возвратите рабочие точки, которые соответствуют этим временам снимка состояния; то есть, рабочие точки, в которых линеаризовалась модель.
[linsys,linop] = linearize(mdl,io,[0,10]);
Откройте модель Simulink.
mdl = 'watertank';
open_system(mdl)
Варьируйтесь параметры A
и b
в 10% их номинальной стоимости.
[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(mdl);
Обрежьте модель с помощью заданной спецификации рабочей точки, сетки параметра. Подавите отображение отчета поиска рабочей точки.
opt = findopOptions('DisplayReport','off'); [op,opreport] = findop(mdl,opspec,params,opt);
op
массив 3 на 4 объектов рабочей точки, которые соответствуют заданным узлам решетки параметра.
Задайте блок path для модели объекта управления.
blockpath = 'watertank/Desired Water Level';
Чтобы сохранить смещения во время линеаризации, создайте набор опции линеаризации и установите StoreOffsets
к true
.
options = linearizeOptions('StoreOffsets',true);
Пакет линеаризует объект в обрезанных рабочих точках, с помощью заданных точек ввода-вывода и изменений параметра.
[linsys,linop,info] = linearize(mdl,blockpath,op,params,options);
Можно использовать смещения в info.Offsets
при конфигурировании блока LPV System.
info.Offsets
ans = 3x4 struct array with fields: x dx u y StateName InputName OutputName Ts
mdl
— Имя модели SimulinkИмя модели Simulink в виде вектора символов или строки. Модель должна быть в текущей рабочей папке или на пути MATLAB.
io
— Аналитическая точка установленаАналитический набор точки, который содержит входные параметры, выходные параметры и открытия в виде объекта I/O линеаризации или вектора объектов ввода-вывода линеаризации. Создать io
:
Каждый объект I/O линеаризации в io
должен соответствовать модели Simulink mdl
или некоторая модель - ссылка режима normal mode в иерархии модели.
Если вы не используете io
, затем linearize
использует корневой импорт уровня и выходные порты модели, когда анализ указывает.
Для получения дополнительной информации об определении входных параметров линеаризации видят выходные параметры и открытия, Задают Фрагмент Модели, чтобы Линеаризовать.
op
— Рабочая точкаРабочая точка для линеаризации в виде одного из следующего:
Объект рабочей точки, созданное использование:
Массив объектов рабочей точки, задавая несколько рабочих точек. Чтобы создать массив объектов рабочей точки, вы можете:
Извлеките рабочие точки в несколько раз снимка состояния с помощью findop
.
Пакет обрезает вашу модель с помощью нескольких технических требований рабочей точки. Для получения дополнительной информации смотрите, что Пакет Вычисляет Установившиеся Рабочие точки для Нескольких Технических требований.
Пакет обрезает вашу модель с помощью изменений параметра. Для получения дополнительной информации смотрите, что Пакет Вычисляет Установившиеся Рабочие точки для Изменения Параметра.
Вектор положительных скалярных величин, представляющих один или несколько раз снимка состояния симуляции. Программное обеспечение симулирует sys
и линеаризует модель в заданные времена снимка состояния.
Если вы также задаете изменения параметра с помощью param
, программное обеспечение симулирует модель в течение каждого раза снимка состояния и комбинации узла решетки параметра. Эта операция может быть в вычислительном отношении дорогой.
Если вы задаете изменения параметра с помощью param
, и параметры:
Влияйте на рабочую точку модели, затем задайте op
как массив рабочих точек с теми же размерностями как сетка значения параметров. Чтобы получить рабочие точки, которые соответствуют комбинациям значения параметров, обработайте обрезку в пакетном режиме ваша модель с помощью param
перед линеаризацией. Для получения дополнительной информации смотрите, что Пакет Линеаризует Модель в Нескольких Рабочих точках, Выведенных из Изменений Параметра.
Не влияйте на рабочую точку модели, затем задавайте op
как одна рабочая точка.
blockpath
— Блок или подсистемаБлок или подсистема, чтобы линеаризовать в виде вектора символов или строки, которая содержит ее полный блок path.
Программное обеспечение обрабатывает импорт и выходные порты заданного блока как вводы и выводы разомкнутого цикла, который изолирует блок из остальной части модели перед линеаризацией.
blocksub
— Замените линеаризацией блоки и подсистемыЗамените линеаризацией блоки и подсистемы в виде структуры или n-by-1 массив структур, где n является количеством блоков, для которых вы хотите задать линеаризацию. Используйте blocksub
задавать пользовательскую линеаризацию для блока или подсистемы. Например, можно задать линеаризацию для блоков, которые не имеют аналитической линеаризации, такой как блоки с разрывами или инициированными подсистемами.
Чтобы изучить эффекты варьирования линеаризации блока на динамике модели, можно обработать в пакетном режиме, линеаризуют модель путем определения нескольких линеаризации замены для блока.
Каждая структура линеаризации замены имеет следующие поля:
Name
— Блок pathБлок path блока, для которого вы хотите задать линеаризацию в виде вектора символов или строки.
Value
— Замените линеаризациейЗамените линеаризацией блок в виде одного из следующего:
Дважды — Задают линеаризацию блока SISO как усиление.
Массив типа double — Задает линеаризацию блока MIMO как nu-by-ny массив значений усиления, где nu является количеством входных параметров, и ny является количеством выходных параметров.
Модель LTI, неопределенная модель в пространстве состояний или неопределенный действительный объект — настройка ввода-вывода заданной модели должны совпадать с настройкой блока, заданного Name
. Используя неопределенную модель требует программного обеспечения Robust Control Toolbox™.
Массив моделей LTI, неопределенных моделей в пространстве состояний или неопределенных действительных объектов — Пакет линеаризует модель с помощью нескольких замен блока. Настройка ввода-вывода каждой модели в массиве должна совпадать с настройкой блока, для которого вы задаете пользовательскую линеаризацию. Если вы:
Варьируйтесь параметры модели с помощью param
и задайте Value
как массив моделей, размерности Value
должен совпадать с размером сетки параметра.
Задайте op
как массив рабочих точек и Value
как массив моделей, размерности Value
должен совпадать с размером op
.
Замены блока Define на несколько блоков, и задают Value
как массив моделей LTI для одного или нескольких из этих блоков, должны соответствовать размерности массивов.
Структура со следующими полями:
Поле | Описание |
---|---|
Specification | Блокируйте линеаризацию в виде вектора символов, который содержит одно из следующего:
Заданное выражение или функция должны возвратить одно из следующего:
Настройка ввода-вывода возвращенной модели должна совпадать с настройкой блока, заданного |
Type | Тип спецификации в виде одного из следующего:
|
ParameterNames | Имена параметров функции линеаризации в виде массива ячеек из символьных векторов. Задайте Необходимо также задать соответствующий |
ParameterValues | Значения параметра функции линеаризации в виде вектора удваиваются. Порядок значений параметров должен соответствовать порядку названий параметра в |
param
— Выборки параметраВыборки параметра для линеаризации в виде одного из следующего:
Структура — Варьируется значение одного параметра путем определения param
как структура со следующими полями:
Name
— Название параметра в виде вектора символов или строки. Можно задать любой параметр модели, который является переменной в рабочем пространстве модели, рабочем пространстве MATLAB или словаре данных. Если переменная, используемая моделью, не является скалярной переменной, задайте название параметра как выражение, которое решает к значению числового скаляра. Например, чтобы использовать первый элемент векторного V
в качестве параметра, использование:
param.Name = 'V(1)';
Value
— Демонстрационные значения параметра в виде двойного массива.
Например, варьируйтесь значение параметра A
в 10%-й области значений:
param.Name = 'A';
param.Value = linspace(0.9*A,1.1*A,3);
Массив структур — Варьируется значение нескольких параметров. Например, варьируйтесь значения параметров A
и b
в 10%-й области значений:
[A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),... linspace(0.9*b,1.1*b,3)); params(1).Name = 'A'; params(1).Value = A_grid; params(2).Name = 'b'; params(2).Value = b_grid;
Для получения дополнительной информации смотрите, Задают Выборки Параметра для Пакетной Линеаризации.
Если param
задает настраиваемые параметры только, пакет программного обеспечения линеаризует модель с помощью одной компиляции модели.
Чтобы вычислить смещения, требуемые блоком LPV System, задайте param
, и набор options.StoreOffsets
к true
. Можно затем возвратить дополнительную информацию о линеаризации в info
, и извлеките смещения с помощью getOffsetsForLPV
.
stateorder
— Порядок состояний в результатах линеаризацииПорядок состояний в линеаризации заканчивается в виде массива ячеек путей к блоку или имен состояния. Порядок путей к блоку и состояний в stateorder
указывает на порядок состояний в linsys
.
Можно задать пути к блоку для любых блоков в mdl
это имеет состояния или любые именованные состояния в mdl
.
Вы не должны задавать каждый блок и состояние от mdl
в stateorder
. Состояния, которые вы задаете, появляются первыми в linsys
, сопровождаемый остающимися состояниями в их порядке по умолчанию.
options
— Опции алгоритма линеаризацииlinearizeOptions
опция установленаОпции алгоритма линеаризации в виде linearizeOptions
опция установлена.
linsys
— Результат линеаризацииРезультат линеаризации, возвращенный как модель в пространстве состояний или массив моделей в пространстве состояний. Размерности linsys
зависьте от заданных изменений параметра и замен блока и рабочих точек, в которых вы линеаризуете модель.
Если вы задаете больше чем один из op
, param
, или blocksub.Value
как массив, затем должны соответствовать их размерности.
Изменение параметра | Блокируйте замену | Линеаризуйте в... | Получившийся linsys Размерности |
---|---|---|---|
Никакое изменение параметра | Никакая замена блока | Рабочая точка модели | Одна модель в пространстве состояний |
Одна рабочая точка в виде объекта рабочей точки или время снимка состояния с помощью op | |||
N1-by-... - Nm массив объектов рабочей точки, заданных op | N1-by-... - Nm | ||
Ns создает снимки в виде вектора времен снимка состояния с помощью op | Вектор-столбец длины Ns | ||
N1-by-... - Nm массив моделей по крайней мере для одного блока, заданного blocksub.Value | Рабочая точка модели | N1-by-... - Nm | |
Одна рабочая точка в виде объекта рабочей точки или время снимка состояния с помощью op | |||
N1-by-... - Nm массив рабочих точек в виде массива объектов рабочей точки с помощью op | |||
Ns создает снимки в виде вектора времен снимка состояния с помощью op | Ns-by-N1-by-... - Nm | ||
N1-by-... - Nm сетка параметра, заданная param | Или никакая замена блока или N1-by-... - Nm массив моделей по крайней мере для одного блока, заданного blocksub.Value | Рабочая точка модели | N1-by-... - Nm |
Одна рабочая точка в виде объекта рабочей точки или время снимка состояния с помощью op | |||
N1-by-... - Nm массив объектов рабочей точки, заданных op | |||
Ns создает снимки в виде вектора времен снимка состояния с помощью op | Ns-by-N1-by-... - Nm |
Например, предположите:
op
4 3 массив объектов рабочей точки, и вы не задаете изменения параметра или блокируете замены. В этом случае, linsys
4 3 массив моделей.
op
один объект рабочей точки и param
задает 3 4 2 сетками параметра. В этом случае, linsys
3 4 2 массивами моделей.
op
вектор-строка из положительных скалярных величин с двумя элементами, и вы не задаете param
. В этом случае, linsys
вектор-столбец с двумя элементами.
op
вектор-столбец положительных скалярных величин с тремя элементами и param
задает 5 6 сетка параметра. В этом случае, linsys
3 5 6 массивами моделей.
op
один объект рабочей точки, вы не задаете изменения параметра и blocksub.Value
2 3 массив моделей для одного блока в модели. В этом случае, linsys
2 3 массив моделей.
op
вектор-столбец положительных скалярных величин с четырьмя элементами, вы не задаете изменения параметра и blocksub.Value
1 2 массив моделей для одного блока в модели. В этом случае, linsys
4 1 2 массивами моделей.
Для получения дополнительной информации о массивах моделей смотрите Массивы моделей (Control System Toolbox).
linop
— Рабочая точкаРабочая точка, в которой линеаризовалась модель, возвратилась как объект рабочей точки или массив объектов рабочей точки с теми же размерностями как linsys
. Каждый элемент linop
рабочая точка в который соответствующий linsys
модель была получена.
Если вы задаете op
как одна рабочая точка возражают или массив объектов рабочей точки, затем linop
копия op
. Если вы задаете op
как одна рабочая точка возражают и также задают изменения параметра с помощью param
, затем linop
массив с теми же размерностями как сетка параметра. В этом случае, элементы linop
скалярные расширенные копии op
.
Чтобы определить, линеаризовалась ли модель в разумной рабочей точке, просмотрите состояния и входные параметры в linop
.
info
— Информация о линеаризацииИнформация о линеаризации, возвращенная как структура со следующими полями:
Offsets
— Смещения линеаризации[]
(значение по умолчанию) | структура | массив структурСмещения линеаризации, которые соответствуют рабочей точке, в которой линеаризовалась модель, возвратились как []
если options.StoreOffsets
false
. В противном случае, Offsets
возвращен как одно из следующего:
Если linsys
одна модель в пространстве состояний, затем Offsets
структура.
Если linsys
массив моделей в пространстве состояний, затем Offsets
массив структур с теми же размерностями как linsys
.
Каждая структура смещения имеет следующие поля:
Поле | Описание |
---|---|
x | Смещения состояния использовали в линеаризации, возвращенной как вектор-столбец длины nx, где nx является количеством состояний в linsys . |
y | Выведите смещения, используемые в линеаризации, возвращенной как вектор-столбец длины ny, где ny является количеством выходных параметров в linsys . |
u | Введите смещения, используемые в линеаризации, возвращенной как вектор-столбец длины nu, где nu является количеством входных параметров в linsys . |
dx | Производные смещения для непрерывных систем времени или обновленные значения состояния для систем дискретного времени, возвращенных как вектор-столбец длины nx. |
StateName | Имена состояния, возвращенные как массив ячеек, который содержит элементы nx, которые совпадают с именами в linsys.StateName . |
InputName | Введите имена, возвращенные как массив ячеек, который содержит элементы nu, которые совпадают с именами в linsys.InputName . |
OutputName | Выведите имена, возвращенные как массив ячеек, который содержит элементы ny, которые совпадают с именами в linsys.OutputName . |
Ts | Шаг расчета линеаризованной системы, возвращенной как скаляр, который совпадает с шагом расчета в linsys.Ts . Для систем непрерывного времени, Ts 0 . |
Если Offsets
массив структур, можно сконфигурировать блок LPV System с помощью смещений. Для этого сначала преобразуйте их в требуемый формат с помощью getOffsetsForLPV
. Для примера смотрите, что Аппроксимирующее Нелинейное Поведение Использует Массив Систем LTI.
Advisor
— Информация о диагностике линеаризации[]
(значение по умолчанию) | LinearizationAdvisor
возразите | массив LinearizationAdvisor
объектыИнформация о диагностике линеаризации, возвращенная как []
если options.StoreAdvisor
false
. В противном случае, Advisor
возвращен как одно из следующего:
Если linsys
одна модель в пространстве состояний, Advisor
LinearizationAdvisor
объект.
Если linsys
массив моделей в пространстве состояний, Advisor
массив LinearizationAdvisor
объекты с теми же размерностями как linsys
.
LinearizationAdvisor
объекты хранят информацию диагностики линеаризации для линеаризовавших блоков индивидуума. Для примера поиска и устранения неисправностей результатов линеаризации с помощью LinearizationAdvisor
возразите, смотрите Результаты Линеаризации Поиска и устранения неисправностей в Командной строке.
Можно задать линеаризацию замены для блока или подсистемы в модели Simulink с помощью пользовательской функции на пути MATLAB.
Ваша пользовательская функция линеаризации должна иметь один BlockData
входной параметр, который является структурой, которую программное обеспечение создает и передает функции. BlockData
имеет следующие поля:
Поле | Описание | ||||||||
---|---|---|---|---|---|---|---|---|---|
BlockName | Имя блока, для которого вы задаете пользовательскую линеаризацию. | ||||||||
Parameters | Значения параметров блоков в виде массива структур с Name и Value поля . Parameters содержит имена и значения параметров, которые вы задаете в blocksub.Value.ParameterNames и blocksub.Value.ParameterValues поля . | ||||||||
Inputs |
Входные сигналы с блоком, для которого вы задаете линеаризацию в виде массива структур с одной структурой для каждого входа блока. Каждая структура в
| ||||||||
ny | Количество выходных каналов линеаризации блока. | ||||||||
nu | Количество входных каналов линеаризации блока. | ||||||||
BlockLinearization | Текущая линеаризация по умолчанию блока в виде модели в пространстве состояний. Можно задать линеаризацию блока, которая зависит от линеаризации по умолчанию с помощью BlockLinearization . |
Ваша пользовательская функция должна возвратить модель с nu
входные параметры и ny
выходные параметры . Эта модель должна быть одним из следующего:
Линейная модель в форме D-матрицы
Объект модели LTI Control System Toolbox
Неопределенная модель в пространстве состояний или неопределенный действительный объект (требует программного обеспечения Robust Control Toolbox),
Например, следующая функция умножает текущую линеаризацию блока по умолчанию задержкой Td = 0.5
секунды. Задержка представлена фильтром Thiran с шагом расчета Ts = 0.1
. Задержка и шаг расчета являются параметрами, сохраненными в BlockData
.
function sys = myCustomFunction(BlockData) Td = BlockData.Parameters(1).Value; Ts = BlockData.Parameters(2).Value; sys = BlockData.BlockLinearization*Thiran(Td,Ts); end
Сохраните эту функцию в местоположение на пути MATLAB.
Чтобы использовать эту функцию в качестве пользовательской линеаризации для блока или подсистемы, задайте blocksub.Value.Specification
и blocksub.Value.Type
поля .
blocksub.Value.Specification = 'myCustomFunction'; blocksub.Value.Type = 'Function';
Чтобы установить задержку и значения параметров шага расчета, задайте blocksub.Value.ParameterNames
и blocksub.Value.ParameterValues
поля .
blocksub.Value.ParameterNames = {'Td','Ts'}; blocksub.Value.ParameterValues = [0.5 0.1];
По умолчанию, linearize
автоматически устанавливает следующие свойства модели Simulink:
BufferReuse = 'off'
RTWInlineParameters = 'on'
BlockReductionOpt = 'off'
SaveFormat = 'StructureWithTime'
После линеаризации Simulink восстанавливает исходные свойства модели.
Программное обеспечение Simulink Control Design™ линеаризует модели с помощью подхода блока блоком. Программное обеспечение индивидуально линеаризует каждый блок в вашей модели Simulink и производит линеаризацию полной системы путем объединения отдельной линеаризации блока.
Программное обеспечение определяет уровни на входе и государственные уровни для каждого блока из рабочей точки, и получает якобиан для каждого блока на этих уровнях.
Для некоторых блоков программное обеспечение не может вычислить аналитическую линеаризацию этим способом. Например:
Некоторая нелинейность не имеет заданного якобиана.
Некоторые дискретные блоки, такие как диаграммы состояний и инициированные подсистемы, имеют тенденцию линеаризовать, чтобы обнулить.
Некоторые блоки не реализуют якобиан.
Пользовательские блоки, такие как блоки S-Function и блоки MATLAB Function, не имеют аналитических Якобианов.
Можно задать пользовательскую линеаризацию для любых таких блоков, для которых вы знаете ожидаемую линеаризацию. Если вы не задаете пользовательскую линеаризацию, программное обеспечение линеаризует модель путем беспокойства входных параметров блока и состояний и измерения ответа на эти возмущения. Для каждого входа и состояния, уровень возмущения по умолчанию:
для значений с двойной точностью.
для значений с одинарной точностью.
Здесь, x является значением соответствующего входа или состояния в рабочей точке. Для получения информации о том, как изменить уровни возмущения для отдельных блоков, смотрите Уровень Возмущения Изменения Блоков, Встревоженных Во время Линеаризации.
Для получения дополнительной информации смотрите, Линеаризуют Нелинейные Модели и Точный Алгоритм Линеаризации
Можно линеаризовать систему с помощью полной модели числовое возмущение, где программное обеспечение вычисляет линеаризацию полной модели путем беспокойства значений входных параметров корневого уровня и состояний. Для этого создайте linearizeOptions
объект и набор LinearizationAlgorithm
свойство к одному из следующего:
'numericalpert'
— Встревожьте входные параметры и состояния с помощью правых разностей; то есть, путем добавления возмущений во вход и значения состояния. Этот метод возмущения обычно быстрее, чем 'numericalpert2'
метод.
'numericalpert2'
— Встревожьте входные параметры и состояния с помощью центральных различий; то есть, путем беспокойства входа и значений состояния и в положительных и в отрицательных направлениях. Этот метод возмущения обычно более точен, чем 'numericalpert'
метод.
Для каждого входа и состояния, программное обеспечение тревожит модель и вычисляет линейное основанное на модели на ответе модели на эти возмущения. Можно сконфигурировать состояние и ввести уровни возмущения с помощью NumericalPertRel
опции линеаризации.
Линеаризация блока блоком имеет несколько преимуществ перед полной моделью числовое возмущение:
Большинство блоков Simulink имеет предварительно запрограммированную линеаризацию, которая обеспечивает точную линеаризацию блока.
Можно использовать линейные аналитические точки, чтобы задать фрагмент модели, чтобы линеаризовать.
Можно сконфигурировать блоки, чтобы использовать пользовательскую линеаризацию, не влияя симуляцию модели.
Структурно неминимальные состояния автоматически удалены.
Можно задать линеаризацию, которая включает неопределенность (требует программного обеспечения Robust Control Toolbox).
Можно получить подробную диагностическую информацию.
При линеаризации многоскоростных моделей можно использовать различные методы преобразования уровня. Числовое возмущение полное модели может только использовать нулевой порядок "преобразования уровня, содержат".
Для получения дополнительной информации смотрите, Линеаризуют Нелинейные Модели и Точный Алгоритм Линеаризации.
Как альтернатива linearize
функция, можно линеаризовать модели с помощью одного из следующих методов:
Чтобы в интерактивном режиме линеаризовать модели, используйте приложение Model Linearizer. Для примера смотрите, Линеаризуют Модель Simulink в Рабочей точке Модели.
Чтобы получить несколько передаточных функций, не изменяя модель или создавая аналитический набор точки для каждой передаточной функции, используйте slLinearizer
интерфейс. Для примера смотрите, Варьируются Значения параметров и Получают Несколько Передаточных функций.
Несмотря на то, что и программное обеспечение Simulink Control Design и linmod
Simulink функция выполняет линеаризацию блока блоком, функциональность линеаризации Simulink Control Design имеет более гибкий пользовательский интерфейс и использует Control System Toolbox числовые алгоритмы. Для получения дополнительной информации смотрите, что Линеаризация Использует Simulink Control Design По сравнению с Simulink.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.