Линейное приближение модели или подсистемы Simulink
задает порядок состояний в линеаризированной модели для любого из предыдущих синтаксисов.linsys
= linearize(___,'StateOrder',stateorder
)
Откройте модель Simulink.
mdl = 'watertank';
open_system(mdl)
Задайте вход линеаризации на выходе блока ПИД-регулятор, который является входным сигналом для блока 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)
Укажите полный путь к блоку, который необходимо линеаризировать.
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);
Укажите путь блока для блока, который необходимо линеаризировать.
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, которые соответствуют заданным параметрическим узлам сетки.
Задайте путь блока для модели объекта управления.
blockpath = 'watertank/Desired Water Level';
Чтобы хранить смещения во время линеаризации, создайте набор опций линеаризации и установите StoreOffsets
на true
.
options = linearizeOptions('StoreOffsets',true);
Пакетная линеаризация объекта управления в обрезанных рабочих точках с помощью заданных точек ввода-вывода и изменений параметра.
[linsys,linop,info] = linearize(mdl,blockpath,op,params,options);
Смещения можно использовать в info.Offsets
при конфигурировании системного блока LPV.
info.Offsets
ans = 3x4 struct array with fields: x dx u y StateName InputName OutputName Ts
mdl
- имя модели SimulinkИмя модели Simulink, заданное как вектор символов или строка. Модель должна находиться в текущей рабочей папке или в пути MATLAB.
io
- Набор точек анализаНабор точек анализа, который содержит входы, выходы и открытия, заданные как объект ввода-вывода линеаризации или вектор объектов ввода-вывода линеаризации. Создание io
:
Каждый объект ввода-вывода линеаризации в io
должен соответствовать модели Simulink mdl
или некоторую модель-ссылку режима normal mode в иерархии модели.
Если вы опускаете io
, затем linearize
использует корневые входные и выходные порты модели в качестве точек анализа.
Для получения дополнительной информации об указании входов, выходов и открытий линеаризации, см. Раздел «Задание фрагмента модели для линеаризации».
op
- Рабочая точкаРабочая точка для линеаризации, заданная как одно из следующего:
Объект рабочей точки, созданный с использованием:
Массив объектов рабочей точки, задающий несколько рабочих точек. Чтобы создать массив объектов рабочих точек, можно:
Извлечение рабочих точек при нескольких временах моментального снимка с помощью findop
.
Пакетная обрезка вашей модели с помощью нескольких спецификаций рабочей точки. Для получения дополнительной информации см. «Пакетные вычисления установившихся рабочих точек для нескольких спецификаций».
Пакетная обрезка модели с помощью изменений параметров. Для получения дополнительной информации смотрите Пакетные Вычисления Статических Рабочих Точек для Изменения Параметра.
Вектор положительных скалярных величин, представляющий одно или несколько раз моментального снимка симуляции. Программа моделирует sys
и линеаризирует модель в заданное время моментального снимка.
Если вы также задаете изменения параметров, используя param
программное обеспечение моделирует модель для каждой комбинации моментального снимка и параметра grid point. Эта операция может быть дорогостоящей в вычислительном отношении.
Если вы задаете изменения параметра используя param
, и параметры:
Повлияйте на рабочую точку модели, затем задайте op
как массив рабочих точек с теми же размерностями, что и сетка значений параметров. Чтобы получить рабочие точки, которые соответствуют комбинациям значений параметров, пакет обрезает вашу модель, используя param
перед линеаризацией. Для получения дополнительной информации смотрите Пакетная линеаризация модели в нескольких рабочих точках, выведенных из изменений параметра.
Не влияйте на рабочую точку модели, затем задайте op
как одну рабочую точку.
blockpath
- Блок или подсистемаБлок или подсистема для линеаризации, заданная как вектор символов или строка, содержащая полный путь к блоку.
Программа обрабатывает входные и выходные порты указанного блока как входные и выходные параметры без разомкнутого контура, что изолирует блок от остальной части модели перед линеаризацией.
blocksub
- Замена линеаризации блоков и подсистемЗамените линеаризации блоков и подсистем, заданные как структура или n массив структур -by-1, где n количество блоков, для которых вы хотите задать линеаризацию. Использование blocksub
чтобы задать пользовательскую линеаризацию для блока или подсистемы. Например, можно задать линеаризацию для блоков, которые не имеют аналитических линеаризаций, таких как блоки с разрывами или триггируемые подсистемы.
Чтобы изучить эффекты изменения линеаризации блока на динамике модели, можно пакетно линеаризировать модель, задав несколько замещающих линеаризаций для блока.
Если вы заменяете линеаризацию на шаг расчета, которая отличается от таковой у исходного блока или подсистемы, лучшей практики задать общий шаг расчета линеаризации (options
.SampleTime
) в значение, не заданное по умолчанию.
Каждая заменяющая структура линеаризации имеет следующие поля.
Name
- Путь блокаБлочный путь блока, для которого вы хотите задать линеаризацию, заданный как вектор символов или строка.
Value
- Замена линеаризацииЗамените линеаризацию блока, заданную как одно из следующего:
Double - Задайте линеаризацию блока SISO как коэффициент усиления.
Массив типа double - Задайте линеаризацию блока MIMO как nu -by - ny массив значений усиления, где nu - количество входов, а ny - количество выходов.
Модель LTI, модель неопределенного пространства состояний или неопределенный действительный объект - строение ввода-вывода указанной модели должна совпадать с строением блока, заданной Name
. Использование неопределенной модели требует программного обеспечения Robust Control Toolbox™.
Массив моделей LTI, моделей неопределенного пространства состояний или неопределенных реальных объектов - пакетная линеаризация модели с помощью нескольких замен блоков. Вводы-выводы строения каждой модели в массиве должны совпадать с строением блока, для которого вы задаете пользовательскую линеаризацию. Если вы:
Варьируйте параметры модели с помощью param
и задайте Value
как массив моделей, размерности Value
должен совпадать с размером сетки параметра.
Задайте op
как массив рабочих точек и Value
как массив моделей, размерности Value
должен совпадать с размером op
.
Задайте подстановки блоков для нескольких блоков и задайте Value
как массив моделей LTI для одного или нескольких из этих блоков, размерности массивов должны совпадать.
Структурируйте следующие поля.
Область | Описание |
---|---|
Specification | Блок линеаризация, заданная как вектор символов, содержащая одно из следующего:
Указанное выражение или функция должны вернуть одно из следующего:
Ввод-вывод строения возвращенной модели должен совпадать с строением блока, заданной |
Type | Тип спецификации, заданный как один из следующих:
|
ParameterNames | Имена параметров функции линеаризации, заданные как массив ячеек из векторов символов. Задайте Необходимо также задать соответствующее |
ParameterValues | Значения параметров функции линеаризации, заданные как вектор с двойной точностью. Порядок значений параметров должен соответствовать порядку имен параметров в |
param
- выборки параметровВыборки параметров для линеаризации, заданные как один из следующих:
Структура - Изменяйте значение одного параметра путем определения param
как структура со следующими полями:
Name
- Имя параметра, заданное как вектор символов или строка. Можно задать любой параметр модели, который является переменной в рабочем пространстве модели, рабочем пространстве MATLAB или словаре данных. Если переменная, используемая моделью, не является скалярной переменной, задайте имя параметра как выражение, которое разрешается до числового скалярного значения. Для примера использовать первый элемент векторного V
в качестве параметра используйте:
param.Name = 'V(1)';
Value
- Выборочные значения параметра, заданные как двойной массив.
Для примера измените значение параметра A
в области значений:
param.Name = 'A';
param.Value = linspace(0.9*A,1.1*A,3);
Массив структур - Варьируйте значение нескольких параметров. Для примера варьируйте значения параметров A
и b
в области значений:
[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- ... -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.
Для получения дополнительной информации об массивах моделей см. Раздел «Массивы моделей».
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 и производит линеаризацию всей системы путем объединения отдельных линеаризаций блоков.
Программа определяет уровни входа и состояния для каждого блока из рабочей точки и получает Jacobian для каждого блока на этих уровнях.
Для некоторых блоков программное обеспечение не может вычислить аналитическую линеаризацию таким образом. Для примера:
Некоторые нелинейности не имеют заданного якобиана.
Некоторые дискретные блоки, такие как графики состояний и триггируемые подсистемы, имеют тенденцию линеаризироваться к нулю.
Некоторые блоки не реализуют якобиан.
Пользовательские блоки, такие как блоки S-Function и блоки MATLAB Function, не имеют аналитических якобианов.
Можно задать пользовательскую линеаризацию для любых таких блоков, для которых вы знаете ожидаемую линеаризацию. Если вы не задаете пользовательскую линеаризацию, программа линеаризирует модель, возмущая входы и состояния блоков и измеряя реакцию на эти возмущения. Для каждого входа и состояния уровень возмущения по умолчанию является:
для значений двойной точности.
для значений с одной точностью.
Здесь x значение соответствующего входа или состояния в рабочей точке. Для получения информации о том, как изменить уровни возмущения для отдельных блоков, смотрите Изменение уровня возмущения блоков, возмущенных во время линеаризации.
Для получения дополнительной информации см. «Линеаризация нелинейных моделей и точный алгоритм линеаризации»
Можно линеаризировать систему с помощью числовых возмущений полной модели, где программа вычисляет линеаризацию полной модели, возмущая значения входов и состояний корневого уровня. Для этого создайте linearizeOptions
Объекту и установите LinearizationAlgorithm
свойство одному из следующих:
'numericalpert'
- Возмущают входы и состояния, используя прямые различия; то есть путем добавления возмущений к значениям входа и состояния. Этот метод возмущения обычно быстрее, чем 'numericalpert2'
способ.
'numericalpert2'
- Возмущают входы и состояния, используя центральные различия; то есть путем возмущения входа и значений состояний как в положительном, так и в отрицательном направлениях. Этот метод возмущения обычно более точен, чем 'numericalpert'
способ.
Для каждого входа и состояния программное обеспечение возмущает модель и вычисляет линейную модель на основе реакции модели на эти возмущения. Можно сконфигурировать состояние и входные уровни возмущения с помощью NumericalPertRel
опции линеаризации.
Блочная линеаризация имеет несколько преимуществ по сравнению с числовым возмущением полной модели:
Большинство блоков Simulink имеют предварительно запрограммированную линеаризацию, которая обеспечивает точную линеаризацию блока.
Можно использовать точки линейного анализа, чтобы задать фрагмент модели для линеаризации.
Можно сконфигурировать блоки, чтобы использовать пользовательские линеаризации, не влияя на симуляцию модели.
Структурно неминимальные состояния автоматически удаляются.
Можно задать линеаризации, которые включают неопределенность (требует программного обеспечения Robust Control Toolbox).
Вы можете получить подробную диагностическую информацию.
При линеаризации многоскоростных моделей можно использовать различные методы преобразования скорости. Численное возмущение полной модели может использовать только нуль преобразования скорости удержания порядка.
Для получения дополнительной информации см. «Линеаризация нелинейных моделей» и «Точный алгоритм линеаризации».
Как альтернатива linearize
функцию можно линеаризировать модели одним из следующих методов:
Для интерактивной линеаризации моделей используйте Model Linearizer app.Для примера смотрите Linearize Simulink Model at Model Рабочей точки.
Чтобы получить несколько передаточных функций без изменения модели или создания набора точек анализа для каждой передаточной функции, используйте slLinearizer
интерфейс. Для получения примера смотрите Переменные значения параметров и Получите Несколько Передаточных Функций.
Хотя и программное обеспечение Simulink Control Design, и Simulink linmod
функция выполняет блочную линеаризацию, функциональность линеаризации Simulink Control Design имеет более гибкий пользовательский интерфейс и использует числовые алгоритмы Control System Toolbox. Для получения дополнительной информации смотрите Linearization Using Simulink Control Design Versus Simulink.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.