Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Mühelose Remote-RS232/RS485-Konnektivität für PLCnext PLCs via Pseudo TTY

In diesem Maker's Blog-Artikel diskutieren wir die Möglichkeiten und Vorteile, die ein Com Server für die PLCnext-Plattform bietet.Mühelose Remote-RS232/RS485-Konnektivität für PLCnext PLCs via Pseudo TTY

Einführung

Die Erweiterungsmodule, die Phoenix Contact für seine PLCs anbietet, können beispielsweise serielle Adapter sein wie:

Alle Erweiterungsmodule haben eines gemeinsam: Sie können zyklisch über Prozessdaten zugegriffen werden. Dies bietet die Möglichkeit, direkt mit dem seriellen Gerät aus unserer Echtzeitanwendung zu interagieren.

In manchen Fällen ist das nicht das, was wir wollen. Stattdessen möchten wir bestehende (C/C++)-Bibliotheken wiederverwenden und benötigen keinen Echtzeitkontext. Wir werden jedoch feststellen, dass diese Bibliotheken normalerweise so programmiert sind, dass sie direkten Zugriff auf eine COM- oder TTY-Schnittstelle haben.

Es gibt zwei Optionen, um eine TTY-Schnittstelle für einen PLCnext Control zu erstellen:

  1. Einige Funktionen (C++ / C#) implementieren, die eine TTY-Schnittstelle für die AXL- oder IL-Serial-Adapter aus dem PLCnext Runtime heraus erstellen.
  2. Verwendung eines COM-Server-Geräts wie dem GW Device Server.

Der GW Device Server bietet eine transparente TCP-zu-Serial-Schnittstelle. Mit Hilfe eines Tools wie Socat können wir den Serial/TCP-Verkehr direkt an eine Pseudo-TTY-Schnittstelle weiterleiten. Die Verwendung des GW Device Server bietet auch die Möglichkeit, über einen TLS-verschlüsselten Kanal mit dem seriellen Gerät an entfernten Standorten zu kommunizieren.

HINWEIS

In diesem Tutorial fungiert der PLC als Client und stellt die Verbindung zu einem GW Device Server her.

(Es ist jedoch auch möglich, den PLC Socat auf eine Lausch-Option umzuschalten und den GW als Client aktiv mit dem PLC verbinden zu lassen.)

Setup

Mühelose Remote-RS232/RS485-Konnektivität für PLCnext PLCs via Pseudo TTY

GW Device Server einrichten

Wir verbinden uns über das Web-Based Management mit dem GW Device Server. Die Standard-IP-Adresse des GW Device Server ist 192.168.254.254.

Wir verwenden die folgenden Einstellungen:

LAN-Einstellungen – Sicherheit
Mühelose Remote-RS232/RS485-Konnektivität für PLCnext PLCs via Pseudo TTY
Serielle Einstellungen
Mühelose Remote-RS232/RS485-Konnektivität für PLCnext PLCs via Pseudo TTY

GW Device Server testen

Um zu testen, ob wir den GW Device Server korrekt eingerichtet haben, verbinden wir zuerst unseren PLC per Ethernet mit dem GW Device Server. Dann verbinden wir die beiden DSUB-Adapter des GW Device Server miteinander.

Wir können das Setup schnell mit dem Tool Telnet testen. Mit diesem Tool können wir Daten vom PLC an den GW Device Server an Port 8000/COM1 über das serielle Kabel zu Port 8001/COM2 senden und schließlich am PLC wieder empfangen.

Wir verwenden die folgenden Befehle:

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
## weitere Shell-Sitzung öffnen
telnet 192.168.254.254 8001
# Einige Nachrichten eingeben
Mühelose Remote-RS232/RS485-Konnektivität für PLCnext PLCs via Pseudo TTY

Socat bauen

Um Socat einfach auf einem Linux-OS zu bauen, verwenden wir die folgenden Befehle:

mkdir tmp
cd tmp
git clone git://repo.or.cz/socat.git
cd socat
## TODO: An Ihren SDK-Pfad anpassen
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 deployen und installieren

Um die Socat-Installation zu deployen, führen wir das folgende Skript aus:

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

Nach dem Deployen können wir nun per SSH zu unserem PLC verbinden. Zuerst bereiten wir den PLC vor, indem wir die Verzeichnisse und Config-Dateien einrichten:

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

Jetzt modifizieren wir die socat.conf-Datei, um die Parameter der seriellen Schnittstelle an unsere Bedürfnisse anzupassen.

nano /etc/default/socat/socat.conf

Der Inhalt der Datei sieht wie folgt aus.

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"
FLOWCONTROLL=""

Wenn wir weitere Parameter ändern müssen, müssen wir auch die SocatDaemon-Datei modifizieren. Weitere Informationen zu TTY-Parametern finden Sie in den stty-Manualseiten.

Nun erstellen wir eine SocatDaemon-Datei, um automatisch mit einem Socat-Daemon eine Verbindung zum GW Device Server herzustellen.

HINWEIS:

Diese SocatDaemon-Datei ist ein Beispiel ohne Fehler-/Trennungsmanagement etc. Bitte entsprechend anpassen.

nano /etc/init.d/SocatDaemon

Die Datei hat folgenden Inhalt. (Klicken zum Ein-/Ausblenden des Codes)

Da alle Config-Dateien an Ort und Stelle sind, können wir fortfahren, die Socat-Binaries einzurichten und den Socat-Daemon zu registrieren.

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

Wenn alles korrekt eingerichtet ist, können wir den laufenden Daemon mit einem Befehl wie ps -e | grep socat sehen. Wir können auch die Socat-Logs unter cat /var/log/socat.log prüfen.

TTY-Schnittstelle vom Terminal aus zugreifen

Jetzt können wir Nachrichten über die TTY-Schnittstelle senden.

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

Um die Pseudo-TTY kontinuierlich zu testen, können wir einen Befehl wie folgenden verwenden:

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

Eingehenden Verkehr können Sie anzeigen, indem Sie cat /dev/GWDeviceServer ausführen. Jetzt kann jede Anwendung auf das serielle Gerät zugreifen, das mit dem GW Device Server verbunden ist, als wäre es direkt mit dem PLC verbunden.

Industrietechnik

  1. Industrielle SPS steuern Frequenzumrichter
  2. PCB-Via-Tenting erklärt: Vorteile, Prozess, Best Practices
  3. Cloud Monitoring: Fernsteuerungssystem für Echtzeit-Asset-Management
  4. 5 Schlüsselvorteile der ferngesteuerten Produktionskontrolle für die moderne Industrie
  5. Sicheren Remote-gRPC-Zugriff mit grpcurl auf PLCnext-Geräten
  6. PLCnext Control-Geräte mit SNMP optimieren: Praktischer Leitfaden
  7. Cluster-Management auf PLCnext: Kubernetes für die industrielle Automatisierung nutzen
  8. Echtzeit-Monitoring von PLCnext mit Tableau-Dashboards
  9. Power BI Dashboards aus PLCnext-Clouddaten erstellen
  10. Echtzeit-Grafana-Dashboards für PLCnext Control in Azure IoT Hub erstellen