Modbus терминал и не только

Когда-то я активно работал с промышленным оборудованием. Часто мне приходило какое-то устройство, и оно общалось с внешним миром по волшебному протоколу Modbus.

Будучи излишне уверенным в себе, для каждого такого устройства я писал свою небольшую программу для тестирования. Но спустя непродолжительное время я понял, что это очень утомительное занятие. Интерфейс взаимодействия со мной с пользователем забирал кучу времени разработки. Потом еще отладка и прочее… просто жуть…

От отчаяния я решил посмотреть, а что мне может предложить мировое IT сообщество. Какие-то программы были очень ограничены в бесплатной версии, где-то такой версии не было в принципе, а что-то мне просто не понравилось внешне.

Осознав проблему, я решил пополнить свой GitHub новым проектом помочь и себе, и людям, написав свой собственный терминал.

Для меня было очень важно создать красивый GUI, которым было бы приятно пользоваться.

Поэтому представляю вам мою версию Modbus терминала!

2dfeefe944fda52c3865fb6bd816aa5a.png

Терминал поддерживает все разновидности протокола Modbus:

  • Modbus TCP

  • Modbus RTU

  • Modbus ASCII

В таблице находятся расшифрованные данные посылок. А само содержимое этих посылок находится ниже, в поле «Запрос — Ответ».

Далее расположена панель управления космическим кораблем взаимодействия с устройством. Записываем адрес регистра, а затем или читаем, или записываем в него.

В самом низу расположена строка подключения. Там содержится информация о текущем подключении и индикация.

Индикаторы приема и передачи работают таким образом:

d9f5cbac450324afd3f7dde23ce53701.gif

Казалось бы, а что еще нужно для счастья? Верно, смена тем оформления.

Темная тема? Нет, не слышал

Периодически, приходится работать в IDE, в которых разработчики не добавили темную тему. Keil, CODESYS и некоторые другие.

И это не становится проблемой, когда сидишь в офисе с двумя мониторами. Проблемы появляются, когда вот уже несколько часов сидишь в цеху с ноутбуком на коленках и отлаживаешь свое изобретение. Огромное черное окно терминала, которое из раза в раз появляется на фоне светлой IDE просто утомляет глаза. Работать становится труднее, а усталость приходит быстрее.

Чтобы сделать содержимое экрана монитора более однородным я добавил светлую тему.

bf01fa7bf96d538339698b1733d63d1c.png

В настройках можно на лету переключаться между темами оформления, подобрав нужную под текущий сценарий работы.

А что еще?

А еще у меня есть два дополнительных режима работы «Без протокола» и «Http».

Первый режим я добавил для работы с текстовой информацией, а второй просто потому что могу =)

2d174537f8ae5b74ce673c69c6662995.png

Да, в режиме «Без протокола» хотелось бы добавить работу с байтами… когда‑нибуть она появится =)

Также в программе есть возможность работы с пресетами. Иногда бывает необходимо работать поочередно с несколькими устройствами. И чтобы постоянно не менять настройки, можно создать специальные файлы с уже сохраненными параметрами и переключаться между ними.

Немного о разработке

Для написания Desktop приложений я чаще всего использую WPF. По мне, это один из самых удобных фреймворков для разработки приложений на ПК.

Первая релизная версия появилась где-то полтора года назад с момента написания этой статьи.

Сначала использовался .NET Framework, а затем все приложение переехало на .NET 7, и вот совсем недавно на .NET 8.

Были ли проблемы при переезде с платформы на платформу? В целом нет. Пришлось только немного повозиться с переездом с Framework на Core.

Сама архитектура приложения тоже менялась со временем. По началу вся логика была в обработчиках событий в code behind. А потом это стало невозможно поддерживать и проект был полностью переписан согласно паттерну MVVM.

UI тоже менялся со временем.

Например, вот так выглядел режим «Modbus» в одном из первых вариантов.

Какие-то фичи добавлялись, какие-то вырезались. У меня не было четкого плана разработки. И действовал я методом проб и ошибок.

После миграции на .NET Core я ощутил необходимость создания установщика с возможностью обновления.

Согласитесь, один файл установщика, в отличии от кучи непонятных файлов приложения, выглядит весьма лаконично. А каждое нажатие на кнопку «Далее» в мастере установки прибавляет солидности вашему ПО.

Для написания скрипта установщика я использовал Inno Setup. Может быть напишу об этом отдельную статью =)

Советую ознакомиться, если еще нет.

Итого

Планы у меня были грандиозные. Хотелось добавить все и сразу. Но, как это часто бывает, ограниченность ресурсов вводит свои коррективы.

Надеюсь, вам понравилась моя первая публикация на Хабре, а мой софт поможет вам меньше уставать на работе. Буду рад обратной связи. Всем удачи!

Скачать программу

А ценители прекрасного и ужасного могут посмотреть исходный код

© Habrahabr.ru