Anschließen von PLCnext-SPSen an Remote-RS232/RS485 über Pseudo-TTY
In diesem Makers-Blog-Artikel diskutieren wir die Möglichkeiten und Vorteile, die ein Com-Server für die PLCnext-Plattform bietet. 
Einführung
Die Erweiterungsmodule, die Phoenix Contact für seine SPSen anbietet, können beispielsweise serielle Adapter sein wie:
- AXL FRS UNI
- IB IL RS 232-PRO
- IB IL RS 485
- IB ILRS UNI
- …
Eines haben alle Erweiterungsmodule gemeinsam:Sie können zyklisch über Prozessdaten angesprochen werden. Dies bietet die Möglichkeit, von unserer Echtzeitanwendung aus direkt mit dem seriellen Gerät zu interagieren.
In einigen Fällen ist dies nicht das, was wir wollen. Stattdessen wollen wir vorhandene (C/C++) Bibliotheken wiederverwenden und brauchen den Echtzeitkontext nicht. 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 Möglichkeiten, eine TTY-Schnittstelle für einen PLCnext Control zu erstellen :
- Implementieren Sie einige Funktionen (C++ / C#), die eine TTY-Schnittstelle für die seriellen AXL- oder IL-Adapter innerhalb von
PLCnext Runtimeerstellen . - Verwendung von COM-Server-Geräten wie dem GW Device Server
Die GW Device Server stellt einen transparenten TCP to Serial bereit Schnittstelle. Mit Hilfe eines Tools wie Socat Wir können den Serial/TCP-Verkehr direkt an eine Pseudo-TTY-Schnittstelle weiterleiten. Mit GW Device Server bietet auch die Möglichkeit, mit dem seriellen Gerät an entfernten Standorten über einen TLS-verschlüsselten Kanal zu kommunizieren.
HINWEIS
In diesem Tutorial tritt die SPS als Client auf und stellt eine Verbindung zu einem GW Device Server her .
(Es ist aber auch möglich die SPS Socat umzuschalten zu einer Abhöroption hinzufügen und das GW als Client aktiv mit der SPS verbinden lassen.)
Einrichtung
Einrichten des GW-Geräteservers
Wir verbinden uns mit GW Device Server über das Web Based Management. Die Standard-IP-Adresse von GW Device Server ist 192.168.254.254.
Wir verwenden die folgenden Einstellungen:
LAN-Einstellungen – Sicherheit
- SSH-Server aktivieren
- Telnet-Server aktivieren
- Sicheren Datenmodus deaktivieren
- TFTP-Server deaktivieren

Serieneinstellungen
- Konfiguration von Port 1 (COM1):TCP-Verbindung auf Port 8000 aktivieren
- Konfiguration von Port 2 (COM2):TCP-Verbindung auf Port 8001 aktivieren

Testen des GW-Geräteservers
Um zu testen, ob wir den GW Device Server eingerichtet haben Richtig, zuerst verbinden wir unsere SPS mit der GW Device Server über Ethernet. Dann verbinden wir die beiden DSUB-Adapter des GW Device Server miteinander.
Mit dem Tool Telnet können wir die Einrichtung schnell testen . Mit diesem Tool können wir Daten von der SPS an GW Device Server senden an Port8000/COM1 durch das serielle Kabel an Port8001/COM2 und schließlich wieder an der SPS 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
## open another shell session
telnet 192.168.254.254 8001
# Type some messages
Gebäude Socat
Um Socat zu erstellen einfach auf einem Linux-Betriebssystem verwenden wir die folgenden Befehle:
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 Bereitstellen und Installieren von Socat
Um den Socat bereitzustellen Installation 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/
# 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" Nach dem Deployment können wir jetzt ssh zu unserem PLC. Daher bereiten wir zuerst die SPS vor, indem wir die Verzeichnisse und Konfigurationsdateien einrichten, indem wir die folgenden Befehle ausführen:
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 ändern wir den socat.conf Datei, um die Parameter der seriellen Schnittstelle nach unseren Bedürfnissen zu konfigurieren.
nano /etc/default/socat/socat.conf Der Inhalt der Datei sieht folgendermaßen 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="csN 8"
STOPBITS="-cstopb"
FLOWCONTROLL=""
Wenn wir weitere Parameter ändern müssen, müssen wir auch SocatDaemon ändern Datei. Weitere Informationen zu TTY-Parametern finden Sie in den stty-Manpages.
Jetzt erstellen wir eine SocatDaemon Datei, um sich automatisch mit GW Device Server zu verbinden mit einem Socat Dämon.
HINWEIS:
Diese SocatDaemon-Datei ist ein Beispiel ohne Fehler-/Verbindungsabbruchmanagement etc. bitte.
nano /etc/init.d/SocatDaemon Die Datei hat folgenden Inhalt. (Klicken Sie hier, um den Code anzuzeigen/auszublenden)
Nachdem alle Konfigurationsdateien vorhanden sind, können wir mit der Einrichtung von Socat fortfahren Binärdateien und Registrieren des Socat Dämon.
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 richtig eingerichtet ist, können wir den laufenden Daemon mit einem Befehl wie ps -e | grep socat sehen . Wir können auch den Socat überprüfen Protokolle unter cat /var/log/socat.log .
Zugriff auf die TTY-Schnittstelle von einem Terminal aus
Jetzt können wir Nachrichten über die TTY-Schnittstelle senden.
sudo echo "PLC to GW $var" > /dev/GWDeviceServer Um das Pseudo-TTY kontinuierlich zu testen, können wir einen Befehl wie
verwendenwhile true; do sleep 5 && sudo echo "PLC to GW $var" >/dev/ttyUSB0 && var=$((var+1)); done
Eingehender Datenverkehr kann durch Ausführen von cat /dev/GWDeviceServer angezeigt werden . Jetzt kann jede Anwendung auf das mit dem GW Device Server verbundene serielle Gerät zugreifen, als ob es direkt mit der SPS verbunden wäre.
Industrietechnik
- SPS für Antriebe in der Industrie
- Was ist PCB via Tenting?
- Cloud-Überwachung, ein Fernsteuerungssystem
- 5 Vorteile der Fernsteuerung der Produktion
- Remote-gRPC mit grpcurl
- Verwalten eines PLCnext Control-Geräts über SNMP
- Clusterverwaltung auf PLCnext?
- PLCnext Tableau-Dashboard
- PLCnext Power BI-Berichte
- PLCnext Grafana-Dashboards