Connexion des automates PLCnext au RS232/RS485 distant via un pseudo TTY
Dans cet article du Makers Blog, nous discutons des possibilités et des avantages qu'un serveur Com offre à la plate-forme PLCnext.
Présentation
Les modules d'extensions que Phoenix Contact propose pour ses automates peuvent par exemple être des adaptateurs série comme :
- AXL F RS UNI
- IB IL RS 232-PRO
- IB IL RS 485
- IB IL RS UNI
- …
Tous les modules d'extension ont un point commun :ils sont accessibles cycliquement via les données de processus. Cela offre la possibilité d'interagir directement avec le périphérique série à partir de notre application en temps réel.
Dans certains cas, ce n'est pas ce que nous voulons. Au lieu de cela, nous voulons réutiliser les bibliothèques existantes (C/C++) et n'avons pas besoin du contexte en temps réel. Cependant, nous constaterons que ces bibliothèques sont généralement programmées pour avoir un accès direct à une interface COM ou TTY.
Il existe deux options pour créer une interface TTY pour un PLCnext Control
:
- Mettre en œuvre certaines fonctions (C++/C#) qui créent une interface TTY pour les adaptateurs série AXL ou IL depuis l'intérieur du
PLCnext Runtime
. - Utilisation d'appareils COM-Server tels que le serveur d'appareils GW
Le GW Device Server
fournit un TCP to Serial
transparent interface. Avec l'aide d'un outil comme Socat
nous pouvons transférer le trafic série/TCP directement vers une interface pseudo TTY. Utilisation de GW Device Server
offre également la possibilité de communiquer avec le périphérique série sur des sites distants via un canal crypté TLS.
REMARQUE
Dans ce tutoriel, l'automate fonctionne en tant que client et établit une connexion à un GW Device Server
.
(Cependant, il est également possible de commuter l'automate Socat
à une option d'écoute et que le GW en tant que client se connecte activement à l'automate.)
Configuration
Configuration du serveur de périphériques GW
Nous nous connectons au GW Device Server
via la gestion basée sur le Web. L'adresse IP par défaut du GW Device Server
est 192.168.254.254.
Nous utilisons les paramètres suivants :
Paramètres LAN - Sécurité
- Activer le serveur SSH
- Activer le serveur Telnet
- Désactiver le mode de données sécurisées
- Désactiver le serveur TFTP
Paramètres série
- Configuration du port 1 (COM1) :activer la connexion TCP sur le port 8000
- Configuration du port 2 (COM2) :Activer la connexion TCP sur le port 8001
Test du serveur de périphériques GW
Pour tester si nous avons mis en place le GW Device Server
correctement, nous connectons d'abord notre automate au GW Device Server
via Ethernet. Puis on connecte les deux adaptateurs DSUB du GW Device Server
les uns avec les autres.
Nous pouvons rapidement tester la configuration à l'aide de l'outil Telnet
. Avec cet outil, nous pouvons envoyer des données de l'automate vers le GW Device Server
à Port8000/COM1 via le câble série à Port8001/COM2 et enfin le recevoir à l'automate.
Nous utilisons les commandes suivantes :
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
Bâtiment Socat
Pour construire Socat
facilement sur un système d'exploitation Linux, nous utilisons les commandes suivantes :
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
Déployer et installer Socat
Pour déployer le Socat
installation, nous exécutons le script suivant :
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"
Après le déploiement, nous pouvons maintenant nous connecter en ssh à notre automate. Par conséquent, nous préparons d'abord l'automate en configurant les répertoires et les fichiers de configuration en exécutant les commandes suivantes :
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
Maintenant, nous modifions le socat.conf
fichier pour configurer les paramètres de l'interface série à nos besoins.
nano /etc/default/socat/socat.conf
Le contenu du fichier ressemble à ceci.
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=""
Si nous devons modifier d'autres paramètres, nous devrons également modifier le SocatDaemon
dossier. Vous trouverez plus d'informations sur les paramètres TTY dans les pages de manuel stty.
Maintenant, nous créons un SocatDaemon
fichier pour se connecter automatiquement au GW Device Server
en utilisant un Socat
démon.
REMARQUE :
Ce fichier SocatDaemon est un exemple sans gestion des erreurs/déconnexions, etc. s'il vous plaît.
nano /etc/init.d/SocatDaemon
Le fichier a le contenu suivant.(cliquez pour voir/masquer le code)
Maintenant que tous les fichiers de configuration sont en place, nous pouvons continuer en configurant le Socat
binaires et enregistrement du 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
Si tout est correctement configuré, nous pouvons voir le démon en cours d'exécution à l'aide d'une commande telle que ps -e | grep socat
. On peut aussi vérifier le Socat
journaux situés au cat /var/log/socat.log
.
Accéder à l'interface TTY depuis un terminal
Nous pouvons maintenant envoyer des messages via l'interface TTY.
sudo echo "PLC to GW $var" > /dev/GWDeviceServer
Pour tester en continu le pseudo TTY, nous pouvons utiliser une commande comme
while true; do sleep 5 && sudo echo "PLC to GW $var" >/dev/ttyUSB0 && var=$((var+1)); done
Le trafic entrant peut être affiché en exécutant cat /dev/GWDeviceServer
. Désormais, n'importe quelle application peut accéder au périphérique série connecté au serveur de périphériques GW comme s'il était directement connecté à l'automate.
Technologie industrielle
- API pour entraînements dans l'industrie
- Qu'est-ce que le PCB Via Tenting ?
- Cloud monitoring, un système de contrôle à distance
- 5 avantages du contrôle de production à distance
- gRPC distant à l'aide de grpcurl
- Gestion d'un équipement PLCnext Control via SNMP
- Gestion de cluster sur PLCnext ?
- Tableau de bord PLCnext
- Rapports PLCnext Power BI