Разработка программного обеспечения для управления дозирующими машинами
Система дозирования жидкости состоит из машин и компьютера (ПК). Машины и компьютер соединены между собой и взаимодействуют через интерфейс RS485. Программное обеспечение, установленное на компьютере (ПК), состоит из двух отдельных модулей (приложений) — «сервер» и «оператор». Сервер работает непрерывно и взаимодействует с машинами. Через модуль оператора можно создавать и редактировать номенклатуру клиентов, жидкостей и карт. Модуль оператора позволяет выполнять различные операции, такие как загрузка кредита на карту, блокировка и разблокировка карт, редактирование данных клиента или карты и другие. Могут быть составлены различные отчеты, такие как отчет о потреблении данного клиента, отчет об использовании карты клиента, отчет о потребленной жидкости и т. д.
Целью системы является выполнение автоматизированного дозирования жидкости по запросу клиента без участия другого лица (оператора). Выбор жидкости, количества и оплата сделанного выбора полностью автоматизированы. Оплата только картой, так как в случае попытки сделать дозировку и недостаточной доступности для оплаты дозировка не выполняется. Клиенту сообщается о небольшом кредите на карте. Связь между автоматом и дисплеем оператора основана на запросе с дисплея. Работа оператора заключается в замене пустых бутылок в автомате, а также в мониторинге и отслеживании сбоев в работе системы.
Вся система состоит из компьютера и дозатора.
На компьютер устанавливается прикладное программное обеспечение для использования и связи с автоматом по розливу вина. Устанавливаются два отдельных модуля — «оператор» и «сервер». Сервер работает непрерывно и обменивается данными с автоматами. Модуль оператора служит для создания и редактирования данных пользователей, клиентов, карт и жидкостей; контроля состояния бутылок в автоматах; выполненных дозировок; выполнения таких операций, как добавление кредита на карту клиента и формирование отчетов.
К автомату добавлены:
• Бесконтактный считыватель карт. Считыватель действует как клавиатура ввода для ввода номера карты клиента. Он считывает карту с расстояния 3–5 см и автоматически записывает номер карты в разработанное программное обеспечение.
• Десятисенсорный дисплей для десяти бутылок. Они отображают информацию о соответствующей бутылке в автомате. Связь между автоматом и компьютером заключается в следующем: когда карта вставляется в автомат, автомат считывает ее номер, а когда ПК обращается к нему, автомат отправляет номер карты. В результате компьютер возвращает доступный кредит карты в автомат.
На компьютер устанавливается прикладное программное обеспечение для использования и связи с автоматом по розливу вина. Устанавливаются два отдельных модуля — «оператор» и «сервер». Сервер работает непрерывно и обменивается данными с автоматами.
Модуль оператора служит для создания и редактирования данных пользователей, клиентов, карт и жидкостей; контроля состояния бутылок в автоматах; выполненных дозировок; выполнения таких операций, как добавление кредита на карту клиента и формирование отчетов.
К диспенсеру добавлены:
• Бесконтактный считыватель карт. Считыватель действует как клавиатура ввода для ввода номера карты клиента. Он считывает карту с расстояния 3–5 см и автоматически записывает номер карты в разработанное программное обеспечение.
• Десятисенсорный дисплей для десяти бутылок. Они отображают информацию о соответствующей бутылке в автомате. Связь между автоматом и компьютером заключается в следующем: когда карта вставляется в автомат, автомат считывает ее номер, а когда к нему обращается ПК, автомат отправляет номер карты.
В результате компьютер возвращает доступный кредит карты автомату. Если доступного кредита достаточно, автомат выдает выбранное количество жидкости, затем в следующем сеансе он отправляет информацию о номере бутылки и выданном количестве на компьютер. На этой основе программа отображает базу данных: обновляет кредит карты; обновляет количество жидкости для данного автомата/позиции; и сохраняет транзакции в базе данных. Модуль сервера полностью заботится о коммуникации между компьютером и автоматами, обрабатывая полученную от автоматов информацию и сохраняя ее в базе данных.
Структура приложения UML модуля «Сервер»
Класс Dbcomm — выполняет подключение к базе данных, вход в систему, отписку и проверку пользователя. Класс DbcommWine — выполняет различные операции с базой данных — добавление и редактирование информации о клиенте, карте, бутылке, пользователе и автомате. Класс SettingsDialog — определяет настройки порта COM.
Класс Worker — устанавливает соединение с портом COM и взаимодействует с автоматами на этом порту. Класс MainWindow связан с управлением приложением, управлением визуальными элементами управления, связью с другими классами, а связь между этим классом и другими осуществляется путем вызова методов или генерации сигналов.
Структура приложения UML модуля «Оператор»
Класс BottleQTY — связан с выполнением операции над количеством жидкости на складе. Класс Brand — ищет жидкость по марке. Класс ChangeDoses — связан с изменением размера маленькой и большой дозы вина. Класс ChangeMinQty — связан с изменением минимального оставшегося количества вина в бутылке. Класс Credit — связан с изменением доступного кредита на карте.
Класс DateTimeFilter — устанавливает начальную и конечную дату для поиска записей в базе данных. Класс Dbcomm — подключается к базе данных, регистрирует, отменяет подписку и проверяет пользователей. Класс DbcommWine — подключается к базе данных, регистрирует, отменяет подписку, проверяет пользователей и выполняет различные операции с базой данных — добавляет и редактирует информацию о клиентах, картах, бутылках, пользователях и машинах. Класс Delegates — выполняет форматирование представления таблиц и данных в них.
Класс DoubleVal idator — выполняет проверку числовых данных (проверку текстового параметра в двойном числе). Класс Dragwidget — управляет визуальными элементами управления для автоматов и обновляет их статус и цвета. Класс MergeClients — связан с объединением клиентов. Класс Settings Dialog — связан с настройкой пути к базе данных. Класс TableBottles — выполняет добавление/редактирование данных о бутылках с жидкостью. Класс TableCard — добавляет обычную или сервисную карту и изменяет кредит по карте. Класс TableClient — связан с добавлением, редактированием или поиском клиентской карты. Класс TableMachine — выполняет визуализацию и обработку данных о автоматах и бутылках в них. Класс TableUser — выполняет визуализацию и обработку пользовательских данных. Класс MainWindow — связан с управлением приложениями, управлением визуальным контролем, соединением с другими классами, а связь между этим классом и другими осуществляется путем вызова методов или генерации сигналов.
Предоставляется зарегистрированный вход оператора, менеджера или администратора. Есть возможность выйти из системы. При входе в систему возможны три варианта:
• Оператор — имеет возможность менять бутылку в автомате и выполнять следующие действия с базой данных: добавлять и редактировать бутылки с жидкостью как товар; добавлять и удалять бутылки на склад/со склада; добавлять и редактировать клиентов в системе; добавлять карту клиенту и редактировать данные карты; удалять карту из системы; объединять клиентов; добавлять и снимать кредит с карты; блокировать карту; добавлять сервисную карту; добавлять простую карту; искать карту по введенному номеру. Действия выполняются многократно, пока оператор не выйдет из системы.
• Менеджер — имеет все права оператора и возможность формировать отчеты: отчет о потреблении клиентом, отчет о потреблении по бренду и отчет об использовании карты клиента. Действия выполняются многократно, пока менеджер не выйдет из системы.
• Администратор — имеет все права оператора и менеджера и возможность добавлять и редактировать оператора/ов; действия выполняются многократно, пока администратор не выйдет из системы. После выхода из системы осуществляется возврат в основную программу.
Эксперименты
В написанное программное обеспечение встроен таймер, который каждую секунду проверяет наличие проблем со связью. После успешной регистрации визуализируются машины и их положения (рисунок 6): Поле визуализации машины — визуализируется 10 машин. У каждой машины есть имя и состояние, в котором она находится. Цвет машины указывает на состояние машины:
• Серый — нет соединения с машиной и нет информации о бутылках.
• Зеленый — машина подключена, и состояние бутылок можно контролировать.
• Желтый — есть пустая бутылка или замененная бутылка, ожидающая подтверждения оператора.
• Красный — ошибка подключения к машине/невозможно подключиться к машине.
Для каждой бутылки отображается следующая информация:
• Положение (Pos) бутылки в машине;
• Статус (Status) бутылки. Бутылка может находиться в шести состояниях: OK — все в порядке. Информационная строка для этой бутылки окрашена в белый цвет; N.A — нет информации о бутылке. Информационная строка для этой бутылки выделена серым цветом; CHANGED — бутылка была заменена. Строка информации о данной бутылке становится оранжевой; ПУСТАЯ — бутылка пуста. Строка с информацией о данной бутылке становится желтой; ОЖИДАНИЕ — ожидание обновления информации о бутылке после ее замены. Строка с информацией о данной бутылке становится синей; ИСТЕКШИЙ — истекло время максимального пребывания бутылки в автомате. Строка с информацией о данной бутылке становится красной.
• Марка вина (Brand);
• Текущее количество вина в бутылке (Current Quantity);
• Остаточное количество вина (Residual Quantity);
• Объем бутылки (Bottle Volume);
• Количество вина в малой дозе (мл) — Объем образца;
• Цена малой дозы (20 мл) — Цена образца/20 мл;
• Количество вина в большой дозе (мл) — Объем бокала; Цена большой дозы (125 мл.) — Цена бокала/125 мл;
• Дата и время помещения бутылки в автомат;
• Дата и часть, для максимального пребывания бутылки в автомате.
Выводы
Реализованные программные приложения находят реальное применение в системе розлива вина и системе розлива воды. С помощью машин для розлива вина можно постоянно отслеживать любые нарушения в коммуникации с машинами, состояние машин и бутылок в них, а также выполнять определенные операции, такие как загрузка кредита на карту клиента, создание отчетов и другие. Также было добавлено несколько дополнительных и более сложных функций, таких как функция хранения вина. Открытая бутылка может храниться до 28 дней после открытия без ущерба для вкуса вина. Еще одна функция — охлаждение вина.
Машина может поддерживать одну, две или более температурных зон, т. е. в одной машине можно охлаждать белые, розовые и красные вина. Реализация обеспечивает автоматизацию и автономность дозирования вина. Нажатием кнопки можно выполнить одну дозировку и снять кредит с карты клиента за выполненную дозировку. Для выполнения операций не требуется внешнего вмешательства.
Если машина не выполняет определенную операцию, на пульт оператора отправляется информация о возникшей проблеме. При внедрении приложений в систему дозирования воды дополнительной функцией является охлаждение воды. Реализованные таким образом приложения могут быть внедрены в различных областях, где необходимо дозировать жидкость небольшими порциями, например, пиво, сок, безалкогольные напитки и даже алкоголь, поскольку в системе есть возможность ограничить количество жидкости, после чего карта блокируется и больше ее нельзя приобрести.