Статья описывает создание мобильного приложения-клиента Modbus TCP, которое упрощает настройку и мониторинг промышленных устройств. Приложение доступно в RuStore и решает задачи адресации, масштабирования, интерпретации битов и работы со строками.
- Идея приложения возникла из рутинных и неудобных задач при работе с Modbus TCP/RTU в полевых условиях.
- Существующие инструменты, такие как Modbus Poll, не покрывают сложные случаи: разрозненную адресацию, масштабирование, биты и строки.
- Приложение поддерживает основные типы регистров и данных, включая Coils, Discrete Inputs, Input Registers, Holding Registers, Bit, UINT, INT, UDINT, DINT, Float, String.
- Реализованы гибкая настройка связи, масштабирование значений, кастомизация отображения, импорт/экспорт конфигурации и русскоязычный интерфейс.
- Приложение может использоваться как временное решение при неисправностях HMI-панелей или SCADA, а также для систем «умный дом» на Modbus.
- Доступны экраны для управления устройствами, редактирования переменных, мониторинга и записи значений в реальном времени.
- Modbus TCP
- Modbus Poll
- SCADA
- ПЛК
- Coils
- Discrete Inputs
- Input Registers
- Holding Registers
- Slave ID
- JSON
- HMI
Кому полезно: Инженеры АСУ ТП, наладчики и специалисты по автоматизации, работающие с Modbus.
Первоисточник: habr.com
Выжимка составлена редакцией сайта с помощью ИИ по тексту статьи.
Если вы когда-либо настраивали связь с промышленными устройствами по протоколу 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
Источник:https://habr.com/ru/articles/952972
Источник: статья в сообществе ВКонтакте