Как разработать подсистему автоматического расчета параметров
Go-разработчики RedLab создали высокопроизводительное ПО с поддержкой динамической генерации данных
Задача:
Разработать программное решение на Go для сбора данных и анализа показателей.
Причина:
Необходимо было внедрить ПО, которое упростит эксплуатацию подстанций и увеличит надежность работы энергосистемы.
О проекте
Компания оказывает услуги по передаче электроэнергии, строит новые линии и проводит их регулярное оперативно-техническое обслуживание. Все объекты расположены в городской застройке, поэтому персонал ремонтно-выездной бригады прибывает к месту проведения работ в регламентированный законом срок. Объекты критической инфраструктуры снабжаются энергией по 1 категории, где перерывы в подаче недопустимы.
В соответствии с требованиями сетевого оператора, подстанция энергетической компании на 110 кВ, обслуживающая 35 тыс человек, должна была передавать телеметрические данные. Однако оборудование для автоматического пересчета параметров не было заложено проектировщиками. Строительство новых физических датчиков превышало бюджет в три раза, и руководство решило заменить их на ПО.
Описание задачи
Go-разработчикам было необходимо создать программное решение, способное собирать информацию с различных измерительных приборов и сенсоров подстанции, анализировать полученные результаты для выявления возможных отклонений от нормы и автоматически выполнять расчет недостающих или изменяющихся параметров. Перед ИТ-специалистами RedLab стояли следующие задачи:
- Проанализировать требования сетевого оператора и определить данные, которые электрическая подстанция должна передавать.
- Спроектировать архитектуру подсистемы и модели поведения физических датчиков.
- Обеспечить возможность динамической генерации данных на основе текущего состояния подстанции, учитывая перегрузки, поломки, плановые работы и т.д.
Реализация
Технологический стек:
- Golang
- Gin
- Echo
- Fiber
- Chi
- gRPC
- Protocol Buffers
- Cobra
- Viper
- Logrus
- Zap
- GORM
- SQLx
- Ent
- MongoDB Go Driver
- Go Redis
- AWS SDK for Go
- Testify
- Ginkgo
- GoConvey
- Docker
- Python
После сбора норм и критериев к ИТ-продукту приступили к работе:
- Использовали язык программирования Go, который обеспечил эффективную работу с параллелизмом и сетевыми запросами, легкое управление массивами и структурами, а также упростил создание абстракций виртуальных приборов с различным функционалом.
- Внедрили фреймворки для визуализации графического интерфейса, такие как: htmx, HyperScript, Fiber, gosvg, HTML5 и ГОСТ-браузер. Удалось отображать данные в реальном времени, что помогло операторам быстро реагировать на изменения показателей электрической подстанции.
- Согласовали сигналы тревог и предупреждений для обеспечения безопасности обслуживающего персонала со службами ИБ.
- Добавили библиотеки на Go, например, cshare, DLL, ГОСТ МЭК 870-5-101, ГОСТ МЭК 870-5-103, ГОСТ МЭК 870-5-104 и ГОСТ МЭК 870-5-105. Это позволило организовать интенсивный обмен данными с минимальной задержкой и наладить контроль над сложными вычислениями.
- Реализовали эффективные алгоритмы обработки данных, которые начали обрабатывать 2000 телесигналов и 1000 телеизмерений, обновляя их с частотой 10 раз в секунду. Это привело к общему объему в 30 000 событий в секунду.
- Разработали механизмы для обработки информации в мягком реальном времени, для оперативного контроля оборудования, чтобы система оставалась производительной даже при высоком уровне нагрузки.
Go-разработчики RedLab создали подсистему, которая существенно упростила эксплуатацию подстанций, увеличила надежность работы энергосистемы, стала соответствовать требованиям сетевого оператора и сэкономила бюджет компании. Этап активной разработки длился 3 года. На текущий момент решение активно эксплуатируется.
Интересное:
Новости отрасли:
Все новости:
Публикация компании
Профиль
Социальные сети