Выбор допущений

Что самое интересное в процессе написания математической модели гидропривода? Уравнения? Составление блок-схем? Поиск ошибок? Нет! Самое интересное — это когда ты только садишься за схему и пытаешься представить, что же это будет в конечном итоге за модель. В этот момент решается для чего модель будет использоваться, насколько подробно будет описан каждый элемент, где придется влезть в теорию, где удастся использовать эксперимент. Именно эту стадию можно действительно назвать творческой. Всё остальное — так себе, рутина. О творческой составляющей математического моделирования в этой главе и поговорим.

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

Упражняться будем снова на элементарной модели плунжера:

Где же здесь творчество? — спросите вы. Вместо плунжера сделаем поршень, а вместо пружины — упругий элемент? Ничего подобного! Смотрите сами сколько у нас вариантов: плунжер может быть весомый или невесомый.

Жидкость может быть сжимаемой или не сжимаемой.

Объём камеры может быть изменяемым или постоянным.

Даже дроссель – и тот можно моделировать с учетом трубы, в которую он встроен или без её учета. Комбинация только этих четырех факторов уже даст как минимум 8 вариантов математической модели этой предельно простой схемы.

В этот раз мы подробно остановимся на двух факторах: учете массы плунжера и сжимаемости жидкости. Чего тут учитывать, спросите вы? Масса дана? Дана! Жидкость сжимаема? Сжимаема! Значит надо учитывать и то и то, потому что мы за правду! Так то оно так, да только в этом случае можно до кучи учесть гравитацию Луны и силу ветра в помещении.

На самом деле инерция и сжимаемость жидкости не всегда будут существенно влиять на процесс перемещение плунжера.

Например, при развиваемом усилии более 150 кгс и отсутствии пружины учитывать массу плунжера нужно только если она сопоставима с этим усилием. Учёт массы в 100 г только усложнит наши расчёты, но не прибавит точности. Аналогично, если давление в системе не превышает 2–5 бар, о каком учёте сжимаемости жидкости может идти речь?

Чтобы проиллюстрировать это всё на живых примерах, давайте посмотрим, как можно переписать математическую модель плунжера для различных наборов допущений. Исходная система уравнений с учётом сжимаемости жидкости выглядит следующим образом:
Структурная схема:

Рисунок 1. Структурная схема

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

Рисунок 2. Переходный процесс в плунжере

Перед тем как переходить к моделям с другими допущениями, сначала давайте предположим, что жидкость в системе если и сжимается, то несильно. Тогда давление придется считать исходя из равенства расходов:
Чисто теоретически сюда можно подставить уравнение расхода через дроссель, перенести геометрический расход вправо, возвести всё в квадрат и получить уравнение для определения давления через скорость поршня. Хорошо, когда в системе всего два расхода, потому что в случае наличия ещё одного дросселя (например, на слив) возводить в квадрат пришлось бы уже два раза, при наличии ещё одного — три, и так далее. В итоге, привыкнув однажды к выражению давления через расход рано или поздно можно столкнуться с невозможностью аналитического решения подобной задачи. Поэтому не будем привыкать к хорошему, и даже этот простой пример заставим SimInTech считать численно.
Для этого вместо определения давления интегрированием мы поставим блок численного решения алгебраических уравнений Нелинейное уравнение F(y) = 0 (Закладка «Операторы»). Суть его работы заключается в том, что он, используя численный итерационный метод, варьирует своё выходное значение до тех пор, пока не найдет ноль функции у себя на входе с заданной точностью. Другими словами, на каждом шаге решения он будет изменять давление, пока сумма расходов не станет равной нулю с заданной точностью. Схемам будет выглядеть примерно так, как показано на рисунке (Рисунок 3):

Рисунок 3. Схема расчета без учета сжимаемости

До 1 секунды процесса у нас вообще везде 0, поэтому, ставим в качестве начальных условий 0. И запускаем на расчет. И снова Упс! Ни хрена не работает! Скорее всего вы получите следующие сообщения:

[Ошибка]: "Ошибка вычисления LU-декомпозиции матрицы"

[Ошибка]: "Ошибка нахождения решения СЛАУ"

Вот так вот, мои маленькие любители моделирования, никто и не обещал, что будет легко.

Что делать? SimInTech не работает и нужно переходить на Фортран? Конечно нет! Нам на помощь приходит

Четвёртое правило моделирования: При любых непонятных результатах, когда не помогает уменьшение шага интегрирования, меняй метод интегрирования!

Нажимаем на кнопку с отверткой и молотком «Параметры расчета».

В параметрах расчета находим «Метод интегрирования» и в выпадающем списке выбираем другой, вдруг повезет и он посчитает. Не будем вас утомлять методами, тем кому интересно могут почитать соответствующий разделе в справке ../../yadro/metody/metody_reshenia_ODU_i_DAU.html#topic_zhw_ztc_3db. Скажу честно - методом научного «тыка» удалось установить, что работают неявные методы. Выбираем «Адаптивный неявный».

Рисунок 4. Настройка методов интегрирования

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

Рисунок 5. Расчет без учета сжимаемости

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

Но давление ведет себя явно неестественно, прыгает до 200 бар, потом падает обратно, и медленно растет. Что за хрень? Мы же ставили дроссель именно для того, чтобы давление не прыгало как во время взрыва!

Так сработал блок нелинейное уравнение F(y)=0, это блок решил, что в первый момент скачка давление в камере должно равняется давлению нагнетания, потом оно падает как только поршень начинает двигаться.

Что же будет, если отбросить ещё и влияние инерции? В этом случае скорость перемещения поршня v будет полностью определяться расходом, поступающим в полость:
Для того, чтобы узнать расход через дроссель, нужно знать давление p в полости. А его мы получим из уравнения равновесия:
Структурная схема при этом будет выглядеть так:

Рисунок 6. Структурная схема без сжимаемости и инерции

Небольшое пояснение: на схеме появился еще один блок, задержка на шаг интегрирования, дело в том, что у нас сформировалась алгебраическая петля, для ее развязки мы поставили блок Задержка на шаг интегрирования с начальным условием. Это позволяет во время моделирования брать значения с предыдущего шага. Кстати, для увеличения скорости расчета можно вернуть обратно метод интегрирования «Адаптивный 1».
Результат моделирования:

Рисунок 7. Результат моделирования без учета инерции и сжимаемости

Логично, что теперь практически пропал и скачок давления в начальный момент времени переходного процесса (t=1), хотя давление и выходит не из нуля. Это связано с тем, что в начальныӗ момент времени из-за перепада давлений в системе сразу же возникает расход через дроссель. Следовательно, скорость в начальный момент времени тоже не будет равна нулю, а значит и сила вязкого трения в уравнении равновесия будет не нулевая. Отсюда и небольшой скачок давления в начале переходного процесса.

Чтобы сравнить результаты, наложим их на одно поле графика:

Интересно также сравнить вычислительную трудоёмкость расчетов при разных допущениях. Мы задаем одинаковую относительную точность 1е-5.

Для варианта с учетом сжимаемости и инерции:
Метод интегрирования Адаптивный 1
Минимальный шаг 1е-12 с
Максимальный шаг 1е-2 с
Коэффициент ускорения расчета 187,5 раз
Число шагов 1810
Для варианта без учета сжимаемости:
Метод интегрирования Адаптивный неявный
Минимальный шаг 1е-12 с
Максимальный шаг 1 с
Коэффициент ускорения расчета 1,1 раз
Число шагов 321700
Для варианта без учета сжимаемости и инерции:
Метод интегрирования Адаптивный 1
Минимальный шаг 1е-12 с
Максимальный шаг 1е-2 с
Коэффициент ускорения расчета 1000 раз
Число шагов 328

Получается, что в нашей задаче без учета сжимаемости рабочей жидкости не обойтись, т. к. колебания системы связаны именно с этим свойством. Экзерсисы с учетом инерции, но без учета сжимаемости в данном случае себя не оправдали. Видно, что при таких допущениях решатель дает слегка рваный график давления (это может быть связано с тем, что порядок расходов — 1e−3, а порядок давлений — 1e+6) и, несмотря на это, большую вычислительную трудоемкость (даже без учета внутренних итераций).

Стоило ли городить огород, если всё равно выяснилось, что мы с самого начала всё верно учли? Конечно же так получилось, потому что я подобрал параметры системы, чтобы не выглядеть дурачком в предыдущих частях. На самом деле не всегда всё так гладко.

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

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

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

Использование библиотеки готовых элементов

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

Как создавать свои готовые блоки SimInTech, по известным уравнениям, мы показали ранее (см. подраздел «От непонятной модели к понятной принципиальной схеме»). Посмотрим, как создавать модели в SimInTech из готовых блоков.

В SimInTech есть библиотека ../../biblioteki/gidro_pnevmo_sistemy/gidro_pnevmo_sistemy.html#topic_zhw_ztc_3db. Данная библиотека постоянно дорабатывается и расширяется. В ней уже содержатся готовые элементы, в которых подготовлены порты для соединения элементов в принципиальные гидравлические схемы.

Есть так же библиотека ../../biblioteki/mehanika/mehanika.html#topic_zhw_ztc_3db, где содержатся элементы для моделирования механических систем. Вот давайте и соберем из разных «кубиков» готовую систему. Нам понадобятся следующие блоки:

«ГПС - Источник постоянного давления»

ГПС - Гидравлический турбулентный дроссель постоянного сечения

ГПС - Гидравлическая полость переменного объема

«ГПС - Гидромеханический преобразователь посткупального движения»

Инерция поступательного движения

Фрикционный демпфер поступательного движения

Пружина поступательного движения

Ступенька

Запись в список сигналов

Общая схема системы из готовых блоков представлена на рисунке (Рисунок 8):

Рисунок 8. Схема с использованием стандартных элементов

Особенностью данной схемы, является то, что изображенные на ней линии связи имеют различное значение, и если вы попытаетесь соединить полость с пружиной, то SimInTech вам не даст это сделать.

Линии между полостями и дросселем – это каналы течения жидкости, аналогично линия между камерой и преобразователем.

Линии между механическими элементами – это линии механической связи.

Линия между ступенькой и записью – это просто передача числа (одного сигнала).

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

Отдельное пояснение по блоку «Запись в список сигналов». Как уже было сказано выше, блок «ГПС - Источник постоянного давления» не имеет явно входов, куда можно подключить ступеньку, для имитации скачка давления, но мы работаем в SimInTech, где можно все, от слова совсем.

Чтобы поменять давления в камере постоянного давления, мы создадим глобальный сигнал проекта. Пункт главного меню программы «Сервис/Сигналы».

В окне сигналов дадим ему имя, описание и сохраним (см. Рисунок 9).

Рисунок 9. Создание сигнала для давления нагнетания

Теперь кликнем два раза по блоку камера постоянного давления и температуры, в свойствах запишем имя сигнала Pn, и теперь постоянное давление в камере определяется нашей ступенькой (см. Рисунок 10).

Рисунок 10. Задание свойств для источника постоянного давления

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

Задайте все остальные параметры других блоков из списка констант (см. Рисунок 1).

Если запустить схему на расчет, то прямо на схеме во время расчета будут отображены значения параметров. Если все данные введены правильно, то мы увидим, что конечное значение перемещения, цифра под блоком пружина совпало с предыдущими вариантами (см. Рисунок 11).

Рисунок 11. Результаты расчета на схеме

Но нас интересует график.

Все просто. Как раз два три! Следите за руками!

  1. Выбираем нужный нам блок (Пружина), двойным кликом мыши вызываем окно «Свойства».
  2. Переходим на закладку «Параметры», где причислено, все что можно вытащить из блока «Пружина».
  3. Выбираем «Перемещение» и нажимаем кнопку «График» внизу.
Наш график добавился в менеджер данных, его можно вызвать во врем расчета по кнопке схемного или главного окна программы (см. Рисунок 12).

Рисунок 12. Вызов графиков для стандартных объектов

Таким же образом можно построить график для любых параметров любого блока, можно перетаскивать на один график переменные из разных блоков.

Рисунок 13. График перемещения

Сравним расчет стандартными блоками и нашим первым вариантом решения задачи. Поскольку мы делали одинаковый список глобальных констант, то достаточно скопировать блоки из одного проекта в другой.
У меня при копировании получилась схема как на рисунке (Рисунок 14):

Рисунок 14. Модель для сравнения методов

Единственный вырос который может возникнуть, у неопытного пользователя:

- А зачем константу оправляют на график?

А это SimInTech и константа здесь может быть совсем не константой. Если в блоке «Константа» вместо конкретной цифры записать выражение типа L48.S, где L48 – это уникальное имя блока-пружины на нашей схеме, а S – это имя параметра этого блока (перемещение). Тогда наша константа во время расчета будет принимать значения параметра перемещение пружины, что нам и нужно для сравнения. Отправляем это значение на график и сравниваем (см. Рисунок 15):

Рисунок 15. Результат сравнения методов

Видно, что значения расходятся в конце переходного процесса. Это связано с тем, что свойства рабочего тела в стандартной библиотеке берутся из справочника, а у нас были заданы просто константы.

А давайте заглянем в эти стандартные блоки и попытаемся их изменить!

Изменим камеру с переменным объемом так, чтобы она совпадала по свойствам с данными в условиях задачи.

Кликаем по блоку, выезжает окно с параметрами, но если нажать на правую кнопку мыши, и в меню выбрать Действие/Войти в субмодель (см. Рисунок 16).

Рисунок 16. Заглядываем под капот

И ОMG чудо! Мы оказываемся внутри модели и можем изучить её и даже изменить.

Рисунок 17. Внутреннее устройство модели

Находим блок расчета свойства, это обычный стандартный блок «Язык программирования», находим место где рассчитывается модуль упругости и плотность, и производим диверсию. Вместо честного расчета свойств, подставляем константы из глобальных переменных (см. Рисунок 18).

Рисунок 18. Редактирование расчета свойств

Если теперь запустить на расчёт, мы получим почти полное совпадение с моделью, разработанной вручную.

Рисунок 19. Сравнения моделей после диверсии

Промежуточное резюме. Библиотека гидро-пневмо систем в SimInTech ускоряет работу, обеспечивает большую наглядность модели, и в отличие от других САЕ, не закрывает от пользователя внутреннее содержание модели. Это не черный ящик, это практически Open Source для математического моделирования гидравлики.Можно выбирать пакет и средство моделирования, и потом пытаться реализовать в нём задачу теми средствами, под которые он заточен, а можно использовать SimInTech и получить возможность решать задачи любым удобным способом. SimInTech не ограничивает свободу творчества.