exponenta event banner

линеаризовать

Линейная аппроксимация модели или подсистемы Simulink

Описание

пример

linsys = linearize(mdl,io) возвращает линейное приближение нелинейной модели Simulink ®mdl в рабочей точке модели с использованием точек анализа, указанных в io. Если опустить io, то linearize использует в качестве точек анализа входные и выходные данные корневого уровня модели.

пример

linsys = linearize(mdl,io,op) линеаризация модели в рабочей точке op.

пример

linsys = linearize(mdl,io,param) линеаризует модель с использованием вариаций значений параметров, указанных в param. Можно изменять любой параметр модели со значением, заданным переменной в рабочей области модели, рабочей области MATLAB ® или словаре данных.

пример

linsys = linearize(mdl,io,blocksub) линеаризует модель с использованием блока подстановки или линеаризаций подсистемы, указанных в blocksub.

пример

linsys = linearize(mdl,io,options) линеаризует модель с помощью дополнительных опций линеаризации.

linsys = linearize(mdl,io,op,param,blocksub,options) линеаризует модель с использованием любой комбинации op, param, blocksub, и options в любом порядке.

пример

linsys = linearize(mdl,blockpath) возвращает линейное приближение блока или подсистемы в модели mdl, указанный blockpath, в рабочей точке модели. Программа изолирует блок от остальной части модели перед линеаризацией.

пример

linsys = linearize(mdl,blockpath,op) линеаризует блок или подсистему в рабочей точке op.

linsys = linearize(mdl,blockpath,param) линеаризует блок или подсистему, используя изменения значений параметров, указанные в param. Можно изменять любой параметр модели со значением, заданным переменной в рабочей области модели, рабочей области MATLAB или словаре данных.

linsys = linearize(mdl,blockpath,blocksub) линеаризует блок или подсистему, используя подстановочный блок или подсистему линеаризации, указанные в blocksub.

linsys = linearize(mdl,blockpath,options) линеаризует блок или подсистему с помощью дополнительных опций линеаризации.

linsys = linearize(mdl,blockpath,op,param,blocksub,options) линеаризует блок или подсистему, используя любую комбинацию op, param, blocksub, и options в любом порядке.

пример

linsys = linearize(___,'StateOrder',stateorder) задает порядок состояний в линеаризованной модели для любого из предыдущих синтаксисов.

пример

[linsys,linop] = linearize(___) возвращает рабочую точку, в которой модель линеаризована. Этот синтаксис используется при линеаризации в моментальных снимках моделирования или при изменении параметров во время линеаризации.

пример

[linsys,linop,info] = linearize(___) возвращает дополнительную информацию о линеаризации. Выбор информации линеаризации для возврата в info, включите соответствующую опцию в options.

Примеры

свернуть все

Откройте модель Simulink.

mdl = 'watertank';
open_system(mdl)

Укажите вход линеаризации на выходе блока PID Controller, который является входным сигналом для блока Water-Tank System.

io(1) = linio('watertank/PID Controller',1,'input');

Укажите точку вывода линеаризации на выходе блока «Система резервуаров для воды». Указание выходной точки как разомкнутой цепи устраняет влияние сигнала обратной связи на линеаризацию без изменения рабочей точки модели.

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.

Разрывы в блоке Напряжение в ШИМ приводят к линеаризации модели до нуля. Чтобы рассматривать этот блок как единичное усиление во время линеаризации, укажите подстановочную линеаризацию для этого блока.

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)

Для линеаризации блока «Система резервуаров для воды» задайте вход и выход линеаризации.

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

Входные аргументы

свернуть все

Имя модели Simulink, указанное как символьный вектор или строка. Модель должна находиться в текущей рабочей папке или в пути MATLAB.

Набор точек анализа, содержащий входы, выходы и проемы, заданные как объект ввода/вывода линеаризации или вектор объектов ввода/вывода линеаризации. Создать io:

  • Определите входы, выходы и отверстия с помощью linio.

  • Если входные, выходные и проемы заданы в модели Simulink, извлеките эти точки из модели с помощью getlinio.

Каждый линеаризационный объект ввода-вывода в io должен соответствовать модели Simulink mdl или ссылку на модель в обычном режиме в иерархии модели.

Если опустить io, то linearize использует в качестве точек анализа входные и выходные данные корневого уровня модели.

Дополнительные сведения о задании входных, выходных и проемов линеаризации см. в разделе Задание части модели для линеаризации.

Рабочая точка линеаризации, заданная как одна из следующих:

  • Объект операционной точки, созданный с помощью:

    • operpoint

    • findop либо с одной спецификацией рабочей точки, либо с одним временем снимка.

  • Массив объектов рабочих точек, задающий несколько рабочих точек. Чтобы создать массив объектов рабочих точек, можно:

  • Вектор положительных скаляров, представляющих одно или несколько времен снимка моделирования. Программное обеспечение моделируется sys и линеаризует модель в указанное время снимка.

    Если также указать вариации параметров с помощью param, программное обеспечение моделирует модель для каждой комбинации времени снимка и точки сетки параметров. Эта операция может быть дорогостоящей в вычислительном отношении.

При указании вариаций параметров с помощью paramи параметры:

  • Влияние на рабочую точку модели, затем укажите op в виде массива рабочих точек с теми же размерами, что и сетка значений параметров. Чтобы получить рабочие точки, соответствующие комбинациям значений параметров, выполните пакетную обрезку модели с помощью param перед линеаризацией. Дополнительные сведения см. в разделе Пакетная линеаризация модели в нескольких рабочих точках, полученных из вариаций параметров.

  • Не влияйте на рабочую точку модели, затем укажите op как единая рабочая точка.

Блок или подсистема для линеаризации, заданная как символьный вектор или строка, содержащая полный путь блока.

Входы и выходы указанного блока обрабатываются программным обеспечением как входы и выходы с разомкнутым контуром, что изолирует блок от остальной части модели перед линеаризацией.

Подстановка линеаризаций для блоков и подсистем, указанных как структура или массив структуры n-by-1, где n - количество блоков, для которых требуется задать линеаризацию. Использовать blocksub задание пользовательской линеаризации для блока или подсистемы. Например, можно задать линеаризации для блоков, не имеющих аналитических линеаризаций, таких как блоки с разрывами или инициируемые подсистемы.

Чтобы изучить влияние изменения линеаризации блока на динамику модели, можно выполнить пакетную линеаризацию модели, указав несколько подстановочных линеаризаций для блока.

При замене линеаризации временем выборки, отличающимся от времени исходного блока или подсистемы, рекомендуется установить общее время выборки линеаризации (options.SampleTime) для значения, не используемого по умолчанию.

Каждая заменяющая структура линеаризации имеет следующие поля.

Путь блока, для которого требуется задать линеаризацию, заданный как символьный вектор или строка.

Подстановка линеаризации для блока, указанного как одно из следующих значений:

  • Дважды (Double) - определение линеаризации блока SISO в качестве коэффициента усиления.

  • Массив двойных значений - задает линеаризацию блока MIMO как массив значений коэффициента усиления nu-by-ny, где nu - количество входов, а ny - количество выходов.

  • Модель LTI, модель неопределенного состояния-пространства или неопределенный реальный объект - конфигурация ввода-вывода указанной модели должна соответствовать конфигурации блока, указанной в Name. Для использования неопределенной модели требуется программное обеспечение Toolbox™ надежного управления.

  • Массив моделей LTI, неопределенные модели состояния-пространства или неопределенные реальные объекты - пакетная линеаризация модели с использованием нескольких блоковых замен. Конфигурация ввода-вывода каждой модели в массиве должна соответствовать конфигурации блока, для которого задана пользовательская линеаризация. Если вы:

    • Изменение параметров модели с помощью param и указать Value как массив модели, размеры Value должен соответствовать размеру сетки параметра.

    • Определить op как массив рабочих точек и Value как массив модели, размеры Value должен соответствовать размеру op.

    • Определение подстановок блоков для нескольких блоков и указание Value как массив моделей LTI для одного или нескольких из этих блоков, размеры массивов должны совпадать.

  • Структура со следующими полями.

    ОбластьОписание
    Specification

    Линеаризация блоков, заданная как символьный вектор, содержащий одно из следующих значений:

    Указанное выражение или функция должны возвращать одно из следующих значений:

    • Линейная модель в виде D-матрицы

    • Система управления Toolbox™ объект модели LTI

    • Неопределенная модель состояния-пространства или неопределенный реальный объект (требуется программное обеспечение Rustive Control Toolbox)

    Конфигурация ввода-вывода возвращаемой модели должна соответствовать конфигурации блока, указанной в Name.

    Type

    Тип спецификации, указанный как одно из следующих значений:

    • 'Expression'

    • 'Function'

    ParameterNames

    Имена параметров функции линеаризации, заданные как массив ячеек символьных векторов. Определить ParameterNames только когда Type = 'Function' и функция линеаризации блоков требует входных параметров. Эти параметры влияют только на линеаризацию указанного блока.

    Необходимо также указать соответствующий blocksub.Value.ParameterValues поле.

    ParameterValues

    Значения параметров функции линеаризации, заданные как вектор двойников. Порядок значений параметров должен соответствовать порядку имен параметров в blocksub.Value.ParameterNames. Определить ParameterValues только когда Type = 'Function' и функция линеаризации блоков требует входных параметров.

Выборки параметров для линеаризации, указанные как одно из следующих:

  • Структура (Structure) - изменение значения одного параметра путем указания 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, укажите param, и установить options.StoreOffsets кому true. Затем можно вернуть дополнительную информацию о линеаризации в infoи извлеките смещения с помощью getOffsetsForLPV.

Порядок состояний в результатах линеаризации, заданный как массив ячеек путей блоков или имен состояний. Порядок путей и состояний блоков в stateorder указывает порядок состояний в linsys.

Можно задать пути блоков для любых блоков в mdl которые имеют состояния или любые именованные состояния в mdl.

Нет необходимости указывать каждый блок и состояние из mdl в stateorder. Указанные состояния отображаются первыми в linsys, за которыми следуют остальные состояния в порядке по умолчанию.

Параметры алгоритма линеаризации, заданные как linearizeOptions набор опций.

Выходные аргументы

свернуть все

Результат линеаризации, возвращаемый как модель состояния-пространства или массив моделей состояния-пространства. Размеры linsys зависит от указанных вариаций параметров и замен блоков, а также от рабочих точек, в которых линеаризуется модель.

Примечание

Если указано более одного из op, param, или blocksub.Value как массив, то их размеры должны совпадать.

Изменение параметраПодстановка блоковЛинеаризация в...Заканчивание linsys Размеры
Без изменения параметровБез подстановки блоковРабочая точка моделиМодель одного состояния и пространства
Одиночная операционная точка, заданная как объект операционной точки или время снимка с помощью op
N1-by-...-by-Nm массив объектов рабочих точек, заданный opN1-by-...- по Нм
Ns снимки, заданные как вектор времени снимка с использованием opВектор столбца длиной Ns
N1-by-...- массив модели по Нм по крайней мере для одного блока, указанный blocksub.ValueРабочая точка моделиN1-by-...- по Нм
Одиночная операционная точка, заданная как объект операционной точки или время снимка с помощью op
N1-by-...-by-Nm массив рабочих точек, заданный как массив объектов рабочих точек с помощью op
Ns снимки, заданные как вектор времени снимка с использованием opNs-by-N1-by-...- по Нм
N1-by-...- по - сетка параметров Nm, заданная paramЛибо без подстановки блоков, либо N1-by-...- массив модели по Нм по крайней мере для одного блока, указанный blocksub.ValueРабочая точка моделиN1-by-...- по Нм
Одиночная операционная точка, заданная как объект операционной точки или время снимка с помощью op
N1-by-...-by-Nm массив объектов рабочих точек, заданный op
Ns снимки, заданные как вектор времени снимка с использованием opNs-by-N1-by-...- по Нм

Например, предположим:

  • 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.

Дополнительные сведения о массивах моделей см. в разделе Массивы моделей.

Операционная точка, в которой модель была линеаризована, возвращена как объект операционной точки или массив объектов операционной точки с теми же размерами, что и linsys. Каждый элемент linop - рабочая точка, в которой находится соответствующая linsys была получена модель.

При указании op как один объект операционной точки или массив объектов операционной точки, то linop является копией op. При указании op как один объект рабочей точки, а также указать вариации параметров с помощью param, то linop - массив с теми же размерами, что и сетка параметров. В этом случае элементы linop являются скалярными расширенными копиями op.

Чтобы определить, линеаризована ли модель в разумной рабочей точке, просмотрите состояния и входные данные в linop.

Информация о линеаризации, возвращенная в виде структуры со следующими полями:

Смещения линеаризации, соответствующие рабочей точке, в которой модель была линеаризована, возвращены как [] если 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 с помощью смещений. Для этого сначала преобразуйте их в требуемый формат с помощью getOffsetsForLPV. Пример см. в разделе Аппроксимация нелинейного поведения с использованием массива систем LTI.

Диагностическая информация линеаризации, возвращенная как [] если 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

Входные сигналы в блок, для которого определяется линеаризация, заданная как массив структуры с одной структурой для каждого ввода блока. Каждая структура в Inputs имеет следующие поля:

ОбластьОписание
BlockNameПолный путь блока, выход которого соединен с соответствующим входом блока.
PortIndexВыходной порт блока, указанного BlockName который подключается к соответствующему входу блока.
ValuesЗначение сигнала, указанного BlockName и PortIndex. Если этот сигнал является векторным, то Values - вектор с таким же размером.
nyКоличество выходных каналов блочной линеаризации.
nuКоличество входных каналов блочной линеаризации.
BlockLinearizationТекущая линеаризация блока по умолчанию, заданная как модель состояния-пространства. Можно задать линеаризацию блока, которая зависит от линеаризации по умолчанию, используя BlockLinearization.

Пользовательская функция должна возвращать модель с nu входные данные и ny выходы. Эта модель должна быть одной из следующих:

  • Линейная модель в виде D-матрицы

  • Объект модели LTI панели инструментов системы управления

  • Неопределенная модель состояния-пространства или неопределенный реальный объект (требуется программное обеспечение Rustive Control Toolbox)

Например, следующая функция умножает текущую линеаризацию блоков по умолчанию на задержку Td = 0.5 секунд. Задержка представлена фильтром Тирэна с временем выборки 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, не имеют аналитических якобианов.

Можно задать пользовательскую линеаризацию для любых таких блоков, для которых известна ожидаемая линеаризация. Если пользовательская линеаризация не задана, программа линеаризует модель путем возмущения входов и состояний блока и измерения отклика на эти возмущения. Для каждого входа и состояния уровень возмущений по умолчанию:

  • 10 5 (1 + | x |) для значений двойной точности.

  • 0,005 (1 + | x |) для значений с одинарной точностью.

Здесь x - значение соответствующего входа или состояния в рабочей точке. Сведения об изменении уровней возмущений для отдельных блоков см. в разделе Изменение уровня возмущений для блоков, возмущенных во время линеаризации.

Дополнительные сведения см. в разделах Линеаризация нелинейных моделей и точный алгоритм линеаризации.

Численное возмущение полной модели

Можно линеаризовать систему с помощью числового возмущения полной модели, при котором программа вычисляет линеаризацию полной модели путем возмущения значений входов и состояний корневого уровня. Для этого создайте linearizeOptions и установите LinearizationAlgorithm одному из следующих свойств:

  • 'numericalpert' - Возмущение входов и состояний с использованием прямых разностей; то есть путем добавления возмущений к входному значению и значению состояния. Этот способ возмущения обычно быстрее, чем 'numericalpert2' способ.

  • 'numericalpert2' - Возмущение входов и состояний с использованием центральных различий; то есть путем возмущения входных значений и значений состояния как в положительном, так и в отрицательном направлениях. Этот способ возмущения обычно более точен, чем 'numericalpert' способ.

Для каждого входа и состояния программа возмущает модель и вычисляет линейную модель на основе реакции модели на эти возмущения. Можно настроить состояние и входные уровни возмущений с помощью NumericalPertRel параметры линеаризации.

Поблочная линеаризация имеет несколько преимуществ по сравнению с числовым возмущением полной модели:

  • Большинство блоков Simulink имеют предварительно запрограммированную линеаризацию, которая обеспечивает точную линеаризацию блока.

  • Точки линейного анализа можно использовать для задания части модели для линеаризации.

  • Блоки можно настроить на использование пользовательских линеаризаций без влияния на моделирование модели.

  • Структурно неминеральные состояния удаляются автоматически.

  • Можно указать линеаризации, включающие неопределенность (требуется программное обеспечение Rustive Control Toolbox).

  • Вы можете получить подробную диагностическую информацию.

  • При линеаризации многоскоростных моделей можно использовать различные методы преобразования тарифов. Численное возмущение полной модели может использовать только преобразование скорости удержания нулевого порядка.

Дополнительные сведения см. в разделах Линеаризация нелинейных моделей и Точный алгоритм линеаризации.

Альтернативы

В качестве альтернативы linearize можно линеаризовать модели одним из следующих методов.

Хотя и программное обеспечение Simulink Control Design, и Simulink linmod функция выполняет поблочную линеаризацию, функция линеаризации Simulink Control Design имеет более гибкий пользовательский интерфейс и использует числовые алгоритмы панели инструментов системы управления. Дополнительные сведения см. в разделе Линеаризация с использованием конструкции управления Simulink в сравнении с Simulink.

Представлен в R2006a