Гидравлический привод с замкнутым контуром

Автор
avatar-azasentaazasenta
Notebook

Гидравлический привод с замкнутым контуром

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

novoe_izobrazhenie.png

Определение функции для загрузки и запуска модели

In [ ]:
function start_model_engee()
    try
        engee.close("ClosedHydraulicCurcuit", force=true) # закрытие модели 
        catch err # в случае, если нет модели, которую нужно закрыть и engee.close() не выполняется, то будет выполнена её загрузка после catch
            m = engee.load("$(@__DIR__)/ClosedHydraulicCurcuit.engee") # загрузка модели
    end;

    try
        engee.run(m) # запуск модели
        catch err # в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catch
            m = engee.load("$(@__DIR__)/ClosedHydraulicCurcuit.engee") # загрузка модели
            engee.run(m) # запуск модели
    end
end
Out[0]:
start_model_engee (generic function with 1 method)

Симуляция модели

In [ ]:
try
    start_model_engee() # запуск симуляции с помощью специальной функции, реализованной выше
    catch err
end;
In [ ]:
simout
Out[0]:
SimulationResult(
    "ClosedHydraulicCurcuit/Положение_поршня" => WorkspaceArray("ClosedHydraulicCurcuit/Положение_поршня"),
    "ClosedHydraulicCurcuit/Заданное_положение" => WorkspaceArray("ClosedHydraulicCurcuit/Заданное_положение")
)

Визуализация результатов моделирования

In [ ]:
res = collect(simout)
Положение_поршня = collect(res[1])
Заданное_положение = collect(res[2])
Out[0]:
10001×2 DataFrame
9976 rows omitted
Rowtimevalue
Float64Float64
10.0-0.14
20.01-0.14
30.02-0.14
40.03-0.14
50.04-0.14
60.05-0.14
70.06-0.14
80.07-0.14
90.08-0.14
100.09-0.14
110.1-0.14
120.11-0.14
130.12-0.14
999099.89-0.14
999199.9-0.14
999299.91-0.14
999399.92-0.14
999499.93-0.14
999599.94-0.14
999699.95-0.14
999799.96-0.14
999899.97-0.14
999999.98-0.14
1000099.99-0.14
10001100.0-0.14
In [ ]:
using Plots
In [ ]:
plot(Заданное_положение[:,1],Заданное_положение[:,2], label="Заданное положение", linewidth=2, title="Заданное и текущее положения поршня")
plot!(Положение_поршня[:,1], Положение_поршня[:,2], label="Положение поршня", linewidth=2, ylabel="Положение, [м]", xlabel="Время, [с]")
Out[0]:

Заключение

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