"Удлинитель" портов 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, ...) так же, как и соединённые с ними интерфейсы рутера. На обоих ПК запустите терминальные программы на соотвествующие интерфейсы и попечатайте. Для проверки передачи сигналов управления/модемных линий эта схема непригодна.