slLinearizer

Интерфейс для пакетной линеаризации моделей Simulink

Описание

пример

sllin = slLinearizer(mdl) создает slLinearizer интерфейс, sllin, для линеаризации Simulink® модель, mdl. Интерфейс добавляет линейные аналитические точки, отмеченные в модели как аналитические точки sllin. Интерфейс также добавляет линейные аналитические точки, которые подразумевают открытие как постоянные открытия.

sllin = slLinearizer(mdl,pt) добавляет заданная точка к списку аналитических точек для sllin, игнорирование линейных аналитических точек отмечено в модели.

sllin = slLinearizer(mdl,param) задает параметры, значения которых вы хотите варьироваться при линеаризации модели.

sllin = slLinearizer(mdl,op) задает рабочие точки для линеаризации модели.

sllin = slLinearizer(mdl,blocksub) задает линеаризацию замены блоков и подсистем. Используйте этот синтаксис, например, чтобы задать пользовательскую линеаризацию для блока. Можно также использовать этот синтаксис для блоков, которые не линеаризуют успешно, такие как блоки с разрывами или триггируемыми подсистемами.

sllin = slLinearizer(mdl,options) конфигурирует опции алгоритма линеаризации.

sllin = slLinearizer(mdl,pt,op,param,blocksub,options) использование любая комбинация входных параметров ptop , param, blocksub, и options создать sllin.

Например, используйте любое следующее:

  • sllin = slLinearizer(mdl,pt,param)

  • sllin = slLinearizer(mdl,op,param).

Если вы не задаете pt, интерфейс добавляет линейные аналитические точки, отмеченные в модели как аналитические точки. Интерфейс также добавляет линейные аналитические точки, которые подразумевают открытие как постоянные открытия.

Описание объекта

slLinearizer обеспечивает интерфейс между моделью Simulink и командами линеаризации getIOTransfer, getLoopTransfer, getSensitivity, и getCompSensitivityИспользование slLinearizer чтобы эффективно обработать в пакетном режиме линеаризуют модель. Можно сконфигурировать slLinearizer интерфейс, чтобы линеаризовать модель в области значений рабочих точек и задать изменения для значений параметра модели. Используйте интерфейсные аналитические точки и постоянные открытия, чтобы получить линеаризацию для любого разомкнутого контура или передаточной функции с обратной связью из модели. Анализируйте устойчивость, или временной интервал или характеристики частотного диапазона линеаризовавших моделей.

Если вы изменили какие-либо интерфейсные свойства начиная с последней линеаризации, команды, которые извлекают линеаризацию из slLinearizer интерфейс перекомпилировал модель Simulink. Если вы выполнили вызовы к определенным функциям, поскольку последняя линеаризация, команды также перекомпилировали модель Simulink. Эти функции включают addPoint, addOpening, removePoint, removeOpening, removeAllPoints, и removeAllOpenings.

Примеры

свернуть все

Создайте slLinearizer интерфейс для scdcascade модель. Добавьте, что анализ указывает на интерфейс, чтобы извлечь открытый - или передаточные функции с обратной связью из модели. Сконфигурируйте интерфейс, чтобы варьироваться параметры и рабочие точки.

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

mdl = 'scdcascade';
open_system(mdl);

Создайте slLinearizer интерфейс для модели. Добавьте сигналы r, u1, |u2 |, y1, |y2 |, y1m, и y2m к интерфейсу.

sllin = slLinearizer(mdl,{'r','u1','u2','y1','y2','y1m','y2m'});

scdcascade содержит два блока ПИД-регулятора, C1 и C2. Предположим, что вы хотите варьироваться пропорциональное и интегральные составляющие C2, Kp2 и Ki2, в 10%-й области значений. Создайте структуру, чтобы задать изменения параметра.

Kp2_range = linspace(0.9*Kp2,1.1*Kp2,3);
Ki2_range = linspace(0.9*Ki2,1.1*Ki2,5);

[Kp2_grid,Ki2_grid]=ndgrid(Kp2_range,Ki2_range);

params(1).Name = 'Kp2';
params(1).Value = Kp2_grid;

params(2).Name = 'Ki2';
params(2).Value = Ki2_grid;

params задает 3x5 сетка параметра. Каждая точка в этой сетке соответствует комбинации Kp2 и Ki2 значения параметров.

Задайте params как Parameters свойство sllin.

sllin.Parameters = params;

Теперь, когда вы используете команды, такие как getIOTransfer, getLoopTransfer, getSensitivity, и getCompSensitivity, программное обеспечение возвращает линеаризацию для каждого узла решетки параметра, заданного sllin.Parameters.

Предположим, что вы хотите линеаризовать модель в несколько раз снимка состояния, например, в t = {0,1,2}. Для этого сконфигурируйте OperatingPoints свойство sllin.

sllin.OperatingPoints = [0 1 2];

Можно опционально сконфигурировать опции линеаризации и задать линеаризацию замены для блоков и подсистем в модели. После полностью конфигурирования sllin, используйте getIOTransfer, getLoopTransfer, getSensitivity, и getCompSensitivity команды, чтобы линеаризовать модель как требуется.

Входные параметры

свернуть все

Имя модели Simulink в виде вектора символов или строки.

Пример: 'scdcascade'

Аналитическая точка, которая будет добавлена к списку анализа, указывает для sllinВ виде:

  • Вектор символов или строка — Аналитический идентификатор точки, который может быть любым следующим:

    • Имя сигнала, например, pt = 'torque'

    • Блок path для блока с одним выходным портом, например, pt = 'Motor/PID'

    • Блок path и порт, порождающий сигнал, например, pt = 'Engine Model/1'

  • Массив ячеек из символьных векторов или массив строк — Задают несколько аналитических идентификаторов точки. Например:

    pt = {'torque','Motor/PID','Engine Model/1'}
  • Вектор из объектов ввода-вывода линеаризации — Создает pt использование linio. Например:

    pt(1) = linio('scdcascade/setpoint',1,'input');
    pt(2) = linio('scdcascade/Sum',1,'output');

    Здесь, pt(1) задает вход и pt(2) задает выход.

    Интерфейс добавляет все точки, заданные pt и игнорирует их типы ввода-вывода. Интерфейс также добавляет весь 'loopbreak' введите сигналы как постоянные открытия.

Выборки параметра для линеаризации mdlВ виде:

  • Структура — Варьируется значение одного параметра путем определения 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 задает настраиваемые параметры только, затем пакет программного обеспечения линеаризует модель с помощью одной компиляции. Если вы также конфигурируете sllin.OperatingPoints с объектами рабочей точки только, программное обеспечение использует одну компиляцию модели.

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

Чтобы вычислить смещения, требуемые блоком LPV System, задайте param, и набор sllin.Options.StoreOffsets к true. Можно затем возвратить дополнительную информацию о линеаризации при вызывании функций линеаризации такой как getIOTransfer, и извлеките использование смещений getOffsetsForLPV.

Рабочая точка для линеаризации mdlВ виде:

Если вы конфигурируете sllin.Parameters, затем задайте op как одно из следующего:

  • Один OperatingPoint или OperatingReport объект.

  • Массив OperatingPoint или OperatingReport объекты, соответствия размера которых та из сетки параметра заданы Parameters свойство. Когда вы обрабатываете в пакетном режиме, линеаризуют mdl, программное обеспечение использует только одну компиляцию модели. Чтобы получить рабочие точки, которые соответствуют комбинациям значения параметров, обработайте обрезку в пакетном режиме ваша модель с помощью param перед линеаризацией. Для примера, который использует linearize команда, смотрите, что Пакет Линеаризует Модель в Нескольких Рабочих точках, Выведенных из Изменений Параметра.

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

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

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

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

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

Блок path блока, для которого вы хотите задать линеаризацию в виде вектора символов или строки.

Замените линеаризацией блок в виде одного из следующего:

  • Дважды — Задают линеаризацию блока SISO как усиление.

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

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

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

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

    • Замены блока Define на несколько блоков, и задают Value как массив моделей LTI больше чем для одного блока, должны соответствовать размерности массивов.

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

    Поле Описание
    Specification

    Блокируйте линеаризацию в виде вектора символов, который содержит одно из следующих

    Заданное выражение или функция должны возвратить одно из следующего:

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

    • Объект модели LTI Control System Toolbox™

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

    Настройка ввода-вывода возвращенной модели должна совпадать с настройкой блока, заданного Name.

    Type

    Тип спецификации в виде одного из следующего:

    • 'Expression'

    • 'Function'

    ParameterNames

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

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

    ParameterValues

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

Опции алгоритма линеаризации в виде a linearizeOptions опция установлена.

Свойства

Parameters

Выборки параметра для линеаризации mdlВ виде структуры или массива структур.

Установите это свойство с помощью param входной параметр или запись через точку (sllin.Parameters = param). param должно быть одно из следующего:

  • Структура — Варьируется значение одного параметра путем определения param как структура со следующими полями:

    • Name — Название параметра в виде вектора символов или строки. Можно задать любой параметр модели, который является переменной в рабочем пространстве модели, рабочем пространстве MATLAB или словаре данных. Если переменная, используемая моделью, не является скалярной переменной, задайте название параметра как выражение, которое решает к значению числового скаляра. Например, чтобы использовать первый элемент векторного V в качестве параметра, использование:

      param.Name = 'V(1)';
    • Value — Демонстрационные значения параметра в виде двойного массива.

    Например, варьируйтесь значение параметра A в 10%-й области значений:

    param.Name = 'A';
    param.Value = linspace(0.9*A,1.1*A,3);
  • Массив структур — Варьируется значение нескольких параметров. Например, варьируйтесь значения параметров A и b в 10%-й области значений:

    [A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...
                             linspace(0.9*b,1.1*b,3));
    params(1).Name = 'A';
    params(1).Value = A_grid;
    params(2).Name = 'b';
    params(2).Value = b_grid;

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

OperatingPoints

Рабочие точки для линеаризации mdlВ виде OperatingPoint объект, массив OperatingPoint объекты или массив положительных скалярных величин.

Установите это свойство с помощью op входной параметр или запись через точку (sllin.OperatingPoints = opop должно быть одно из следующего:

Если вы конфигурируете sllin.Parameters, затем задайте op как одно из следующего:

  • Один OperatingPoint или OperatingReport объект.

  • Массив OperatingPoint или OperatingReport объекты, соответствия размера которых та из сетки параметра заданы Parameters свойство. Когда вы обрабатываете в пакетном режиме, линеаризуют mdl, программное обеспечение использует только одну компиляцию модели. Чтобы получить рабочие точки, которые соответствуют комбинациям значения параметров, обработайте обрезку в пакетном режиме ваша модель с помощью param перед линеаризацией. Для примера, который использует linearize команда, смотрите, что Пакет Линеаризует Модель в Нескольких Рабочих точках, Выведенных из Изменений Параметра.

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

BlockSubstitutions

Замените линеаризацией блоки и подсистемы модели в виде структуры или массива структур.

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

Установите это свойство с помощью blocksub входной параметр или запись через точку (sllin.BlockSubstitutions = blocksubs). Для получения информации о необходимой структуре смотрите blocksub.

Options

Опции алгоритма линеаризации в виде опции устанавливают созданное использование linearizeOptions.

Установите это свойство с помощью options входной параметр или запись через точку (sllin.Options = options).

Model

Имя модели Simulink, которая будет линеаризоваться в виде вектора символов входным параметром mdl.

TimeUnit

Модуль переменной времени. Это свойство задает единицы измерения времени для линеаризовавших моделей, возвращенных getIOTransfer, getLoopTransfer, getSensitivity, и getCompSensitivity. Используйте любое из следующих значений:

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

Значение по умолчанию: 'seconds'

Функции объекта

addPointДобавьте сигнал в список аналитических точек для slLinearizer или slTuner интерфейс
addOpeningДобавьте сигнал в список открытий для slLinearizer или slTuner интерфейс
addPointДобавьте сигнал в список аналитических точек для slLinearizer или slTuner интерфейс
getPointsПолучите список аналитических точек для slLinearizer или slTuner интерфейс
getOpeningsПолучите список открытий для slLinearizer или slTuner интерфейс
getIOTransferПередаточная функция для заданного набора ввода-вывода с помощью slLinearizer или slTuner интерфейс
getLoopTransferПередаточная функция разомкнутого контура в заданной точке с помощью slLinearizer или slTuner интерфейс
getSensitivityФункция чувствительности в заданной точке с помощью slLinearizer или slTuner интерфейс
getCompSensitivityДополнительная функция чувствительности в заданной точке с помощью slLinearizer или slTuner интерфейс
removePointУдалите точку из списка аналитических точек в slLinearizer или slTuner интерфейс
removeAllPointsУдалите все точки из списка аналитических точек в slLinearizer или slTuner интерфейс
removeAllOpeningsУдалите все открытия из списка постоянных открытий в slLinearizer или slTuner интерфейс
refreshРесинхронизируйте slLinearizer или slTuner интерфейс с состоянием текущей модели

Больше о

свернуть все

Аналитические точки

Analysis points, используемый slLinearizer и slTuner интерфейсы, идентифицируйте местоположения в модели, которые важны для линейного анализа и настройки системы управления. Вы используете аналитические точки в качестве входных параметров к командам линеаризации, такой как getIOTransfer, getLoopTransfer, getSensitivity, и getCompSensitivity. Как входные параметры к командам линеаризации, аналитические точки могут задать любой разомкнутый контур или передаточную функцию с обратной связью в модели. Можно также использовать аналитические точки, чтобы задать конструктивные требования при настройке систем управления с помощью команд такой как systune.

Location относится к определенному выходному порту блока в модели или к элементу шины в таком выходном порту. Для удобства можно использовать имя сигнала, который происходит из этого порта, чтобы относиться к аналитической точке.

Можно добавить, что анализ указывает на slLinearizer или slTuner интерфейсы, когда вы создаете интерфейс. Например:

s = slLinearizer('scdcascade',{'u1','y1'});

В качестве альтернативы можно использовать addPoint команда.

Просмотреть все аналитические точки s, введите s в командной строке, чтобы отобразить интерфейсное содержимое. Для каждой аналитической точки s, отображение включает имя блока и номер порта и имя сигнала, который происходит в этой точке. Можно также программно получить список всего аналитического использования точек getPoints.

Для получения дополнительной информации о том, как можно использовать аналитические точки, смотрите представляющего интерес Марка Сигнэлса для Анализа и проектирования Системы управления и представляющего интерес Марка Сигнэлса для Пакетной Линеаризации.

Постоянные открытия

Permanent openings, используемый slLinearizer и slTuner интерфейсы, идентифицируйте местоположения в модели, где программное обеспечение повреждает поток сигналов. Программное обеспечение осуществляет эти открытия для линеаризации и настройку. Используйте постоянные открытия, чтобы изолировать определенный компонент модели. Предположим, что у вас есть крупномасштабная модель, получая динамику самолета, и вы хотите выполнить линейный анализ корпуса только. Можно использовать постоянные открытия, чтобы исключить все другие компоненты модели. Другой пример - когда вы расположили каскадом циклы в своей модели, и вы хотите анализировать определенный цикл.

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

Можно добавить постоянные открытия в slLinearizer или slTuner интерфейсы, когда вы создаете интерфейс или при помощи addOpening команда. Чтобы удалить местоположение из списка постоянных открытий, используйте removeOpening команда.

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

Пользовательская функция линеаризации

Можно задать линеаризацию замены для блока или подсистемы в модели Simulink с помощью пользовательской функции на пути MATLAB.

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

Поле Описание
BlockNameИмя блока, для которого вы задаете пользовательскую линеаризацию.
ParametersЗначения параметров блоков в виде массива структур с Name и Value поля . Parameters содержит имена и значения параметров, которые вы задаете в blocksub.Value.ParameterNames и blocksub.Value.ParameterValues поля .
Inputs

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

Поле Описание
BlockNameПолный блок path блока, выход которого соединяется с соответствующим введенным блоком.
PortIndexВыходной порт блока задан BlockName это соединяется с соответствующим входом блока.
ValuesЗначение сигнала задано BlockName и PortIndex. Если этот сигнал является векторным сигналом, то Values вектор с той же размерностью.
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];
Введенный в R2013b