Моделирование гидропривода

Автор: Андреев М. А. (на основе методического пособия: Андреев М.А. Математическое моделирование гидропривода: Учебное пособие. — на правах рукописи, 2017. — 61 с)

Введение

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

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

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

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

Объект исследования

Объектом исследования является система, состоящая из цилиндрического плунжера диаметром 10 мм с приведенной массой 100 кг. Плунжер работает на пружину жесткостью 200 Н/мм и демпфер с коэффициентом вязкого трения 1000 Н/(м/с). Если в полость с начальным объемом 20 см3 подать ступенчато давление 200 бар, то для предотвращения деформации плунжера необходимо установить дроссель диаметром 0.2 мм между источником давления и камерой.


Рис. 1. Гидравлическая схема для моделирования.
Необходимо математически описать следующие физические процессы:
  • прохождение рабочей жидкости через дроссель (дросселирование)
  • сжатие жидкости в рабочей полости плунжера
  • перемещение массы с учетом взаимодействия с пружиной и демпфером

Для получения графика зависимости перемещения плунжера x от времени t необходимо воспользоваться уравнением движения плунжера:

где:
  • m - масса плунжера
  • Ap – площадь плунжера
  • cpr – жесткость пружины
  • btr – коэффициент вязкого трения
  • p – давление в камере

Необходимо обратить внимание на выбор положительного направления перемещения и на знаки действующих сил. На рисунке (Рис. 1) видно, что в качестве положительного направления выбрано перемещение плунжера вправо. Тогда сила со стороны жидкости в уравнении будет со знаком "плюс", сила со стороны пружины и демпфера со знаком "минус".

Разработка модели плунжера с пружиной

Для создания нового проекта общетехнического шаблона необходимо выполнить следующие действия:
  1. В главном окне SimInTech выбрать пункт Файл подпункт Новый проект
  2. В выпадающем меню выбрать пункт Схема модели общего вида

Откроется новое окно проекта Схема модели общего вида, в котором будет проходить описание системы.

Требуется сохранить созданный проект. Для этого:
  1. В главном окне войти в меню Файл, выбрать подпункт Сохранить проект как
  2. В появившемся окне выбрать или при необходимости создать папку, в которую будет сохранен данный проект
  3. В появившемся окне в поле Имя файла указать желаемое имя проекта, либо оставить имя проекта по умолчанию и нажать на кнопку Сохранить

Добавление блоков на схему

Требуется записать в качестве констант исходные данные, которые необходимы для расчета. Для этого необходимо в окне проекта нажать на кнопку Скрипт. Откроется окно редактора скрипта проекта, где необходимо записать все константы из исходных данных:
const
  m = 100,         // масса плунжера (кг)
  d = 10e-3,       // диаметр плунжера (м)
  Cpr = 200e3,     // жесткость пружины (Н/м)
  Btr = 1000;      // коэффициент вязкого трения демпфера (Н/(м/с))

Initialization
  Ap = pi*d^2/4; // площадь плунжера
end;                
Константы задаются через запятую, после последней ставится точка запятой (скрипт). Все константы заданы в стандартных единицах измерения. Расчет площади проходного сечения рассчитывается в секции инициализации, которая выполняется только один раз при старте расчета. Константы и переменные, заданные в данном окне, доступны в любой части проекта.
Добавить на схему следующие блоки:
  • 1 блок Ступенька из вкладки Источники
  • 1 блок Язык программирования из вкладки Динамические
  • 1 блок Временной график из вкладки Вывод данных
Разместить и соединить блоки на схеме согласно рисунку (Рис. 2).


Рис. 2. Рабочая область проекта со схемой модели плунжера.

Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.

Задание свойств блоков

Перед началом моделирования необходимо задать свойства блокам на схеме. Блок Ступенька будет моделировать входное воздействие в виде давления для модели плунжера. Для этого необходимо, чтобы на 1 секунде расчета входное воздействие для модели плунжера менялось от 0 до 200 бар. Для этого необходимо открыть окно Свойства блока Ступенька через контекстное меню блока, и задать значения согласно рисунку (Рис. 3)


Рис. 3. Окно "Свойства" блока "Ступенька" с измененными свойствами.
Если запустить проект на моделирование нажатием кнопки Пуск, то график отразит выходной сигнал блока Ступенька, поскольку блок Язык программирования по умолчанию передает сигнал от входного порта в выходной без изменений:


Рис. 4. Окно "График" с выходным сигналом блока "Ступенька".

В блоке Язык программирования имеется возможность записывать уравнения динамики объекта в форме Коши. Прежде чем перейти к записи модели необходимо преобразовать уравнение в систему двух уравнений, добавив новую переменную – скорость v(t) = dx(t) / dt. Таким образом, уравнения движения примет вид:

Теперь из такой системы требуется создать модель. Входным параметром модели будет давление p(t), выходным параметром будет перемещение плунжера х(t). В модели будут две динамические переменные: х(t) и v(t), начальные значения которых приравнивается к нулю. Открыть блок Язык программирования и записать описанную систему уравнений:
input p;
output x;

init x = 0, v = 0;

v' = (P*Ap-Cpr*x-Btr*v)/m;
x' = v;              
Здесь:
  • input P; – вход в блок (давление)
  • оutput x; – выход из блока
  • init x = 0, v = 0; – объявление динамических переменных и присвоение им начальных значений

Далее описаны уравнения, которые выполняются на каждом шаге моделирования. Записанные уравнения на языке программирования практически повторяет систему уравнений, где производные dx(t)/dt и dv(t)/dt обозначены как x’ и v’.

Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.

Настройка параметров расчета

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


Рис. 5. Рабочая область проекта с выделенной кнопкой "Параметры расчёта".
В появившемся окне параметров проекта установить значения следующих свойств:
  • "Минимальный шаг" – "0.001"
  • "Максимальный шаг" – "0.001"
  • "Конечное время расчета" – "10"

Закрыть окно Параметры проекта, при этом внесенные изменения будут сохранены автоматически.

Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.

Запуск моделирования и построение графика

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


Рис. 6. Окно проекта с выделенной кнопкой "Пуск".
После окончания процесса моделирования двойным нажатием левой кнопкой мыши по блоку Временной график открыть график. График должен выглядеть аналогично рисунку (Рис. 7). График отображает затухающий колебательный процесс за счет наличия силы трения.


Рис. 7. График колебательного процесса.

Результат расчета на рисунке (Рис. 7) показывает, что в момент возникновения давления на 1 секунде происходит быстрый разгон плунжера, из-за инерции движения плунжер проскакивает точку равновесия, пружина сжимается и возвращает поршень назад, возникают затухающие колебания за счет сопротивление трения.

Решение задачи по частям дает возможность проверить правильность физического моделирования путем постановки численного эксперимента. Например, если уменьшить коэффициент вязкого трения в 10 раз, то колебания должны затухать дольше. Для этого требуется изменить данный параметр в основном скрипте модели, установив значение параметра "Btr" равным "100". В параметрах проекта уменьшить шаг интегрирования, установив значения свойств:
  • "Минимальный шаг" – "0.0001"
  • "Максимальный шаг" – "0.0001"
Запустить проект на моделирование. В результате получится следующий график (Рис. 8):


Рис. 8. График колебательного процесса при Btr = 100.
Если увеличить массу плунжера в 10 раз, оставляя все остальные параметры заданными изначально, то колебания будут происходит с меньшей частотой, и время переходного процесса также увеличится. Для этого требуется вернуть в скрипте проекта значение "Btr = 1000" и установить значение "m" равным "1000". Запустить проект на моделирование, в результате получится следующий график (Рис. 9).


Рис. 9. График колебательного процесса при m = 1000.

Установить в скрипте проекта прежнюю массу плунжера равную 100 кг. Для этого требуется открыть скрипт проекта и изменить значение "m" на "100".

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

уравновешивается силой сжатой пружины:

где:
  • Pst – давление статическое
  • xst – перемещение поршня (сжатие пружины)

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


Рис. 10. Окно редактора блока "Язык программирования" с добавленными строками проверки конечного положения плунжера.
Если двойным нажатием левой кнопки мыши по линии связи, соединяющей блоки Язык программирования и Временной график, открыть окно просмотра значений на линии, то выходное значение будет совпадать с рассчитанным положением плунжера (Рис. 11).


Рис. 11. Рабочая область проекта с выведенным значением на линии связи.

Результаты моделирования совпадают со статическим расчетом (Рис. 10). Таким образом, модель выходит на правильные значения положения и при 150 бар, и при 250 бар.

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

Разработка модели камеры

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

где:
  • — скорость изменения давления
  • E — приведенный объемный модуль упругости рабочей жидкости
  • V — объем сжимаемой рабочей жидкости
  • Q — расход, поступающий в рабочую камеру

Это выражение выводится путем разнесения дифференциалов давления и объема по разные стороны знака равенства. Продифференцировав обе части по времени, из формулы определения объемного модуля упругости:

Давление будет меняться тем быстрее, чем выше модуль упругости рабочей жидкости E, и тем медленнее, чем больше объем этой жидкости V. Поэтому модуль упругости в числителе, а объем — в знаменателе. В скобках - алгебраическая сумма расходов. В данном случае расход осуществляется через дроссель Q и с учетом геометрического расхода, связанного с перемещением плунжера. Положительное значение расхода Q при прочих равных будет приводить к росту давления (положительная скорость изменения давления), а положительная скорость перемещения плунжера к падению давления. Поэтому расход через дроссель в уравнении со знаком "плюс", а геометрический расход со знаком "минус".

Объем камеры описывается следующей формулой:

где V0 — объем жидкости при нулевом положении x(t) поршня.

Влияние изменения объема жидкости незначительно, и для предотвращения возможных ошибок (например, в случае отрицательных значений x), рекомендуется принять постоянный объем, который равен половине разницы между объемами в конечном и начальном положениях.

Требуется разработать модель камеры и подключить ее к испытанной и проверенной модели плунжера. Для разработки модели камеры необходимо добавить в скрипт проекта две новые величины:
  • "V0" – начальный объем камеры
  • "Е = 13e8" – приведенный объемный модуль упругости
Для этого необходимо открыть скрипт ранее созданного проекта с моделью плунжера с пружиной и добавить строки, после чего скрипт будет выглядеть следующим образом:
const
m = 100,         // масса плунжера (кг)
d = 10e-3,       // диаметр плунжера (м)
Cpr = 200e3,     // жесткость пружины (Н/м)
Btr = 1000;      // коэффициент вязкого трения демпфера (Н/(м/с))
V0 = 20e-6,      //Начальный объем камеры (м^3)
E = 13e8;        // приведенный объемный модуль упругости (Па)
                    
Initialization
  Ap = pi*d^2/4; // площадь плунжера
end;        
Прим.:
знак ; переместился . Все константы разделены запятыми, секция заканчивается точкой с запятой.
Входными параметрами для расчета является расход жидкости Q, положение поршня x и скорость перемещения v исходя из представленного уравнения. Для моделирования камеры необходимо разместить на схеме проекта блок Язык программирования из вкладки Динамические. Двойным нажатием на установленный блок открыть окно скрипта блока. Записать в окна скрипта блока Язык программирования следующие уравнения (уравнение и уравнение).
input Q, x, v;
output p;

init p = 0;

Vk = V0 + Ap*x;
p' = (E/Vk)*(Q - Ap*v);           
Выходной сигнал скорости перемещения плунжера ранее установленного блока Язык программирования с моделью плунжера с пружиной должен поступать на вход блока Язык программирования с моделью камеры цилиндра. Для этого необходимо открыть скрипт блока Язык программирования с моделью плунжера и добавить следующую запись:
input p;
output x, v;

init x = 0, v = 0;
  
v' = (P*Ap-Cpr*x-Btr*v)/m;
x' = v;

Pst = 200e5;
x_st = Pst*Ap/Cpr;             
Соединить блоки на схеме и добавить к ним подписи согласно рисунку (Рис. 12).


Рис. 12. Рабочая область проекта с общей моделью цилиндра и камеры.

Теперь необходимо настроить источник расхода в камеру. На модель плунжера с пружиной подавалось давление 200е5 Па (200 бар) с помощью блока Ступенька. Теперь необходимо из блока с моделью плунжера подать такой расход, чтобы в камере сформировалось давление 200 бар. Если использовать блок Ступенька, то при его включении начнется подача постоянного расхода, который будет поддерживаться на протяжении всего времени моделирования. Однако, для достижения требуемого повышения давления необходимо подать расход в камеру только на определенное время, достаточное для создания давления в 200 бар, а затем прекратить подачу.

Поскольку неизвестно, сколько жидкости необходимо закачать для достижения требуемого давления в 200 бар, рекомендуется использовать блок Кусочно постоянная из вкладки Источники. В качестве примера работы с данным блоком требуется задать следующие свойства блока Кусочно постоянная (Рис. 13).


Рис. 13. Окно "Свойства" блока "Кусочно постоянная".
Свойство "Массив временных интервалов" блока Кусочно постоянная задает 3 временных интервала по 1 секунде. Свойство "Массив значений" устанавливает, что на первом интервале расход будет равен 0, на втором интервале расход 1, на следующем и до конца расчета расход будет равен 0. Таким образом, моделируется накачка камеры расходом 1 м3/c в течение одной секунды. Однако, такой расход будет создавать невозможное давление.
Изменить схему проекта, согласно рисунку (Рис. 14):
  • Заменить блок Ступенька на блок Кусочно постоянная
  • Добавить два блока Задержка на шаг интегрирования из вкладки Нелинейные для развязки алгебраической петли. Этот блок позволит во время моделирования брать значения с предыдущего шага, тем самым решая проблему алгебраической петли
  • Для блоков Задержка на шаг интегрирования повернуть порты на 180 градусов через контекстное меню блока
  • Активировать кнопку Показать значения на линиях связи для отображения всех текущих рассчитанных результатов моделирования, что позволит увидеть, какое давление создается для рассчитываемого объема жидкости


Рис. 14. Рабочая область проекта с установленным блоком "Кусочно постоянная" и выделенной кнопкой "Показать значения на линия связи".
Запустить проект на моделирование. Дождаться окончания процесса моделирования и открыть окно График блока Временной график. График должен выглядеть аналогично рисунку (Рис. 15).


Рис. 15. График результатов моделирования.
Результаты расчета показывают, что давление в камере установилось на уровне около 3.925е11 вместо необходимого 200е5 (200 бар) (Рис. 16)


Рис. 16. Рабочая область проекта с выделенным результатом давления в камере.
Путем подбора значения свойства "Массива значений" блока Кусочно постоянная определено, что для создания давления в 200 бар необходимый расход составляет примерно 9.29e-7 в течение 1 секунды, таким образом необходимо установить для свойства "Массива значений" блока Кусочно постоянная значение "[[0 , 9.29E-7 , 0]]".


Рис. 17. Рабочая область проекта с результатами моделирования при значение свойства "Массива значений" блока "Кусочно постоянная" равным "[[0 , 9.29E-7 , 0]]".
Открыть результаты моделирования, которые находятся в блоке Временной график, открыть свойства графика и установить следующие значения на вкладке Графики и оси:
  • Для оси X:
    • "Максимум" - "3"
    • "Шаг сетки" - "0.2"
    • "Автомасштаб" - деактивирован
  • Для оси Y:
    • "Максимум" - "0.01"
    • "Автомасштаб" - деактивирован
В результате должен получится следующий график (Рис. 18). На графике видно, что если расход подается равномерно в течение секунды, то на начальном этапе наблюдается рост с колебаниями, затем устанавливается практически равномерный процесс перемещения в течение секунды, пока подается расход в камеру. После этого происходит остановка с небольшими затухающими колебаниями после 2 секунд.


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

Сравнение моделей плунжера с камерой и без камеры

Теперь требуется сравнить ранее разработанную модель плунжера с пружиной и разработанную модель с камерой. Поскольку первая модель нагружалась ударной нагрузкой (ступенькой), для создания аналогичного импульса необходимо быстро подать в камеру объем, достаточный для создания такого же давления, но за более короткое время. Необходимо сократить время импульса примерно в 10 раз и увеличить расход в 10 раз. Для этого необходимо:
  • Сделать копию блока Язык программирования с подписью "Плунжер с пружиной"
  • Добавить блок Ступенька из вкладки Источники и установить для свойства "Конечное состояние" значение "200e5" и для свойства "Время срабатывания" равным "1"
  • Добавить второй вход в блок Временной график путем установки значения свойства "Количество входных портов" равным "2"
  • Установить свойство "Массив временных интервалов" для блока Кусочно постоянная равным "[[1 , 0.1 , 1]]" и уставить свойство "Массив значений" равным "[[0 , 9.28E-6 , 0]]", для того чтобы на вход камеры подавался расход импульсом длительностью 0.1 секунды, а конечное давление было около 200 бар
Соединить блоки линиями связи согласно рисунку (Рис. 19).


Рис. 19. Рабочая область проекта с моделью сравнения модели плунжера с камерой и без камеры.
Запустить проект на моделирование. Дождаться окончания процесса моделирования. Открыть результаты моделирования, которые находятся в блоке Временной график. Открыть свойства графика и установить следующие значения на вкладке Графики и оси:
  • Для оси X:
    • "Минимум" - "0.9"
    • "Максимум" - "2.5"
    • "Автомасштаб" - деактивирован
  • Графики:
    • Название графика "График 1" - "Камера + цилиндр"
    • Название графика "График 2" - Цилиндр
Результаты моделирования должны совпадать с результатами на рисунке (Рис. 20).


Рис. 20. Результаты моделирования со сравнением модели плунжера с камерой и без камеры.

На графике видно, что в течение 0.1 секунды, пока идет подача расхода в камеру, идет перемещение плунжера, которое потом затухает быстрее, чем без камеры (с мгновенным ростом давления). Видно, что положение плунжера примерно соответствует полученному при отдельном моделировании.

Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.

Разработка модели дросселя

Уравнение, описывающее расход через дроссель:

где:
  • f – площадь сечения дросселя
  • μ – коэффициент расхода
  • pn–давление нагнетания
  • p – давление в камере цилиндра

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

Таким образом, в скрипт проекта необходимо добавить коэффициент расхода μ равным "0.62", плотность рабочей жидкости ρ равным "850" кг/м3 и расчет проходного сечения дросселя, а также добавить строки:
const
    m = 100,         // масса плунжера (кг)
    d = 10e-3,       // диаметр плунжера (м)
    Cpr = 200e3,     // жесткость пружины (Н/м)
    Btr = 1000,      // коэффициент вязкого трения демпфера (Н/(м/с))
    V0 = 20e-6,      // начальный объем камеры (м^3)
    E = 13e8;        // Приведенный объемный модуль упругости (Па)             
    my = 0.62,     // коэффициент расхода
    ro = 850,        // плотность рабочей жидкости (кг/м^3)
    d_dr - 2e-4     //диаметр дросселя (м)
                    

Initialization
    Ap = pi*d^2/4;          // площадь плунжера
    f_dr = pi*d_dr^2/4;     // площадь сечения дросселя
end;                
Для моделирования дросселя необходимо разместить на схеме проекта блок Язык программирования из вкладки Динамические. Двойным нажатием на установленный блок, открыть окно скрипта блока. Записать в окна скрипта блока Язык программирования следующее уравнение согласно представленному скрипту. На вход блока вначале подается давление в камере "pk", затем давление нагнетания "pn".
input pk, pn;
output q;

q = (my*f_dr) * sqrt((2/ro)*(abs(pn - pk))) * sign(pn - pk);
Изменить схему модели, разместить и соединить блоки на схеме согласно рисунку (Рис. 21).:
  • Добавить блоку Язык программирования с моделью расхода через дроссель подпись Дроссель
  • Заменить блок Кусочно постоянная на ранее установленный блок Ступенька, который подает на вход системы давление 200 бар
  • Добавить блок Задержка на шаг интегрирования из вкладки Нелинейные и изменить отображение входных портов, повернув их на 180 градусов в контекстном меню блока
  • Удалить блок Язык программирования с подписью "Плунжер с пружиной"
  • Изменить количество входных портов блока Временной график, установив для свойства "Количество входных портов" значение "1"


Рис. 21. Рабочая область проекта с добавленной моделью расхода через дроссель.
Запустить проект на моделирование. Дождаться окончания процесса моделирования. Открыть свойства графика и установить следующие значения на вкладке Графики и оси:
  • Для оси X:
    • "Минимум" - "0.9"
    • "Максимум" - "2"
    • "Шаг сетки" - "0.1"
    • "Автомасштаб" - деактивирован
  • Для оси Y:
    • "Максимум" - "0.01"
    • "Автомасштаб" - деактивирован
  • Графики:
    • Название графика "Камера + цилиндр" - "График"
Результаты моделирования должны совпадать с результатами на рисунке (Рис. 22)


Рис. 22. График переходного процесса при увеличении давления нагнетания скачком с 0 до 200 бар.

Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.

Разработка модели с помощью стандартных блоков

Разработанную модель представленную в виде блоков Язык программирования возможно также представить в виде стандартных блоков, как это показано на рисунке (Рис. 23).


Рис. 23. Модель в виде схемы с использованием стандартных блоков.
Модель дросселя представляется в виде следующих блоков:
  • 1 блок Абсолютное значение из вкладки Операторы
  • 2 блока Усилитель из вкладки Операторы
  • 1 блок Корень квадратный из вкладки Функции
  • 1 блок Знак из вкладки Операторы
  • 1 блок Перемножитель из вкладки Операторы

В соответствии с уравнением для блоков Усилитель необходимо в свойствах указать в поле "Формула" значение свойства "Коэффициент усиления" равным "2/ro" и "my*f_dr".

Модель камеры цилиндра представляется в виде следующих блоков:
  • 1 блок Сумматор из вкладки Операторы
  • 1 блок Делитель из вкладки Операторы
  • 1 блок Линейная функция из вкладки Функции
  • 1 блок Интегратор из вкладки Динамические
  • 1 блок Усилитель из вкладки Операторы
В соответствии с уравнением для блока:
  • Сумматор необходимо в свойствах указать значение свойства "Весовые множители для каждого из входов" равным "[-1 , 1]"
  • Интегратор необходимо в свойствах указать в поле "Формула" значение свойства "Коэффициент усиления" равным "E"
  • Линейная функция необходимо в свойствах указать в поле "Формула" значение свойства "Свободный член, в формуле a+b·x" равным "V0" и значение свойства "Коэффициент при x" равным "Ap"
  • Усилитель необходимо в свойствах указать в поле "Формула" значение свойства "Коэффициент усиления" равным "Ap"
Модель плунжера с пружиной представляется в виде следующих блоков:
  • 3 блока Усилитель из вкладки Операторы
  • 1 блок Сумматор из вкладки Операторы
  • 2 блока Интегратор из вкладки Динамические
В соответствии с уравнением для блока:
  • Усилитель необходимо в свойствах указать в поле "Формула" значение свойства "Коэффициент усиления" равным "Ap", "Btr" и "Cpr" соответственно
  • Сумматор необходимо в свойствах указать значение свойства "Весовые множители для каждого из входов" равным "[1 , -1 , -1]"
  • Интегратор оставить свойства по умолчанию
Преимущества схемы – это наглядность и возможность видеть значения на каждой линии связи во время моделирования. Однако, для блока Язык программирования есть функция Посмотреть все, которая отображает все рассчитанные значения выполненные при моделировании Рис. 24.


Рис. 24. Отладка программы в блоке "Язык программирования".

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

Разработка принципиальной схемы модели

Принципиальная схема состоит из элементов, где каждый элемент этой схемы - это устройство, которое описывается паспортными данными завода-изготовителя. В принципиальной схеме модели должно быть 3 элемента:
  1. Источник давления
  2. Дроссель
  3. Гидроцилиндр

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

Для преобразования расчетной схемы в принципиальную необходимо использовать блок Субмодель из вкладки Субструктуры. В разработанном проекте со схемой модели гидропривода добавить два блока Субмодель из вкладки Субструктуры и добавить к ним подписи "Гидроцилиндр" и Дроссель.

Добавить для блока Субмодель с подписью "Гидроцилиндр" свойства и параметры, относящиеся к гидроцилиндру. Для этого необходимо выделить блок Субмодель с подписью "Гидроцилиндр", открыть контекстное меню блока и выбрать пункт Изменить блок для открытия окна редактирования блока. В открывшемся окне редактора блока добавить, с помощью кнопки Добавить свойство, которая выделена на рисунке (Рис. 25) следующие свойства и задать им параметры согласно рисунку (Рис. 25):
  • "Масса плунжера, кг" - "100"
  • "Диаметр плунжера, м" - "10e-3"
  • "Жесткость пружины, Н/м" - "200e3"
  • "Коэффициент вязкого трения демпфера, Н/(м/с)" - "1000"
  • "Начальный объем камеры, м^3" - "20e-6"
  • "Приведенный объемный модуль упругости, Па" - "13e8"


Рис. 25. Окно редактирования блока "Субмодель" с подписью "Гидроцилиндр" с добавленными свойствами.
В окне редактирования блока перейти на вкладку Параметры для добавления параметров, которыми блок будет оперировать. Добавить с помощью кнопки Добавить параметр, которая выделена на рисунке (Рис. 26), следующие параметры и присвоить им параметры согласно рисунку (Рис. 26):
  • "Текущий объем камеры"
  • "Давление в камере"
  • "Положение плунжера"
  • "Скорость плунжера"
  • "Площадь сечения плунжера"


Рис. 26. Окно редактирования блока "Субмодель" с подписью "Гидроцилиндр" с добавленными параметрами.
Войти в блок Субмодель с подписью "Гидроцилиндр" двойным нажатием по блоку. Разместить внутри субмодели следующие блоки:
  • Ранее подготовленные блоки Язык программирования с подписью "Камера цилиндра" и "Плунжер с пружиной"
  • Ранее размещенные два блока Задержка на шаг интегрирования в обратной связи блока Язык программирования с подписью "Камера цилиндра"
  • 1 блок Порт входа и 1 блок Порт выхода из вкладки Субструктуры
  • 1 блок Двунаправленная шина (выход) из вкладки Субструктуры
Изменить имя выходного порта, для этого необходимо двойным нажатием по блоку Порт выхода открыть окно Порт субмодели и переименовать имя порта субмодели из "out" в "Х", который отвечает за положением плунжера. Добавить подпись "Положение" для блока Порт выхода. Разместить и соединить линиями связи блоки, согласно рисунку (Рис. 27).


Рис. 27. Рабочая область субмодели "Гидроцилиндр".
Выйти из субмодели с подписью "Гидроцилиндр" и войти в блок Субмодель с подписью Дроссель двойным нажатием по блоку. Разместить внутри субмодели следующие блоки:
  • Ранее подготовленные блоки Язык программирования с подписью Дроссель
  • Ранее размещенный блока Задержка на шаг интегрирования в контуре блока Язык программирования с подписью Дроссель
  • 1 блок Порт входа и 1 блок Порт выхода из вкладки Субструктуры
  • 1 блок Двунаправленная шина (вход) из вкладки Субструктуры
Изменить имя входного порта, для этого необходимо двойным нажатием по блоку Порт входа открыть окно Порт субмодели и переименовать имя порта субмодели из "in" в "P", который отвечает за входное давление. Разместить и соединить линиями связи блоки согласно рисунку (Рис. 28). Дроссель соединен с входом и выходом таким образом, чтобы он забирал давление из шины через контакт "B" и передавал расход через контакт "А".


Рис. 28. Рабочая область субмодели "Дроссель".

Блоки Двунаправленная шина (вход)/Двунаправленная шина (выход) позволяют объединить две или более линии связи с разными направлениями в одну "шину" для моделей, где двунаправленная связь определена однозначно. Дроссель рассчитывает расход и передает его в камеру через контакт "А", но для расчета ему необходимо давление в камере. Поэтому через контакт "B" на вход поступает расход и передается на дроссель, при этом на схеме используется одна линия связи.

Выйти из субмодели с подписью Дроссель. Добавить для блока Субмодель с подписью Дроссель свойства и параметры, относящиеся к дросселю. Для этого необходимо открыть окне редактора блока Субмодель с подписью Дроссель и добавить следующие свойства и задать им значения согласно рисунку (Рис. 29):
  • "Коэффициент расхода" - "0.62"
  • "Плотность рабочей жидкости, кг/м^3" - "850"
  • "Диаметр дросселя, м" - "d_dr"


Рис. 29. Окно редактирования блока "Субмодель" с подписью "Дроссель" с добавленными свойствами.
В окне редактирования блока перейти на вкладку Параметры для добавления параметров, которыми блок будет оперировать. Добавить параметр площади проходного сечения и присвоить ему значения согласно рисунку (Рис. 30)


Рис. 30. Окно редактирования блока "Субмодель" с подписью "Дроссель" с добавленным параметром.
Поскольку свойства перенесены в блоки, то расчет промежуточных переменных необходимо также перенести в соответствующие внутренние скрипты блоков. Расчет площади дросселя, который производился в скрипте проекта, необходимо перенести в скрипт блока Субмодель с подписью Дроссель. Для этого необходимо войти в субмодель Дроссель и открыть окно скрипта субмодели нажатием на кнопку Скрипт. В окне скрипта разместить следующие строки:
Initialization
    f_dr = pi*d_dr*2/4; // площадь сечения дросселя
end;
Аналогичным образом разместить расчет площади плунжера из скрипта проекта в скрипт субмодели "Гидроцилиндр".
Выйти в рабочую область проекта. Добавить на схему копию блока Ступенька, размещенного ранее для подачи давления в дроссель. Добавить подписи к блокам, а также разместить и соединить блоки согласно рисунку (Рис. 31).


Рис. 31. Рабочая область проекта с расчетной и принципиальной схемой модели.

Запуск моделирования и построение графика

При разработке блоков для принципиальной схемы использовались те же имена параметров, что и в скрипте проекта. Однако для блоков принципиальной схемы эти параметры теперь локальные, в то время как глобальные константы, заданные в скрипте проекта, остались неизменными. Теперь есть возможность задавать другие значения в свойствах блоков принципиальной схемы. Например, если изменить формулу для свойства "Диаметр плунжера, м" в блоке Субмодель с подписью "Гидроцилиндр" с "10e-3" на "d/2" с использованием глобальной константы, то после запуска проекта на моделирование диаметр уменьшится в два раза, а перемещении будет в 4 раза меньше (пропорционально квадрату диаметра) (Рис. 32).


Рис. 32. Результаты моделирования при уменьшении диаметра плунжера в 2 раза.

Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.

Решение задачи прямым программированием в SimInTech

Было рассмотрено 3 способа моделирования:
  • Моделирование через блоки Язык программирования
  • Моделирование через стандартные блоки SimInTech
  • Моделирование с использование блоков Субмодель

Рассмотренные способы моделирования используют готовые методы интегрирования, предоставляемые SimInTech. Однако, если есть необходимость интегрировать вручную, SimInTech предлагает широкий выбор численных методов для решения подобных дифференциальных уравнений. Самый простой из них — метод Эйлера. Суть этого метода заключается в том, что сначала производная представляется не как предел отношения приращения функции к приращению ее аргумента, а как отношение разностей (то есть переход к конечным разностям). Например, для первого уравнения системы:

уравнение преобразуется в уравнение вида:

где vi+1 и vi – скорости в моменты времени ti+1 и ti . Тогда решение становится простым: зная параметр в один момент времени, есть возможность рассчитать, каким он будет через промежуток времени Δt:

Видно, что в этом уравнении в правой части только известные величины. Аналогичным образом необходимо преобразовать остальные уравнения системы. Упрощенно: система уравнений в форме Коши - слева стоят производные (скорости изменения величин), справа - формулы для их вычисления. Чтобы решить систему методом Эйлера, необходимо знать начальное состояние Х10 ... XN0.

Поскольку известны начальные состояния Х10 ... XN0, то из системы в форме Коши есть возможность рассчитать скорости изменений всех величин V10 ... VN0 в начальный момент времени. И если выбирать шаг Δt таким маленьким, чтобы все скорости в системе не менялись в течение шага интегрирования, то тогда любая величина на следующем шаге будет равна времени умноженному на скорость изменений: Х11 = Х10 + V10 × Δt.

Таким образом, получатся новые значения Х11 .. XN1, и тогда из уравнений Коши получатся, в том числе, новые значения скорости. В результате, выполняя такие шаги, есть возможность рассчитать весь процесс.

Проведение расчетов методом Эйлера

Для расчета возможно использование цикла, написанного на языке C++ или Delphi. В данной лабораторной работе расчет будет производите в блоке Язык программирования.

Создать новый проект и разместить в нем блок Язык программирования. Открыть скрипт блока Язык программирования и создать в нем константы и переменные, необходимые для расчета, как показано в скрипте, при этом блок не будет иметь входов, а только выход. Расчет площади сечений будет происходить в секции инициализации, которая выполняется один раз после запуска проекта на моделирование, для возможности отладки скрипта, не запуская главное окно программы. В начале объявляются вектора, которые будут хранить результаты и присваиваются значения для нулевого шага. Далее выполняется цикл расчета.
Прим.:
уравнения в форме Коши записываются без изменений, исключая штрих, который был записан при создании блоков в первой части.
output y;

const
  m = 100,                    // масса плунжера (кг)
  d = 10e-3,                  // диаметр плунжера (м)
  Cpr = 200e3,                // жесткость пружины (Н/м)
  Btr = 1000,                 // коэффициент вязкого трения демпфера (Н/(м/с))
  V0 = 20e-6,                 // начальный объем камеры (м^3)
  E = 13e8,                   // приведенный объемный модуль упругости (Па)
  my = 0.62,                  // коэффициент расхода
  ro = 850,                   // плотность рабочей жидкости (кг/м*3)
  d_dr = 2e-4,                // диаметр дросселя (м)
  dt = Зе-3,                  // шаг интегрирования
  t_end = 2,                  // конечное время
  x0 = 0,                     // начальное положение
  v_0 = 0,                    // начальная скорость
  Pn = 200e5,                // давление в нагнетателе
  P0= 0;                      // начальное давление
var P_old, v_old;            // переменные для хранения скорости давления
                
initialization
  N = trunc(t_end/dt);         // определение количества точек
  T = vector1(N);             // создание вектора точек по времени
  X = vector1(N);             // создание вектора результатов
  Ap = pi*d^2/4;              // расчет площади плунжера
  f_dr = pi*d_dr^2/4;         // расчет площади сечения дросселя
  T[1] = 0;                   // первое значение в векторе времени
  X[1] = x0;                  // первое значение в векторе перемещения
  P_old = P0;                 // давление в начале расчета
  v_old = v_0;                // скорость в начале расчета
                
  for (i = 2, N)            // Повторять n раз, начиная со второй точки
  begin
        //Расчет расхода по предыдущему состоянию по давления P_old
        Q = (my*f_dr) * sqrt((2/ro)*(abs(Pn - P_old))) * sign(Pn - P_old);  
        Vk = V0 + Ap*X[i-1];                                                //Расчет объема камеры на предыдущем шаге
        dP = (E/Vk)*(Q - Ap*v_old);                                         //Расчет скорости изменение давления
        P_new = P_old + dP*dt;                                              //Расчет давления
        a_new =(P_new*Ap - Cpr*X[i-1]- Btr*v_old)/m;                        //Расчет ускорения
        v_new = v_old + a_new*dt;                                           //Расчет скорость для шага
        //Расчет положения плунжера по времени и сохранение в массивы
        X[i] = X[i-1] + v_new* dt;
        T[i] = T[i-1] + dt;
        //Обновить скорость и давление для следущего шага
        v_old = v_new;
        P_old = P_new;
  end;
end;               

В результате выполнения цикла инициализации на выходе два вектора: вектор T – вектор времен, вектор Х – вектор положения штока. Задача решена – для любого значения времени есть положение штока.

Для сравнения результатов расчета методом Эйлера с результатами предыдущих способов моделирования необходимо добавить после секции инициализации следующие строки, которые обозначают, что на каждом шаге моделирования на выходе блока появляются значения, рассчитанные функцией интерполяции. При этом скачок в ранее построенных моделях рассчитан с нулевого времени, в текущем расчете для сравнения используется скачок на 1 секунде расчета.
if time < 1 then y = 0
    else y = interpol(T, X, time-1);
Запустить проект на моделирование. В SimInTech есть возможность запускать и отлаживать программу непосредственно в окне редактирования скрипта, и просматривать все значения переменных через меню Расчёт, нажатием на кнопку Посмотреть все, а также просматривать результаты расчета в виде графиков через меню Расчёт, нажатием на кнопку Построить зависимость (Рис. 33).


Рис. 33. Окно редактора блока "Язык программирования" с выделенными кнопками.
Для построения зависимости положения плунжера во времени необходимо нажать на меню Расчёт и выбрать кнопку Построить зависимость. Откроется окно Построение зависимости, где необходимо в поле "Имена массивов абсцисс" указать "T", в поле "Имена массивов ординат" указать "X". Подтвердить нажатием на кнопку Ok (Рис. 34)


Рис. 34. Окно "Построение зависимости".
Откроется окно График с построенной зависимостью положения плунжера во времени (Рис. 35).


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

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

Перед тем, как приступать к выполнению следующего пункта лабораторной работы, необходимо сохранить проект.

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

При написании математической модели необходимо учитывать насколько подробно необходимо описать каждый элемент системы.

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

Если подробно остановиться на двух факторах: учет массы плунжера и сжимаемость жидкости, то тогда также нужно учесть и гравитацию Луны, и силу ветра в помещении. Однако, на практике инерция и сжимаемость жидкости не всегда оказывают значительное влияние на процесс перемещения плунжера. Например, при применении силы более 150 кГс и отсутствии пружины, учет массы плунжера необходим только в том случае, если она сравнима с этой силой. Учет массы в 100 г усложнит расчеты, но не повысит точность. То же самое относится и к давлению в системе, если оно не превышает 2–5 бар.

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

Структурная схема:


Рис. 36. Структурная схема.
В разработанную раннее модель необходимо внести изменения, поскольку необходимо рассмотреть не только перемещение X, но и давление жидкости P в рабочей камере. Ведь эффект сжимаемости проявляется не в мгновенном росте давления. Для этого необходимо открыть модель гидроцилиндра и добавить в блок Порт выхода еще один выходной сигнал P и соединить блоки линиями связи согласно рисунку (Рис. 37)


Рис. 37. Модель гидроцилиндра с добавленным выходным сигналом P.
Добавить еще один входной порт для блока Временной график, соединить выходной сигнал блока Субмодель с подписью "Гидроцилиндр" с появившемся входным портом блока Временной график. Запустить проект на моделирование. Дождаться окончания процесса моделирования. Открыть результаты моделирования, которые находятся в блоке Временной график. Открыть свойства графика и установить следующие значения на вкладке Графики и оси:
  • Для оси X для графика "График 2" и График:
    • "Минимум" - "0.9"
    • "Максимум" - "2"
    • "Шаг сетки" - "0.1"
    • "Автомасштаб" - деактивирован
  • Для оси Y для графика "График 2":
    • "Максимум" - "0.01"
    • "Автомасштаб" - деактивирован
  • Графики:
    • Название графика "График 2" - "Перемещение"
    • Название графика "График" - "Давление"
Закрыть окно свойств графика и открыть контекстное меню окна График, активировать многошкальный режим и разделить шкалы по высоте. Результаты моделирования должны совпадать с результатами на рисунке (Рис. 38)


Рис. 38. Результат переходного процесса плунжера.

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

Теоретически, в уравнение возможно подставить уравнение расхода через дроссель, перенести геометрический расход вправо и возвести все в квадрат, поскольку в системе присутствует всего два расхода. Таким образом, получится уравнение, которое позволяет определить давление через скорость поршня. Если бы был еще один дроссель (например, на сливе), то требовалось бы возводить в квадрат дважды, при трех дросселях — трижды и так далее. Таким образом, если в дальнейшем постоянно выражать давление через расход, то в конечном итоге есть возможность столкнуться с невозможностью найти аналитическое решение для подобной задачи. Поэтому даже этот простой пример в SimInTech будет рассчитываться численно.

Таким образом, вместо блока Интегратор с подписью "E", который определяет давление путем интегрирования, требуется установить блок Нелинейное уравнение F(y) = 0 из вкладки Операторы для численного решения алгебраических уравнений. Работа блока заключается в использовании численного итерационного метода для постепенного изменения выходного значения, пока не будет достигнуто нулевое значение функции с заданной точностью. Иными словами, на каждом шаге решения блок будет изменять давление, пока сумма расходов не станет равной нулю с заданной точностью. Тогда структурная схема будет выглядеть так, как показано на рисунке (Рис. 39):


Рис. 39. Схема расчета без учета сжимаемости.
Поскольку до 1 секунды процесса сигналы равны 0, то свойство "Начальное приближение" блока Нелинейное уравнение F(y) = 0 устанавливается равным 0. Перед запуском проекта на моделирование необходимо настроить параметры проекта. Требуется установить параметр "Метод интегрирования" равным "Мерсона (модифицированный)", который был установлен эмпирическим путем.
Прим.:
более подробную информацию о методах решения обыкновенных дифференциальных уравнений (ОДУ) и дифференциально-алгебраических уравнений (ДАУ) представлена в разделе Методы решения обыкновенных дифференциальных и дифференциально-алгебраических уравнений в SimInTech.


Рис. 40. Окно "Параметры проекта".
Если запустить проект на моделирование, то получатся следующие результаты (Рис. 41), при этом в окне сообщений появятся три предупреждения, что заданная точность не обеспечивается.


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

Из результатов видно, что колебания, которые были связаны не только с инерцией плунжера, но и со сжимаемостью жидкости, исчезли. Однако, на 1 секундах расчета давление резко возросло до 200 бар, затем постепенно увеличилось до 200 бар. Такое давление должен компенсировать установленный дроссель, однако блок Нелинейное уравнение F(y) = 0 определил, что в момент резкого возрастания давление в камере должно быть равно давлению нагнетания, а затем оно уменьшается сразу после начала движения поршня.

Если не учитывать влияние инерции, то скорость перемещения поршня v будет полностью определяться расходом, поступающим в полость:

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

Таким образом, необходимо удалить следующие блоки:
  • блок Сумматор с тремя входами
  • блок Нелинейное уравнение F(y) = 0
  • блок Интегратор
И разместить блок Задержка на шаг интегрирования из вкладки Нелинейные для развязки алгебраической петли. Для блоков Усилитель, размещенных в группе "Камера цилиндра" и "Плунжер с пружиной", с подписями "Ap" установить свойство "Коэффициент усиления" равным "1/Ap". Блок Сумматор необходимо зеркально отразить с помощью контекстного меню кнопки "Зеркальное отражение" и изменить значение свойства "Весовые множители для каждого из входов" на "[1 , 1]", а порты блока Задержка на шаг интегрирования повернуть на 180 градусов. Разместить и соединить блоки линиями связи согласно рисунку (Рис. 42)


Рис. 42. Структурная схема без сжимаемости и инерции.
Перед запуском проекта на моделирование необходимо настроить параметры проекта. Требуется установить параметр "Метод интегрирования" равным "Эйлера" для увеличения скорости расчета. Запустить проект на моделирование. Дождаться окончания процесса моделирования. Открыть свойства графика и установить следующие значения на вкладке Графики и оси:
  • Для оси X:
    • "Минимум" - "0.95"
    • "Максимум" - "2"
    • "Автомасштаб" - деактивирован
  • Для оси Y:
    • "Максимум" - "0.01"
    • "Автомасштаб" - деактивирован
Закрыть окно свойств графика и открыть контекстное меню окна График, активировать многошкальный режим и разделить шкалы по высоте. Результаты моделирования должны совпадать с результатами на рисунке (Рис. 43)


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

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

Результаты сравнения моделирования при разных допущениях (Рис. 44, Рис. 45):


Рис. 44. Результаты сравнения перемещения.


Рис. 45. Результаты сравнения давления.
Если сравнить вычислительную трудоемкость расчетов при разных допущениях, то показатели следующие:
Параметр С учетом сжимаемости и инерции Без учета сжимаемости Без учета сжимаемости и инерции
Метод интегрирования Эйлера Эйлера Мерсона (модифицированный)
Минимальный шаг 0.0001 0.0001 0.0001
Максимальный шаг 0.0001 0.0001 0.0001
Максимально возможное ускорение 9.712 раз 39.89 раз 3.677 раз
Число шагов 100000 100000 100000

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

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

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

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

Разработка моделей собственными блоками в SimInTech по известным уравнениям было рассмотрено в разделе (Моделирование гидропривода). Теперь требуется разработать модель из уже готовых блоков в SimInTech. В SimInTech есть библиотека Гидросистемы. В ней уже содержатся готовые элементы, в которых подготовлены порты для соединения элементов в принципиальные гидравлические схемы. В SimInTech есть так же библиотека Механика, где содержатся элементы для моделирования механических систем.

Требуется создать новый проект Схема ГПС и разместить в нем следующие блоки:
  • Из вкладки Гидросистемы:
    • 1 блок Гидравлический бак из подгруппы Базовые блоки
    • 1 блок Гидравлический регулируемый дроссель из подгруппы Дроссели группы Гидроаппараты
    • 1 блок Плунжерный гидроцилиндр из подгруппы Гидравлические машины
  • Из вкладки Механика из подгруппы Элементы поступательного движения:
    • 2 блока Поступательная заделка
    • 1 блок Масса
    • 1 блок Поступательный демпфер
    • 1 блок Поступательная пружина
  • Из вкладки Механика из подгруппы Механические датчики блок Датчик поступательного движения
  • 1 блок Ступенька из вкладки Источники
  • 1 блок Блок записи свойств из вкладки Субструктуры
  • 1 блок Временной график из вкладки Вывод данных
Блоки Поступательный демпфер, Поступательная пружина и Датчик поступательного движения повернуть на 180 градусов. Разместить и соединить блоки линиями связи согласно рисунку (Рис. 46):


Рис. 46. Рабочая область проекта с использованием блоков библиотек "Гидросистемы" и "Механика".
Особенностью данной схемы является то, что изображенные на ней линии связи имеют различное значение:
  • Линии связи между блоками Гидравлический бак и Гидравлический регулируемый дроссель – это каналы течения жидкости (гидравлическая связь)
  • Линия связи между блоками Поступательная пружина и Поступательная заделка – это линия механической связи
  • Линия связи между блоками Ступенька и Блок записи свойств – это математическая линия связи для передачи данных

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

Поскольку блок Гидравлический бак не имеет входных портов, на который нужно подать ступенчатый сигнал от блока Ступенька для имитации скачка давления, поэтому необходим блок Блок записи свойств, который будет принимать сигнал от блока Ступенька и передавать в свойства блока Гидравлический бак. Необходимо создать ступенчатый сигнал в блоке Ступенька, для этого задать следующие свойства:
  • "Время срабатывания" - "1"
  • "Начальное состояние" - "0"
  • "Конечное состояние" - "20".

После задания ступенчатого сигнала необходимо связать свойства блока Гидравлический бак и Блок записи свойств. В свойствах блока Блок записи свойств для свойства "Имя свойства" задать значение "p_src". Теперь выходное значение блока Ступенька записывается в свойство "Давление, МПа" блока Гидравлический бак .

Для оставшихся блоков также следует задать свойства.

Для блока Гидравлический регулируемый дроссель задать для свойства "Диаметр отверстия, м" значение "d_dr".

Для блока Плунжерный гидроцилиндр задать следующие свойства:
  • "Диаметр цилиндра, мм" = "sqrt((V0-self.Vdead)*4/pi/self.Stroke_max+(self.d_r*1e-3)^2)*1e3"
  • "Диаметр плунжера, мм" = "d*10^3"
  • "Максимальный ход плунжера, м" = "0.05"
  • "Мертвый объем, м³" - "5e-6"
Для блока Масса задать следующие свойства:
  • "Масса, кг" = "m"
  • "Начальная скорость, м/с" = "1"

Для блока Поступательный демпфер задать для свойства "Коэффициент демпфирования, Н·с/м" значение "Btr".

Для блока Поступательная пружина задать для свойства "Коэффициент жесткости, Н/м" значение "Cpr".

Поскольку плотность рабочей жидкости задать в блоках Гидросистемы нет возможности, то выбирается наиболее близкая среда АМГ-10, плотность которой равна 835,6 кг/м3. Для этого необходимо открыть Параметры проекта и в подгруппе "Свойства рабочей жидкости" выбрать значение "Авиационная жидкость AeroShell Fluid 41 - аналог АМГ-10".

Запуск моделирования и построение графика

Запустить проект на моделирование и дождаться окончания расчета. Открыть окно графика. Открыть свойства графика и установить следующие значения:
  • на вкладке Графики и оси для оси X:
    • "Минимум" - "0.9"
    • "Максимум" - "2"
    • "Автомасштаб" - деактивирован
  • для оси Y:
    • "Максимум" - "0.01"
    • "Автомасштаб" - деактивирован
  • на вкладке Общие:
    • название графика "Деформация пружины, м"
    • "Показывать легенду" - деактивирован


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

Сравнение методов моделирования

Теперь необходимо дополнить проект моделью гидропривода, построенного ранее при помощи блоков Язык программирования для сравнения расчетов. Разместить и соединить блоки линиями связи согласно рисунку (Рис. 48):


Рис. 48. Рабочая область проекта с моделью сравнения методов расчета.
Запустить проект на моделирование. Дождаться окончания процесса моделирования. Открыть результаты моделирования, которые находятся в блоке Временной график открыть свойства графика и установить на вкладке Графики и оси названия графиков "Блоки на языке программирования" и "Блоки библиотеки ГС" соответственно.


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

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

Заключение

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