1 Пример - Тяжелый груз на пружине

Постановка задачи

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

Графически система может быть представлена как показано на рисунке:

Рисунок 1. Груз на пружине

Ожидаемое движение такой системы - свободные незатухающие колебания, поскольку в начальный момент времени груз обладает запасом потенциальной энергии, достаточной чтобы растянуть пружину на некоторую величину, затем жесткости пружины и её силы хватит чтобы затормозить груз и развернуть его движение в обратную сторону, груз начнет перемещаться вверх, это приведет к сжатию растянутой пружины и по мере возвращения груза к начальному положению, сила тяжести будет тормозить движение груза вверх и вновь заставит его двигаться вниз. И так далее. Такие колебания будут незатухающими, поскольку в системе отсутствует какая-либо сила трения, а пружина абсолютно упруга (подчиняется закону Гука) и не имеет пластических деформаций, в силу наших допущений, описанных выше.

Для данного примера можно легко записать уравнение динамики - оно будет одно, так как в рассматриваемой системе всего лишь одно тело (груз) может перемещаться, а растяжение пружины явно зависит от координаты груза z(t). Учитывая что сила тяжести равна M·g, сила упругости пружины равна K·Δz = K·( z(t) - z(0) ) = K·z(t), тогда уравнение динамики для груза, согласно II закону Ньютона, можно записать в следующем виде:

( 1.5 )
( 1.6 )

Здесь vz(t) - вертикальная скорость груза, м/с.

Если эти два уравнения представить в виде одного, получим дифференциальное уравнение второго порядка (1.7), аналогичное уравнению типового колебательного звена, с нулевым относительным коэффициентом затухания. То есть мы имеем дело с системой типа "консервативное звено". В консервативном звене не происходит рассеяние энергии.

( 1.7 )

Реализация модели

Теперь разберемся, как эту систему представить в виде блоков библиотеки "Механика". Нам потребуется всего 4 блока - заделка, пружина, груз и внешняя сила, а также еще один блок датчика чтобы вывести интересующие нас расчетные параметры на график для анализа результатов.

Разместите 4 блока типа "Механика - Заделка поступательного движения", "Механика - Пружина поступательного движения", "Механика - Инерция поступательного движения" и "Механика - Идеальный источник силы поступательного движения", как показано на рисунке ниже. Добавьте к ним константу из вкладки "Источники" общетехнической библиотеки блоков, а также датчик "Механика - Идеальный датчик поступательного движения" и его выходы подсоедините к блоку типа "Временной график".

Рисунок 2. Модель груза на пружине

На рисунке пунктиром отмечены три смысловые области модели - задание внешнего воздействия (силы тяжести), непосредственно модель динамики, и обработка результатов моделирования - датчик не оказывает влияния на модель, он только считывает из нее расчетные параметры и передает их на график по математическим линиям связи. Рассмотрим модель динамики. В ней присутствуют только две механические линии связи - от заделки, и от массы (от инерции поступательного движения). Разветвления линий связи за отдельные линии связи не считаются. В данной модели только два блока определяют скорость движения (своих частей): для заделки будет всегда нулевая скорость, какую бы силу мы ни прикладывали к ней. И блок заделки всегда в свою линию связи передаёт нулевую скорость. Для массы (инерции) скорость будет вычисляться на каждом шаге расчета, и передаваться по линии связи во внешний источник силы (в общем случае внешнее воздействие может быть переменным и зависеть от скорости движения тела), в блок пружины, и в блок датчика.

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

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

На график при помощи датчика выведена позиция центра масс груза и его скорость. Строго говоря, в модели мы имеем дело с двумя системами отсчета, одна из которых связана с верхним концом пружины (и не двигатеся), другая - связана с нижним концом пружины, или с центром масс груза - эти две точки имеют одинаковую скорость и ускорения всегда, то есть с точностью до координаты они совпадают. Датчик измеряет относительную скорость движения двух систем отсчета и, интегрируя её, вычисляет текущее положение (смещение) одной системы отсчета относительно другой. Так как заделка у нас не двигается - её можно считать абсолютной системой координат в данной задаче.

Задайте корректно свойства блоков. Пример задания свойств приведен на рисунках ниже:

Рисунок 3. Свойства константы

Рисунок 4. Свойства пружины

Рисунок 5. Свойства инерции поступательного движения

Рисунок 6. Свойства датчика

Рисунок 7. Свойства временного графика

В датчике мы задали нулевое начальное значение (это база для датчика, не для инерции), для графика два входных порта, задали массу 2 кг с нулевой начальной скоростью, и жесткость пружины 140 Н/м с нулевой начальной деформацией.

После этого задайте параметры расчета как показано на рисунке. Обратите внимание, что мы выбрали неявный метод DIRK4, с переменным шагом 1E-7...0.001 секунды.

Рисунок 8. Параметры расчета

Моделирование и анализ результатов

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

Рисунок 9. Результат расчета методом DIRK4

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

Попробуйте задать способ расчета, выбрав неявный метод Эйлера, и посчитать 10, а потом 100 секунд.

Рисунок 10. Результат расчета неявным методом Эйлера

Удивительно, но мы получили качественно другой результат, и он в принципе не верен. Значит, для данной системы неявный метод Эйлера не является правильным способом расчета и дает сильную погрешность. Если вы поставите относительную ошибку на 1 или два порядка меньше, то результат расчета неявным методом Эйлера будет приближаться к результату расчета методом DIRK4. Возможно, какие-то тонкие настройки могут помочь с этим, но скорее всего это именно накапливающаяся на каждом колебании ошибка расчета (невязка метода Эйлера) приводит к их затуханию. Метод Эйлера имеет самую низкую точность, и для динамических моделей не всегда

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