Моделирование процесса перекачки нефти | Статья в сборнике международной научной конференции

Отправьте статью сегодня! Журнал выйдет 11 мая, печатный экземпляр отправим 15 мая.

Опубликовать статью в журнале

Библиографическое описание:

Сергиенко, Е. В. Моделирование процесса перекачки нефти / Е. В. Сергиенко, П. С. Рудных. — Текст : непосредственный // Исследования молодых ученых : материалы L Междунар. науч. конф. (г. Казань, декабрь 2022 г.). — Казань : Молодой ученый, 2022. — С. 1-14. — URL: https://moluch.ru/conf/stud/archive/470/17662/ (дата обращения: 29.04.2024).



В статье описаны этапы моделирования, а также стек технологий (C#, ASP.NET Core, Blender, Unity), позволяющий смоделировать процесс перекачки нефти.

Ключевые слова: программирование, C#, 3D-моделирование, Unity

Моделирование, как метод познания, состоит из создания и исследования моделей. Компьютерное моделирование основано на системе математических соотношений (формул, уравнений, неравенств и знаковых логических выражений), отображающих существенные свойства изучаемого объекта или явления, а также на использовании технических средств, обладающих высоким быстродействием [3].

Основными этапами моделирования являются:

1) постановка задачи: на данном этапе происходит формулировка задачи, определение цели и приоритетов моделирования, сбор информации о системе, объекте моделирования, описание данных (их структуры, диапазона, источника и т. д.);

2) разработка модели, анализ и исследование задачи: анализ технических средств моделирования, анализ программного обеспечения, разработка входных и выходных спецификаций, форм представления данных, запись алгоритма на выбранном языке программирования (или в прикладной среде);

3) компьютерный эксперимент: отладка синтаксиса, семантики и логической структуры, тестовые расчеты и анализ результатов тестирования, оптимизация программы;

4) анализ результатов моделирования.

Цель работы: разработка программного обеспечения для демонстрации перекачки нефти из резервуара 1 в резервуар 2.

1 Постановка задачи.

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

Требования к составу функций программного обеспечения:

— возможность выполнения пользователем следующего алгоритма: открыть задвижку 1, запустить насос, открыть задвижку 2, при наполнении РВС 2 закрыть задвижку 2, остановить насос;

— демонстрация у РВС 1 индикатора уровня, понижающегося при перекачке;

— демонстрация у РВС 2 индикатора уровня, повышающегося при перекачке;

— демонстрация изменения цвета задвижки на желтый, если она закрыта, и на зеленый, если открыта;

— демонстрация вращения крыльчатка, когда он запущен и горит зеленым, когда остановлен — горит желтым и крыльчатка не вращается, при этом насос перекачивает с производительность (скоростью) 1000 или 2000 куб метров в минуту.

2 Разработка модели перекачки нефти, анализ и исследование задачи

Основная логика перекачки содержится в одноимённом методе «Pumping». В нём происходит уменьшение количества нефти в первом РВС и увеличение во втором, анимация перетекающей нефти и проверка на неудачное завершение игры. Листинг изображён на рисунке 1.

Насос состоит из нескольких элементов и некоторые из них должны что-то делать при запуске и остановке насоса. Для таких элементов создаются классы и наследуются от общего интерфейса. В листинге на рисунке 1 представлен метод, отвечающий за анимацию вращения. Делегат «condition» проверяет соблюдение некоторого условия, и пока оно истинно, скорость вращения плавно меняет своё значение (рис. 2).

Листинг «Метод перекачки нефти»

Рис. 1. Листинг «Метод перекачки нефти»

Листинг «Метод изменения скорости вращения элемента насоса»

Рис. 2. Листинг «Метод изменения скорости вращения элемента насоса»

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

Листинг «Метод определения результата игры»

Рис. 3. Листинг «Метод определения результата игры»

Для разработки модели используется следующий стек технологий:

— язык программирования C#,

— ASP.NET Core,

— Blender,

— Unity.

Само приложение можно разделить на 2 части: клиент и сервер. Клиентская часть разработана на Unity, а серверная — на ASP.

Разработка началась с серверной части [2]. Первым делом был создан класс «AccessSettings», и описано в нём одно свойство «Key». В класс «Program» добавлен «AccessSettings» в контейнер DI (dependency injection), в файле настроек приложения — секция настроек. Новый C#–скрипт «AccessSettingsController» унаследован от базового класса «ControllerBase» и включил в себя атрибуты, необходимые для генерации endpoint’a. «ControllerBase» — абстрактный класс, предоставляемый ASP.NET Core, содержит новое поле «AccessSettings», конструктор класса и метод, помеченный атрибутом «HttpGet» (рис.4).

Листинг «Контроллер»

Рис. 4. Листинг «Контроллер»

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

— Addressables — система управления ресурсами;

— UniTask — инструмент, обеспечивающий эффективную интеграцию async/await для Unity;

— UltimateCleanGUI — набор элементов интерфейса;

— EpicToonFX — набор эффектов.

После импорта инструментов был создан класс для РВС, наследуемый от базового класса Unity «Mono Behaviour». В нём описывалась вместимость резервуара, количество хранимой жидкости, событие, вызывающееся при изменении количества жидкости, а также добавлены два метода для увеличения и уменьшения хранимой жидкости.

Листинг «Класс РВС»

Рис. 5. Листинг «Класс РВС»

После расположения на сцене модели РВС и добавления на них соответствующие скрипты, был создан класс, описывающий насос и его работу. Так как насос должен состоять из нескольких частей, был создан интерфейс «IOil Pump Working Part». В нём описано два метода: «Start Working» и «Stop Working». В новый класс «Oil Pump», наследуемый от «Mono Behaviour» и созданного интерфейса, добавлены поля с настройками перекачки, ссылки на РВС и методы для работы с насосом.

Взаимодействие с игровыми объектами происходит через всплывающие окна. Для них был создан абстрактный класс «Popup Base». Он содержит набор методов для взаимодействия (рис. 6).

Листинг «Класс «PopupBase»»

Рис. 6. Листинг «Класс «PopupBase»»

Также был создан класс «Local Asset Loader» для загрузки ресурсов через addressables. В нём описано два метода: загрузка ресурса и его выгрузка. Для каждого ресурса, который необходимо загрузить, создаётся новый класс (рис.7).

Листинг «Класс для загрузки ресурсов»

Рис. 7. Листинг «Класс для загрузки ресурсов»

Для отправки запросов на сервер был создан небольшой инструмент, состоящий из нескольких классов и структур: веб-клиент, настройки веб-клиентов и статический класс с методами-расширениями для веб-клиента (рис. 8–9).

Листинг «Класс веб-клиента»

Рис. 8. Листинг «Класс веб-клиента»

Листинг «Структура с настройками веб-клиента»

Рис. 9. Листинг «Структура с настройками веб-клиента»

Перед написанием клиентской части в Blender были созданы необходимые модели. В модели входят: РВС, трубы и насос для перекачки нефти. Для большей наглядности в РВС был сделан срез, через который можно было наблюдать изменение количества нефти (рис. 10).

Модели в Blender

Рис. 10. Модели в Blender

Клиентская часть [1] строится по паттерну MVC (Model-View-Controller) и представляет собой небольшую сцену с импортированными моделями из Blender’a и несколькими диалоговыми окнами (рис. 11).

Клиентская часть

Рис. 11. Клиентская часть

Для удобной работы с диалоговыми окнами был написан небольшой инструмент. Он включает в себя базовый класс окна, от которого наследуются все диалоговые окна, и сущность, управляющую ими. После запуска серверной части и успешного ввода кодового слова появляется Popup с описанием задачи (рис. 12).

Popup с описанием задачи

Рис. 12. Popup с описанием задачи

3 Компьютерный эксперимент.

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

Интерфейс во время перекачки нефти

Рис. 13. Интерфейс во время перекачки нефти

В зависимости от результата появляется соответствующий Popup (рис. 14–15).

Popup успешного завершения перекачки

Рис. 14. Popup успешного завершения перекачки

Неудачное завершение перекачки

Рис. 15. Неудачное завершение перекачки

4 Анализ результатов моделирования.

Продемонстрированные алгоритмы запуска насоса, наполнения резервуаров могут быть с успехом использованы для разработки аналогичных моделей, которые позволяют демонстрировать переливы нефти из РВС. Описанная модель выполняет открытие/закрытие задвижки 1/2, запуск/остановку насоса, наполнение/перелив РВС, а также изменение индикатора уровня, цвета задвижки, вращения крыльчатка насоса, изменение его цвета. Модель процесса перекачки нефти используется в образовательных целях.

Литература:

  1. Корнилов, А. В. Unity. Полное руководство / А. В. Корнилов. — Санкт-Петербург: Наука и Техника, 2020. — 432 с. — ISBN 978–5-94387–795–7. — Текст: электронный // Лань: электронно-библиотечная система. — URL: https://e.lanbook.com/book/175394 (дата обращения: 16.12.2022). — Режим доступа: для авториз. пользователей.
  2. Лок, Э. ASP.NET Core в действии: руководство / Э. Лок; перевод с английского Д. А. Беликова. — Москва: ДМК Пресс, 2021. — 906 с. — ISBN 978–5-97060–550–9. — Текст: электронный // Лань: электронно-библиотечная система. — URL: https://e.lanbook.com/book/241079 (дата обращения: 16.12.2022). — Режим доступа: для авториз. пользователей.
  3. Теоретические основы моделирования: учебник для вузов / Е. В. Стельмашонок, В. Л. Стельмашонок, Л. А. Еникеева, С. А. Соколовская; под редакцией Е. В. Стельмашонок. — Москва: Издательство Юрайт, 2023. — 65 с. — (Высшее образование). — ISBN 978–5-534–15851–9. — Текст: электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/509876 (дата обращения: 16.12.2022).