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

Упражняться, конечно же, будем на нашей элементарной модели плунжера:
2015-10-02 13-33-33 Особенности обучения студентов основам математического моделирования технических систем на примере гидр.png
Где же здесь творчество, спросите вы? Вместо плунжера замоделируем поршень, а вместо пружины — упругий элемент? Ничего подобного.
Смотрите сами сколько у нас вариантов: плунжер может быть весомый или невесомый, жидкость может быть сжимаема или не сжимаема, объём камеры может быть изменяемым или постоянным, даже дроссель и тот можно моделировать с учётом трубы в которую он встроен или без учёта. Комбинация только этих четырёх факторов уже даст как минимум 8 вариантов математической модели этой предельно простой схемы.
В этот раз мы подробно остановимся на двух факторах: учёте инерции и сжимаемости жидкости.
Чего тут учитывать, спросите вы? Масса дана? Дана! Жидкость сжимаема? Сжимаема! Значит надо учитывать и то и то, потому что мы за правду! Так то оно так, да только в этом случае нужно до кучи учесть гравитацию Луны и силу ветра в помещении. Точно так же как Луна, инерция и сжимаемость жидкости не всякий раз будут влиять на перемещение нашего плунжера.
Например, очевидно, что при развиваемом усилии более 150 кгс и отсутствии пружины учитывать массу плунжера нужно только если она сопоставима с этим усилием. Учёт массы в 100 г только без толку усложнит наши расчёты и не прибавит точности. Аналогично, если давление в системе не превышает 2-5 бар, о каком учёте сжимаемости жидкости может идти речь?
Чтобы проиллюстрировать это всё на живых примерах, давайте посмотрим как мы можем переписать математическую модель нашего плунжера для различных наборов допущений.
Исходная система уравнений с учётом сжимаемости жидкости выглядит следующим образом:
2015-10-02 14-52-39 Особенности обучения студентов основам математического моделирования технических систем на примере гидр.png
Структурная схема:
2015-10-08 11-11-33 Основы мат моделирования_рисунки -  Visio профессиональный.png

Промоделируем сразу эту систему и посмотрим что происходит у неё внутри:

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

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

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


Для этого вместо определения давления интегрированием мы поставим блок численного решения уравнения алгебраических уравнений (f(x) = 0, в матлабе это блок - Algebraic Constraint). Суть его работы заключается в том, что он, используя численный итерационный метод, варьирует своё выходное значение до тех пор, пока не найдёт ноль функции (у себя на входе) с заданной точностью. Другими словами, на каждом шаге решения он будет изменять давление, пока сумма расходов не станет равной нулю с заданной точностью.
Здесь необходимо отметить, что данному решателю обязательно требуется какое-то начальное приближение. Если мы запустим эту систему с нулевым начальным давлением, решатель не найдёт подходящее решение, т.к. расход от дросселя будет существенно больше нулевого геометрического расхода (скорость то в начальный момент нуль). Он будет пытаться задирать давление, но скорее всего не попадёт куда нужно. Поэтому нужно ему помочь и назначить такое давление, которое в первоначальный момент позволит с наименьшим числом итераций достигнуть нужного решения. В нашем случае проще всего задать давление в полости в начальный момент времени равным давлению питания. Тогда расход через дроссель будет равен нулю, как и геометрический расход. Решатель очень быстро нащупает верный путь.
Таким образом мы получили модель с несжимаемой жидкостью и учётом инерции плунжера. Посмотрим на результат:

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

Что же будет, если отбросить ещё и влияние инерции? В этом случае перемещение поршня будет полностью определяться расходом, поступающим в полость:

Для того, чтобы узнать расход через дроссель, нужно знать давление в полости. А его мы получим из уравнения равновесия:

На структурной схеме всё получится вот так:

Результат моделирования:

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

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


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

  • С учётом сжимаемости - 67 точек

  • С учётом инерции, без сжимаемости - 110 точек

  • Без учёта инерции и сжимаемости - 52 точки

В итоге мы получаем, что в нашей задаче без учёта сжимаемости рабочей жидкости не обойтись, т.к. колебания системы связаны практически исключительно с этим фактором. Экзерсисы с учётом инерции, но без учёта сжимаемости в данном случае себя не оправдали. Видно, что при таких допущениях решатель даёт слегка рваный график давления (это может быть связано с тем, что порядок расходов 1e-3, а порядок давлений 1e6) и, несмотря на это, большую вычислительную трудоёмкость (даже без учёта внутренних итераций).
Стоило ли городить огород, если всё равно выяснилось, что мы с самого начала всё верно учли? Конечно же так получилось, потому что я изначально подобрал параметры системы, чтобы не выглядеть дурачком в предыдущих частях. На самом деле это не всегда так.
Скажу честно, мне не удалось вывести однозначной рекомендации для ответа на вопрос — в каких случаях нужно учитывать сжимаемость жидкости, а в каких нет. Слишком уж от многих факторов зависит это решение. Общая рекомендация такая — если сомневаетесь, учитывайте сжимаемость везде. В худшем случае немного уменьшится скорость расчёта. Если точно знаете, что масса пренебрежимо мала, не учитывайте ни сжимаемость, ни инерцию. Сэкономите сразу 2 порядка системы дифференциальных уравнений для каждого элемента. Во всех остальных случаях нужно писать две разные математические модели (с учётом инерции и сжимаемости и без) и смотреть уже по факту.
Конечно, неохота каждый раз переписывать для разных допущений уравнения, а потом переделывать структурные схемы. Для того, чтобы упростить задачу инженерам, многие производители CAE-софта создали и совершенствуют оболочки, где математическая модель создаётся так же как если бы мы собирали физическую систему, т.е. при помощи готовых блоков физических элементов. В матлабе эта оболочка называется — Simscape.
Посмотрим на его примере как быстро и удобно можно менять допущения в нашей системе.
Начнём собирать схему с плунжера. В библиотеке элементов он находится здесь:

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


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

Также видно, что все параметры можно задавать с учётом размерностей. Т.е. писать не 2e7 Pa в строке давления, а 200 bar и матлаб нас поймёт!
Теперь соединим блок с механической частью:

... а затем с гидравлической частью:


Здесь появляется первый (но не последний) неочевидный элемент — Simulink-PS Converter. Он предназначен для соединения сигналов Simulink с физической частью системы. Его приятная особенность — он тоже понимает размерности, которые задаются в его окошке. Главное, при копировании этих элментов не забывать менять эти размерности.
Также к системе нужно не забыть присоединить блок свойств рабочей жидкости — Custom Hydraulic Flui, в котором мы укажем плотность, вязкость, модуль упругости и процентную долю газа.
Как ни странно, если попытаться запустить эту систему, ничего работать не будет, потому что здесь не достаёт элемента, отсутствующего в физической системе — блока конфигурации решателя Solver Configuration. Его нужно прицепить в любое место системы, например, вот так:

Интересно также заглянуть к нему внутрь:

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

Чтобы не загромождать схему, я создал две подсистемы. Одну — для измерения гидравлических сигналов (давление, расход), другую — для механических сигналов (скорость, перемещение, сила).
Вот что внутри у гидравлического блока:

Смотрите, у нас есть две линии - А и В. В линию А в нашем случае будет заходить жидкость, из линии В — выходить. Тогда, для того, чтобы узнать расход, нужно между этими линиями вставить расходомер. Для измерения давления нужно одним концом манометра прицепиться к линии, а другим показать относительно какого уровня измерять давление. Важно запомнить, что манометр не пропускает через себя жидкость, поэтому если поставить его вместо расходомера, система просто не будет работать, т.к. жидкость не сможет пройти из канала А в канал В. Расходомер же, наоборот беспрепятственно пропускает жидкость, поэтому если поставить его на место манометра, то жидкость просто польётся в бак и не пойдёт в камеру.

Аналогичная картина в блоке механических сигналов:

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

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

Опять сравним результаты:

Примерно та же самая история. Результаты практически не отличаются, но Simscape почему-то безосновательно начинает дробить шаг. Что у него в голове? Я не знаю...

Кстати, если вы на входе в этой модели сделаете не ступеньку давления, а просто постоянный сигнал, Simscape самостоятельно переведёт систему в состояние статики (установит давление в камере равным давлению питания) и на выходе вы получите просто горизонтальные прямые линии.

Теперь, когда мы убедились в том что непрозрачный и непонятный Simscape способен выдавать тот же результат, что мы получили в прозрачном и понятном Simulink, наконец-то можно поиграть с параметрами. Если мы уменьшим в 4 раза объём камеры, различие между моделью с учётом сжимаемости и без учёта, будет значительно меньше:

Оно и логично! Меньше жидкости, меньше влияния сжимаемости. Ура! Но не тут то было... Смотрите что будет, если мы оставим то же значение объёма и просто увеличим в 10 раз площадь дросселя:

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

  1. Если вы не уверены учитывать сжимаемость или нет, учитывайте! Даже если на первый взгляд кажется, что учитывать её не нужно, система может войти в такой режим, при котором сжимаемость начнёт играть существенную роль. Исключение составляют очевидные случаи, когда часть системы явно не силовая и не содержит обратных связей.

  2. Simscape — отличная штука, но только если знать как с ней обращаться. Он содержит кучу подводных камней, на самостоятельное преодоление которых может уйти больше времени, чем на написание модели блок-схемами. Если у вас не получается собрать модель в симулинке, скорее всего, Simscape вас не спасёт. Используйте его только для экономии времени на сборку модели, но не на понимании содержания математической модели.

Честно говоря, мне уже самому жутко надоел этот примитивный пример с плунжером на пружине. Пора уже заняться моделью настоящего гидропривода. Напишем её вместе в следующий раз. Обещаю, будет интересно! :)


Date: 2015-12-03 09:09 am (UTC)
From: (Anonymous)
"Играться с параметрами можно довольно долго, дело это очень интересное. Но я уже не уверен, что меня до сих пор кто-то читает"
Читает, читает =)

Profile

andreev: (Default)
andreev

December 2016

S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 20th, 2017 12:21 am
Powered by Dreamwidth Studios