Система автоматического регулирования уровня жидкости
Моделирование системы автоматического регулирования уровня жидкости в резервуаре
В данном примере демонстрируется модель системы регулирования уровня жидкости в резервуаре, построенная на основе физических компонентов.
Модель представляет собой замкнутый контур управления, где жидкость поступает в резервуар через управляемый насос, а вытекает через выходное отверстие, характеризуемое гидравлическим сопротивлением. Датчик уровня непрерывно измеряет текущую высоту столба жидкости в резервуаре и передает этот сигнал в блок управления.
Схема модели:
Определение функции для загрузки и запуска модели:
function start_model_engee()
try
engee.close("liquid_level_control_system", force=true) # закрытие модели
catch err # в случае, если нет модели, которую нужно закрыть и engee.close() не выполняется, то будет выполнена её загрузка после catch
m = engee.load("$(@__DIR__)/liquid_level_control_system.engee") # загрузка модели
end;
try
engee.run(m) # запуск модели
catch err # в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catch
m = engee.load("$(@__DIR__)/liquid_level_control_system.engee") # загрузка модели
engee.run(m) # запуск модели
end
end
Запуск симуляции
start_model_engee();
Выделение из переменной simout сигналов уровня жидкости и уставки:
result = simout;
res = collect(result);
Запись сигналов в переменные:
level = collect(res[15])
sin_sig = collect(res[24]);
tank_mfr = collect(res[11])
pump_mfr = collect(res[25]);
Визуализация результатов моделирования
График уровня жидкости и сигнал уставки:
using Plots
gr()
plot(sin_sig[:,1], sin_sig[:,2], label="Задатчик уровня жидкости", linewidth=3, xlabel="Время, с", ylabel="Уровень жидкости, м")
plot!(level[:,1], level[:,2], label="Уровень жидкости в баке", linewidth=3, linestyle=:dash)
График массового расхода жидкости проходящей через насос и через выходное отверстие бака:
plot(tank_mfr[:,1], tank_mfr[:,2], label="Сток из бака", linewidth=3, xlabel="Время, с", ylabel="Массовый расход, кг/с")
plot!(pump_mfr[:,1], pump_mfr[:,2], label="Массовый расход подачи", linewidth=3, linestyle=:dash)
Выводы:
В данном примере было продемонстрировано моделирование системы автоматического регулирования уровня жидкости в резервуаре, такие модели могут использоваться для оптимизации широкого спектра процессов, начиная с наполнения водонапорной башни и заканчивая сложными процессами в химической промышленности.