Преобразователь (конвертор) ModBus RTU в ModBus TCP

Назначение программы

Программа является конвертором из Modbus-RTU в Modbus-TCP. Существует много хорошего (в т.ч. и старого) ПО для Modbus-RTU, которое, к сожалению, не умеет работать в сети по Modbus-TCP.

Идея программы такая: при помощи драйвера Null-modem emulator (com0com) создается виртуальная пара COM-портов: http://com0com.sourceforge.net (http://sourceforge.net/projects/com0com/). Существуют различные другие программы. Можно использовать физический СОМ-порт.

На один порт подключается программа-мастер Modbus-RTU, а на другой - программа-конвертор.
Запросы Modbus-RTU принимаются из порта, преобразуются в формат Modbus-TCP и передаются в сеть. Принятые ответы из сети обрабатываются и возвращаются обратно в COM-порт.
Программа работает в режиме "демона" (сервиса). Алгоритм работы такой:

  1. При старте сервиса читается INI-файл rtutcp.ini.
  2. Открыть заданный COM-порт с заданными параметрами. Если порт открылся успешно – продолжаем дальше.
  3. Принимаем из COM-порта запрос от "Мастера" в формате Modbus-RTU.
  4. Если запрос корректный (правильное количество байт и значение CRC), по адресу Modbus, взятому из полученного запроса находится пара "IP-адрес - Addr Modbus-TCP".
  5. Устанавливается соединение с сервером по полученному IP-адресу.
  6. Формируется запрос Modbus-TCP, выполняется подмена "исходного" адреса Modbus на Addr Modbus-TCP, отрезается поле CRC.
  7. Передается запрос Modbus-TCP.
  8. Получает ответ от сервера Modbus-TCP.
  9. Полученный ответ дополняется полем CRC, подменяется адрес Modbus на "исходный" и отправляется в COM-порт.
  10. Ожидается новый запрос от "Мастера" в формате Modbus-RTU.
  11. Если в течение 5 минут запрос от "Мастера" не поступил, разрываем соединение с сервером.
Формат INI-файла

[other]

COM-Port=COM11 //СОМ-порт, с которого принимаются запросы от "Мастера" в формате Modbus-RTU

Parity=N //Контроль четности. N – None, E – Even, O – Odd, M – Mark, S – Space.

BaudRate=9600 //Скорость

IP-addres_default=192.168.42.153 // IP-адрес по умолчанию. По этому адресу отправляются все запросы с неопознанными адресами Modbus-RTU. Addr Modbus - остается "как есть".

IP_Port_default=502 // IP-порт по умолчанию

[Dev1] //

Addr_Modbus_COM_Port=1 //Адрес для Modbus-RTU. Если 0, то не используется

Modbus_addres_TCP_DEV=1 // Адрес Modbus-TCP

IP-addres=192.168.42.102 // IP-адрес на который отправляется запрос

TCP-Port=502 // IP-порт

[Dev2]

Addr_Modbus_COM_Port=0

Modbus_addres_TCP_DEV=1

IP-addres=127.0.0.1

TCP-Port=502

Установка

Разархивируйте архив, запустите install.bat. В Windows 7/8 может понадобиться запуск от имени администратора. Для удаления запустите uninstall.bat. В списке служб сервис называется «Преобразование ModBus RTU в ModBus TCP». В «просмотр событий» отображается как Modbus_rtu_tcp_convertor или rtu_tcp.exe.

Отлов ошибок

События можно посмотреть в Панель управления-Администрирование-Просмотр событий. Так же в файле error_mb.log и log_service.txt.

Самая распространенная ошибка – неправильно указанный СОМ-порт. Исправьте ini-файл, зайдите в Панель управления-Администрирование-Службы, остановите сервис «Преобразование ModBus RTU в ModBus TCP» и запустите его снова.

Что делать, если надо использовать несколько СОМ-портов?

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

Демо-версия программы

Демо-версия программы рассчитана на работу в течение 3 суток. После этого сервис сам завершит свою работу.

Преобразователь (конвертор) ModBus RTU в ModBus TCP Скачать преобразователь ModBus RTU в ModBus TCP