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 Runtime
erstellen . - 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 [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
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 [email protected]:~/
ssh -ttt [email protected] \
"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 [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
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