Используя массивы LTI для симуляции многорежимной динамики

В этом примере показано, как создать представление Линейного варьирования параметра (LPV) системы, которая показывает многорежимную динамику.

Введение

Мы часто сталкиваемся с ситуациями, где эластичное тело сталкивается с или нажимает против, возможно эластичная поверхность. Примеры таких ситуаций:

  • Эластичный мяч, возвращающийся на твердой поверхности.

  • Клапан дросселя механизма, который ограничивается близко к не больше, чем$90^o$ использованию трудной пружины.

  • Пассажир, находящийся на автокресле, сделанном из пенополиуретана, вязкоупругого материала.

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

Моделирование динамики возврата

Рисунок 1 показывает модель массового пружинного демпфера системы. Масса 1 свободно подпадает под влияние силы тяжести. Его свойства упругости описаны константой жесткости$k_1$ и коэффициентом демпфирования$c_1$. Когда эта масса поражает фиксированную поверхность, удар заставляет Массу 1 и Массу 2 перемещаться вниз вместе. После определенного "времени местонахождения", в течение которого Масса 1 деформируется и восстанавливается, она теряет контакт с Массой 2 полностью, чтобы следовать за движением снаряда. Полные движущие силы таким образом повреждаются в два отличных режима - когда массы не находятся в контакте и когда они перемещаются совместно.

Рисунок 1: Эластичное тело, возвращающееся на фиксированной эластичной поверхности.

Нерасширенная продолжительность (без загрузок) пружины, присоединенной к Массе 1$a_1$, в то время как та из Массы 2$a_2$. Переменные$y_1(t)$ и$y_2(t)$ обозначают положения этих двух масс. Когда массы не находятся в контакте ("Режим 1"), их движениями управляют следующие уравнения:

$$\ddot{y}_1 = -g$$

$$m_2\ddot{y}_2 + c_2\dot{y}_2 + k_2(y_2-a_2) = -m_2g$$

с начальными условиями$y_1(0) = h_1$$\dot{y}_1(0) = 0$$y_2(0) = h_2$$\dot{y}_2(0) = 0$.$h_1$ высота, из которой первоначально исключена Масса 1.$h_2 = a_2$ начальное местоположение Массы 2, который соответствует нерасширенному состоянию ее пружины.

Когда Масса 1 сенсорная Масса 2 ("Режим 2"), их смещения и скорости связана. Управляющие уравнения в этом режиме:

$$m_1\ddot{y}_1 + c_1(\dot{y}_1 - \dot{y}_2) + k_1(y_1-y_2-a_1) = -m_1g$$

$$m_2\ddot{y}_2 + c_2\dot{y}_2 + k_2(y_2-a_2) - c_1(\dot{y}_1 - \dot{y}_2) - k_1(y_1-y_2-a_1) = -m_2g$$

с$y_1(t_c) = y_2(t_c)$, где$t_c$ время в который Масса 1 первая сенсорная Масса 2.

Представление LPV

Управляющие уравнения линейны и независимы от времени. Однако существует два отличных поведенческих режима, соответствующие различным уравнениям движения. Обоими режимами управляют наборы уравнений второго порядка. Если мы выбираем положения и скорости масс как переменные состояния, мы можем представлять каждый режим 4-м уравнением пространства состояний порядка.

В представлении пространства состояний становится возможно обработать эти два режима как единую систему, коэффициенты которой изменяются в зависимости от определенного условия, которое определяет, какой режим активен. Условие, конечно, перемещаются ли эти две массы свободно или совместно. Такое представление, где коэффициенты линейной системы параметрируются внешним, но измеримым параметром, называется моделью Linear Parameter Varying (LPV). Общее представление модели LPV посредством массива линейных моделей в пространстве состояний и набора планирования параметров, которые диктуют правила для выбора правильной модели при данном условии. Массив линейных моделей должен все быть задан с помощью тех же переменных состояния.

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

Задайте значения масс и их коэффициентов упругости.

m1 = 7;     % first mass (g)
k1 = 100;   % spring constant for first mass (g/s^2)
c1 = 2;     % damping coefficient associated with first mass (g/s)

m2 = 20;    % second mass (g)
k2 = 300;   % spring constant for second mass (g/s^2)
c2 = 5;     % damping coefficient associated with second mass (g/s)

g = 9.81;   % gravitational acceleration (m/s^2)

a1 = 12;    % uncompressed lengths of spring 1 (mm)
a2 = 20;    % uncompressed lengths of spring 2 (mm)

h1 = 100;   % initial height of mass m1 (mm)
h2 = a2;    % initial height of mass m2 (mm)

Первый режим: представление пространства состояний динамики, когда массы не находятся в контакте.

A11 = [0 1; 0 0];
B11 = [0; -g];
C11 = [1 0];
D11 = 0;

A12 = [0 1; -k2/m2, -c2/m2];
B12 = [0; -g+(k2*a2/m2)];
C12 = [1 0];
D12 = 0;

A1 = blkdiag(A11, A12);
B1 = [B11; B12];
C1 = blkdiag(C11, C12);
D1 = [D11; D12];

sys1 = ss(A1,B1,C1,D1);

Второй режим: представление пространства состояний динамики, когда массы находятся в контакте.

A2 = [ 0        1,         0,             0; ...
      -k1/m1,   -c1/m1,    k1/m1,         c1/m1;...
      0,        0,         0,             1; ...
      k1/m2,    c1/m2,     -(k1+k2)/m2,   -(c1+c2)/m2];

B2 = [0; -g+k1*a1/m1; 0; -g+(k2/m2*a2)-(k1/m2*a1)];
C2 = [1 0 0 0; 0 0 1 0];
D2 = [0;0];

sys2 = ss(A2,B2,C2,D2);

Теперь мы складываем эти две модели sys1 и sys2 вместе создать массив пространства состояний.

sys = stack(1,sys1,sys2);

Используйте информацию о том, перемещаются ли массы свободно или совместно для планирования. Давайте вызовем этот параметр "FreeMove", который принимает значение 1, когда массы перемещаются свободно и 0, когда они находятся в контакте и перемещающийся совместно. Информация о параметре планирования включена в объект пространства состояний массивов (sys) при помощи его свойства "SamplingGrid":

sys.SamplingGrid = struct('FreeMove',[1; 0]);

Являются ли массы в контакте, или не решен относительными положениями этих двух масс; когда$y_1-y_2 > a_1$, массы не находятся в контакте.

Симуляция модели LPV в Simulink

Массив пространства состояний sys имеет необходимую информацию, чтобы представлять модель LPV. Мы можем симулировать эту модель в Simulink с помощью блока "LPV System" из библиотеки блоков Control System Toolbox™.

Откройте предварительно сконфигурированную модель Simulink LPVBouncingMass.slx

open_system('LPVBouncingMass')
open_system('LPVBouncingMass/Bouncing Mass Model','mask')

Блок, названный "Возвращаемая Массовая Модель", является блоком LPV System. Его параметры заданы можно следующим образом:

  • Для поля "State-space array" задайте массив модели в пространстве состояний sys это было создано выше.

  • Для поля "Initial state" задайте исходные положения и скорости этих двух масс. Обратите внимание на то, что вектор состояния$[y_1, \dot{y}_1, y_2, \dot{y}_2]$:. задайте его значение как [h1 0 h2 0]'.

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

  • Под вкладкой "Outputs" снимите флажок со всеми флажками для дополнительных выходных портов. Мы будем наблюдать только положения этих двух масс.

Постоянный блок выводит стоимость единицы. Это служит входом к модели и предоставляется от первого входного порта блока LPV. Блок имеет только один выходной порт, который выводит положения этих двух масс как 2 1 вектор.

Второй входной порт блока LPV для определения сигнала планирования. Как обсуждено прежде, этот сигнал представляет параметр планирования "FreeMove" и принимает дискретные значения 0 (массы в контакте) или 1 (массы не в контакте). Значение этого параметра вычисляется в зависимости от выходного сигнала блока. Этот расчет выполняется блоками с голубым цветом фона. Мы берем различие между этими двумя выходными параметрами (после демультиплексирования) и сравниваем результат с нерасширенной продолжительностью пружины, присоединенной к Массе 1. Получившийся булев результат преобразован в сигнал double, который служит значением параметров планирования.

Мы теперь готовы выполнить симуляцию.

open_system('LPVBouncingMass/Scope')
sim('LPVBouncingMass')

Желтая кривая показывает положение Массы 1, в то время как пурпурная кривая показывает положение Массы 2. В начале симуляции Масса 1 подвергается свободному падению, пока это не поражает Массу 2. Столкновение заставляет Массу 2 быть перемещенной, но это отскакивает быстро и возвращает Массу 1 назад. Эти две массы находятся в контакте на время времени где$y_1 - y_2 < a_1$. Когда массы успокаиваются, их значения равновесия определяются статическим урегулированием из-за силы тяжести. Например, абсолютное местоположение Массы 1 $a_1 + a_2 -m1*g/k1 - (m2+m1)*g/k2 = 30.43 mm.$

Заключения

В этом примере показано, как модель Linear Parameter Varying может быть создана при помощи массива моделей в пространстве состояний и подходящих переменных планирования. Пример описывает случай взаимоисключающих режимов, несмотря на то, что аналогичный подход может использоваться в случаях, где поведение динамики в данном значении планирования параметров под влиянием нескольких линейных моделей.

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