"Удлинитель" портов RS-232 через Internet
Описание и инструкция по настройке.
Описание
--------
"Удлинитель" портов RS-232 заменяет невозможно длинный кабель,
соединяющий два устройства с портами RS-232 (DTE и DCE),
передавая в обоих направлениях данные и состояние
управляющих/модемных линий.
Схема удлинителя:
--------- ---------- ---------- --------
| DTE|--> >--|DCE | | DTE|--> >--|DCE |
| ПК | ..... | SG-17R |-- Internet --| SG-17R | ..... | УСТР.|
| DTE|--> >--|DCE | | DTE|--> >--|DCE |
--------- ---------- ---------- --------
Направление передачи управляющих/модемных линий:
Прямой соединительный кабель:
DTE DCE
--- ---
DTR -> DTR
DSR <- DSR
RTS -> RTS
CTS <- CTS
CD <- CD
RI <- RI
null-modem:
DTE DTE
--- ---
DTR -> DSR,CD
CD,DSR <- DTR
RTS -> CTS
CTS <- RTS
Устройство и принципы работы
----------------------------
На каждый сконфигурированный порт RS-232 на каждом рутере
запускается отдельный экземпляр демона rs232-tcpext,
на одной стороне (рутере SG-17R) в пассивном режиме
(ожидание соединений), на другой стороне в активном режиме
(установление соединений).
Устанавливаются два соединения TCP/IP, одно для данных,
другое для состояния управляющих/модемных линий.
Состояние управляющих/модемных линий опрашивается с заданным
интервалом времени, обычно 100 msec.
В случае любой ошибки, закрытия любого из соединений,
закрытия порта RS-232, невожможности установления соединений
с другой стороной, происходит рестарт (закрытие и открытие)
соединений и порта RS-232 с заданной задержкой, обычно 1000 msec.
Архитектура с отдельными экземплярами демонов для каждого порта
обеспечивает при конфигурировании/рестарте одного порта
невмешательство в потоки данных других портов.
Инструкция по настройке
-----------------------
1. Откройте в браузере две вкладки на страницы управления обоими
рутерами.
2. Во вкладках Hardware/ttyRS* настройте параметры выбранных
портов RS-232 и нажмите кнопку "save".
3. Для каждого интерфейса RS-232 решите, который из рутеров
для данного интерфейса RS-232 будет активной и пассивной сторонами.
Пассивная сторона ждёт соединения на выбранном сетевом адресе
от активной стороны.
4. Во вкладках Services/ttyRS* обоих рутеров настройте стороны соединения.
Селектор "mode" определяет режим:
* "Disable" - служба выключена,
* "Listen On" - ждать соединений на заданных "host", "port" (пассивный режим)
* "Connect To" - соединится с заданными "host", "port" (активный режим)
Поля "host" и "port" определяют сетевой адрес и порт,
на котором пассивная сторона ждёт соединения от активной стороны (см. bind(2))
или на которые делает соединение активная сторна.
Значение по умолчанию - 0.0.0.0 - принимать соединение от любого из
сетевых интерфейсов. localhost (127.0.0.1) не сможет принимать соединения
от других узлов в сети.
Поле "Modem lines polling interval (msec)" определяет интервал времени опроса
состояния модемных линий, по умолчанию 100 msec.
Поле "Restart delay (msec)" определяет задержку перед рестартом
в случае любой ошибки, по умолчанию 1000 msec.
Нажмите кнопки "save".
Убедитесь, что на каждом рутере запущен процесс: во вкладке System/Console
введите команду "ps ax" и убедитесь, что процесс rs232-tcpext запущен:
ps ax
...
728 ? S 0:00 rs232-tcpext /dev/ttyRS0 0.0.0.0 3000 listen /var/run/rs232-tcpext.ttyRS0.pid 100 1000
3571 ? S 0:00 rs232-tcpext /dev/ttyRS0 192.168.2.101 3000 connect /var/run/rs232-tcpext.ttyRS0.pid 100 1000
Учтите, что процесс запуска из web системы достаточно медленный.
Во вкладках System/Tools/Syslog можно наблюдать сообщения демонов:
Пассивная сторона:
daemon.warn rs232-tcpext ttyRS0 listen : started up
daemon.info rs232-tcpext ttyRS0 listen : pid file '/var/run/rs232-tcpext.ttyRS0.pid' created
daemon.info rs232-tcpext ttyRS0 listen : Waiting data connection...
После соединения от активной стороны:
daemon.info rs232-tcpext ttyRS0 listen : Data connection from 192.168.3.102:2937
daemon.info rs232-tcpext ttyRS0 listen : Waiting state connection...
daemon.info rs232-tcpext ttyRS0 listen : State connection from 192.168.3.102:2938
daemon.info rs232-tcpext ttyRS0 listen : Recv modem state: 0x03, DTR:1 DSR:1 RTS:0 CTS:0 CD:0 RI:0
daemon.info rs232-tcpext ttyRS0 listen : Send modem state: 0x03, DTR:1 DSR:1 RTS:0 CTS:0 CD:0 RI:0
daemon.info rs232-tcpext ttyRS0 listen : Recv modem state: 0x03, DTR:1 DSR:1 RTS:0 CTS:0 CD:0 RI:0
Активная сторона:
daemon.warn rs232-tcpext ttyRS0 connect: started up
daemon.info rs232-tcpext ttyRS0 connect: pid file '/var/run/rs232-tcpext.ttyRS0.pid' created
daemon.info rs232-tcpext ttyRS0 connect: Connecting (data) to 192.168.2.101:3000 ...
daemon.err rs232-tcpext ttyRS0 connect: socket_connect(): Could not connect to 192.168.2.101:3000
daemon.warn rs232-tcpext ttyRS0 connect: restart
daemon.info rs232-tcpext ttyRS0 connect: Connecting (data) to 192.168.2.101:3000 ...
daemon.info rs232-tcpext ttyRS0 connect: Connecting (state) to 192.168.2.101:3000 ...
daemon.info rs232-tcpext ttyRS0 connect: Send modem state: 0x03, DTR:1 DSR:1 RTS:0 CTS:0 CD:0 RI:0
daemon.info rs232-tcpext ttyRS0 connect: Recv modem state: 0x03, DTR:1 DSR:1 RTS:0 CTS:0 CD:0 RI:0
daemon.info rs232-tcpext ttyRS0 connect: Send modem state: 0x03, DTR:1 DSR:1 RTS:0 CTS:0 CD:0 RI:0
6. Простая проверка работы удлинителя RS-232.
Соедините выбранные интерфейсы RS-232 рутеров с портами ПК:
------------------ ------------------------------
| : COM1 DTE | ------ | DCE ttyRS0 : рутер1 : eth0 | ...... Internet ...
| : | ------------------------------ . .
| : eth1 | .......................................... .
| : | .
| ПК :..........| .
| : | .
| : eth2 | .......................................... .
| : | ------------------------------ . .
| : COM2 DTE | ------ | DCE ttyRS0 : рутер2 : eth0 | ...... Internet ...
------------------ ------------------------------
Настройте интерфейсы RS-232 ПК (скорость, 8n1, ...) так же, как и
соединённые с ними интерфейсы рутера.
На обоих ПК запустите терминальные программы на соотвествующие интерфейсы
и попечатайте.
Для проверки передачи сигналов управления/модемных линий эта схема непригодна.