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

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

    • Блокируйте путь и порт, инициирующие сигнал, например 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 в области значений:

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

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

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

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

  • Объект рабочей точки, созданный с помощью findop с одной спецификацией рабочей точки или с одним временем моментального снимка.

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

    Чтобы создать массив объектов рабочих точек, можно:

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

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

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

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

  • Несколько моментальных снимков. При пакетной линеаризации mdlпрограммное обеспечение моделирует модель для каждой комбинации моментального снимка и параметра grid point. Эта операция может быть дорогостоящей в вычислительном отношении.

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

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

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

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

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

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

  • Double - Задайте линеаризацию блока SISO как коэффициент усиления.

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

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

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

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

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

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

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

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

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

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

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

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

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

    Type

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

    • 'Expression'

    • 'Function'

    ParameterNames

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

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

    ParameterValues

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

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

Свойства

Parameters

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

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

OperatingPoints

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

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

  • Объект рабочей точки, созданный с помощью findop с одной спецификацией рабочей точки или с одним временем моментального снимка.

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

    Чтобы создать массив объектов рабочих точек, можно:

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

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

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

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

  • Несколько моментальных снимков. При пакетной линеаризации mdlпрограммное обеспечение моделирует модель для каждой комбинации моментального снимка и параметра grid point. Эта операция может быть дорогостоящей в вычислительном отношении.

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, при создании интерфейса. Для примера:

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