Линейная аппроксимация модели Simulink или подсистемы
linsys = linearize(mdl,io)
linsys = linearize(mdl,io,op)
linsys = linearize(mdl,io,param)
linsys = linearize(mdl,io,blocksub)
linsys = linearize(mdl,io,options)
linsys = linearize(mdl,io,op,param,blocksub,options)
linsys = linearize(mdl,blockpath)
linsys = linearize(mdl,blockpath,op)
linsys = linearize(mdl,blockpath,param)
linsys = linearize(mdl,blockpath,blocksub)
linsys = linearize(mdl,blockpath,options)
linsys = linearize(mdl,blockpath,op,param,blocksub,options)
linsys = linearize(___,'StateOrder',stateorder)
[linsys,linop] = linearize(___)
[linsys,linop,info] = linearize(___)
задает порядок состояний в линеаризовавшей модели для любого из предыдущих синтаксисов.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 сеткой значения параметров, где каждый узел решетки соответствует уникальной комбинации значений Ki1
и Kp1
.
Задайте точки ввода и вывода линеаризации для вычисления ответа с обратной связью системы.
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
и линеаризуйте модель в секундах 10
и 0
. Возвратите рабочие точки, которые соответствуют этим временам снимка состояния; то есть, рабочие точки, в которых линеаризовалась модель.
[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
, чтобы задать пользовательскую линеаризацию для блока или подсистемы. Например, можно задать линеаризацию для блоков, которые не имеют аналитической линеаризации, такой как блоки с разрывами или инициированными подсистемами.
Чтобы изучить эффекты варьирования линеаризации блока на образцовой динамике, можно обработать в пакетном режиме, линеаризуют модель путем определения нескольких линеаризации замены для блока.
Каждая структура линеаризации замены имеет следующие поля:
Имя
Блок pathБлок path блока, для которого вы хотите задать линеаризацию, заданную как вектор символов или строка.
Значение
Замените линеаризациейЗамените линеаризацией блок, заданный как одно из следующего:
Дважды — Задают линеаризацию блока SISO как усиление.
Массив удваивается — Задают линеаризацию блока 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
как структуры со следующими полями:
Имя
Название параметра, заданное как вектор символов или строка. Можно задать любой параметр модели, который является переменной в рабочем пространстве модели, рабочем пространстве MATLAB или словаре данных. Если переменная, используемая моделью, не является скалярной переменной, задайте название параметра как выражение, которое решает к значению числового скаляра. Например, чтобы использовать первый элемент векторного V
в качестве параметра, используйте:
param.Name = 'V(1)';
Значение
Демонстрационные значения параметра, заданные как двойной массив.
Например, отличайтесь значение параметра 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
, сопровождаемом остающимися состояниями в их порядке по умолчанию.
опции
Опции алгоритма линеаризацииlinearizeOptions
установленаУстановлены опции алгоритма линеаризации, заданные как опция linearizeOptions
.
linsys
— Результат линеаризацииРезультат линеаризации, возвращенный как модель в пространстве состояний или массив моделей в пространстве состояний. Размерности linsys
зависят от заданных изменений параметра и замен блока и рабочих точек, в которых вы линеаризуете модель.
Если вы задаете больше чем один из op
, param
или blocksub.Value
как массив, то их размерности должны соответствовать.
Изменение параметра | Блокируйте замену | Линеаризуйте в... | Получившиеся размерности linsys |
---|---|---|---|
Никакое изменение параметра | Никакая замена блока | Образцовая рабочая точка | Одна модель в пространстве состояний |
Одна рабочая точка, заданная как объект рабочей точки или время снимка состояния с помощью op | |||
N1-by-...-by- Nm массив объектов рабочей точки, заданных op | N1-by-...-by- Nm | ||
Снимки состояния Ns, заданные как вектор времен снимка состояния с помощью op | Вектор-столбец длины Ns | ||
N1-by-...-by- Nm образцовый массив по крайней мере для одного блока, заданного blocksub.Value | Образцовая рабочая точка | N1-by-...-by- Nm | |
Одна рабочая точка, заданная как объект рабочей точки или время снимка состояния с помощью op | |||
N1-by-...-by- Nm массив рабочих точек, заданных как массив объектов рабочей точки с помощью op | |||
Снимки состояния Ns, заданные как вектор времен снимка состояния с помощью op | Ns-by-N1-by-...-by- Nm | ||
N1-by-...-by- Nm сетка параметра, заданная param | Или никакая замена блока или N1-by-...-by- Nm образцовый массив по крайней мере для одного блока, заданного blocksub.Value | Образцовая рабочая точка | N1-by-...-by- Nm |
Одна рабочая точка, заданная как объект рабочей точки или время снимка состояния с помощью op | |||
N1-by-...-by- Nm массив объектов рабочей точки, заданных op | |||
Снимки состояния Ns, заданные как вектор времен снимка состояния с помощью op | Ns-by-N1-by-...-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
.
информация
Информация о линеаризацииИнформация о линеаризации, возвращенная как структура со следующими полями:
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
, можно линеаризовать модели с помощью одного из следующих методов:
Чтобы в интерактивном режиме линеаризовать модели, используйте Linear Analysis Tool. Для примера смотрите, Линеаризуют Модель Simulink в Образцовой Рабочей точке.
Чтобы получить несколько передаточных функций, не изменяя модель или создавая аналитический набор точки для каждой передаточной функции, используйте интерфейс slLinearizer
. Для примера смотрите, Отличаются Значения параметров и Получают Несколько Передаточных функций.
Несмотря на то, что и программное обеспечение Simulink Control Design и функция linmod
Simulink выполняют линеаризацию блока блоком, функциональность линеаризации Simulink Control Design имеет более гибкий пользовательский интерфейс и использует Control System Toolbox числовые алгоритмы. Для получения дополнительной информации смотрите, что Линеаризация Использует Simulink Control Design По сравнению с Simulink.
Linear Analysis Tool | findop
| linearizeOptions
| slLinearizer
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.