Как проверить RS-232, RS-422, RS-485 с помощью PComm Terminal Emulator?
В этой статье рассматривается проверка COM-портов на компьютере на примере преобразователя USB-COM серии UPort 1150.
Методы, описанные в этой статье, подойдут для проверки встроенных COM-портов на компьютере или COM-портов преобразователей интерфейсов, например USB-COM или USB-Ethernet, а также другого оборудования, которое требует установки драйвера виртуального COM-порта.
Скачать PComm Lite
Для работы с СОМ портом нужна программа, которая позволит открыть СОМ порт и отправить в него данные. MOXA предлагает воспользоваться бесплатной утилитой PComm Lite.
Как проверить RS-232 интерфейс?
Для проверки RS-232 можно воспользоваться простым способом: достаточно замкнуть контакты RX и TX между собой. Тогда все переданные данные будут приняты обратно.

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

После этого мы можем открыть СОМ порт через программу и отправить туда любые данные. Отправленные данные должны вернуться обратно в этот же порт.
На примере PComm Lite это будет выглядеть так.
Убедитесь, что COM-порт настроен на RS-232.

Откройте программу PComm Terminal Emulator, во вкладке Port Manager откройте СОМ порт, соответствующий вашему устройству. Скорость и другие параметры можно оставить по умолчанию.
Однако, если вы подключаете внешнее устройство к СОМ порту, эти параметры должны совпадать с параметрами внешнего устройства.

Мы отправили несколько единиц в СОМ порт и получили их обратно, также видим одинаковые значения счетчиков TX и RX, что подтверждает получение всех отправленных данных.

Если вы хотите отображать текст, который печатаете, то вам нужно включить функцию Local echo на вкладке Terminal при открытии порта. Важно: после включения функции Local echo, если вы замкнули TX и RX, то текст в терминале удвоится, потому что будет отображен вводимый символ и тот, который получен обратно.

Схема подключения внешнего устройства с RS-232:



Как проверить RS-422 интерфейс?
Для проверки RS-422 можно также воспользоваться простым способом: достаточно замкнуть контакты TD+ на RD+ и TD- на RD-. Тогда все переданные данные будут приняты обратно.

Убедитесь, что COM-порт настроен на RS-422.

В терминале видны данные, которые мы отправили в СОМ порт.

Схема подключения внешнего устройства с RS-422:

Как проверить RS-485 интерфейс?
Интерфейс RS-485 может быть реализован на 2 или 4 контактах.
Для варианта RS-485 с 4 контактами проверка сводится к тем же действиям что и в RS-422 с таким же подключением контактов TD+ на RD+ и TD- на RD.
Для варианта RS-485 с 2 контактами нужно использовать внешнее устройство для проверки работы. Это может быть второй порт UPort или заведомо исправное устройство с RS-485.

Убедитесь, что COM-порт настроен на RS-485 и правильно указано количество контактов.

Схема подключения внешнего устройства с RS-485:


Подтягивающие и согласующие резисторы
В некоторых моделях оборудования есть встроенные резисторы, которые обеспечивают правильную работу линий RS-422/485.
Согласующий резистор или терминатор 120 Ом – ставится в начале и конце линии для предотвращения отражения сигнала от конца линии и искажения полезного сигнала в RS-422/485.

При большой длине линии связи (более 100 метров) возникают эффекты длинных линий, которые связаны с индуктивностью и ёмкостью кабеля. Получается, что сигнал, переданный в линию с одной стороны, начинает искажаться по мере распространения в другую сторону. Поскольку на практике кабель на всей длине имеет одинаковые параметры погонной ёмкости и индуктивности, это свойство кабеля характеризуют волновым сопротивлением. Поэтому, если на приёмном конце кабеля использовать резистор с сопротивлением, равным волновому сопротивлению кабеля, то негативные резонансные явления значительно ослабляются.
Подтягивающие резисторы (pull high/low resistors) – предназначены для ограничения тока, протекающего по сигнальным цепям, и чтобы сделать состояние цифрового входа по умолчанию высоким или низким.

Цифровой вход нельзя напрямую подключить к питанию без ограничения тока, а также нельзя оставлять вход без подключения к чему либо, т.к. возможны ложные изменения состояния входа из-за внешних наводок.
Цепь с подтягивающим резистором можно представить в виде делителя напряжения из двух резисторов — одного подтягивающего и другого на месте кнопки.
Логический вход имеет ёмкость относительно земли, что влияет на время нарастания или спада сигнала при размыкании кнопки. Время спада или нарастания — это время между размыканием кнопки и достижением сигнала порогового напряжения, при достижении которого логическим входом фиксируется изменение логического состояния с высокого «1» на низкий «0» или наоборот.
Время спада и нарастания — зависит от произведения сопротивления, ёмкости и коэффициента, который учитывает пороговое напряжение. При подключении различных устройств значение ёмкости изменяется, это ведет к изменению формы сигнала, что может негативно сказаться на правильном определении уровня сигнала.
Поэтому иногда требуется подстройка значений подтягивающих резисторов, для восстановления формы сигнала. Ниже пример того, как может выглядеть сигнал при разном значении подтягивающего резистора:

Обычно значения подтягивающих резисторов по умолчанию оптимальны, но если форма сигнала сильно искажена или данные передаются с ошибками, то вам следует изменить значения подтягивающих резисторов.
Ниже показан пример расположения переключателей для изменения значений подтягивающих резисторов.
Форум АСУТП
igor22 здесь недавно
Сообщения: 85 Зарегистрирован: 05 июн 2015, 12:15 Имя: Murzin Страна: Россия город/регион: Алтайский край
Диагностика сети RS-485
Сообщение igor22 » 22 сен 2015, 13:06
Здравствуйте!
Уважаемые профессионалы, подскажите новичку.
Проложена сеть RS-485 (600-800м приблизительно). Протокол ModBus RTU. Преобразователь USB/RS-485. Скорость 9600. На концах линии стоят терминаторы 120 Ом. Есть скрученные разрывы витой пары, штук 5-6.
В сети 14 приборов, идет опрос половины приборов, по остальным ошибка таймаута и недостоверность данных при использовании встроенного ОРС сервера в SCADA (обновление происходит раз в 2 минуты).
При использовании OPC сервера все контроллеры опрашиваются нормально, однако эти данные могут браться из какого-нибудь буфера ОРС и так же могут быть недостоверны.
С чего начать диагностику сети и как можно определить помеха это или плохое согласование, OPC сервер или что-то еще?
Ryzhij почётный участник форума
Сообщения: 5332 Зарегистрирован: 07 окт 2011, 09:12 Имя: Гаско Вячеслав Эриевич Страна: Россия город/регион: Рязань Благодарил (а): 406 раз Поблагодарили: 599 раз
Re: Диагностика сети RS-485
Сообщение Ryzhij » 22 сен 2015, 13:28
igor22 здесь недавно
Сообщения: 85 Зарегистрирован: 05 июн 2015, 12:15 Имя: Murzin Страна: Россия город/регион: Алтайский край
Re: Диагностика сети RS-485
Сообщение igor22 » 22 сен 2015, 13:42
Alex question осмотрелся
Сообщения: 144 Зарегистрирован: 20 янв 2015, 10:13 Имя: Алексей Страна: Россия Поблагодарили: 10 раз
Re: Диагностика сети RS-485
Мне кажется что для модбаса данный кабель не совсем подходит, т.к. нужен кабель с волновым сопротивлением 120 ом (и терминатор соответствующий равный волновому сопротивлению линии), а у вас 100 омный. Но если половина устройств на линии отвечает значит по параметрам влазит более или менее.
Дробление импульсов это значит что у вас передний фронт будет не близким к идеальным, а с шумами типа. Сложно словами объяснить. Короче на переднем фронте видно будет расколбас сигнала.
А вообще я бы временно отключил от линии те устройства что отвечают на начал бы оставшиеся по одному опрашивать. Сел бы на линию какой нить моксой и смотрел есть ли запрос и что идет в ответ. и пытался бы добиться работоспособности по очереди для каждой железки.
rwg почётный участник форума
Сообщения: 995 Зарегистрирован: 29 апр 2014, 09:57 Имя: Рыбкин Владимир Геннадьевич Страна: Россия город/регион: Тверь Благодарил (а): 41 раз Поблагодарили: 116 раз
Re: Диагностика сети RS-485
Сообщение rwg » 22 сен 2015, 14:28
Ryzhij почётный участник форума
Сообщения: 5332 Зарегистрирован: 07 окт 2011, 09:12 Имя: Гаско Вячеслав Эриевич Страна: Россия город/регион: Рязань Благодарил (а): 406 раз Поблагодарили: 599 раз
Re: Диагностика сети RS-485
Сообщение Ryzhij » 22 сен 2015, 14:32
Ну-у-у, началось.
У кабеля UTP Cat5 волновое сопротивление не 120, а 100 Ом. И если уж Вы решили его «приколхозить», то и нагрузочные резисторы ставьте на концах такие же — по 100 Ом.
Расчёт должен подтвердить исправность линии или указать на места плохого контакта. Берёте справочник и по марке кабеля смотрите погонное сопротивление жилы. Можете прикинуть сами по сечению и материалу (медь).
Про экран я ничего не говорил. Я говорил про опасность паразитных токов уравнивания потенциалов по сигнальному кабелю.
Короче, убедитесь, что между кабелем шины и отключенным от него портом устройства нет потенциала более 3 VAC. Все остальные устройства шины должны быть при этом подключены к шине.
Фронты и спады импульса представляете? Так вот, если увидите, что один импульс раскрошился на несколько — согласования нет.
rwg почётный участник форума
Сообщения: 995 Зарегистрирован: 29 апр 2014, 09:57 Имя: Рыбкин Владимир Геннадьевич Страна: Россия город/регион: Тверь Благодарил (а): 41 раз Поблагодарили: 116 раз
Re: Диагностика сети RS-485
Сообщение rwg » 22 сен 2015, 15:23
Ryzhij почётный участник форума
Сообщения: 5332 Зарегистрирован: 07 окт 2011, 09:12 Имя: Гаско Вячеслав Эриевич Страна: Россия город/регион: Рязань Благодарил (а): 406 раз Поблагодарили: 599 раз
Re: Диагностика сети RS-485
Сообщение Ryzhij » 22 сен 2015, 15:50
igor22 здесь недавно
Сообщения: 85 Зарегистрирован: 05 июн 2015, 12:15 Имя: Murzin Страна: Россия город/регион: Алтайский край
Re: Диагностика сети RS-485
Сообщение igor22 » 23 сен 2015, 04:54
igor22 здесь недавно
Сообщения: 85 Зарегистрирован: 05 июн 2015, 12:15 Имя: Murzin Страна: Россия город/регион: Алтайский край
Re: Диагностика сети RS-485
Сообщение igor22 » 23 сен 2015, 08:24
Вообщем на данный момент проделал следующие действия:
1.Отключил устройство от порта RS-485. Измерил напряжение, показания довольно непонятные, показывает то 0 то 1, вообщем решил что это меньше 3 VAC и успокоился на этом.
2.Отключил все устройства которые благополучно отвечали мне по ModBus и оставил ту половину, которая плохо опрашивалась. Опрос прошел удачно, все «капризные» приборы нормально отвечали на запросы, переменные имели признак достоверности.
3.Сопротивление кабеля мереть не стал, т.к. длину общей сети точно не знаю, могу только догадываться, плюс минус 200 метров.
Когда все приборы на линии, опрашиваются они через одного.
Если имеет место ошибка по таймауту, то :
Увеличивал таймаут ответа slave устройства, но это ничего не дало. Обмен происходил в том же духе, только медленнее.
igor22 здесь недавно
Сообщения: 85 Зарегистрирован: 05 июн 2015, 12:15 Имя: Murzin Страна: Россия город/регион: Алтайский край
Re: Диагностика сети RS-485
Сообщение igor22 » 23 сен 2015, 08:27
Ryzhij почётный участник форума
Сообщения: 5332 Зарегистрирован: 07 окт 2011, 09:12 Имя: Гаско Вячеслав Эриевич Страна: Россия город/регион: Рязань Благодарил (а): 406 раз Поблагодарили: 599 раз
Re: Диагностика сети RS-485
Сообщение Ryzhij » 23 сен 2015, 08:37
igor22 здесь недавно
Сообщения: 85 Зарегистрирован: 05 июн 2015, 12:15 Имя: Murzin Страна: Россия город/регион: Алтайский край
Re: Диагностика сети RS-485
Сообщение igor22 » 23 сен 2015, 10:00
rwg почётный участник форума
Сообщения: 995 Зарегистрирован: 29 апр 2014, 09:57 Имя: Рыбкин Владимир Геннадьевич Страна: Россия город/регион: Тверь Благодарил (а): 41 раз Поблагодарили: 116 раз
Re: Диагностика сети RS-485
Сообщение rwg » 23 сен 2015, 10:28
VaBo не первый раз у нас
Сообщения: 394 Зарегистрирован: 21 июл 2013, 19:32 Имя: Вадим город/регион: Северодвинск Благодарил (а): 8 раз Поблагодарили: 24 раза
Re: Диагностика сети RS-485
Сообщение VaBo » 23 сен 2015, 10:29
igor22 здесь недавно
Сообщения: 85 Зарегистрирован: 05 июн 2015, 12:15 Имя: Murzin Страна: Россия город/регион: Алтайский край
Re: Диагностика сети RS-485
Сообщение igor22 » 23 сен 2015, 11:00
В настройках порта есть параметр «Tаймаут». Но это я так понимаю время ожидания ответа от slave. Еще есть такие настройки:
-Задержка (в мс) между тарнзакциями.
-Задержка (в мс) начала передачи данных после включения передатчика.
Какая из этих них увеличивает таймаут м\у запросами?
rwg почётный участник форума
Сообщения: 995 Зарегистрирован: 29 апр 2014, 09:57 Имя: Рыбкин Владимир Геннадьевич Страна: Россия город/регион: Тверь Благодарил (а): 41 раз Поблагодарили: 116 раз
Re: Диагностика сети RS-485
Сообщение rwg » 23 сен 2015, 11:11
igor22 здесь недавно
Сообщения: 85 Зарегистрирован: 05 июн 2015, 12:15 Имя: Murzin Страна: Россия город/регион: Алтайский край
Re: Диагностика сети RS-485
Сообщение igor22 » 23 сен 2015, 11:17
rwg почётный участник форума
Сообщения: 995 Зарегистрирован: 29 апр 2014, 09:57 Имя: Рыбкин Владимир Геннадьевич Страна: Россия город/регион: Тверь Благодарил (а): 41 раз Поблагодарили: 116 раз
Re: Диагностика сети RS-485
Сообщение rwg » 23 сен 2015, 11:47
igor22 здесь недавно
Сообщения: 85 Зарегистрирован: 05 июн 2015, 12:15 Имя: Murzin Страна: Россия город/регион: Алтайский край
Re: Диагностика сети RS-485
Сообщение igor22 » 23 сен 2015, 12:38
Установил следующие настройки:
Таймаут ответа 600 мс
Задержка между транзакциями 9мс
Пака полет нормальный, какой и нужен был.
Нашел в интернете такую статейку для диагностики сети RS-485, там сказано:
В большинстве сетей RS-485 заглушка (согласование волнового сопротивления линии передачи сигналов) создает больше проблем, чем решает. Чтобы проверить, заглушен ли узел, нужно отключить его от сети и обесточить. Далее, с помощью омметра измерить сопротивление между линиями A и B (или + и -) приемника. На заглушенной линии сопротивление обычно менее 200 Ом, в то время как на незаглушенной – более 4000 Ом.
Как я понимаю «Узел» в данной статье это некий прибор. Для проверки согласования нужно этот узел отключить от сети 485 и обесточить.
Задам вопрос дурацкий, прошу не кидаться камнями: «отключить его от сети и обесточить»
Имеется ввиду обесточить — отключить от питания, отключить от сети — отключить от линии RS485, верно?
Тогда зачем обесточивать если мы итак отключаем от сети измеряем сопротивление м\у А и В ?
Поиск и устранение неисправностей в сетях RS-485
Несмотря на распространение более современных альтернативных решений, технология RS-485 остается основой многих коммуникационных сетей. Далее приведены пошаговые рекомендации по поиску и устранению часто встречающихся проблем в сетях RS-485.
-
В RS-485 используется неуравновешенная дифференциальная пара. Чтобы свести к минимуму шум на линиях данных, каждое устройство должно быть заземлено через обратный сигнальный вывод.

По осциллограмме можно определить, находятся ли напряжения нуля и единицы вне состояния неопределенности, и проходит ли необходимый интервал времени (равный времени пересылки одного байта) перед переходом устройства в тристабильное состояние
Программное обеспечение для тестирования и наладки устройств и сетей на базе MODBUS

Протокол Modbus довольно распространен как в промышленных системах автоматизации, так и сетях систем типа «Умный дом», автоматизации малых объектов (теплицы и т.п.) и стыковки различного оборудования с домашним компьютером. Появление таких проектов как Arduino и Raspberry Pi значительно повысило интерес к задачам, связанным с робототехникой, автоматикой и автоматизацией. Все это обеспечивает рост популярности Modbus среди любителей и профессионалов. В статье рассмотрен вопрос тестирования и наладки, как отдельных устройств, так и сетей на базе протокола Modbus с позиции требований к программному обеспечению для решения таких задач и обзора существующих инструментов.
Если вы знакомы с архитектурой протокола, то можете смело пролистать пару следующих абзацев и перейти к дальнейшему описанию. Если же нет, то специально для вас ниже приведено небольшое введение в Modbus.
Modbus, краткое введение
Modbus является довольно распространённым протоколом в системах автоматизации на среднем и нижнем (полевом) уровнях. Средний — это уровень контроллеров — устройств, осуществляющих сбор данных и управление технологическим процессом. Нижний или полевой — это уровень взаимодействия датчиков и контроллеров или датчиков напрямую с сервером. Более подробно об уровнях в системах автоматизации можно посмотреть здесь.
Как правило, структура типовой системы автоматизации, использующей в качестве базового протокола Modbus, выглядит так как показано на рисунке в начале статьи. В качестве ”среды” для протокола Modbus может выступать либо RS-485/422/232 (подробно про RS-485 можно прочитать здесь и здесь), поверх него работает Modbus RTU или Modbus ASCII, либо транспортный протокол TCP в TCP/IP сетях, такая версия носит название Modbus TCP. В данной статье будет рассмотрен Modbus RTU.
Протокол Modbus предполагает наличие одного ведущего устройства в сети (оно называется Master или Client) и от 1 до 247 ведомых (они называются Slave или Server). Полное описание можно найти на официальном сайте или в вики.
Master периодически взаимодействует со Slave-устройствами, считывая или записывая в них какую-либо информацию. Этот процесс осуществляется в форме запрос-ответ. Запрос представляет собой последовательность байт, называемую кадром, в котором время между байтами стандартизировано и зависит от скорости передачи данных (напомним, что речь идет о Modbus RTU) и составляет не более длительности интервала, в течение которого может быть передано 1,5 байта данных. Время между кадрами должно быть не меньше времени передачи 3,5 байт.
Формат запроса имеет следующий вид:

ID — адрес устройства (1 байт),
FN — Modbus функция (1 байт),
[args] — аргументы функции (N байт, зависит от функции),
CRC — контрольная сумма CRC-16 (2 байта).
Ответ имеет схожий формат:

Почти все поля ответного кадра аналогичны кадру запроса, за исключением поля DATA, оно имеет различное наполнение, в зависимости от функции.
Если устройством не поддерживается запрашиваемая функция или аргументы в поле [args] запроса являются некорректными для данного Slave-устройства, то в ответе, в поле FN старший бит будет выставлен в 1 (т.е. на FN наложится маска 0x80), а в поле DATA будет помещена дополнительная информация об ошибке.
Каждое Slave-устройство может иметь определенные области данных и содержать дополнительную специфическую информацию.
Возможные области данных представлены в таблице ниже:
| Поле | Доступ | Размер | Описание |
|---|---|---|---|
| Discrete Inputs | Только чтение | Один бит | Данные от системы ввода/вывода |
| Coils | Чтение/Запись | Один бит | Ячейки могут использоваться по своему усмотрению |
| Input registers | Только чтение | 16 бит | Данные от системы ввода/вывода |
| Holding registers | Чтение/Запись | 16 бит | Регистры могут использоваться по своему усмотрению |
За более подробной информацией следует обратиться к полному описанию Modbus RTU, доступному в виде спецификации.
Тестирование устройств с поддержкой Modbus RTU в рамках процесса разработки
Как при разработке, так и при наладке устройств с поддержкой протокола Modbus RTU, вам необходимо иметь специализированное программное обеспечение и технические средства. Из технических средств наиболее простой вариант — это преобразователь RS-485/USB, из всех устройств такого типа, по нашему мнению, наилучшим выбором является MOXA UPORT 1130/UPORT 1150, цена вопроса которого составит 5000 — 6000 руб. Существуют различные отечественные решения, например, преобразователи фирмы Fractal или ОВЕН. Конструкция этих устройств достаточно проста, и при определенной сноровке такой преобразователь можно собрать самостоятельно. Более сложными являются решения типа Ethernet/RS-485 (например, NPORT от MOXA).
При разработке устройств с поддержкой Modbus RTU, чаще всего требуется реализовать функцию Slave, так как в основном это различные датчики, управляемые реле, модули ввода/вывода и т.п., Master-устройства создаются реже. В сетях автоматизации в качестве мастера, обычно выступает контроллер, а он, как правило, уже имеет реализацию Modbus-стека, либо OPC Server/SCADA система, укомплектованные Modbus-драйвером.
Вопрос разработки непосредственно Modbus-стека мы не будем рассматривать в этой статье. Единственное, стоит отметить библиотеку FreeMODBUS, на базе которой достаточно просто построить устройство с поддержкой функций Modbus Slave. Пример реализации описан в статье на Хабре.
Вторым важным моментом при разработке Modbus-устройств является тестирование. Здесь всё зависит от стадии разработки и цели тестирования.
На начальных этапах полезным инструментом является Modbus-терминал. С помощью него мы можем вручную сконструировать запрос, послать его и проанализировать ответ. Существуют терминалы в чистом виде, например, SmartTerminal, Access Port, терминалы с поддержкой Modbus RTU — Termite от S2-Team или Pic18 Terminal от Fractal (не обновлялась с 2006 года) и т.п. Последний заточен под оборудование компании Fractal, но позволяет “общаться” с любыми устройствами, у которых в настойках порта выставлена четность None, с другими вариантами он не работает.
В процессе разработки нередко возникает ситуация, когда устройство принимает запрос и отвечает на него (это можно понять либо по светодиодам приема/передачи пакетов, если вы их предусмотрели в конструкции, либо через отладчик, поставив breakpoint в нужном месте), а в терминале или какой-то другой специализированной программе, данные не отображаются. В таком случае вам пригодится сниффер для последовательного порта, желательно, с поддержкой протокола Modbus. В качестве примера можно привести Free Serial Analyzer, COM Port Toolkit. Последний в настоящее время, похоже, прекратил свое развитие.
В дальнейшем, требуется не только проверять работает ли устройство в принципе (т.е. корректно отвечает на запросы), но и определять наработку на отказ с помощью длительного тестирования. Важными аспектами здесь являются поддержка авто-опроса с изменяемой нагрузкой (количество запросов в секунду) и наличие функции логирования. С этими задачами поможет справиться Modbus Poll или Modscan, это ПО платное, но имеется пробный период.
Следует учитывать, что собранные логи нужно будет анализировать, то есть определять количество запросов, на которые устройство не ответило, обнаруживать сбои, например, самопроизвольное изменение данных в ячейках и т.п. Конечно, можно использовать полноценную SCADA-систему, либо самому разработать и написать систему анализа и визуализации логов. Как вариант, рекомендуем обратить внимание на MasterSCADA от Insat. Она имеет встроенный Modbus-драйвер и версия до 32 точек является бесплатной, довольно проста в освоении (на сайте производителя есть хорошая документация и видео уроки).
В конце данной статьи мы определим список функций “идеального” инструмента для тестирования и наладки устройств/систем на базе протокола Modbus, а также сделаем небольшой обзор существующих инструментов.
Наладка систем автоматизации, использующих Modbus устройства
Людей, занимающихся наладкой систем автоматизации и просто пытающихся “подружиться” с каким-либо устройством, на борту которого находится Modbus, в разы больше чем, тех, кто эти устройства разрабатывает. Исходя из специфики задачи, требования к соответствующему ПО будут немного отличаться.
Если необходимо соединить контроллер и одиночное Slave-устройство, то прежде всего, нужно установить с ним связь с помощью преобразователя интерфейсов RS-485/USB, ПК и специализированного программного обеспечения либо терминала. В таком случае, логика работы и набор инструментов ничем не отличается от тех, что применяются при разработке Slave-устройства на стадии тестирования. На этом этапе не требуется длительное тестирование с последующим анализом большого количества лог-файлов.
В случае, когда у вас уже есть готовая сеть устройств, можно выделить следующие задачи:
- проверка работоспособности всех устройств в сети (опрос каждого устройства в отдельности и проверка корректности ответа);
- нагрузочное тестирование (опрос устройств в сети в течение длительного времени). Желательно сделать несколько экспериментов с различной частотой опроса, а после провести анализ собранных данных на наличие отказов, не ответов, порчи данных и т.п.
В этом случае, понадобится либо терминал с возможностью создания списка запросов, либо специализированный инструмент типа Modbus Poll, который позволяет опрашивать несколько устройств в рамках одного проекта.
Modbus-устройства могут иметь определенные настройки интерфейса RS-485: количество бит данных, четность и количество стоп бит. Устройства с различными настройками не могут работать в одной сети с одним и тем же мастером. Тестирование и конфигурирование таких устройств удобно проводить, применяя терминальные программы, имеющие возможность быстрого переключения между предустановленными профилями настроек портов или работающие с несколькими линиями одновременно.
Реже возникает задача организации обмена данными с устройством, протокол которого отличается от стандартной спецификации Modbus RTU. Нам приходилось встречаться с ситуацией, когда протокол Slave-устройства логически повторяет Modbus (структура пакета, таймауты и т.п.), но использует функции вне стандарта. В таком случаем возможна работа с использованием Modbus Poll, он позволяет строить произвольные запросы, или терминала, обладающего сходным функционалом. Стандартная SCADA-система, обычно, в такой ситуации бессильна, и работа с подобным оборудованием осуществляется через специальный OPC сервер.
Требования к ПО для работы с Modbus-устройствами в режиме мастера
Описав различные задачи, которые возникают при разработке, настройке и наладке устройств с протоколом Modbus, составим список требований к специализированному программному обеспечению.
- Поддержка настроек COM-порта (номер, скорость, четность, количество бит данных и стоп бит)
- Настройка таймаутов (время ожидания приема ответа на запрос, время между символами и кадрами)
- Поддержка стандартного Modbus
- Поддержка нестандартного Modbus
- Авто-опрос одного/нескольких устройств
- Настройка авто-опроса
- Логирование сессии / настройка логирования
- Создание профилей для быстрого переключения между настройками порта
- Работа в режиме сниффер
- Лицензия продукта
- Сопровождение продукта разработчиком
Обзор ПО для работы с Modbus протоколом
Modbus Poll
Начнем с классического приложения и довольно известного в наших “узких” кругах — Modbus Poll от Witte Software.

Эта программа является симулятором мастера в Modbus-сети. Интерфейс Modbus Poll интуитивно понятен. Если вы представляете себе логику работы протокола, то разобраться с программой труда не составит.
| Функция | Наличие | Комментарий |
|---|---|---|
| Поддержка настроек COM-порта | + | |
| Настройка таймаутов | + | Доступны: время ожидания ответа |
| Поддержка стандартного Modbus | + | Список функций ограничен |
| Поддержка нестандартного Modbus | + | |
| Авто-опрос одного / нескольких устройств | + / + | |
| Настройка авто-опроса | + | Доступно: время между запросами |
| Логирование сессии / настройка логирования | + / + | |
| Создание профилей для быстрого переключения между настройками порта | — | |
| Работа в режиме сниффер | — | |
| Лицензия продукта | ПО платное | Есть пробный период 30 дней |
| Сопровождение продукта | + |
Достоинства: хорошая система логирования, достаточное количество поддерживаемых функций (во всяком случае, наиболее востребованные присутствуют), большое количество настроек внешнего вида.
Недостатки: цена (одна лицензия $ 129.00), нестандартный Modbus поддерживается как опциональная функция, нет профилей для быстрого переключения портов — приходится каждый раз перенастраивать соединение.
Modscan32/64
Следующим ПО в нашем обзоре будет Modscan от WinTECH. Внешне эта программа очень похожа на Modbus Poll, но функционалом она обладает значительно меньшим.

У Modscan есть одна уникальная особенность для программ данного типа — это возможность создания форм (своего рода мнемосхем). Пока ее функционалу далеко до реальных SCADA-систем, но наличие такого бонуса радует. На сегодняшний день это достаточно скудный, по своим возможностям инструмент (имеется ввиду редактор форм), но будем надеяться, что со временем, разработчики доведут его до хорошего уровня.
| Функция | Наличие | Комментарий |
|---|---|---|
| Поддержка настроек COM-порта | + | |
| Настройка таймаутов | + | Доступны: время ожидания ответа |
| Поддержка стандартного Modbus | + | Список функций ограничен |
| Поддержка нестандартного Modbus | — | |
| Авто-опрос одного / нескольких устройств | + / + | |
| Настройка авто-опроса | + | Доступно: время между запросами |
| Логирование сессии / настройка логирования | + / — | |
| Создание профилей для быстрого переключения между настройками порта | — | |
| Работа в режиме сниффер | — | |
| Лицензия продукта | ПО платное | Есть пробный период |
| Сопровождение продукта | + |
Достоинства: возможность создания собственных форм для просмотра данных, поддержка MMI & OLE Automation.
Недостатки: цена (одна лицензия $ 84.95), нет поддержки нестандартного Modbus, нет профилей для быстрого переключения портов, ненастраиваемая система логирования, малое количество поддерживаемых Modbus-функций.
Termite
Следующим в нашем списке будет терминал Termite от S2-Team. Termite является специализированный Modbus терминалом. Это означает, что он сам будет считать за вас CRC, распознавать сообщения об ошибках в ответах и т.д., ваша задача заключается в том, чтобы ввести корректное тело запроса в поле команды.

| Функция | Наличие | Комментарий |
|---|---|---|
| Поддержка настроек COM-порта | + | |
| Настройка таймаутов | + | Доступны: время ожидания ответа, время между символами и кадрами |
| Поддержка стандартного Modbus | + | |
| Поддержка нестандартного Modbus | + | |
| Авто-опрос одного / нескольких устройств | + / + | |
| Настройка авто-опроса | + | Доступно: время между запросами |
| Логирование сессии / настройка логирования | + / — | |
| Создание профилей для быстрого переключения между настройками порта | + | |
| Работа в режиме сниффер | — | |
| Лицензия продукта | Есть платная и бесплатная версии |
Бесплатная версия обладает ограниченным функционалом (на количество каналов, одновременно ведомых лог файлов и количество разных запросов в авто-опросе) |
| Сопровождение продукта | + |
Достоинства: поддержка всех Modbus-функций, работа с нестандартным Modbus, удобная система подсказок, возможность настройки внешнего вида ПО, поддержка профилей для быстрого переключения между настройками порта.
Недостатки: PRO версия платная (одна лицензия $ 10), в текущем релизе нет возможности гибко настраивать логирование.
AccessPort
Программа из разряда “чистых” терминалов. Она не поддерживает Modbus, поэтому при её использовании будьте готовы считать CRC для ваших кадров самостоятельно. Несомненным плюсом является то, что в неё встроен сниффер последовательного порта.

| Функция | Наличие | Комментарий |
|---|---|---|
| Поддержка настроек COM-порта | + | |
| Настройка таймаутов | + | |
| Поддержка стандартного Modbus | — | |
| Поддержка нестандартного Modbus | — | |
| Авто-опрос одного / нескольких устройств | + / — | |
| Настройка авто-опроса | + | Доступно: время между запросами |
| Логирование сессии / настройка логирования | + / — | |
| Создание профилей для быстрого переключения между настройками порта | — | |
| Работа в режиме сниффер | + | |
| Лицензия продукта | ПО бесплатное | |
| Сопровождение продукта | Не поддерживается | Крайняя версия продукта была выпущена 2012-04-23 |
Достоинства: наличие сниффера порта, ПО бесплатное, настраиваемое представление данных, возможность передачи файлов.
Недостатки: не поддерживает Modbus вообще, нет возможность создавать профили, в режиме авто-опрос можно работать только с одним устройством, в настоящее время ПО не развивается.
В заключение хотелось бы добавить, что в сети достаточно большое количество программ для работы с последовательным портом, но если есть необходимость работать именно с Modbus протоколом, то его поддержка в таком ПО крайне желательна. Одна из основных причин — это расчет CRC, в ручную это делать накладно, также важно, чтобы программа могла уметь разделять кадры, иначе все превращается в сплошную мешанину байтов, ну и если есть авто-опрос, то это сильно упрощает жизнь.