Система LPV

Моделируйте системы Линейного варьирования параметра (LPV)

Описание

Представляйте и моделируйте системы Линейного варьирования параметра (LPV) в Simulink®. Блок также поддерживает генерацию кода.

linear parameter-varying (LPV), система является линейной моделью в пространстве состояний, движущие силы которой отличаются как функция определенных изменяющихся во времени параметров под названием scheduling parameters. В MATLAB® модель LPV представлена в форме пространства состояний с помощью коэффициентов, которые являются зависимым параметра.

Математически, система LPV представлена как:

dx(t)=A(p)x(t)+B(p)u(t)y(t)=C(p)x(t)+D(p)u(t)x(0)=x0(1)

где

  • u(t) является входными параметрами

  • y(t) выходные параметры

  • x(t) является образцовыми состояниями с начальным значением x0

  • dx(t) производный вектор состояния x˙ для непрерывно-разовых систем и вектора обновления состояния x(t+ΔT) для систем дискретного времени. ΔT является шагом расчета.

  • A(p), B(p), C(p) и D(p) являются матрицами пространства состояний, параметризованными вектором параметра планирования p.

  • Параметры p = p(t) являются измеримыми функциями входных параметров и состояниями модели. Они могут быть скаляром или вектором нескольких параметров. Набор планирования параметров задает пробел планирования, по которому задана модель LPV.

Блок реализует основанное на сетке представление системы LPV. Вы выбираете сетку значений для параметров планирования. В каждом значении p = p* вы задаете соответствующую линейную систему как пространство состояний (ss или idss) объект модели. Вы используете сгенерированный массив моделей в пространстве состояний, чтобы сконфигурировать блок LPV System.

Блок принимает массив моделей в пространстве состояний с информацией о рабочей точке. Информация о переменных планирования извлечена из свойства SamplingGrid массива LTI. Переменные планирования задают сетку моделей LPV. Они - количества со скалярным знаком, которые могут быть функциями времени, входных параметров и состояний или констант. Они используются, чтобы выбрать локальную динамику на операционном пробеле. Программное обеспечение интерполирует значения этих переменных. Блок использует этот массив с методами интерполяции и экстраполяции данных для симуляции.

Системное представление LPV может быть расширено, чтобы позволить смещения в dx, x, переменных u и y. Эта форма известна как affine form модели LPV. Математически, следующее представляет систему LPV:

dx(t)=A(p)x(t)+B(p)u(t)+(dx¯(p)A(p)x¯(p)B(p)u¯(p))y(t)=C(p)x(t)+D(p)u(t)+(y¯(p)C(p)x¯(p)D(p)u¯(p))x(0)=x0(2)

dx¯(p),  x¯(p),  u¯(p),  y¯(p) смещения в значениях dx(t), x(t), u(t) и y(t) в данном значении параметров p = p(t).

Чтобы получить такие представления массива линейной системы, линеаризуйте модель Simulink по пакету рабочих точек (см. Пакетную Линеаризацию (Simulink Control Design).) Смещения соответствуют рабочим точкам, в которых вы линеаризовали модель.

Можно получить смещения путем возврата дополнительной информации о линеаризации при вызывании функций, таких как linearize или getIOTransfer. Можно затем извлечь смещения с помощью getOffsetsForLPV. Для примера см. Приближение LPV Модели Конвертера Повышения (Simulink Control Design).

Следующие ограничения применяются к блоку LPV System:

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

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

Поддержка типов данных

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

Параметры

Диалоговое окно LPV System Block Parameter содержит пять вкладок для определения системных данных, алгоритма планирования и выходных портов. Следующая таблица обобщает параметры блоков.

ЗадачаПараметры
Задайте массив моделей в пространстве состояний и начальных состояний

Во вкладке LPV Model:

Задайте смещения рабочей точки

Во вкладке LPV Model:

Задайте смещения в производной состояния или обновите переменную

Во вкладке LPV Model:

Задайте, какие образцовые матрицы фиксируются и их номинальная стоимость, чтобы заменить записи в данных модели.
В некоторых ситуациях можно хотеть заменить зависимую параметром матрицу, такую как A(p) с фиксированным значением A* для симуляции. Например, A* может представлять среднее значение в области значений планирования.

Во вкладке Fixed Entries:

Задайте опции для интерполяции и экстраполяции

Во вкладке Scheduling:

Задайте дополнительные выходные параметры для блока

Во вкладке Outputs:

Задайте настройки генерации кода

Во вкладке Code Generation:

Массив пространства состояний

Массив пространства состояний (ss или idss) модели. Все модели в массиве должны использовать то же определение состояний. Используйте свойство SamplingGrid объекта пространства состояний задать параметры планирования для модели. Смотрите ss или страницу модели - ссылки idss для получения дополнительной информации о свойстве SamplingGrid.

Когда блок находится в модели с синхронным государственным контролем (см. блок State Control), необходимо задать массив моделей дискретного времени.

Начальное состояние

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

  • 0 (Значение по умолчанию)

  • Двойной вектор длины равняется количеству образцовых состояний

Введите смещение

Смещения во входе u(t), заданном как одно из следующего:

  • 0 (Значение по умолчанию) — Использование, когда нет никаких входных смещений (u¯(p)=0  p).

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

  • Двойной массив размера [nu 1 sysArraySize] — Использование, когда смещения присутствуют и они отличаются через пробел планирования. Здесь, nu = количество входных параметров, sysArraySize = размер массивов массива пространства состояний. Используйте size, чтобы определить размер массивов.

Можно получить смещения во время линеаризации и преобразовать их в формат, поддержанный блоком LPV System. Для получения дополнительной информации смотрите, что Аппроксимирующее Нелинейное Поведение Использует Массив Систем LTI (Simulink Control Design) и getOffsetsForLPV.

Выведите смещение

Смещения в выводе y(t), заданном как одно из следующего:

  • 0 (Значение по умолчанию) — Использование, когда нет никаких выходных смещений y¯(p)=0  p.

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

  • Двойной массив размера [ny 1 sysArraySize]. Используйте, когда смещения присутствуют, и они отличаются через пробел планирования. Здесь, ny = количество выходных параметров, sysArraySize = размер массивов массива пространства состояний. Используйте size, чтобы определить размер массивов.

Можно получить смещения во время линеаризации и преобразовать их в формат, поддержанный блоком LPV System. Для получения дополнительной информации смотрите, что Аппроксимирующее Нелинейное Поведение Использует Массив Систем LTI (Simulink Control Design) и getOffsetsForLPV.

Смещение состояния

Смещения в состояниях x(t), заданный как одно из следующего:

  • 0 (Значение по умолчанию) — Использование, когда нет никаких смещений состояния x¯(p)=0  p.

  • Двойной вектор длины равняется количеству состояний. Используйте, когда смещения состояния будут тем же самым через пробел планирования.

  • Двойной массив размера [nx 1 sysArraySize], где nx = количество состояний, sysArraySize = размер массивов массива пространства состояний. Используйте, когда смещения присутствуют, и они отличаются через пробел планирования. Здесь, nx = количество состояний, sysArraySize = размер массивов массива пространства состояний. Используйте size, чтобы определить размер массивов.

Можно получить смещения во время линеаризации и преобразовать их в формат, поддержанный блоком LPV System. Для получения дополнительной информации смотрите, что Аппроксимирующее Нелинейное Поведение Использует Массив Систем LTI (Simulink Control Design) и getOffsetsForLPV.

Производная/обновление состояния смещается

Смещения в производной состояния или переменной dx(t) обновления, заданной как одно из следующего:

  • Если вы получили массив линейной системы линеаризацией под условиями равновесия, выберите опцию Assume equilibrium conditions. Эта опция соответствует смещению dx¯(p)=0 для непрерывно-разовой системы и dx¯(p)=x¯(p) для системы дискретного времени. Эта опция выбрана по умолчанию.

  • Если линейная система содержит по крайней мере одну систему, которую вы получили при неравновесных условиях, очистите опцию Assume equilibrium conditions. Задайте одно из следующего в поле Offset value:

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

    • Если смещения dx присутствуют, и они отличаются через пробел планирования, задают как двойной массив размера [nx 1 sysArraySize], где nx = количество состояний и sysArraySize = размер массивов массива пространства состояний.

Можно получить смещения во время линеаризации и преобразовать их в формат, поддержанный блоком LPV System. Для получения дополнительной информации смотрите, что Аппроксимирующее Нелинейное Поведение Использует Массив Систем LTI (Simulink Control Design) и getOffsetsForLPV.

Номинальная модель

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

  • Use the first model in state-space array (Значение по умолчанию:) — первая модель в массиве пространства состояний используется, чтобы представлять модель LPV. В следующем примере массив пространства состояний задан объектом sys, и фиксированные коэффициенты взяты из модели sys(:,:,1).

    % Specify a 4-by-5 array of state-space models.
    sys = rss(4,2,3,4,5);
    a = 1:4; 
    b = 10:10:50;
    [av,bv] = ndgrid(a,b);
    % Use "alpha" and "beta" variables as scheduling parameters.
    sys.SamplingGrid = struct('alpha',av,'beta',bv);  

    Фиксированные коэффициенты взяты из модели sysFixed = sys(:,:,1), которая соответствует [alpha=1, beta=10]. Если (2,1) запись матрицы A обеспечена, чтобы быть зафиксированной, ее значением, используемым во время симуляции, является sysFixed.A(2,1).

  • Custom value — Задайте различную модель в пространстве состояний для фиксированных записей. Задайте переменную для фиксированной модели в поле State space model. Фиксированная модель должна использовать то же основание состояния в качестве массива пространства состояний в модели LPV.

Фиксированные содействующие индексы

Задайте, какие коэффициенты матриц пространства состояний и векторов задержки фиксируются.

Задайте одно из следующего:

  • Скалярная булевская переменная (true или false), если все записи матрицы должны быть обработаны тот же путь.

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

  • Логическая матрица размера, совместимого с размером соответствующей матрицы:

    Матрица пространства состояний

    Размер фиксированной матрицы записи

    A matrix

    nx-by-nx

    B matrix

    nx-by-nu

    C matrix

    ny-by-nx

    D matrix

    ny-by-nu

    Input delay

    nu-by-1

    Output delay

    ny-by-1

    Internal delay

    ni-by-1

    где, nu = количество входных параметров, ny = количество выходных параметров, nx = количество состояний, ni = длина внутреннего вектора задержки.

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

Метод интерполяции

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

Задайте одну из следующих опций:

  • Flat — Выберите данные пространства состояний в самом близком узле решетки, но не более крупные, чем, текущая точка. Текущая точка является значением параметров планирования в текущее время.

  • Самый близкий Выберите данные пространства состояний в самом близком узле решетки на пробеле планирования.

  • Linear — Получите данные пространства состояний линейной интерполяцией самых близких 2-х соседей на пробеле планирования, где d = количество планирования параметров.

Схемой интерполяции по умолчанию является Linear для обычных сеток планирования значений параметров. Для неправильных сеток схема интерполяции Nearest всегда используется независимо от сделанного выбора. чтобы узнать больше об обычных и неправильных сетках, смотрите Регулярный по сравнению с Неправильными Сетками.

Метод Linear обеспечивает самую высокую точность, но занимает больше времени, чтобы вычислить. Flat и методы Nearest хороши для моделей, которые имеют динамику переключения режимов.

ExtrapolationMethod

ExtrapolationMethod . Задает, как вычислить данные пространства состояний для планирования значений параметров, которые выходят за пределы области значений, в которой массив пространства состояний был обеспечен (как задано в свойстве SamplingGrid).

Задайте одну из следующих опций:

  • Clip (Значение по умолчанию:) — Отключает экстраполяцию и возвращает данные, соответствующие последнему доступному узлу решетки планирования, который является самым близким к текущей точке.

  • Linear — Соответствует строке между первой или последней парой значений для каждого параметра планирования, в зависимости от того, является ли текущее значение меньше, чем первое или большим, чем последнее значение узла решетки, соответственно. Этот метод возвращает точку на той строке, соответствующей текущему значению. Линейная экстраполяция требует, чтобы схема интерполяции была линейна также.

Метод поиска по индексу

Местоположение текущих значений параметров планирования на пробеле планирования определяется алгоритмом перед поиском. Выберите Linear search или Binary search. Каждый метод поиска имеет преимущества скорости в различных ситуациях. Для получения дополнительной информации об этом параметре смотрите страницу с описанием блока Prelookup.

Начните поиск по индексу с помощью предыдущего индексного результата

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

Состояния вывода

Добавьте порт x в блок к значениям состояния вывода. Эта опция выбрана по умолчанию.

(Непрерывно-разовые) производные состояния вывода или обновления (дискретное время)

Добавьте порт dx в блок к значениям производной состояния вывода или обновите значения. Эта опция выбрана по умолчанию.

Выведите интерполированные данные пространства состояний

Добавьте порт ss в блок, чтобы вывести данные пространства состояний как структуру. Эта опция выбрана по умолчанию.

Поля сгенерированной структуры:

  • Матрицы пространства состояний A, B, C, D.

  • Задержки InputDelay, OutputDelay и InternalDelay. Поле InternalDelay доступно только, когда модель имеет внутреннюю задержку.

Выведите интерполированные смещения

Добавьте порт offset в блок к смещениям модели вывода LPV (u¯(p), y¯(p), x¯(p),dx¯(p)).

Поля структуры:

  • InputOffset, OutputOffset, StateOffset и StateDerivativeOffset в непрерывно-разовом.

  • InputOffset, OutputOffset, StateOffset и StateUpdateOffset в дискретное время.

Блокируйте тип данных (только случай дискретного времени)

Поддерживаемый тип данных. Используйте эту опцию только для моделей в пространстве состояний дискретного времени. Задайте double или single.

Размер начального буфера для задержек

Начальное выделение памяти для количества точек ввода, чтобы сохранить для моделей, которые содержат задержки. Если количество точек ввода превышает размер начального буфера, блок выделяет дополнительную память. Размер по умолчанию 1024.

Когда вы запускаете модель в Режиме Accelerator или создаете модель, убедитесь, что размер начального буфера является достаточно большим, чтобы обработать максимальную ожидаемую задержку модели.

Используйте зафиксированный buffer size

Задайте, использовать ли фиксированный buffer size, чтобы избавить задержанные входные и выходные данные от предыдущих временных шагов. Используйте эту опцию для непрерывно-разовых систем LPV, которые содержат задержки ввода или вывода. Если буфер полон, новые данные уже заменяют данные в буфере. Программное обеспечение использует линейную экстраполяцию, чтобы оценить выходные значения, которые не находятся в буфере.

Примеры

Сконфигурируйте входной порт параметра планирования

Рассмотрите модель LPV с 4 состояниями, с 3 выводами, с 2 входами. Используйте вход u(2) и утвердите x(1) как планирование параметров. Сконфигурируйте модель Simulink как показано в следующей фигуре.

Моделируйте линейную отличающуюся по параметру систему

Рассмотрите линейную систему массового пружинного демпфера, масса которой изменяется как функция внешней команды загрузки. Управляющее уравнение:

m(u)y¨+cy˙+k(y)y=F(t)

где m(u) является массой, зависящей от внешней команды u, c является отношением затухания, k является жесткостью пружины, и F(t) является входом принуждения. y(t) является положением массы в установленный срок t. Для фиксированного значения u система линейна и выражается как:

A=[01kmcm],  B=[01m],  C=[10]x˙=Ax+Bu,  y=Cx

где x=[yy˙] вектор состояния, и m является значением массы для данного значения u.

В этом примере вы хотите изучить поведение модели в области значений входных значений от 1 до 10 вольт. Для каждого значения u измерьте массу и вычислите линейное представление системы. Предположим, масса связана с входом отношением: m(u)=10u+0.1u2. Поскольку значения u в пределах от 1:10 приводят к следующему массиву линейных систем.

% Specify damping coefficient.
c = 5;   
% Specify stiffness.
k = 300; 
% Specify load command.
u = 1:10;
% Specify mass.
m = 10*u + 0.1*u.^2;
% Compute linear system at a given mass value.
for i = 1:length(u)
   A = [0 1; -k/m(i), -c/m(i)];
   B = [0; -1/m(i)];
   C = [1 0];
   sys(:,:,i) = ss(A,B,C,0); 
end

Переменная u является входом планирования. Добавьте эту информацию в модель.

sys.SamplingGrid = struct('LoadCommand',u);

Сконфигурируйте блок LPV System:

  • Введите sys в поле State-space array.

  • Соедините входной порт par с одномерным исходным сигналом, который генерирует значения команды загрузки. Если источник обеспечивает значения между 1 и 10, интерполяция используется, чтобы вычислить линейную модель в установленный срок экземпляр. В противном случае экстраполяция используется.

Извлеките смещения LPV от результатов линеаризации

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

model = 'watertank';
open_system(model)

Задайте линеаризацию I/Os.

io(1) = linio('watertank/Desired  Water Level',1,'input');
io(2) = linio('watertank/Water-Tank System',1,'output');

Отличайтесь параметры объекта A и b, и создайте сетку параметра 3 на 4.

[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;

Создайте набор опции линеаризации, установив опцию StoreOffsets на true.

opt = linearizeOptions('StoreOffsets',true);

Линеаризуйте модель с помощью заданной сетки параметра и возвратите смещения линеаризации в структуре info.

[sys,op,info] = linearize('watertank',io,params,opt);

Извлеките смещения линеаризации.

offsets = getOffsetsForLPV(info)
offsets = 

  struct with fields:

     x: [2x1x3x4 double]
     y: [1x1x3x4 double]
     u: [1x1x3x4 double]
    dx: [2x1x3x4 double]

Чтобы сконфигурировать блок LPV System, используйте поля от offsets непосредственно.

Порты

Имя порта

Тип порта

(В/)

Описание
u \in

Входной сигнал u (t) в уравнении 2 описанных ранее. В мультивходном случае этот порт принимает сигнал размерности входа.

паритет\in

Обеспечивает сигналы для переменных, задающих пробел планирования (“выбирающий сетку” переменные). Переменные планирования могут быть функциями времени, входных параметров и состояний или констант. Необходимая зависимость может быть достигнута путем подготовки сигнала планирования, использующего вход часов (в течение времени), входной сигнал (u) и выходные сигналы (x, dx/dt, y) блока LPV, как требуется.

y

Образцовый вывод

x

Значения образцовых состояний

xdot

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

ss

Локальная модель в пространстве состояний на главных шагах времени симуляции

смещениеСмещения модели LPV

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Введенный в R2014b

Для просмотра документации необходимо авторизоваться на сайте