Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

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 :

  1. Implementeer enkele functies (C++ / C#) die een TTY-interface creëren voor de AXL- of IL-seriële adapters vanuit de PLCnext Runtime .
  2. 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

  1. PLC's voor aandrijvingen in de industrie
  2. Wat is PCB via tenten?
  3. Cloud monitoring, een afstandsbedieningssysteem
  4. 5 voordelen van productiecontrole op afstand
  5. Externe gRPC met behulp van grpcurl
  6. Een PLCnext Control-apparaat beheren via SNMP
  7. Clusterbeheer op PLCnext?
  8. PLCnext Tableau-dashboard
  9. PLCnext Power BI-rapporten
  10. PLCnext Grafana Dashboards
  11. Java-toepassing op PLCnext Control