slLinearizer

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

Синтаксис

sllin = slLinearizer(mdl)
sllin = slLinearizer(mdl,pt)
sllin = slLinearizer(mdl,param)
sllin = slLinearizer(mdl,op)
sllin = slLinearizer(mdl,blocksub)
sllin = slLinearizer(mdl,options)
sllin = slLinearizer(mdl,pt,op,param,blocksub,options)

Описание

пример

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) использование любая комбинация входных параметров pt, op, 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 сетка параметра. Каждая точка в этой сетке соответствует комбинации значений параметров Ki2 и Kp2.

Задайте 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 как структуры со следующими полями:

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

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

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

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

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

  • Одна рабочая точка.

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

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

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

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

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

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

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

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

  • Массив удваивается — Задают линеаризацию блока 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' и ваша функция линеаризации блока потребуют входных параметров.

Установлены опции алгоритма линеаризации, заданные как опция linearizeOptions.

Свойства

Свойства объектов slLinearizer включают:

Parameters

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

Установите это свойство с помощью входного параметра param или записи через точку (sllin.Parameters = param). 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 задает настраиваемые параметры только, то пакет программного обеспечения линеаризует модель с помощью одной компиляции. Если вы также конфигурируете sllin.OperatingPoints с объектами рабочей точки только, программное обеспечение использует одну образцовую компиляцию.

OperatingPoints

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

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

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

  • Одна рабочая точка.

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

Больше о

свернуть все

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

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

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

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

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

Также можно использовать команду addPoint.

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

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

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

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

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

Можно добавить постоянные открытия в интерфейс slLinearizer или slTuner, s, когда вы создаете интерфейс или при помощи команды 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