L’article précédent présentait une mise en œuvre d’un module Hilscher netHAT configuré en PROFINET IO Device sur un Raspberry Pi 3. Ce module netHAT communiquait avec un automate SIEMENS S7 1500-PN PROFINET IO Contrôleur.
Pour illustrer la chose, la voici : Raspberry Pi 3 / netHAT
Le système d’exploitation est une Raspbian Stretch tout ce qu’il y a de plus standard : Raspbian Stretch
Au-dessus de l’API cifX, fournie par le pilote Hilscher pour Linux, tourne une application exemple « Ada for Automation », le fameux Piano.
Cette application est configurée avec une tâche Main périodique avec une période de 50 ms et une priorité temps réel, ce que l’on peut constater aisément avec htop : htop
Une priorité à 20 est une priorité non temps réel normale, à -50 c’est une priorité temps réel par défaut, à -89 une priorité temps réel élevée.
Et on relève que, en général, la période de 50 ms est respectée à +100 µs près, et dans environ 1 % des cas à moins de 2 ms près : Scheduling Stats
Côté PROFINET IO Contrôleur, j’ai utilisé une carte cifX 50-RE Hilscher configurée bien sûr en PROFINET IO Controller avec SYCON.net, l’outil ad-hoc, et au-dessus également une application « Ada for Automation » mais avec une configuration non temps réel.
On constate tout de suite la différence au niveau ordonnancement des tâches :
Pour les besoins de la démo le netHAT remplace parfaitement le netRAPID évoqué sur ce blog.
Je disais donc dans mon dernier article qu’il fallait que je vous fasse une petite démonstration de l’utilisation du netHAT Hilscher avec un Raspberry Pi 3 et « Ada for Automation ».
Voilà donc une copie d’écran montrant l’application piano connectée, via le netHAT configuré en PROFINET IO Device, à un automate SIEMENS S7 1500-PN PROFINET IO Contrôleur :
Raspberry Pi 3 Ada for Automation netHAT
On reconnait dans cette vue de TIA Portal les valeurs d’E/S affichées dans la vue ci-dessus, les bits de poids faible sont à gauche dans la vue du piano (b0 .. b7) :
netHAT TIA Portal Visu
La vue d’état cifX montre donc l’état du netHAT puisque celui-ci partage avec celle-ci, comme la plupart des produits Hilscher, l’API cifX, la Dual Port Memory, les piles de protocoles et l’OS.
La seule subtilité que j’ai rencontrée, c’est que la version du pilote Linux livrée avec le netHAT est plus récente que celle que j’utilisais jusqu’alors (la V1.1.0.0) et que l’architecture en a été revue.
En substance, un plugin permet maintenant de gérer la connexion via SPI et il n’est plus nécessaire de le gérer côté application. Le netHAT est directement vu comme une cifX.
Je cherchais pour mes expériences une solution qui soit ludique, et aussi accessible à tout un chacun, et mes tribulations m’ont conduit à sélectionner un combo Raspberry Pi 3 + SenseHAT.
Hilscher France a donc fait l’acquisition de ces éléments chez KUBII :
Pourquoi donc un tel investissement me direz vous ?
Sans doute parce que depuis quelques temps cette plateforme économique et performante permet d’imaginer tout un tas d’utilisations dans ce qu’il est convenu d’appeler l’IoT, l’IIoT, Industry 4.0, etc…
Pour ces produits, Hilscher France n’assure pas de support.
Cependant, l’on peut vous proposer une formation !
Le netHAT est fourni avec un pilote Linux compilé, des firmwares en version limitée à 32 octets d’E/S pour EtherCAT, Ethernet/IP et PROFINET IO Device et bien sûr de la documentation.
Le tout s’installe sans encombre sur la Raspbian et ça tombe en marche comme sur le plan.
Vous pouvez donc vous familiariser avec la technologie Hilscher pour une quarantaine d’euros, ce qui est modique vous en conviendrez aisément.
Bien sûr, « Ada for Automation » peut tout à fait être utilisé avec le netHAT. J’y reviendrai bien sûr.
Avec un Raspberry Pi + un netHAT, on peut aussi tester le concept netPi et développer des applications qui tourneront sur le netPi sans modification.
Bref, je souhaitais monter une manipulation avec un Rasberry Pi 3, un SenseHAT pour des capteurs pas chers et un netHAT pour connecter ce bijou de technologie à votre automate préféré.
En fait, le SenseHAT et le netHAT ne peuvent pas se monter l’un sur l’autre comme on pourrait le penser de prime abord.
Je pensais développer un binding Ada pour le SenseHAT mais ce n’est pas si simple.
Le langage choisi par l’équipe Raspberry est plutôt le Python et la plupart des bibliothèques fournies pour les « HAT » sont en Python.
La bibliothèque disponible pour le SenseHAT est donc en Python aussi et utilise d’une part une bibliothèque en C++ qui gère nombre de capteurs et d’autre part le framebuffer pour les LEDs et un IO device pour le joystick.
Mais je voulais quelque chose de super vite fait et j’ai penché pour une solution mettant en œuvre un framework Modbus développé par un collègue, Monsieur Luc JEAN, que je remercie chaleureusement : https://github.com/ljean/modbus-tk
Pourquoi donc ? « Ada for Automation » disposant de la fonctionnalité Modbus TCP Client et le framework permettant de réaliser très simplement un serveur Modbus TCP, il suffisait donc de raccrocher les données des capteurs dans les registres du serveur.
Le SenseHAT dispose d’une application de simulation avec interface graphique et il est possible d’utiliser celle-ci en lieu et place du matériel tel que dans l’exemple suivant.
SenseHAT Simu GUI
On y démarre depuis un terminal :
python 3 sense-omb.py
Et on teste par exemple avec Modbus Poll :
Modbus Poll Example
En Python, c’est une vingtaine de lignes de code pour remonter température, pression, hygrométrie et cap :
#!/usr/bin/env python # -*- coding: utf_8 -*- """
Modbus TestKit: Implementation of Modbus protocol in python
Vous pouvez donc remonter les données du SenseHAT vers votre automate préféré disposant d’une connectivité Modbus TCP Client.
Bon, en travaillant un peu, ça doit fonctionner dans les deux sens, hein !
Quid du netHAT ? Si on utilise l’application de simulation SenseHAT on peut bien sûr le mettre sur le même Raspberry Pi et se connecter en local.
Si l’on souhaite de vraies données physiques, il faudra l’installer sur un autre Raspberry Pi, et le faire communiquer avec le premier, toujours en Modbus TCP.
C’est trivial avec « Ada for Automation » et je vous le montrerai ce tantôt.
Il a déjà été question dans ces pages de « Ada for Automation » dans le nuage et le site consacré à Gnoga montre un usage du serveur Apache configuré comme frontal (proxy) de démonstration.
J’ai donc marché dans les pas de Gnoga et créé également un portail de démonstration pour « Ada for Automation ».
Ainsi, ce portail présente quelques applications mettant en œuvre bien sûr les technologies web déjà mentionnées, du Modbus TCP en Client / Serveur grâce à libmodbus, et du PROFINET IO Contrôleur et Équipement (Device).
L’on pourra donc interagir avec :
une application basique Modbus TCP en Client / Serveur supervisant et contrôlant un « piano » Modbus TCP Serveur,
l’application historique App1, Modbus TCP en Client / Serveur, supervisant et contrôlant une application Modbus TCP Serveur simulant la partie opérante,
une application basique pilotant en PROFINET le fameux « piano ».
Les deux premières démonstrations ont lieu entièrement dans le cloud, comme évoqué dans les articles précédents.
Pour la troisième démonstration où l’on met en œuvre l’API Hilscher cifX, on utilise un PC industriel sous Debian Linux dans lequel une carte cifX est configurée en contrôleur PROFINET IO et un Raspberry Pi (Raspbian) connecté via une liaison SPI à une carte d’évaluation netRAPID configurée en PROFINET IO Device.
On a donc une application « Ada for Automation » sur le PC au-dessus de la cifX et une autre sur le Raspberry Pi au-dessus du netRAPID, communiquant via la même API.
Ne manquez pas de visiter depuis le menu de l’application les pages d’état où l’on reconnaîtra en particulier les informations du « Common Status » pour l’API cifX.
Cette POC (Proof Of Concept) ne demande qu’à être étoffée.
Faute de matériel plus divers, je pense par exemple à une démonstration tout aussi peu palpable avec l’implémentation Hilscher de PROFIdrive.
Il vous serait ainsi offert de piloter un variateur virtuel dans le cloud, ce qui, admettez, est un peu perché.
Il serait tout aussi possible d’envisager une démonstration avec l’une des nombreuses autres technologies de bus de terrain supportées par Hilscher.
Ouvert à toute forme de collaboration, n’hésitez pas à me faire part de vos besoins si vous souhaitez une manipulation avec un matériel quelconque de votre fourniture.
Comme l’année dernière, je serai présent aux Journées du Logiciel Libre 2017 pour présenter « Ada for Automation » et répondre aux éventuelles questions.
J’y tiendrai un stand dans l’espace « Do It Yourself » Samedi 01 et Dimanche 02/04/2017 de 10h00 à 18h00 et animerai une démonstration Samedi de 14h30 à 15h30 (salle danse au sous-sol, ça tombe bien ! – « Ada for Automation » est ma danseuse…).
J’espère bien sûr vous y voir pour échanger avec vous. Venez avec vos projets, vos idées, votre matériel… et votre curiosité !
Cordialement,
Stéphane
Stéphane LOS – Informatique Scientifique et Technique