Autopak Interface

Le système Autopak© est un ensemble de machines destinées à couler de l'aluminium. Dans ce système, certains équipements ont besoin d'être inspectés ou calibré. C'est pour cela qu'Autopak Interface existe. Pour s'intégrer dans un environnement industriel, un équipement appelé RevPi, le Revolution Pi est une sorte d'automate intégrant une carte Raspberry Compute Module qui est une version embarquée du Raspberry Pi, auquel on peut relier en parallèle toute une panoplie de modules (comme des modules d'entrées/sorties, analogique ou non, etc.), l'application nécessite un module CAN pour permettre d'interagir avec le système, qui communique via un protocole proche du CANopen.

Autopak Interface est une « Application/Logiciel Web », cela signifie qu'elle est construite sous la forme Serveur/Clients, et utilise en plus le protocole WebSockets pour communiqué en temp réel. Le logiciel agit d'abord en mode « écoute », il s'agit de simplement écouter les trames CAN circulant sur le réseau, desquelles on peut facilement en déduire beaucoup d'informations très utiles. Les premières informations récupérées sont les identifiants CAN, qui permettent d'en déduire le type et la ligne sur lesquels a été attribué l'équipement, le logiciel affiche alors une vue hiérarchique des différents éléments sur lesquels, avec les permissions suffisantes, on peut cliquer pour accéder à la page de l'équipement. Ensuite il écoute le bus pour savoir si l'équipement est actuellement en coulée, si oui, aucune requête ne peut être envoyé pour éviter de surcharger le bus CAN, dans le cas contraire l'application envoie des requêtes pour connaitre la version du dictionnaire.

Le dictionnaire d'un équipement est une structure de stockage qui contient ses paramètres et variables. Celles-ci peuvent alors être récupérés via le bus CAN et les trames SDO. Cependant, afin de pouvoir communiquer et s'entendre avec l'équipement, il faut connaitre la structure précise du dictionnaire : quelles entrées, quelles types de variables, en lecture seule ou non, etc. C'est dans ce but que j'ai créé un format de fichier .dict pour lequel j'ai créé un Lexer et un Parser qui permettent pour l'un d'analyser et de transformer un texte en suite de « tokens » (ou symboles), et pour l'autre de transformer cette liste de symboles en objets fonctionnels pouvant être utilisés.

Une courte vidéo montre les principales fonctionnalités, pensez à activer les sous-titre si vous voulez plus d'explication :