exponenta event banner

Аппроксимация нелинейного поведения с использованием массива систем LTI

В этом примере показано, как аппроксимировать нелинейное поведение системы в виде массива взаимосвязанных моделей LTI.

В примере описана линейная аппроксимация динамики оси тангажа планера в диапазоне рабочих условий. Полученный таким образом массив линейных систем используется для создания представления динамики с переменным линейным параметром (LPV). Модель LPV служит аппроксимацией динамики нелинейного шага.

Сведения о моделях изменения линейных параметров (LPV)

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

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

Иллюстрируем этот подход для аппроксимации динамики тангажа планера.

Динамика тангажа планера

Рассмотрим трехстепенную модель динамики оси тангажа планера. Состояния - это координаты Земли, $(X_e,Z_e)$координаты тела, $(u,w)$угол тангажа $\theta$и скорость тангажа. $q = \dot\theta$Фиг.1 суммирует взаимосвязь между инерционной рамой и рамой корпуса, углом траектории полета, $\gamma$углом падения и $\alpha$углом наклона.$\theta$

Рисунок 1: Динамика планера.

Динамика планера нелинейна и аэродинамические силы и моменты зависят от скорости$V$ и падения. $\alpha$Модель scdairframeTRIM описывает эту динамику.

open_system('scdairframeTRIM')

Линеаризация партии через конверт рейса

Используйте скорость$V$ и угол падения$\alpha$ в качестве параметров планирования; то есть обрезать модель планера по сетке значений$\alpha$ и$V$. Обратите внимание, что это два из пяти выходов scdairframeTRIM модель.

Предположим, что частота падения$\alpha$ колеблется от -20 до 20 градусов и скорость$V$ колеблется от 700 до 1400 м/с. Используйте сетку 15 на 12 из линейно разнесенных$(\alpha, V)$ пар для планирования:

nA = 15;   % number of alpha values
nV = 12;   % number of V values
alphaRange = linspace(-20,20,nA)*pi/180;
VRange = linspace(700,1400,nV);
[alpha,V] = ndgrid(alphaRange, VRange);

Для каждого условия полета $(\alpha, V)$провести линеаризацию динамики планера при тримме (нулевом нормальном разгоне и креновом моменте). Это требует вычисления отклонения подъемника$\delta$ и скорости наклона$q$, которые приводят к устойчивому и$w$.$q$

Использовать operspec чтобы задать условие обрезки, используйте findop для вычисления значений обрезки$\delta$ и $q$и линеаризации динамики планера для результирующей рабочей точки. Дополнительные сведения см. в примере «Обрезка и линеаризация корпуса самолета».

Координаты тела,, $(u,w)$являются известными состояниями для обрезки. Поэтому для них необходимо указать соответствующие значения, которые можно указать явно. Однако в этом примере пусть модель извлекает эти известные значения на основе каждой$(\alpha, V)$ пары. Для каждого условия полета $(\alpha, V)$обновите значения в модели и создайте спецификацию рабочей точки. Повторите эти шаги для всех 180 условий полета.

clear op report
for ct = 1:nA*nV
   alpha_ini = alpha(ct);      % Incidence [rad]
   v_ini = V(ct);              % Speed [m/s]

   % Specify trim condition
   opspec(ct) = operspec('scdairframeTRIM');

   % Xe,Ze: known, not steady.
   opspec(ct).States(1).Known = [1;1];
   opspec(ct).States(1).SteadyState = [0;0];

   % u,w: known, w steady
   opspec(ct).States(3).Known = [1 1];
   opspec(ct).States(3).SteadyState = [0 1];

   % theta: known, not steady
   opspec(ct).States(2).Known = 1;
   opspec(ct).States(2).SteadyState = 0;

   % q: unknown, steady
   opspec(ct).States(4).Known = 0;
   opspec(ct).States(4).SteadyState = 1;

end
opspec = reshape(opspec, [nA nV]);

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

Options = findopOptions('DisplayReport','off', ...
	'OptimizerType','lsqnonlin');
Options.OptimizationOptions.Algorithm = 'trust-region-reflective';
[op, report] = findop('scdairframeTRIM',opspec,Options);

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

Укажите входы и выходы линеаризации.

io = [linio('scdairframeTRIM/delta',1,'in');...        % delta
   linio('scdairframeTRIM/Airframe Model',1,'out');... % alpha
   linio('scdairframeTRIM/Airframe Model',2,'out');... % V
   linio('scdairframeTRIM/Airframe Model',3,'out');... % q
   linio('scdairframeTRIM/Airframe Model',4,'out');... % az
   linio('scdairframeTRIM/Airframe Model',5,'out')];   % gamma

Пакетная линеаризация модели в условиях обрезки. Сохранить информацию о смещении линеаризации в info структура.

[G,~,info] = linearize('scdairframeTRIM',op,io, ...
	linearizeOptions('StoreOffsets',true));
G = reshape(G,[nA nV]);
G.u = 'delta';
G.y = {'alpha','V','q','az','gamma'};
G.SamplingGrid = struct('alpha',alpha,'V',V);

G представляет собой массив линеаризованных моделей установок 15 на 12 при 180 условиях полета. $(\alpha, V)$Динамика установки существенно варьируется в пределах полета, включая места планирования, где локальная динамика нестабильна.

bodemag(G(3:5,:,:,:))
title('Variations in airframe dynamics')

Системный блок LPV

Блок системы LPV в библиотеке блоков Toolbox™ системы управления облегчает моделирование систем изменения линейных параметров. Первичными данными, требуемыми блоком, является системный массив state-space G который был создан путем линеаризации партии. Мы дополняем это информацией о смещениях входных/выходных данных, состояний и производных состояний из info структура.

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

offsets = getOffsetsForLPV(info);
xOffset = offsets.x;
yOffset = offsets.y;
uOffset = offsets.u;
dxOffset = offsets.dx;

Моделирование модели LPV

Откройте систему scdairframeLPV, который содержит системный блок LPV, сконфигурированный на основе линейного системного массива G и различные смещения.

open_system('scdairframeLPV')

Входной сигнал был подготовлен на основе желаемой траектории корпуса самолета. Этот сигнал u и соответствующий вектор времени t сохраняются в scdairframeLPVsimdata.mat файл. Укажите исходные условия для моделирования.

alpha_ini = 0;
v_ini = 700;
x0 = [0; 700; 0; 0];
sim('scdairframeLPV')

Моделирование показывает хорошую эмуляцию реакции планера системой LPV. Мы выбрали очень тонкую сетку пространства планирования, что привело к большому количеству (180) линейных моделей. Большие размеры массива могут увеличить затраты на внедрение. Однако преимущество представлений LPV заключается в том, что мы можем скорректировать сетку планирования (и, следовательно, количество линейных систем в массиве) на основе:

  • Область планирования, охватываемая ожидаемой траекторией

  • Требуемый уровень точности в приложении

Первая информация помогает уменьшить диапазон для переменных планирования. Последнее помогает выбрать оптимальное разрешение (интервал) выборок в пространстве планирования.

Постройте график фактической траектории переменных планирования в предыдущем моделировании на фоне пространства планирования с привязкой к сетке.$(\alpha, V)$ Выходные данные регистрировались через их области (содержащиеся в блоке Compare Responses scdairframeLPV).

Stable = false(nA,nV);
for ct = 1:nA*nV
   Stable(ct ) = isstable(G(:,:,ct));
end
alpha_trajectory = Alpha_V_Data.signals(1).values(:,1);
V_trajectory = Alpha_V_Data.signals(2).values(:,1);

plot(alpha(Stable)*180/pi,V(Stable),'g.',...
   alpha(~Stable)*180/pi,V(~Stable),'k.',...
   alpha_trajectory,V_trajectory,'r.')
title('Trajectory of scheduling variables')
xlabel('\alpha'); ylabel('V')
legend('Stable locations','Unstable locations','Actual trajectory')

Траектория, прослеживаемая при моделировании, показана красным цветом. Обратите внимание, что она пересекает как стабильные, так и нестабильные области пространства планирования. Предположим, что вы хотите реализовать эту модель на целевом оборудовании для профилей ввода, аналогичных тому, которое использовалось для моделирования выше, используя при этом наименьший объем памяти. Моделирование предполагает, что траектория в основном находится в диапазоне скоростей от 890 до 1200 м/с и диапазоне углов падения от -15 до 12 градусов. Кроме того, можно изучить увеличение расстояния между точками выборки. Предположим, что используется только каждый третий образец вдоль$V$ размера и каждый второй образец вдоль$\alpha$ размера. Уменьшенный системный массив, удовлетворяющий этим ограничениям, может быть извлечен из G следующим образом:

I1 = find(alphaRange>=-15*pi/180 & alphaRange<=12*pi/180);
I2 = find(VRange>=890 & VRange<=1200);
I1 = I1(1:2:end);
I2 = I2(1:3:end);

Gr = G(:,:,I1,I2);
size(Gr)
5x2 array of state-space models.
Each model has 5 outputs, 1 inputs, and 4 states.

Новая сетка выборки, Gr, имеет более экономичный размер 5 на 2. Моделирование уменьшенной модели и проверка ее точности при воспроизведении исходного поведения.

Изменить каталог на каталог с возможностью записи, так как модель потребуется перекомпилировать

cwd = pwd;
cd(tempdir)
lpvblk = 'scdairframeLPV/LPV System';
set_param(lpvblk,...
   'sys','Gr',...
   'uOffset','uOffset(:,:,I1,I2)',...
   'yOffset','yOffset(:,:,I1,I2)',...
   'xOffset','xOffset(:,:,I1,I2)',...
   'dxOffset','dxOffset(:,:,I1,I2)')
sim('scdairframeLPV')
cd(cwd)

Не существует значительного снижения перекрытия между ответом исходной модели и ее прокси LPV.

Модель LPV может служить прокси для исходной системы в ситуациях, когда требуется более быстрое моделирование. Линейные системы, используемые моделью LPV, также могут быть получены методами идентификации системы (с дополнительной тщательностью, необходимой для поддержания согласованности состояний в массиве). Модель LPV может обеспечить хороший суррогат для инициализации задач оптимизации конструкции simulink и выполнения быстрого аппаратного моделирования в цикле.

См. также

|

Связанные темы