<< 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 обладает обширным количеством параметров запуска, которые описаны на сайте программы. Ниже мы разберем наиболее типовые варианты использования. Мы не будем давать полного описания каждой команды - детальное описание к каждой из них вы также можете посмотреть на сайте программы.
Прежде чем пробрасывать СОМ порт необходимо определить параметры этого порта - его имя, а также установить скорость. Для того чтобы определить имя порта воспользуйтесь командой:
dmesg | grep tty
Команда выведет список портов.
В данном случае доступен стандартный порт tty0 (COM1) и USB0 - конвертер USB-COM с чипом FTDI, его мы и будем пробрасывать - его полное имя будет /dev/ttyUSB0. Именно этот порт мы будет использовать в дальнейшем рассмотрении, вам же нужно будет в командах указывать свое имя порта.
Чтобы посмотреть установки скорости воспользуемся командой:
sudo stty -F /dev/ttyUSB0 -a
Как мы видим скорость установлена в 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 сервера. Скачать утилиту можно по ссылке.
Если требуется пробросить один TCP порт на другой, то используйте команду:
sudo socat TCP-LISTEN:502,fork,reuseaddr TCP:192.168.198.131:502&
В данном случае будет прослушиваться порт 502 Linux компьютера, и данные поступающие с него будут отправляться также на 502 порт компьютера с IP адресом 192.168.198.131.
Для проброса UDP используется схожая с TCP команда:
sudo socat UDP-LISTEN:47808,fork,reuseaddr udp:192.168.198.131:47808&
В данном случае будет прослушиваться UDP порт 47808 (стандартный порт протокола BACnet) и данные поступающие с него будут отправляться также на 47808 порт компьютера с IP адресом 192.168.198.131.