Если вы когда-либо настраивали связь с промышленными устройствами по протоколу Modbus TCP/RTU, то знаете, насколько это может быть рутинно, неудобно и местами даже болезненно. Особенно если вы — инженер по автоматизации, которому приходится делать это не только в теплом и сухом офисе, но и в полевых условиях, где ноутбук — не всегда лучший друг. Вы скажите, что можно было бы подготовиться заранее, но к сожалению, уровень организации в различных компаниях оставляет желать лучшего.
Именно из этой "боли" и родилась идея создать мобильное приложение-клиент Modbus TCP, которое решает конкретные реальные задачи.
От Modbus Poll к мобильному решению
В своей работе я часто сталкивался с необходимостью быстро проверить или настроить связь с устройствами по протоколу Modbus TCP. Для простых случаев чтения группы регистров — обычно использовал Modbus Poll или его аналоги. Но как только дело доходило до:
адресации переменных в разрозненных областях памяти
масштабирования значений переменных
интерпретации отдельных битов в упакованных словах
работы со строками
приходилось либо писать проект для SCADA-системы, либо использовать ПЛК. Это занимало время, ресурсы и не всегда было оправдано.
Параллельно давно хотелось разобраться в мобильной разработке: от архитектуры до публикации в магазинах приложений. Так и появился проект — мобильный Modbus TCP клиент, который теперь доступен в RuStore.
Трудности при работе с протоколом Modbus:
Неполная документация
Часто неясно, как производитель того или иного устройства пронумеровал регистры при составлении документации. С какого адреса начинается первый регистр: 40000 или 40001? %MW0 или MW1? Это влияет на смещение адресации всех переменных в устройстве. И если вы ошиблись, то не очень хочется терять время на исправление десятков, а то и сотен адресов переменных, особенно если вы не в офисе, а в помещении без отопления зимой. Не во всех софтах есть настройка, позволяющая в один клик добавить нужное смещение ко всем адресам переменных.
Формат адресов
Адреса переменных в документации могут быть в десятичной (DEC) или шестнадцатеричной (HEX) системе счисления. Тут обычно помогает калькулятор для перевода из HEX в DEC, но на это уходит драгоценное время и вероятность ошибки растет.
Интерпретация битов
Когда биты упакованы компактно в слова, приходится вручную переводить значения переменных в двоичную систему счисления (BIN) и искать нужный бит. После этого возникает другая задача — как правильно интерпретировать значение 0 и 1 в переменной. Пример: Концевой выключатель обычно подключается нормально замкнутым контактом (NC) и в несработанном состоянии в переменной хранится значение 1, а при срабатывании 0.
Масштабирование переменных
Например, значение 12000 в регистре может означать 50°C, если датчик температуры имеет токовый выход 4–20 mA, его аналогово-цифровое преобразование (ADC) цифровым устройством конвертировалось в диапазон 4000–20000, и затем это конвертировалось в диапазон измерения датчика 0–100°C. Наблюдать значения в регистре без масштабирования (12000) не очень комфортно, хочется видеть понятное человеку значение в физических единицах (50°C).
Работа со строками
Чтобы получить читаемую строку, нужно правильно собрать байты и декодировать их. При записи возникает обратная задача.
Пространство
Иногда при работе на реальном оборудовании, нужно вручную сымитировать переключение датчика, и ноутбук не всегда получается разместить перед глазами, чтобы видеть изменение в регистре. Тут обычно помогает второй коллега, но решение это не самое эффективное, клиентам нужно оплачивать работу 2х специалистов. А наличие компактного телефона, где можно посмотреть обратную связь от датчика и разместить его в ограниченном пространстве, вполне рабочее решение.
Что умеет приложение
Вот ключевые функции, которые делают приложение полезным в реальной работе:
Создание/редактирование неограниченного количества устройств и переменных в них
Гибкая настройка связи: IP-адрес, порт, slave ID, таймаут, частота опроса, порядок байт и др.
Поддержка основных типов регистров: Coils (0x), Discrete Inputs (1x), Input Registers (3x), Holding Registers (4x)
Поддержка типов данных: Bit (1 бит), UINT (16 бит), INT (16 бит), UDINT (32 бита), DINT (32 бита), Float (32 бита), String
Масштабирование значений и отображение физических единиц (°C, %, bar, кВт и др.)
Кастомизация отображения: количество цифр после запятой, цвет, тексты значений (True/False, Вкл/Выкл, Норма/Авария и т.д.)
Импорт/экспорт конфигурации, чтобы можно было переслать коллеге или клиенту, или скачать готовую конфигурацию к конкретному устройству
Мониторинг и управление устройствами в реальном времени
Русскоязычный интерфейс и встроенная справка
Измерение и оптимизация цикла опроса, можно регулировать размер фрейма, это особенно полезно при разрозненном размещении переменных в памяти устройства
Поддержка телефонов и планшетов с различным разрешением
Как это выглядит на экране мобильного устройства
Основной экран

На основном экране имеется возможность: создавать/редактировать/удалять устройства, импортировать/экспортировать конфигурацию в JSON-файл, перейти в режим мониторинга и управления устройством.
Редактор устройства

В редакторе устройства доступна настройка: имени, IP-адреса, номера порта, Slave ID для возможности работы с шлюзом Modbus TCP<->RTU, адреса первого регистра в памяти, порядка слов в 32-битных типах переменных, перестановки байт внутри слов, частоты опроса, времени таймаута, длины фрейма.
Список переменных

На экране списка переменных доступен: переход к редактору переменной, удаление переменной, изменение порядка отображения (перемещение вверх и вниз).
Режим мониторинга и управления

На экране режима мониторинга и управления можно: оценить длительность цикла опроса переменных, увидеть текущие значения, послать команду записи. Для дискретных переменных доступно изменение цвета текста подписи.
Запись в переменную

Запись в дискретную переменную возможна в удобочитаемом человеческом формате (ОТКЛ/ВКЛ). В переменные аналогового типа запись ведется с учетом масштабирования.
Редактор переменной

На экране редактора переменной доступно: изменение имени и комментария, выбор типа регистра, выбор типа данных, ввод адреса с автоматическим пересчетом между DEC<>HEX, настройка масштабирования, указание физических единиц, разрешение записи, выбор формата вывода.
Сервисные возможности для служб эксплуатации
При неисправностях оборудования далеко не всегда есть в наличии необходимые запасные части, инструменты и принадлежности (ЗИП). В случае неисправности HMI-панели на шкафу управления или компьютера SCADA-системы, можно оперативно использовать приложение, как временное решение по мониторингу и управлению технологическим оборудованием в упрощенной форме с минимальным набором переменных. Желательно заранее подготовить конфигурации для приложения, чтобы минимизировать время простоя оборудования.
Возможности для систем типа "умный дом" на базе устройств с поддержкой протокола Modbus
Вы можете построить свой собственный "умный дом" на базе обычных контроллеров с Modbus, цена на подобные решения будет намного ниже классических систем на базе других протоколов (KNX и другие). Приложение поможет избежать использование облачных сервисов, вы всегда сможете управлять своей системой и не зависеть от внешних факторов.
Заключение
Этот проект — не просто очередное приложение. Это инструмент, созданный инженером для инженеров. Он родился из реальных задач, прошел путь от идеи до публикации, и теперь помогает решать задачи быстрее, проще и удобнее — прямо с телефона.
Если вы работаете с Modbus TCP/RTU — попробуйте. Возможно, это именно то, чего вам не хватало.
Ссылки
https://www.rustore.ru/catalog/app/com.wega.ModVision
QR для загрузки

aborouhin
С интересом прочитал описание, наверняка очень полезное приложение... но, помилуйте, ссылка только на Рустор?.. Если уж по каким-то идеологическим причинам не хотите на Гугл Плей загрузить, дайте хотя бы возможность apk скачать напрямую.