Raspberry pi : CODESYS & Al.

Bonjour,

Introduction

J’ai préparé une super démo que je devais présenter à des collègues et partenaires mais nous voici confinés et mes présentations devront attendre… Quoique… Quid d’un article ?

Les derniers articles traitaient de Raspberry Pi, de netPI Core / RTE et netIOT Edge « Connect », plateformes matérielles pour le marché industriel développées par Hilscher et basées sur le Raspberry Pi, de Docker, Node-RED, InfluxDB, Grafana et j’avais donc prévu de tester les SoftPLC (automates logiciels) CODESYS ou STRATON.

J’ai ainsi concocté une mixture de tout ceci, avec CODESYS cette fois car ma manipulation inclut le variateur INFRANOR qui se pilote via EtherCAT et que j’ai déjà évoqué ici.

Il se trouve que l’application de contrôle pour le Raspberry Pi dispose de EtherCAT Maitre, entre autres.

On montrera donc :

  • un automate CODESYS pilotant via EtherCAT un variateur INFRANOR,
  • un flow Node-RED avec un tableau de bord qui permet d’interagir avec le variateur via le serveur OPC de CODESYS,
  • ce flow renseigne également une base de données temporelles InfluxDB,
  • et une instance Grafana vient lire les données et les affiche.

Il est tout à fait possible de faire la même chose avec un Rasberry Pi mais par convenance je ferai ma démonstration avec un netPI RTE puisque c’est celui que j’ai sous la main.
Une version netPI Core suffit amplement à ma démo mais bien sûr j’aurais pu utiliser une version netPI Core / RTE ou netIOT Edge « Connect », cette dernière proposant une intégration native de Node-RED avec utilisation du protocole sécurisé HTTPS.

Le plan

Voici donc le plan d’ensemble, the big picture, de la solution envisagée :

CODESYS

J’ai donc suivi pas à pas les instructions pour la création du conteneur CODESYS et installé l’environnement de développement sur mon poste et les paquets runtime et gateway comme demandé.

J’utilise pour ma part l’interface WIFI (wlan0) pour accéder depuis mon PC de développement à la cible CODESYS.

Il est nécessaire d’importer le fichier ESI du variateur dans l’IDE CODESYS et l’on peut alors créer une configuration avec l’EtherCAT Master sur le port LAN (eth0).

On peut configurer les données échangées cycliquement entre l’automate et le variateur :

Mon programme en Structured Text ressemble à de l’Ada, c’est normal. 😉

J’ai défini quelques variables mappées côté EtherCAT :

Et d’autres remontant à l’IHM via le serveur OPC :

Jusque là, ça va :

Docker

Comme je veux que mon conteneur InfluxDB reste isolé du monde extérieur, je crée un réseau « myNet1 » auquel je vais connecter les conteneurs InfluxDB donc, le conteneur Node-RED qui va alimenter la base et le conteneur Grafana qui va y piocher :

J’ai donc créé mes conteneurs en suivant les instructions pour Node-RED, InfluxDB et Grafana en connectant les conteneurs sur mon réseau privé « myNet1 » :

Node-RED

Dans Node-RED, auquel on accède via le port 1880, j’ai ajouté quelques nœuds à ma palette comme node-red-dashboard, node-red-contrib-opcua, node-red-contrib-influxdb :

Puis j’ai développé ce flow qui d’une part communique avec CODESYS en OPC UA et d’autre part avec les composants du tableau de bord.
Il injecte également dans la base InfluxDB les échantillons de la vitesse.

On obtient un magnifique tableau de bord pour piloter le variateur INFRANOR :

On y voit le mode d’opération (3 : boucle de vitesse), la vitesse actuelle sous forme de jauge ou de diagramme, un curseur permettant de modifier la consigne, le mot d’état et pour finir le mot de contrôle.

0, 6, 7, 15… ça tourne ! 128 pour acquitter les défauts.

Et le menu hamburger permet d’accéder directement à la visualisation Grafana qui nous attend sur le port 3000 :

Le flow est disponible ici.

Puisque nous voilà confinés pour un moment, n’est-ce pas l’occasion rêvée de se mettre à l’autoformation ? 😉

Bien sûr, si vous ne disposez pas d’un variateur, tout autre esclave fera l’affaire étant donné que CODESYS supporte plusieurs technologies de bus de terrain sur Ethernet, CAN et liaison série.

Vous pourriez utiliser aussi le netHAT sur le Raspberry Pi, ou le netPI RTE / netIOT Edge « Connect », qui embarque un netX 51 permettant de gérer tous les protocoles sur Ethernet Temps Réel, ce qui autorise plein d’expériences amusantes.

Have fun comme disent nos collègues anglophones.

Cordialement,
Stéphane