Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Простая удаленная RS232/RS485 связь для PLCnext через Pseudo TTY

В этой статье Makers Blog мы обсуждаем возможности и преимущества, которые Com Server предоставляет платформе PLCnext.Простая удаленная RS232/RS485 связь для PLCnext через Pseudo TTY

Введение

Модули расширения, которые Phoenix Contact предлагает для своих ПЛК, могут быть, например, последовательными адаптерами, такими как:

У всех модулей расширения есть одна общая черта: к ним можно обращаться циклически через процессные данные. Это дает возможность напрямую взаимодействовать с последовательным устройством из нашего реального времени приложения.

В некоторых случаях это не то, что мы хотим. Вместо этого мы хотим переиспользовать существующие (C/C++) библиотеки и не нуждаемся в контексте реального времени. Однако мы обнаружим, что эти библиотеки обычно запрограммированы для прямого доступа к COM или TTY интерфейсу.

Есть два варианта создания TTY-интерфейса для PLCnext Control:

  1. Реализовать некоторые функции (C++ / C#), которые создают TTY-интерфейс для AXL или IL последовательных адаптеров изнутри PLCnext Runtime.
  2. Использование устройств COM-сервера, таких как GW Device Server.

GW Device Server предоставляет прозрачный TCP to Serial интерфейс. С помощью инструмента вроде Socat мы можем пробросить Serial/TCP трафик напрямую в pseudo TTY интерфейс. Использование GW Device Server также дает возможность коммуницировать с последовательным устройством в удаленных локациях через TLS-зашифрованный канал.

ПРИМЕЧАНИЕ

В этом туториале ПЛК выступает в роли клиента и устанавливает соединение с GW Device Server.

(Однако также возможно переключить PLC Socat в режим прослушивания и иметь GW как клиента, активно подключающегося к ПЛК.)

Настройка

Простая удаленная RS232/RS485 связь для PLCnext через Pseudo TTY

Настройка GW Device Server

Мы подключаемся к GW Device Server через веб-интерфейс управления. IP-адрес по умолчанию GW Device Server — 192.168.254.254.

Мы используем следующие настройки:

LAN Settings — Security

Простая удаленная RS232/RS485 связь для PLCnext через Pseudo TTY

Serial Settings

Простая удаленная RS232/RS485 связь для PLCnext через Pseudo TTY

Тестирование GW Device Server

Чтобы проверить, правильно ли мы настроили GW Device Server, сначала подключим наш ПЛК к GW Device Server через Ethernet. Затем соединим два DSUB-адаптера GW Device Server друг с другом.

Мы можем быстро протестировать настройку с помощью инструмента Telnet. С этим инструментом мы можем отправить данные с ПЛК на GW Device Server на Port 8000/COM1 через последовательный кабель к Port 8001/COM2 и наконец получить их обратно на ПЛК.

Мы используем следующие команды:

ssh admin@192.168.1.10
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

Простая удаленная RS232/RS485 связь для PLCnext через Pseudo TTY

Сборка Socat

Для легкой сборки Socat на Linux OS мы используем следующие команды:

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 admin@192.168.188.41:~
ssh -ttt admin@192.168.188.41 \
"mkdir -p /opt/plcnext/socat-binaries && \
tar -xf /opt/plcnext/socat-binaries.tar -C /opt/plcnext/socat-binaries"

После развертывания мы теперь можем ssh к нашему ПЛК. Поэтому мы сначала подготовим ПЛК, настроив директории и конфиг-файлы, выполнив следующие команды:

deploy$ ssh admin@192.168.1.10
admin@192.168.1.10:~$ su root
root@192.168.1.10$ mkdir -p /etc/default/socat
root@192.168.1.10$ touch /etc/default/socat/socat.conf
root@192.168.1.10$ 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

Для непрерывного тестирования pseudo TTY можно использовать команду вроде

while true; do sleep 5 && sudo echo "PLC to GW $var" >/dev/ttyUSB0 && var=$((var+1)); done

Входящий трафик можно отобразить, выполнив cat /dev/GWDeviceServer. Теперь любое приложение может обращаться к последовательному устройству, подключенному к GW Device Server, как если бы оно было напрямую подключено к ПЛК.

Промышленные технологии

  1. Промышленные ПЛК управляют приводами переменной скорости
  2. Тентирование вьез печатных плат: Преимущества, процесс и лучшие практики
  3. Облачный мониторинг: система удаленного контроля для управления активами в реальном времени
  4. 5 ключевых преимуществ удаленного контроля производства для современной промышленности
  5. Безопасный удаленный gRPC доступ с grpcurl на устройствах PLCnext
  6. Оптимизация PLCnext Control с SNMP: Практическое руководство
  7. Управление кластерами на PLCnext: Использование Kubernetes для промышленной автоматизации
  8. Мониторинг PLCnext в реальном времени с дашбордами Tableau
  9. Создание дашбордов Power BI из облачных данных PLCnext
  10. Создание дашбордов Grafana для PLCnext Control в Azure IoT Hub