Последовательные интерфейсы RS-232/422/485 до сих пор очень популярны в промышленности: по ним подключаются диагностические порты, датчики, сканеры штрих-кодов и RFID меток и т.д. Однако последовательные интерфейсы имеют свои ограничения. Иногда возникает необходимость получить доступ к такому интерфейсу по IP-сети, или, например, иметь доступ к одному устройству с RS-232 с нескольких удаленных компьютеров одновременно, или объединить несколько удаленных объектов в одну шину RS-485.

Сервер последовательных интерфейсов конвертирует последовательные физические протоколы в IP-пакеты, и позволяет программно управлять ими — подключать удаленный виртуальный COM-порт к компьютеру по сети так, будто он подключен физически, и прозрачно соединять несколько устройств в режиме P2P, без использования компьютеров.

В статье мы разберем сервер последовательных интерфейсов Advantech EKI-1524, имеющий четыре последовательный порта, каждый из которых поддерживает протоколы RS-232/422/485, и два LAN-порта.


Сервер последовательных интерфейсов EKI-1524 имеет четыре порта DB9 и два LAN-порта.

Ключевые функции EKI-1524:

  • Виртуальный COM-порт — позволяет программно эмулировать виртуальный COM-порт удаленного устройства на системе Linux.
  • Одновременное подключение нескольких клиентов — в режиме сервера дает возможность использовать один последовательный порт для нескольких устройств одновременно.
  • Работа в режиме P2P — одновременная работа в режиме клиента и сервера позволяет объединить несколько EKI-1524 напрямую, без использования серверов и компьютеров.

Характеристики



Серия последовательных серверов EKI-1500 представлена широким спектром устройств для различных задач. От серверов с одним последовательным портом: EKI-1511X до серверов на 16 портов, для монтажа в серверную стойку, таких как EKI-1526N.

Дополнительно представлены модели с повышенным уровнем защищенности, для работы в экстремальных условиях, и гальванической развязкой портов, для защиты от высоких напряжений: EKI-1522I, EKI-1524I, и другие.


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

Виртуальный COM-порт


Сервер последовательных интерфейсов позволяет по TCP/IP получить доступ к удаленным устройствам таким образом, что для прикладного ПО это будет выглядеть так, будто устройства подключены к физическому COM-порту.


Принцип работы виртуального COM-порта по сети Ethernet

Для этого на стороне клиента используется модуль ядра Linux и программа для обмена данными с сервером последовательных интерфейсов. В итоге для пользователя такое подключение выглядит как физический порт (устройство /dev/ttyADV0).

На данный момент Advantech выпускает драйвера виртуального COM-порта только для ОС Linux. Инструкция по сборке модуля ядра VCOM 2.0 на Ubuntu.
Также существуют бинарные пакеты драйвера под разные дистрибутивы: Linux Pseudo TTY

В веб-интерфейсе можно настроить параметры работы в данном режиме:



Дополнительные настройки. Можно вручную задать таймауты и т.д:



Настройки параметров последовательного интерфейса. В этом меню также можно изменить основной протокол (RS-232/422/485), для каждого порта.



Режим RFC 2217


Также доступен открытый протокол перенаправления COM-порта RFC 2217, представляющий собой расширенные команды для протокола Telnet. В этом режиме устройство принимает входящие подключения по TCP, в настройках можно указать порт для входящий соединений.



Режим P2P


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


Подключение двух удаленных устройств по последовательному протоколу через TCP/IP-транспорт

Таким образом можно программно переключать устройства между собой, соединять удаленные шины по RS-485 и делать много другое, используя все преимущества IP-сетей, включая радиомосты, виртуальные частные сети (VPN) и т.д. Передаваемые данные между двумя серверами можно дополнительно защитить от перехвата, используя шифрование на транспортном уровне.

Уведомления о событиях


Устройство позволяет настроить уведомления о событиях с помощью Email и SNMP Trap. MIB-файл для настройки SNMP-сервера доступен для каждого устройства.



События для уведомлений можно настроить вручную.



Логирование через Syslog


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



Первичная настройка


Первичную конфигурацию сервера последовательных интерфейсов можно выполнить через утилиту EKI Device Configuration Utility. При этом утилита работает через ARP-пакеты и не требует настройки соответствующего IP-адреса на сетевом интерфейсе. Это значит, что можно задать любой IP-адрес устройству, без утраты доступа.



Заключение


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

Ссылки


Как общаются машины — протокол MQTT
Как общаются машины — протокол Modbus
ADAM-3600 — многофункциональный промышленный контроллер

Комментарии (15)


  1. Gho_st
    10.06.2019 13:13
    +1

    Когда-то делал аналогичное решение в упрощенном варианте с помощью netcat по такому типу:

    netcat www.example.com port </dev/ttyS0 >/dev/ttyS0
    

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


    1. vrangel
      10.06.2019 17:56
      +1

      Аналогично до сих пор используем. OrangePi, USB-to-serial, netcat — и вот готовый конвертер интерфейсов за копейки.


  1. irbis_al
    10.06.2019 14:13

    Скажите а может он просто работать не как виртуальный COM (А то непонятно соберётся… не соберётся… я не использую Ubuntu я использую Centos ) Так вот просто кинул я в socket 10.0.3.1:7000 Информацию 0x5f 0xc6 Она в com 1 EKI-1524 попала.
    Пришла в EKI-1524(com 1) информация я в Клиенте socket 10.0.3.1:7000 её увидел


    1. zhovner
      10.06.2019 18:01

      Полагаю, этот как раз то о чем вы говорите:


      Также доступен открытый протокол перенаправления COM-порта RFC 2217, представляющий собой расширенные команды для протокола Telnet.


    1. Dinxor
      13.06.2019 00:17

      Именно с этим сервером интерфейсов не сталкивался, но аналогичное устройство от eWon отлично работает в этом режиме, уже лет 10. Виртуальный COM обычно просто перенаправляет полученные данные в сокет.


  1. IgorPie
    10.06.2019 15:59

    Как они соотносятся с устоявшейся на рынке классикой, вроде Moxa?


  1. Tsvetik
    11.06.2019 09:14

    Переварит ли эта коробочка протокол котором важны тайминги? Скажем, тот же modbus rtu?


    1. eliza-s
      11.06.2019 12:02

      Для протокола Modbus RTU мы советуем наши Modbus шлюзы или Modbus роутеры.


      1. Tsvetik
        11.06.2019 12:30

        вы не ответили на вопрос


        1. eliza-s
          11.06.2019 13:03

          Именно эта продукция не рассчитана на Modbus RTU, только Modbus ASCII, как раз из-за тайминга.
          У нас очень большой выбор Modbus шлюзов, более 20 моделей. Какие именно у вас стоят задачи?


          1. Tsvetik
            11.06.2019 13:19

            Modbus был указан в качестве примера. У меня легаси протокол с таймингами.


            1. Advantech Автор
              13.06.2019 23:05

              Нужно иметь в виду, что преобразование протоколов, ethernet-коммутаторы и сам TCP/IP безусловно вносит задержку. Более того, в зависимости от загруженности сети, задержка может изменяться. То есть можно вполне говорить о задержках в миллисекунды. Поэтому, если ваш протокол определяется длину пакета по временным интервалам, то такое решение скорее всего не подойдет.


  1. Chugumoto
    11.06.2019 13:52

    ммм… ностальгия нахлынула…
    помню через ADAM-4571 (точно не помню, но похож) чтоли банкклиенты бухам подключал на один модем :)


  1. MrNobody
    13.06.2019 04:36

    Что-то я тут задумался, а бывают ли LPT over IP.
    Беглый поиск результатов не дал.
    Может это не будет работать из-за ограничений или сложности реализации, расскажите пожалуйста.


    1. Advantech Автор
      13.06.2019 23:13

      Полагаю, что технических ограничений на инкапсуляцию протокола параллельного порта в TCP/IP нет. Скорее в этом просто не было необходимости. Кстати, разъем DB25, который обычно подразумевается под названием LPT, часто использовался и для последовательных интерфейсов (rs232/485). Так что старые модели serial over ip шлюзов часто имели DB25 разъем.