Одним из направлений деятельности заказчика является производство лакокрасочной продукции для различных видов покрытий в торговых точках.
Специалисты компании заказчика разрабатывают рецептуры красок и покрытий для конкретных продуктов и брендов, в том числе проводя лабораторные исследования, а также предоставляют аппаратные средства (дозаторы) и ПО для колеровки и формирования готовой продукции на клиентских точках.
Цель проекта — создать функционал для автоматизации этапов производственного цикла при формировании лакокрасочной продукции.
Задачи:
Ситуация до начала проекта
У заказчика возникли трудности с обновлением рецептурных баз ПО, которое ранее использовалось на клиентских точках, в том числе для формирования готовой продукции новых брендов, поэтому было решено создать собственное программное обеспечение.
Для модуля управления дозатором в торговых точках у заказчика были следующие требования:
Кроме того, модуль для колеровки должен был осуществлять взаимодействие с различными типами дозатора через общий UDCP драйвер (отправка команд драйверу и обработки сообщений от драйвера).
Для модуля формирования и хранения рецептур были сформированы отдельные требования:
С учетом требований заказчика модуль формирования и хранения рецептурной базы решили реализовать как полноценный многопользовательский веб-сайт на ASP.NET Core платформе. Для разработки серверной части был выбран .NET Core 6.0 Framework (язык программирования C#), клиентская часть на React framework (язык программирования TypeScript). Для реализации многопользовательского режима выбрали бару данных Postgree SQL.
Модуль взаимодействия с дозатором решили реализовать как автономное десктоп-приложение. Для обеспечения кроссплатформенности всю функциональную часть реализовать как веб-сайт на ASP.NET Core платформе, используя аналогичный стэк (.NET Core 6.0 + React), и средствами Electron .NET Framework запаковать сайт в оконное приложение. Также мы использовали функционал (API) SignalR библиотеки для обновления клиентской части веб-сайта после обработки событий от UDCP драйвера на сервере.
Для обеспечения автономности работы модуля взаимодействия с дозатором в качестве локальной базы данных была выбрана SQLite, которая представляет собой файловую базу данных и не требует отдельной СУБД для подключения и работы с БД.
С учетом масштабности и целей проекта разработка проекта была разделена на несколько этапов.
На первом этапе был разработан начальный вариант модуля взаимодействия с дозатором и реализован функционал взаимодействия с дозаторами различных типов через общий UDCP драйвер, который включал в себя поддержку всех операций по взаимодействию с драйвером (инициализация, продувка сопел, перемешивание колорантов и т.д.), включая операцию ручной дозировки колорантов.
Схема. Механизм выгрузки рецептурной базы из основного веб-сайта в модуль взаимодействия с дозатором
Аналогичное решение использовано для загрузки новых обновлений для дескттоп-приложения на веб-сайт и автоматического скачивания обновлений с последующей автоматической установкой.
Модуль управления дозатором имеет клиент-серверную архитектуру. С клиента на сервер отправляется запрос на формирование команды UDCP драйверу, далее запрос обрабатывается и формируется файл с параметрами команды. На самом сервере происходит постоянный опрос наличия ответа от UDCP драйвера, и при получении результата обработки команды сервер уведомляет клиента через SignalR API.
На втором этапе выполнены следующие задачи:
На третьем этапе был реализован механизм автоматической перегрузки рецептурной базы из веб-сайта в модуль управления дозатором.
Также был реализован визард для подбора рецептуры по требуемому цвету, продукту, фасовке с последующим формированием команды дозатору на колеровку выбранного цвета.
На четвертом этапе в модуле взаимодействия с дозатором реализовали:
На момент публикации кейса система автоматизации производственного цикла лакокрасочной продукции прошла необходимые проверки и подтвердила работоспособность в 20 пилотных торговых точках заказчика, а общее количество торговых точек, в которые поставляется программное обеспечение, превышает 1500.
В модуле формирования и хранения рецептурной базы реализованы:
В модуле взаимодействия с дозатором реализованы: