Проброс TCP и COM портов

<< Click to Display Table of Contents >>

Navigation:  Multi-Protocol MasterOPC Server > Исполнительная система для Linux > Работа с OPC сервером >

Проброс TCP и COM портов

Мы рекомендуем отладить работу конфигурации ОРС сервера на Windows, а затем перенести ее на Linux систему - при таком подходе конфигурирование будет выполняться быстрее.

Однако как быть, если с Windows компьютера нет доступа к нужному оборудованию? Например прибор подключен к удаленной Linux машине к COM порту, и подключить его к компьютеру разработчика не возможно. В этом случае можно пробросить порты и проводить отладку, как если бы приборы были подключены напрямую.

Для решения данной задачи можно использовать специальную Linux утилиту socat:

http://www.dest-unreach.org/socat/doc/socat.html

Для того, чтобы установить socat из репозитория необходимо выполнить команду в терминале:

sudo apt-get install socat -y

Socat обладает обширным количеством параметров запуска, которые описаны на сайте программы. Ниже мы разберем наиболее типовые варианты использования. Мы не будем давать полного описания каждой команды - детальное описание к каждой из них вы также можете посмотреть на сайте программы.

Проброс COM порта.

Прежде чем пробрасывать СОМ порт необходимо определить параметры этого порта - его имя, а также установить скорость. Для того чтобы определить имя порта воспользуйтесь командой:

dmesg | grep tty

Команда выведет список портов.

linux_rabota_s_opc_serverom_probros_tcp_i_com_portov

В данном случае доступен стандартный порт tty0 (COM1) и USB0 - конвертер USB-COM с чипом FTDI, его мы и будем пробрасывать - его полное имя будет /dev/ttyUSB0. Именно этот порт мы будет использовать в дальнейшем рассмотрении, вам же нужно будет в командах указывать свое имя порта.

Чтобы посмотреть установки скорости воспользуемся командой:

sudo stty -F /dev/ttyUSB0 -a    

linux_rabota_s_opc_serverom_probros_tcp_i_com_portov1

Как мы видим скорость установлена в 9600. Если требуется другая скорость, то установите ее командой (в данном случае устанавливаться скорость 9600):

sudo stty -F /dev/ttyUSB0 9600

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

echo -en "ABCD" > /dev/ttyUSB0

Если у вас используется USB конвертер, то при отправке на нем должен моргнуть индикатор передачи. Если же выдалась ошибка доступа, то попробуйте установить права доступа на файл (COM порты в Linux представлены как файлы), с помощью команды:

sudo chmod -R 777 /dev/ttyUSB0

Если все успешно, то можно выполнять проброс. Для того чтобы перенаправить поток из TCP порта в COM порт нужно выполнить команду socat:

socat /dev/ttyUSB0,raw TCP-LISTEN:8282&

В данном случае в socat передается имя нашего СОМ порта, с параметром raw - сырые данные (т.е. данные никак не обрабатываются, а просто пересылаются). TCP:LISTEN:8282 - это включение прослушивания TCP порта 8282 (режим TCP сервера), все приходящие на данный порт данные будут пересылаться на СОМ порт. Символ & (амперсанд) в конце означает что команда будет запущена в отдельном потоке. Можно опустить данный символ, но в таком случае socat будет работать в потоке терминала, пока вы не нажмете CTRL+C, при этом ввод других команд будет не доступен. Поэтому лучше запускать в отдельном потоке.

Чтобы остановить выполнение socat запущенного в потоке можно убить процесс который обращается к нужному порту, для этого используется команда:

fuser -k 8282/tcp

После того как был выполнен проброс, можно из OPC сервера обращаться на TCP порт 8282.

Если вам требуется выполнить обратную операцию - из COM порта на Linux, подключиться как клиент на TCP порт, и транслировать на него данные поступающие на COM порт, то для этого используется команда:

sudo socat pty,link=/dev/ttyUSB0,raw  tcp:192.168.198.1:8282&

В данном случае данные с порта USB0 будут направлены на TCP сервер находящийся по IP адресу 192.168.198.1 на порт 8282.

Если на стороне компьютера вам также нужно выполнить преобразование из COM в TCP то вам потребуется:

1.COM0COM - входит в поставку Modbus ОРС сервера и находится в папке c:\Program Files\MPSSoft\MasterOPC Universal Modbus Server\com0com\. Инструкция по установке и настройки данной утилиты входит в справочную систему ОРС сервера.

2.Serial-to-IP - утилита с простым графическим интерфейсом которая преобразует данные из TCP порта в COM, при этом утилита может работать как в режиме TCP клиента, так и в режиме TCP сервера. Скачать утилиту можно по ссылке.

linux_rabota_s_opc_serverom_probros_tcp_i_com_portov2

 
Проброс TCP порта

Если требуется пробросить один TCP порт на другой, то используйте команду:

sudo socat TCP-LISTEN:502,fork,reuseaddr TCP:192.168.198.131:502&

В данном случае будет прослушиваться порт 502 Linux компьютера, и данные поступающие с него будут отправляться также на 502 порт компьютера с IP адресом 192.168.198.131.

Проброс UDP порта

Для проброса UDP используется схожая с TCP команда:

sudo socat UDP-LISTEN:47808,fork,reuseaddr udp:192.168.198.131:47808&

В данном случае будет прослушиваться UDP порт 47808 (стандартный порт протокола BACnet) и данные поступающие с него будут отправляться также на 47808 порт компьютера с IP адресом 192.168.198.131.