Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Conectividad RS232/RS485 remota sin esfuerzo para PLCs PLCnext usando Pseudo TTY

En este artículo del Makers Blog discutimos las posibilidades y ventajas que un Com Server proporciona a la plataforma PLCnext.

Conectividad RS232/RS485 remota sin esfuerzo para PLCs PLCnext usando Pseudo TTY
Arquitectura con GW Device Server

Introducción

Los módulos de extensión que Phoenix Contact ofrece para sus PLCs pueden ser, por ejemplo, adaptadores seriales como:

Todos los módulos de extensión tienen una cosa en común: se pueden acceder cíclicamente vía datos de proceso. Esto proporciona la posibilidad de interactuar directamente con el dispositivo serial desde nuestra aplicación en tiempo real.

En algunos casos esto no es lo que queremos. En su lugar, queremos reutilizar bibliotecas existentes (C/C++) y no necesitamos el contexto de tiempo real. Sin embargo, encontraremos que estas bibliotecas usualmente están programadas para tener acceso directo a una interfaz COM o TTY.

Hay dos opciones para crear una interfaz TTY para un PLCnext Control:

  1. Implementar algunas funciones (C++ / C#) que creen una interfaz TTY para los adaptadores seriales AXL o IL desde dentro del PLCnext Runtime.
  2. Uso de dispositivos Com Server como el GW Device Server

El GW Device Server proporciona una interfaz transparente TCP a Serial. Con la ayuda de una herramienta como Socat podemos reenviar el tráfico Serial/TCP directamente a una interfaz pseudo TTY. Usar GW Device Server también proporciona la posibilidad de comunicarse con el dispositivo serial en ubicaciones remotas vía un canal encriptado TLS.

NOTA

En este tutorial, el PLC actúa como cliente y establece conexión a un GW Device Server.

(Sin embargo, también es posible cambiar el Socat del PLC a una opción de escucha y tener el GW como cliente que se conecta activamente al PLC.)

Configuración

Conectividad RS232/RS485 remota sin esfuerzo para PLCs PLCnext usando Pseudo TTY
Topología de red con GW Device Server

Configurar el GW Device Server

Nos conectamos al GW Device Server vía Gestión Basada en Web. La dirección IP predeterminada del GW Device Server es 192.168.254.254.

Usamos la siguiente configuración:

Configuración LAN - Seguridad
Conectividad RS232/RS485 remota sin esfuerzo para PLCs PLCnext usando Pseudo TTY
Configuración de seguridad LAN en GW Device Server
Configuración Serial
Conectividad RS232/RS485 remota sin esfuerzo para PLCs PLCnext usando Pseudo TTY
Configuración de puertos seriales COM1/COM2

Probar el GW Device Server

Para probar si hemos configurado el GW Device Server correctamente, primero conectamos nuestro PLC al GW Device Server vía Ethernet. Luego conectamos los dos adaptadores DSUB del GW Device Server entre sí.

Podemos probar rápidamente la configuración usando la herramienta Telnet. Con esta herramienta, podemos enviar datos del PLC al GW Device Server en Puerto 8000/COM1 a través del cable serial al Puerto 8001/COM2 y finalmente recibirlo de vuelta en el PLC.

Usamos los siguientes comandos:

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
## abrir otra sesión shell
telnet 192.168.254.254 8001
# Escribir algunos mensajes
Conectividad RS232/RS485 remota sin esfuerzo para PLCs PLCnext usando Pseudo TTY
Prueba de comunicación bidireccional vía Telnet

Compilar Socat

Para compilar Socat fácilmente en un SO Linux, usamos los siguientes comandos:

mkdir tmp
cd tmp
git clone git://repo.or.cz/socat.git
cd socat
## TODO: Modificar a su ubicación de SDK
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

Desplegar e instalar Socat

Para desplegar la instalación de Socat, ejecutamos el siguiente script:

cd tmp
mkdir -p deploy
cd deploy
mkdir -p usr
cp -r ../../Daemon/* .
cp -r ../socat/install/* usr/
# Crear paquete
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"

Después de desplegar, ahora podemos hacer ssh a nuestro PLC. Por lo tanto, primero preparamos el PLC configurando los directorios y archivos de configuración ejecutando los siguientes comandos:

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

Ahora, modificamos el archivo socat.conf para configurar los parámetros de la interfaz serial a nuestras necesidades.

nano /etc/default/socat/socat.conf

El contenido del archivo se ve así.

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="cs8"
STOPBITS="-cstopb"
FLOWCONTROL=""

Si necesitamos modificar más parámetros, también necesitaremos modificar el archivo SocatDaemon. Más información sobre parámetros TTY se puede encontrar en las páginas del manual de stty.

Ahora creamos un archivo SocatDaemon para conectar automáticamente al GW Device Server usando un demonio Socat.

NOTA:

Este archivo SocatDaemon es un ejemplo sin gestión de errores/desconexión, etc. por favor.

nano /etc/init.d/SocatDaemon

El archivo tiene el siguiente contenido. (haga clic para ver/ocultar código)

Ahora que todos los archivos de configuración están en su lugar, podemos proceder configurando los binarios de Socat y registrando el demonio 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

Si todo está configurado correctamente, podemos ver el demonio en ejecución usando un comando como ps -e | grep socat. También podemos revisar los logs de Socat ubicados en cat /var/log/socat.log.

Acceder a la interfaz TTY desde una terminal

Ahora podemos enviar mensajes sobre la interfaz TTY.

sudo echo "PLC to GW $var" > /dev/GWDeviceServer

Para probar continuamente el pseudo TTY, podemos usar un comando como

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

El tráfico entrante puede mostrarse ejecutando cat /dev/GWDeviceServer. Ahora cualquier aplicación puede acceder al dispositivo serial conectado al GW Device Server como si estuviera conectado directamente al PLC.

Tecnología Industrial

  1. Los PLC industriales impulsan variadores de velocidad
  2. Carpa de Vias en PCB Explicada: Beneficios, Proceso y Mejores Prácticas
  3. Monitorización en la nube: Sistema de control remoto para gestión de activos en tiempo real
  4. 5 Beneficios clave del control remoto de producción para la industria moderna
  5. Acceso Remoto Seguro gRPC con grpcurl en Dispositivos PLCnext
  6. Optimizar dispositivos PLCnext Control con SNMP: Guía práctica
  7. Gestión de clústeres en PLCnext: Aprovechando Kubernetes para automatización industrial
  8. Monitorización en tiempo real de PLCnext con dashboards Tableau
  9. Crea dashboards Power BI desde datos PLCnext en la nube
  10. Crea dashboards Grafana en tiempo real para PLCnext Control en Azure IoT Hub
  11. Optimiza aplicaciones Java 9 en PLCnext Control usando Jlink