Как стать автором
Обновить

TbK — удобный, многофункциональный и бесплатный терминал для работы с COM-портами и поддержкой Modbus-протокола

Время на прочтение5 мин
Количество просмотров15K

Здравствуйте, уважаемые хабровчане! Я хотел написать просто комментарий к статье "Программное обеспечение для тестирования и наладки устройств и сетей на базе MODBUS", однако для вновь зарегистрированных пользователей сайт не даёт это сделать для "не свежих" публикаций. Поэтому пишу это в виде публикации, что бы хоть каким-либо образом донести информацию. Суть этого небольшого поста - представить вниманию читателей новый терминал для работы с COM-портами, который, возможно, многим придётся по душе. А теперь - непосредственно сам пост:

Думаю, что каждый из embeded-разработчиков хотя бы раз в жизни пользовался терминалом для работы с COM-портом ПК - простой программой, позволяющей персональному компьютеру через встроенный интерфейс RS-232 (или USB-переходник) общаться с внешними устройствами, например такими, как GSM-модем или просто обмениваться данными с микроконтроллером в процессе разработки и отладки прошивки.

Таких терминалов на данный момент создано довольно много, как говорится "на любой вкус". Однако, как часто бывает, когда начинаешь более-менее длительно работать в какой-либо программе, начинает постоянно не хватать то одной функции, то другой, то одно кажется сделано неудобно, то другое. Всё время ловишь себя на мысли: "это лучше сделать было бы так, а это - вот эдак" :)

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

В основе его дизайна легла простая, но как мне кажется правильная идея, что при обмене данными с устройством все передаваемые и принимаемые данные должны отображаться в виде диалога двух "умных" устройств так, как этот диалог отображается в любом современном мессенджере: слева вопрос, справа и ниже - ответ, слева и ещё ниже - новый вопрос и т.д. При таком "разнесении" данных существенно улучшается визуальное восприятие протокола обмена двух устройств.

Другим фактором, но уже в области функциональности терминала послужило частое требование видеть обмен двух "внешних" устройств, которые общаются с друг с другом (например какой-либо контроллер общается с подключенным к нему GSM-модемом), так сказать "подсматривать" их обмен данными, а не отсылать данные с компьютера. Это привело к появлению в терминале функции "мониторинга" COM-портов. Реализуется это просто и очевидно: программа открывает ОДНОВРЕМЕННО два COM-порта, оба в режиме ПРИЁМА. Все принятые данные по обоим портам заносятся в хронологическом порядке в описанный выше "диалог".

Изначально разбивка принимаемых данных происходила классически - по терминаторам перевода строки и возврата каретки ($0D, $0A), что характерно для текстовых протоколов. Позже была добавлена функция разбивки принимаемых данных по таймауту молчания, что очень удобно для работы с бинарными протоколами, где нет характерного терминатора.

С годами терминал оброс дополнительными полезными и удобными "плюшками", которые по достоинству могут оценить многие. Была добавлена таблица на 1000 макросов, детализация последнего принятого блока данных, детальная (побайтная) разбивка любой строки. Добавлена реализация даже такой тривиальной задачи, как перевод числа между двоичной, десятичной и шестнадцатеричной системами счисления, побитный сдвиг числа влево и вправо, просмотр таблицы ASCII. Эти операции можно выполнить и другими программами, но очень УДОБНО, когда всё это собрано в одном месте и всегда под рукой.

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

Внешний вид главного окна терминала:

На последних этапах разработки терминала TbK была добавлена поддержка протокола MODBUS, причём реализован как режим MASTER, так и режим SLAVE. То есть терминал может как опрашивать MODBUS-устройства, так и имитировать из себя такое устройство. Поддерживаются все самые "ходовые" функции протокола: 1, 2, 3, 4, 5, 6 и 16

Все регистры заполняются в виде таблиц, которые удобны для восприятия.

Так выглядят дополнительные окна для работы по протоколу Modbus:

Основной функционал терминала:

  • визуально - пространственное разделение принимаемых и отсылаемых данных (либо данных, принимаемыми разными портами – в режиме мониторинга), что облегчает их восприятие оператором, так как данные представлены в виде диалога, как в мессенджере;

  • представление данных в текстовом (TEXT), десятичном (DEC), шестнадцатеричном (HEX) и бинарном (BIN) форматах в табличном виде (Таблицы) и в виде свободного текста (Memo). В режиме Memo имеется возможность выбрать фонт, размер и цвет текста;

  • таблица из 1000 макросов и комментариев к ним, каждый из которых может быть мгновенно отослан в порт двойным кликом по его номеру;

  • терминал удобен для работы как с текстовыми (символьными), так и с бинарными протоколами обмена; – различные режимы разбивки принимаемых данных на строки: по обнаружению фиксированного терминатора ($0D, $0A, $0D$0A, $0D or $0A), по таймауту после окончания приёма последнего байта, по приёму фиксированного количества байт;

  • автоматическое добавление к отсылаемым данным различных контрольных сумм (CRC) и терминаторов: $0D, $0A или $0D$0A (на выбор);

  • детализация последнего принятого блока данных (DLRB) - инструмент, позволяющий в реальном масштабе времени разбивать принимаемые данные по отдельным байтам, определив для каждого байта свой порядковый номер в посылке и задав отдельный цвет для подсвечивания каждого байта или группы байт, что облегчает визуальное восприятие данных. Это удобно при работе с позиционными протоколами, когда положение каждого байта в посылке всегда фиксировано и не изменяется во времени;

  • возможность в реальном масштабе времени вычислять на основе принимаемых данных одно-, двух- и четырёхбайтовые величины и, принимая их за аргументы, вычислять на их основе сложные функции, заданные текстовой формулой;

  • инструменты, позволяющие реализовать поддержку протокола Modbus, как в режиме Master, так и в режиме Slave. Поддерживаются 1, 2, 3, 4, 5, 6 и 16 функции протокола;

  • режим сохранения всех принимаемых / отсылаемых в log-файл;

  • инструмент Programs, позволяющий реализовать выполнение простейших программ на основе отсылки заданных макросов с определёнными паузами между ними с возможностью зацикливания выполнения отдельных блоков;

  • инструмент String, позволяющий детально проанализировать строку, скопировав её через буфер обмена и разбив по байтам, определить её длину, подсветить отдельные байты определённым цветом и привязать к каждому свой комментарий, вычислить различные контрольные суммы данной строки, произвести перевод заданного числа между различными системами исчисления (DEC<>HEX<>BIN), разложив его на отдельные байты, произвести побитный сдвиг этих байт влево и вправо;

  • быстрый доступ в терминале к встроенной справочной информации: таблицы ASCII-символов, описания выводов COM-порта (цоколёвки разъёма), схем распайки кабеля для реализации режима мониторинга COM-портов.

Сама программа написана на Delphi, работает только под Windows, для загрузки доступен сам exe-файл, а также два файла инструкции - на русском и английском языках.

Сам терминал полностью бесплатный, без каких-либо ограничений по использованию.

Скачивать терминал по ссылке

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

Приятного пользования!

Теги:
Хабы:
Всего голосов 15: ↑14 и ↓1+19
Комментарии33

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань