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

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

Для получения дополнительной информации о моделях обрезки партий для вариаций параметров смотрите Batch Compute Statady-Status Рабочие Точки for Parameter Variation.

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

sys = 'watertank';
open_system(sys)

Варьируйте параметры A и b в пределах 10% от их номинальных значений. Задайте три значения для 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;

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

opspec = operspec(sys);

Обрезайте модель с помощью заданной спецификации рабочей точки, сетки параметров и набора опций. Подавить отображение отчета о поиске рабочей точки.

opt = findopOptions('DisplayReport','off');
[op,opreport] = findop(sys,opspec,params,opt);

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

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

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

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

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

G = linearize(sys,op,io,params);

G представляет собой массив 3х4 линеаризированных моделей. Каждая запись в массиве содержит линеаризацию для соответствующей комбинации параметров в params. Для примера, G(:,:,2,3) соответствует линеаризации, полученной путем установки значений A и b параметры к A_grid(2,3) и b_grid(2,3), соответственно. Набор значений параметров, соответствующих каждой записи в массиве моделей G хранится в SamplingGrid свойство G. Для примера исследуйте соответствующие значения параметров для линеаризации G(:,:,2,3):

G(:,:,2,3).SamplingGrid
ans = 

  struct with fields:

    A: 20
    b: 5.1667

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

opt = linearizeOptions('StoreOffsets',true);

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

[G,~,info] = linearize('watertank',io,params,opt);

Затем можно использовать смещения, чтобы сконфигурировать системный блок LPV. Для этого сначала необходимо преобразовать смещения в необходимый формат. Для получения примера смотрите Приближение LPV модели Boost Converter.

offsets = getOffsetsForLPV(info);

См. также

| | |

Похожие темы