Модель движения маятника с точкой подвеса на колесе

Построение в среде динамического моделирования SimInTech модели движения маятника с подвижной точкой подвеса, закрепленной на колесе.
Рассмотрим движение физического маятника с точкой подвеса шарнирно закрепленной в центре колеса (точка С). Колесо может катиться без проскальзывания по прямой линии на горизонтальной плоскости.
Эта механическая система имеет две степени свободы: её положение определяется углом поворота колеса \(\varphi\) и углом отклонения маятника от вертикали – \(\beta\). Координата центра масс колеса относительно неподвижной системы координат Oxy, расположенной на плоскости, будет определяться произведением радиуса колеса \(r\) на угол его поворота \(\varphi\) с противоположным знаком (рисунок 1).
Рисунок 1 - Схема механизма
Движение механизма описывается следующей системой дифференциальных уравнений второго порядка: \[\left\{ \begin{aligned} & \dot \omega a_{11} + \ddot \beta a_{12} \cos \beta = a_{12} \dot{\beta}^2 \sin \beta - L \\ & \dot \omega a_{12} \cos \beta + \ddot{\beta} a_{22} = L + m g b \sin \beta \\ \end{aligned} \right.\]
где \(a_{11} = m_1 r^2+J_1\), \(a_{12} = m_2 r l\), \(a_{22} = J_2\), \(m_1\,J_1\) – масса и момент инерции колеса относительно его центра C, \(r\) – радиус колеса, \(m_2,\,J_2\) – масса и момент инерции маятника относительно точки закрепления С, \(L\) – момент привода, который стремится повернуть маятник против часовой стрелки, а колесо в противоположном направлении.
Уравнения движения маятника приведены в монографии: Формальский А. М. Управление движением неустойчивых объектов. М.: Физматлит, 2012.
Модель SimInTech
Параметры модели (глобальные переменные)
Создадим новый проект “Файл”→”Новый проект”→”Схема модели общего вида”.
Параметры (константы) механической системы зададим в скрипте проекта. Для открытия скрипта проекта необходимо нажать на кнопку “Скрипт” на панели инструментов окна проекта (рисунок 2).
Рисунок 2 - Панель инструментов проекта
В редакторе кода (скрипта проекта) создадим секцию инициализации и определим значения параметров механической системы. Секция инициализации выполнятся один раз при запуске проекта:
initialization
// Радиус колеса
r = 0.25;
// Длина стержня
l = 1.0;
// Масса колеса
m1 = 10;
// Масса груза
m2 = 5;
// Момент инерции колеса
J1 = 0.5*m1*r^2;
// Момент инерции груза относительно оси вращения
J2 = m2*l^2;
// Ускорение силы тяжести
g = 9.81;
// Начальный угол поворота
beta0 = 0.7;
end;
Модель механизма
Модель механизма построим при помощи блока “Язык программирования” из библиотеки “Динамические”. После помещения блока на схему проекта необходимо дважды начать левую кнопку мыши, чтобы открылся редактор кода блока. В блоке при помощи директивы input объявлены входные переменные: угол поворота маятника от вертикали (beta), угловая скорость вращения маятника (dbeta), угол поворота колеса (phi), угловая скорость колеса (w) и момент привода (Torque). Выходные переменные блока (output) – это угловое ускорением маятника (d2beta) и угловое ускорение колеса (dw):
input beta, dbeta, phi, w, Torque;
output d2beta,dw;
В блоке формируется матрица коэффициентов при старших производных системы дифференциальных уравнений движения механизма (матрица масс), матрица правых частей, производится решение системы линейный уравнений относительной старших производных при помощи функции lsolve:
// Коэффициенты матрицы масс
a11 = m1*(r*r+rho*rho)+m2*r*r;
a12 = m2*r*l;
a21 = a12;
a22 = m2*r*r;
// Коэффициенты столбца правой части
b1 = -Torque+a12*sin(beta)*dbeta^2;
b2 = +Torque+m2*g*l*sin(beta);
// Матрица масс
A = [[a12*cos(beta),a11],[a22,a12*cos(beta)]];
// Матрица правой части
B = [b1,b2];
// Ускорения
da = lsolve(A,B);
// Ускорения записываем в переменные, объявленные в секции output
d2beta = da[1];
dw = da[2];
Таким образом, при помощи блока “Язык программирования” построена функция, описывающая правую часть системы дифференциальных уравнений движения механизма в форме Коши: на вход блока подаются углы и угловые скорости, на выходе формируются угловые ускорения колеса и маятника:
Рисунок 3 - Функция правых частей системы дифференциальных уравнений механизма
Интегрирование
Сигналы с выходов блока “Язык программирования” подадим на блоки-интеграторы, на выходах которых в результате интегрирования формируются угловая скорость, угол поворота маятника, угловая скорость и угол поворота колеса.
Рисунок 4 - Интегрирование сигналов с выходов блока “Язык программирования”
Сигналы с выходов интеграторов записываются в память (блоки “В память” библиотеки “Субструктуры”) для того чтобы не загромождать схему системы пересекающимися соединительными линиями. Блок “В память” предназначен для соединения одной части схемы с другой, находящейся в произвольном месте проекта. Установка блока на линию связи соответствует установке именованной метки на блок-схеме. После чего, помеченный сигнал может быть использован в произвольном месте проекта с помощью блока “Из памяти”.
В свойствах второго интегратора на выходе d2beta зададим начальный угол поворота маятника beta0, объявленный в скрипте инициализации проекта (рисунок 5).
Рисунок 5 - Начальные условия интегрирования (свойства блока-интегратора)
В параметрах остальных блоков-интеграторов в качестве начальных условий указаны нули (это значения “по-умолчанию”), т.е. в начальный момент времени маятник отклонён на угол beta0, при этом угол поворота колеса, его угловая скорость и угловая скорость самого мятника равны нулю .
Схема модели свободного движения маятника при нулевом внешнем моменте имеет показана на рисунке 6. На вход “torque” модели дифференциальных уравнений подан постоянный нулевой сигнал.
Рисунок 6 - Модель механизма
Сигналы проекта
Создание сигналов
При помощи редактора сигналов проекта (Главное меню → Сервис → Сигналы) создадим четыре глобальные переменные, в которые будем записывать кинематические параметры маятника: углы поворота и угловые скорости колеса и маятника. Эти сигналы нам понадобятся для построения графиков кинематических параметров механизма и для визуализации его движения.
Под сигналами в SimInTech понимаются глобальные параметры проекта или группы проектов, которые создаются тремя способами: при помощи таблицы сигналов проекта, путем объявления и задания сигналов в скрипте проекта с помощью внутреннего языка программирования или с помощью базы данных проекта, если необходим обмен данными между несколькими проектами в рамках пакета проектов.
Рисунок 7 - Сигналы проекта
Связь сигналов с динамическими переменными блоков модели
После создания списка сигналов откроем редактор связей (Главное меню → Сервис → Связи…), при помощи которого установим связь между кинематическими параметрами и созданными ранее глобальными переменными – сигналами проекта.
После открытия редактора связей, не закрывая его, в окне модели выделим второй блок интегратор (рисунок 8), на вход которого поступает производная угла поворота маятника \(\dot beta\), а на выходе формируется угол \(\beta\). В левой нижней области списка сигналов блока “Интегратор” появятся переменная fdif, обозначающая то, то поступает на вход блока (первая производная угла \(\dot \beta\)), и xdiff – то, что формируется на выходе блока – результат интегрирования (\(\beta\)). Левой кнопкой мыши схватим строчку xdiff и перетащим её в свободную строчку столбца “Источник”.
Рисунок 8 - Связь сигналов с параметрами блока (выбор блока)
Далее откроем вкладку “Сигнал” редактора связей. Здесь будет показан список ранее созданных сигналов проекта. Левой кнопкой мыши схватим строку beta и перетащим её в столбец “Приёмник”, как показано на рисунке 9. Таким образом мы указали, что результат интегрирования блока “Integrator_2” будет в процессе моделирования автоматически записываться в глобальную переменную (“сигнал проекта”) beta. Подобным образом необходимо связать все оставшиеся сигналы проекта.
Рисунок 9 - Связь сигналов с параметрами блока (выбор сигнала)
Графики сигналов
Для построения графиков изменения угла поворота маятника \(\beta\) откроем менеджер данных (рисунок 10) и, нажав правую кнопку мыши, добавим в раздел “Графики” новый “Временной график”.
Рисунок 10 - Менеджер данных
В контекстном меню созданного временного графика, выберем “Добавить” и “Параметр”, указав в качестве имени параметра сигнал проекта beta.
Рисунок 11 - Добавить параметр
Аналогичным образом создадим временные графики для всех определенных ранее сигналов проекта, связанных с параметрами модели.
Результаты моделирования
На рисунке 12 показано изменение угла поворота маятника при его свободном движении после запуска процесса моделирования движения механизма. Как следует из рисунка 12, в своём свободном движении при заданных начальных условиях маятник совершает колебаний вокруг устойчивого положения равновесия \(\beta = \pi\).
Рисунок 12 - Угол поворота маятника
Система управления
Управление углом \(\beta\)
Добавим в модель системы управления, которая будет удерживать маятник в неустойчивом положении равновесия \(\beta = 0\). Сигнал момента, формируемого системой управления, определим как линейную комбинацию угла \(\beta\) и его производной: \[M_\beta = - k_1 [(\beta-\beta_p) + k_2 (\dot{\beta}-\dot{\beta}_p)]\]
Т.е. управляющий момент \(M_\beta\) будет тем больше по модулю, чем больше отклонение (ошибка) угла и угловой скорости от требуемого (программного) значения \(\beta_p = 0\), \(\dot{\beta}_p = 0\). Знак минус в выражении момента означает, что знак момента будет противоположен знаку отклонения угла \(\beta\) от вертикального положения и знаку отклонения угловой скорости от нуля. Коэффициенты \(k_1\) и \(k_2\) – коэффициенты усиления отклонений. Выбор этих параметров – это отдельная задача теории автоматического управления, которая здесь не рассматривается.
На рисунке 13 приведен график изменения угла поворота маятника при действии определенного выше момента \(M_\beta\) c \(k_1 = 60\) Нм/рад и \(k_2 = 9\) Нм*с/рад: при этих коэффициентах в течение 2 секунд мятник возвращается и удерживается системой управления в нулевом положении.
Рисунок 13 - Угол поворота маятника при управлении
Управление углом \(\varphi\)
При действии управляющего момента \(M_\beta\) движение самого колеса не контролируется, поэтому после стабилизации углового положения маятника колесо продолжит движение с некоторой скоростью. Это иллюстрирует рисунок 14, где показан график изменения угловой скорости колеса.
Рисунок 14 - Угловая скорость вращения колеса
Добавим управление, которое будет возвращать колесо в начало координат. Для этого к управляющему моменту \(M_\beta\) добавим еще один момент, значение которого будет пропорционально отклонению угла поворота колеса \(\varphi\) и его угловой скорости \(\omega = \dot{\varphi}\) от нулевого значения. Поскольку колесо катится без проскальзывания, нулевое значение угла \(\varphi\) будет соответствовать его положению \(x = - r \varphi\) в начале координат (рисунок 1): \[M_\varphi = - [k_3 (\varphi-\varphi_p) + k_4 (\dot{\varphi}-\dot{\varphi}_p)]\]
где \(\varphi_p = \dot{\varphi}_p = 0\) – программные значения угла поворота и угловой скорости колеса.
Схема модели будет иметь вид:
Рисунок 15 - Схема модели
На рисунках 16 и 17 показаны графики изменения угла поворота маятника и угловой скорости колеса при действии управляющего момента \[M_u = M_\beta + M_\varphi.\]
Рисунок 16 - Изменение угла поворота маятника
Рисунок 17 - Изменение угловой скорости колеса
Работа управляющего момента показана на следующем видео: