PLCnext PLC's aansluiten op RS232/RS485 op afstand via pseudo TTY
In dit Makers Blog artikel bespreken we de mogelijkheden en voordelen die een Com Server biedt aan het PLCnext platform.
Inleiding
De uitbreidingsmodules die Phoenix Contact voor zijn PLC's aanbiedt, kunnen bijvoorbeeld seriële adapters zijn zoals:
- AXL F RS UNI
- IB IL RS 232-PRO
- IB IL RS 485
- IB IL RS UNI
- …
Alle uitbreidingsmodules hebben één ding gemeen:ze zijn cyclisch toegankelijk via procesdata. Dit biedt de mogelijkheid om rechtstreeks te communiceren met het seriële apparaat vanuit onze realtime applicatie.
In sommige gevallen is dit niet wat we willen. In plaats daarvan willen we bestaande (C/C++) bibliotheken hergebruiken en hebben we de realtime context niet nodig. We zullen echter zien dat deze bibliotheken meestal zijn geprogrammeerd om directe toegang te hebben tot een COM- of TTY-interface.
Er zijn twee opties om een TTY-interface te maken voor een PLCnext Control
:
- Implementeer enkele functies (C++ / C#) die een TTY-interface creëren voor de AXL- of IL-seriële adapters vanuit de
PLCnext Runtime
. - Gebruik van COM-Server-apparaten zoals de GW Device Server
De GW Device Server
biedt een transparante TCP to Serial
koppel. Met behulp van een tool als Socat
we kunnen het Serial/TCP-verkeer direct doorsturen naar een pseudo-TTY-interface. GW Device Server
gebruiken biedt ook de mogelijkheid om te communiceren met het seriële apparaat op externe locaties via een TLS-gecodeerd kanaal.
OPMERKING
In deze tutorial treedt de PLC op als client en maakt verbinding met een GW Device Server
.
(Het is echter ook mogelijk om de PLC Socat
naar een luisteroptie en laat de GW als client actief verbinding maken met de PLC.)
Instellen
De GW Device Server instellen
We maken verbinding met de GW Device Server
via Beheer via een webbrowser. Het standaard IP-adres van de GW Device Server
is 192.168.254.254.
We gebruiken de volgende instellingen:
LAN-instellingen – Beveiliging
- SSH-server inschakelen
- Telnet-server inschakelen
- Beveiligde gegevensmodus uitschakelen
- Tftp-server uitschakelen
Seriële instellingen
- Poort 1-configuratie (COM1):TCP-verbinding inschakelen op poort 8000
- Poort 2-configuratie (COM2):TCP-verbinding inschakelen op poort 8001
De GW-apparaatserver testen
Om te testen of we de GW Device Server
. hebben ingesteld correct is, verbinden we eerst onze PLC met de GW Device Server
via ethernet. Vervolgens verbinden we de twee DSUB-adapters van de GW Device Server
met elkaar.
We kunnen de setup snel testen met de tool Telnet
. Met deze tool kunnen we gegevens van de PLC naar de GW Device Server
. sturen op Port8000/COM1 via de seriële kabel naar Port8001/COM2 en ontvang het uiteindelijk terug op de PLC.
We gebruiken de volgende commando's:
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
Socat bouwen
Om Socat
te bouwen gemakkelijk op een Linux OS, gebruiken we de volgende commando's:
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 implementeren en installeren
De Socat
implementeren installatie, voeren we het volgende script uit:
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"
Na de implementatie kunnen we nu ssh naar onze PLC. Daarom bereiden we eerst de PLC voor door de mappen en configuratiebestanden in te stellen door de volgende opdrachten uit te voeren:
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
Nu wijzigen we de socat.conf
bestand om de parameters van de seriële interface naar onze behoeften te configureren.
nano /etc/default/socat/socat.conf
De inhoud van het bestand ziet er als volgt uit.
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=""
Als we verdere parameters moeten wijzigen, moeten we ook de SocatDaemon
. aanpassen het dossier. Meer informatie over TTY-parameters is te vinden in de stty-handleidingen.
Nu maken we een SocatDaemon
bestand om automatisch verbinding te maken met de GW Device Server
met behulp van een Socat
daemon.
OPMERKING:
Dit SocatDaemon-bestand is een voorbeeld zonder fout-/verbindingsbeheer enz. svp.
nano /etc/init.d/SocatDaemon
Het bestand heeft de volgende inhoud.(klik om de code te zien/verbergen)
Nu alle configuratiebestanden aanwezig zijn, kunnen we doorgaan met het instellen van de Socat
binaries en het registreren van de Socat
daemon.
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
Als alles correct is ingesteld, kunnen we de actieve daemon zien met een commando als ps -e | grep socat
. We kunnen ook de Socat
. controleren logs op cat /var/log/socat.log
.
Toegang tot de TTY-interface vanaf een terminal
Nu kunnen we berichten verzenden via de TTY-interface.
sudo echo "PLC to GW $var" > /dev/GWDeviceServer
Om de pseudo-TTY continu te testen, kunnen we een commando gebruiken zoals
while true; do sleep 5 && sudo echo "PLC to GW $var" >/dev/ttyUSB0 && var=$((var+1)); done
Inkomend verkeer kan worden weergegeven door cat /dev/GWDeviceServer
. uit te voeren . Nu heeft elke applicatie toegang tot het seriële apparaat dat is aangesloten op de GW Device Server alsof het rechtstreeks is aangesloten op de PLC.
Industriële technologie
- PLC's voor aandrijvingen in de industrie
- Wat is PCB via tenten?
- Cloud monitoring, een afstandsbedieningssysteem
- 5 voordelen van productiecontrole op afstand
- Externe gRPC met behulp van grpcurl
- Een PLCnext Control-apparaat beheren via SNMP
- Clusterbeheer op PLCnext?
- PLCnext Tableau-dashboard
- PLCnext Power BI-rapporten
- PLCnext Grafana Dashboards
- Java-toepassing op PLCnext Control