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