Подключение ПЛК PLCnext к удаленным портам RS232/RS485 через псевдотелетайп
В этой статье Makers Blog мы обсуждаем возможности и преимущества, которые Com Server предоставляет платформе PLCnext.
Введение
Модули расширения, которые Phoenix Contact предлагает для своих ПЛК, могут быть, например, такими последовательными адаптерами, как:
- AXL FRS UNI
- ИБ ИЛ РС 232-ПРО
- IB IL RS 485
- IB IL RS UNI
- …
Все модули расширения имеют одну общую черту:к ним можно обращаться циклически через данные процесса. Это дает возможность напрямую взаимодействовать с последовательным устройством из нашего приложения реального времени.
В некоторых случаях это не то, что нам нужно. Вместо этого мы хотим повторно использовать существующие (C/C++) библиотеки и не нуждаемся в контексте реального времени. Однако мы обнаружим, что эти библиотеки обычно запрограммированы на прямой доступ к COM- или TTY-интерфейсу.
Существует два варианта создания интерфейса TTY для PLCnext Control
. :
- Реализовать некоторые функции (C++/C#), которые создают интерфейс TTY для последовательных адаптеров AXL или IL изнутри
PLCnext Runtime
. - Использование устройств COM-сервера, таких как сервер устройств GW
GW Device Server
обеспечивает прозрачный TCP to Serial
интерфейс. С помощью такого инструмента, как Socat
мы можем перенаправить последовательный/TCP-трафик непосредственно на псевдо-TTY-интерфейс. Использование GW Device Server
также обеспечивает возможность связи с последовательным устройством в удаленных местах через зашифрованный канал TLS.
ПРИМЕЧАНИЕ
В этом руководстве ПЛК работает как клиент и устанавливает соединение с GW Device Server
. .
(Однако также возможно переключить ПЛК Socat
к опции прослушивания и активному подключению шлюза GW к ПЛК в качестве клиента.)
Настройка
Настройка сервера устройств GW
Подключаемся к GW Device Server
через веб-интерфейс управления. IP-адрес по умолчанию для GW Device Server
192.168.254.254.
Мы используем следующие настройки:
Настройки локальной сети — Безопасность
- Включить SSH-сервер
- Включить сервер Telnet
- Отключить безопасный режим передачи данных
- Отключить TFTP-сервер
Настройки серийного номера
- Конфигурация порта 1 (COM1):включить TCP-подключение через порт 8000
- Конфигурация порта 2 (COM2):включение TCP-подключения через порт 8001.
Тестирование сервера устройств GW
Чтобы проверить, настроили ли мы GW Device Server
правильно, сначала подключаем наш ПЛК к GW Device Server
через Ethernet. Затем мы подключаем два адаптера DSUB блока GW Device Server
. друг с другом.
Мы можем быстро протестировать установку с помощью инструмента Telnet
. . С помощью этого инструмента мы можем отправлять данные с ПЛК на GW Device Server
через порт 8000/COM1 через последовательный кабель к порту 8001/COM2 и, наконец, получить его обратно в ПЛК.
Мы используем следующие команды:
ssh [email protected]
sudo passwd root
su root
ip addr add 192.168.254.10 dev eth0
telnet 192.168.254.254 8000
## open another shell session
telnet 192.168.254.254 8001
# Type some messages
Строительство Соката
Чтобы построить Socat
легко в ОС Linux мы используем следующие команды:
mkdir tmp
cd tmp
git clone git://repo.or.cz/socat.git
cd socat
## TODO: Modify to your SDK location
source /opt/pxc/release/axcf2152/2020/0/environment-setup-cortexa9t2hf-neon-pxc-linux-gnueabi
. /opt/pxc/release/axcf2152/2020/0/site-config-cortexa9t2hf-neon-pxc-linux-gnueabi
mkdir install
autoconf
./configure $CONFIGURE_FLAGS --prefix=$(pwd)/install --enable-openssl-method
make -j2
make install
Развертывание и установка Socat
Чтобы развернуть Socat
установки выполняем следующий скрипт:
cd tmp
mkdir -p deploy
cd deploy
mkdir -p usr
cp -r ../../Daemon/* .
cp -r ../socat/install/* usr/
# Create package
tar -cf ../socat-binaries.tar .
cd ..
scp socat-binaries.tar [email protected]:~/
ssh -ttt [email protected] \
"mkdir -p /opt/plcnext/socat-binaries && \
tar -xf /opt/plcnext/socat-binaries.tar -C /opt/plcnext/socat-binaries"
После развертывания мы можем подключиться к нашему ПЛК по ssh. Поэтому мы сначала подготовим ПЛК, настроив каталоги и файлы конфигурации, выполнив следующие команды:
deploy$ ssh [email protected]
[email protected]:~$ su root
[email protected]$ mkdir -p /etc/default/socat
[email protected]$ touch /etc/default/socat/socat.conf
[email protected]$ touch /etc/init.d/SocatDaemon
Теперь мы изменим socat.conf
файл для настройки параметров последовательного интерфейса под наши нужды.
nano /etc/default/socat/socat.conf
Содержимое файла выглядит следующим образом.
TARGETIP="192.168.254.254"
TARGETPORT="8000"
TTYNAME="/dev/ttyGWDeviceServer"
OPTIONS="pty,link=$TTYNAME tcp-connect:$TARGETIP:$TARGETPORT,forever,interval=15"
BAUD="9600"
PARITY=""
DATABITS="csN 8"
STOPBITS="-cstopb"
FLOWCONTROLL=""
Если нам потребуется изменить дополнительные параметры, нам также потребуется изменить SocatDaemon
файл. Дополнительную информацию о параметрах TTY можно найти на страницах руководства stty.
Теперь мы создаем SocatDaemon
файл для автоматического подключения к GW Device Server
используя Socat
демон.
ПРИМЕЧАНИЕ:
Этот файл SocatDaemon является примером без управления ошибками/отключениями и т. д. Пожалуйста.
nano /etc/init.d/SocatDaemon
Файл имеет следующее содержимое (нажмите, чтобы увидеть/скрыть код)
Теперь, когда все файлы конфигурации на месте, мы можем приступить к настройке Socat
. двоичные файлы и регистрация Socat
демон.
chmod +x /etc/init.d/SocatDaemon
cd /opt/plcnext/socat-binaries
chmod +x usr/bin/*
cp -r usr /
update-rc.d -s -v SocatDaemon 99
/etc/init.d/SocatDaemon start
Если все настроено правильно, мы можем увидеть работающий демон с помощью команды типа ps -e | grep socat
. Мы также можем проверить Socat
журналы, расположенные по адресу cat /var/log/socat.log
.
Доступ к интерфейсу TTY с терминала
Теперь мы можем отправлять сообщения через интерфейс TTY.
sudo echo "PLC to GW $var" > /dev/GWDeviceServer
Чтобы постоянно тестировать псевдотелефон, мы можем использовать команду вроде
while true; do sleep 5 && sudo echo "PLC to GW $var" >/dev/ttyUSB0 && var=$((var+1)); done
Входящий трафик можно отобразить, выполнив cat /dev/GWDeviceServer
. Теперь любое приложение может получить доступ к последовательному устройству, подключенному к серверу устройств GW, как если бы оно было напрямую подключено к ПЛК.
Промышленные технологии
- ПЛК для приводов в промышленности
- Что такое печатная плата через палатку?
- Облачный мониторинг, система удаленного управления
- 5 преимуществ дистанционного управления производством
- Удаленный gRPC с помощью grpcurl
- Управление устройством PLCnext Control через SNMP
- Управление кластером на PLCnext?
- Информационная панель PLCnext Tableau
- Отчеты PLCnext Power BI
- Информационные панели PLCnext Grafana