IMA5 2019/2020 P13 : Différence entre versions
(→Affichage des messages sur Laview) |
(→Semaine du 25 Novembre au 1er Décembre) |
||
Ligne 338 : | Ligne 338 : | ||
Pour cela, nous stockons la valeur étudiée dans un tableau binaire. Si le bit vaut 1, le message associé à l'indice doit s'afficher, sinon non. Il faut noter que plusieurs bits peuvent être à 1 et donc plusieurs messages doivent pouvoir s'afficher.<br> | Pour cela, nous stockons la valeur étudiée dans un tableau binaire. Si le bit vaut 1, le message associé à l'indice doit s'afficher, sinon non. Il faut noter que plusieurs bits peuvent être à 1 et donc plusieurs messages doivent pouvoir s'afficher.<br> | ||
On initialise en parallèle, un tableau global recensant tous les messages possibles de la valeur associée (par exemple, pour la trame x100 les indices 2 et 3 correspondent aux Warnings, qui correspond à 16 messages possibles. On rentre donc dans un tableau ces 16 messages). Ci-contre tous les tableaux de messages communiqués par la PAC.<br> | On initialise en parallèle, un tableau global recensant tous les messages possibles de la valeur associée (par exemple, pour la trame x100 les indices 2 et 3 correspondent aux Warnings, qui correspond à 16 messages possibles. On rentre donc dans un tableau ces 16 messages). Ci-contre tous les tableaux de messages communiqués par la PAC.<br> | ||
− | Enfin, on parcourt le tableau binaire : si le bit est à 1, on récupère le message | + | Enfin, on parcourt le tableau binaire : si le bit est à 1, on récupère le message correspondant du tableau global pour le stocker dans un tableau final. A la fin de la boucle, le tableau final contient donc tous les messages du tableau global dont la valeur associée dans le tableau binaire vaut 1. Ci-dessous le VI de ce traitement.<br> |
[[Fichier:Aff message.PNG|600px|thumb|left|sous VI permettant d'associer un tableau binaire à une liste de messages]] | [[Fichier:Aff message.PNG|600px|thumb|left|sous VI permettant d'associer un tableau binaire à une liste de messages]] | ||
<br style="clear:both" /> | <br style="clear:both" /> | ||
Ligne 344 : | Ligne 344 : | ||
==Envoi et réception de trames sur le même VI== | ==Envoi et réception de trames sur le même VI== | ||
Nous avons travaillé sur l'envoi et la réception de trames sur le même VI. Un problème de configuration des clusters utilisés nous a ralenti, mais finalement avec deux sessions (une pour la lecture, une pour l'écriture) utilisant le même fichier cluster, il n'y a aucun problème.<br> | Nous avons travaillé sur l'envoi et la réception de trames sur le même VI. Un problème de configuration des clusters utilisés nous a ralenti, mais finalement avec deux sessions (une pour la lecture, une pour l'écriture) utilisant le même fichier cluster, il n'y a aucun problème.<br> | ||
− | Pour tester notre VI, nous avons utilisé les trames x120 et x520. En effet, la trame x120 est envoyée par la PAC vers le PC en réponse à la trame x520 envoyée du PC vers la PAC. Sur la capture ci-dessous, on voit que la valeur envoyée par la trame 520 est retrouvée dans la trame 120 de réponse (avec le reste des données associées).<br> | + | Pour tester notre VI, nous avons utilisé les trames x120 et x520. En effet, la trame x120 est envoyée (par la PAC vers le PC) en réponse à la trame x520 (envoyée du PC vers la PAC). Sur la capture ci-dessous, on voit en bleu que la valeur envoyée par la trame 520 est retrouvée dans la trame 120 de réponse (avec le reste des données associées).<br> |
− | [[Fichier:Envoi recep trames.png| | + | [[Fichier:Envoi recep trames.png|900px|thumb|left|envoi et réception simultanée de trames sur LabView]] |
<br style="clear:both" /> | <br style="clear:both" /> | ||
==Interfaces HEL sur Labview et reste des données=== | ==Interfaces HEL sur Labview et reste des données=== | ||
− | Nous avons ensuite réutilisé les interfaces dessinées en début de projet pour afficher toutes nos variables. Nous avons | + | Nous avons ensuite réutilisé les interfaces dessinées en début de projet pour afficher toutes nos variables. Nous avons utilisé l'outil "Onglet" pour ressembler au mieux à l'interface HEL. Cela nous a permis plus facilement de voir les variables qui nous manquaient et les éventuelles erreurs. En effet, toutes les données ne transitent pas par CAN. Une partie utilise une communication RS485 et une autre USB. Nous avons donc rassemblé les données dans le tableau ci-dessous. |
+ | [[Fichier:Types communication variables.PNG|500px|thumb|left|types de communication par lesquelles les variables transitent]] | ||
+ | <br style="clear:both" /> | ||
===Communications RS485 et USB=== | ===Communications RS485 et USB=== | ||
*doublon RS485 | *doublon RS485 |
Version du 29 novembre 2019 à 15:29
Sommaire
- 1 Présentation générale
- 2 Etat de l'art
- 3 Préparation du projet
- 4 Réalisation du Projet
- 5 Semaine du 25 Novembre au 1er Décembre
- 6 Semaine
- 7 Semaine
- 8 Semaine
Présentation générale
Etudiants : Antoine Branquart, Juliette Obled
Encadrant : Anne Lise Gehin
Objectifs
Développer des algorithmes et implanter une interface de supervision pour gérer de manière optimale des différents modes de fonctionnement d'une pile à combustible.
Description
L'école, en partenariat avec le laboratoire CRIStAL dispose d'une plate-forme technologique permettant d'illustrer des enseignements dans le domaine des énergies propres. Cette plate-forme est constituée d'une éolienne, de deux panneaux photovoltaïques, d'un électrolyseur, d'une unité de stockage de l'hydrogène et d'une pile à combustible. L'idée est d'utilisée l'énergie produite par les sources renouvelables lorsqu'elles sont disponibles pour produire de l'hydrogène à partir de l'électrolyse de l'eau puis de réutiliser ultérieurement cet hydrogène pour produire de l'électricité via la pile à combustible, ceci permettant de palier l'intermittence des sources primaires.
La réalisation de ce projet de fin d'études s'inscrit dans le projet européen Electrons to high value Chemical products (E2C) ". Ce projet commun à plusieurs universités et centres de recherche localisés dans les régions côtières de la Manche a pour objectif de convaincre l'industrie d'investir dans le développement et la mise en œuvre de technologies qui utilisent les énergies renouvelables pour remplacer les sources d'énergie du pétrole et du gaz dans la production de produits chimiques.
Composition du système déjà existant
Sur la photo ci-dessus on peut voir le matériel utilisé faisant partie de la plateforme technologie acquit en 2016 par l'université, à savoir:
- Deux panneaux photovoltaïque
- Une éolienne
- Capteur de radiation solaire
- Capteur de température au niveau des panneaux
- Anémomètre qui informe de la vitesse et du sens du vent pour l'éolienne
- Une armoire de commande reliée aux sources d'énergie composée de:
- Un automate programmable industriel Beckhoff
- Capteur de tension et de courant
- Batterie
- Onduleur et transformateur afin d'obtenir une sortie 230V/50Hz
- Un électrolyseur pour la production d'hydrogène
- Un châssis National Instrument Compact DAQ
- Une carte d'entrée sortie National Instrument, disposée dans le châssis Compact DAQ
- Le "Hybrid Energy Lab" composé de différents éléments énumérés de haut en bas visiblement sur la vignette de droite:
- Un module de commande composé d'une interface homme machine permettant de contrôler le système sur place.Les algorithmes de commande du système ainsi que l'interface homme machine sont intégrés dans le Panel PC "AFL-07A-N270" de chez iEi.
- La charge électronique qui permet de simuler la consommation d'énergie. Elle dispose de plusieurs mode de régulation.
- Deux batteries au plomb
- Un module de gestion de l'énergie. Il transforme la tension de sortie non régulée de la pile à combustible en une tension régulée 24V et une tension alternative 110/230V. Il charge aussi les batteries et alimente les consommateurs interne du système.
- La pile à combustible Nexa 1200
- Réservoir d'hydrogène qui peut être équipé de trois différentes bouteilles à hydrures métalliques
Etat de l'art
Contexte
De nos jours, le réchauffement climatique est au centre de toutes les problématiques mondiales. Les ressources fossiles que nous utilisons, en plus de s’épuiser, polluent énormément. Le monde cherche donc à se tourner vers l’utilisation d’énergies renouvelables. Cependant, aussi prometteuses qu’elles soient, les énergies renouvelables (issues du rayonnement solaire, du vent, de l’eau) ne proposent pas d’énergie à la demande car dépendent de nombreux paramètres tels que la météo au moment dit, l’heure de la journée et le moment de l’année. Il se pose donc un problème de stockage de ces énergies pour réussir à se libérer totalement des énergies fossiles. C’est dans ce cadre que s’est constitué le projet européen “ Electrons to high value Chemical products (E2C) ". Pour la partie située au sein de l’Université de Lille, il consiste à étudier la combinaison de plusieurs énergies renouvelables afin d’en sortir une production la moins variable possible, ainsi que le stockage du surplus vers des batteries ainsi que sous forme d’hydrogène par l’électrolyse de l’eau.
Les avantages de ce mode de stockage sont les suivants : en l'associant au stockage par batterie disponible dans l'armoire de commande de la plateforme, on obtient un gain non seulement en autonomie mais aussi en disponibilité en énergie, comme on peut le voir sur le graphique ci contre :
Thèse d'Ibrahim Abdallah sur le système
Cette thèse est une étude appliquée à notre système, et contient notamment une description de celui-ci.
Le but est d’utiliser l’énergie fournie par les ressources renouvelables (éolienne, panneau solaire) tant que cela est possible, en stockant le surplus dans les batteries et sous forme hydrogène et en utilisant ce stockage en cas de besoin. Le scénario théorique de fonctionnement normal est le suivant :
- Si la puissance offerte est très supérieure à celle demandée, alors le surplus est stocké dans les batteries ainsi que sous forme hydrogène (tant que la pression dans les bombonnes est inférieure à 10bar).
- Si la puissance proposée est toujours supérieure à la demande mais de manière moins importante alors le stockage est uniquement dirigé vers les batteries.
- Si la puissance offerte est inférieure à la demande, le stockage dans les batteries est utilisé puis l’hydrogène et enfin le réseau électrique si cela est nécessaire.
Cependant, la pile à combustible n'est pour l'instant pas reliée au reste du système de manière automatisée. Elle est contrôlée par un automate différent du reste, et c'est manuellement que la fonction de la PAC est choisie.
Ces informations sont disposées aux pages 139 à 141 de la thèse dans le chapitre 4.
Interface Heliocentris
Pour ce projet, Heliocentris a pu fournir une base de composants ainsi que des interfaces de lecture des données. Voici donc ci dessous les logiciels déjà existants, avec à gauche celui du système énergies renouvelables et électrolyseur/batteries, et à droite celui de la pile à combustible.
Cependant, ces logiciels ne sont pas flexibles et ne peuvent pas être modifiés. De nouveaux composants comme des capteurs ou même une deuxième éolienne ne peuvent donc pas être ajoutés, et la commande ou la supervision ne peuvent pas être adaptées. Dans le cadre d’un projet de recherche ils ne sont donc pas exploitables.
PFE 2018 de François-Xavier Cockenpot
L’année dernière, l’IMA5 François-Xavier Cockenpot a également pu inscrire son PFE dans le projet européen E2C, afin de réaliser l’interface de commande et de supervision de la production de l’hydrogène (électrolyseur).
Il a tout d’abord travaillé sur la communication avec l’automate, en récupérant et identifiant les trames grâce au logiciel Wireshark. Une fois les variables récupérées il a automatisé la commande de l’électrolyseur et réalisé l’interface de supervision du système complet avec le logiciel LabView.
L’interface de supervision contient donc une partie de détection d’erreur des différents éléments basée sur des courbes de tendance des constructeurs et des valeurs issues d’équations théoriques.
Préparation du projet
Descriptif du système à commander et à superviser
L'objectif de notre PFE est donc de continuer sur les pas du PFE 2018 du point précédent en réalisant la commande et supervision cette fois de la production d’électricité depuis l’hydrogène grâce à la pile à combustible.
Le système étudié pendant le PFE de 2018 permet donc d'obtenir et de stocker de l'hydrogène à partir de sources d'énergies renouvelables. Le système sur lequel nous allons travailler utilisera donc cet hydrogène comme carburant pour la pile à combustible afin de constituer une partie de la plateforme technologique.
La pile à combustible permet d'obtenir de l'électricité à partir de l'oxydation sur une électrode de l'hydrogène couplée à la réduction sur l'autre électrode d'un oxydant, tel que l'oxygène de l'air. Ce fonctionnement revient finalement à l’électrolyse inverse de l'eau. On peut voir les équations qui résultent de cette réaction sur le schéma disposé à droite du paragraphe.
La tension et le courant produits par cette pile sont continus. Ils seront réutilisés pour : alimenter la charge électronique disponible au sein du système ou bien tout simplement alimenter une lampe pour s'assurer du bon fonctionnement de la commande du système
Il faudra donc commander les différents paramètres permettant la production d'électricité via la pile à combustible, détecter les erreurs qui empêche cette production ainsi que surveiller les valeurs entrantes et sortantes de la pile via une interface homme-machine permettant de visualiser l'ensemble du système.
Cahier des charges
Dans le cadre du projet européen E2C du développement de l’utilisation des énergies renouvelables, Polytech détient une plateforme d’étude composée notamment d’une pile à combustible. Celle-ci permet de transformer l’énergie issues d’énergies renouvelables précédemment stockée sous forme d’hydrogène (grâce à un électrolyseur) en électricité.
Lors de ce projet, l’étude sera tout d’abord centrée sur la pile à combustible (PAC). Pour palier au logiciel de commande et supervision trop contraignant déjà existant, le but sera de développer une commande plus flexible de l’automate ainsi que d’implémenter une interface de supervision. Si cela est possible, la commande et/ou l’interface seront mises en commun avec le reste du système (PLC, électrolyseur, batteries). L’ajout d’un système externe sera mis en place afin de tester l’efficacité de la production d’électricité du projet.
Choix techniques : matériel et logiciel
Matériel
- carte d'entrées sorties ?
Logiciel
- Wireshark pour l'identification des entrées/sorties
- LabView pour la récupération/envoie des données
- LabView pour la commande (utilisation de SIT - simulink interface toolkit - avec MATLAB ni besoin, voir semaine du 30 septembre)
Liste des tâches à effectuer
Voici une liste non exhaustive concernant le plan d'action du projet. Certaines parties contiendront bien entendu des sous-tâches supplémentaires.
- Acclimatation avec le système, mise en place du cahier des charges, renseignement sur les logiciels Labview, RTW, Wireshark et lecture des documentations
- Utilisation du logiciel Wireshark pour reconnaître les entrées/sorties de l’automate
- Récupération des données sur LabView
- Commande du système
- Supervision du système
- Interface Labview
- Regrouper les deux interfaces
- Regrouper l’ensemble du système
- Ajout d'un système externe pour tester l'efficacité de la production d'énergie
Calendrier prévisionnel
Réalisation du Projet
Semaines du 9 au 29 septembre
Durant ces premières semaines, nous avons rempli les premières parties de ce wiki en établissant la description du projet et du système, l'état de l'art ainsi que le cahier des charges avec les tâches à effectuer.
Pour cela nous nous sommes renseignés en lisant les documentations fournies, les anciens travaux ainsi qu'en ayant des réunions avec Mme Gehin. Nous avons également pu appréhender l'utilisation de la PAC avec le thésard Sumit Sood.
De plus, nous avons pu noter les problèmes que nous allons potentiellement rencontrer :
- Deux automates différents. L’automate contrôlant la PAC est un autre que celui contrôlant le reste du système. De ce fait, nous ne pouvons pas simplement reprendre le travail de récupération des données fait par FX Cockenpot mais recommencer de zéro. De plus, pour la même raison, le regroupement des deux interfaces dans la suite du PFE va probablement poser problème car les deux automates utilisent peut-être des adresses similaires pour des actions/capteurs différents.
- Automatisation générale du process. Pour recharger les bouteilles d’hydrogène, soit un opérateur sort une bouteille de la PAC pour la connecter à l’électrolyseur. Pour cela, la PAC doit être éteinte et des câbles débranchés pour pouvoir ouvrir la partie concernée. Une autre manière de recharger les bouteilles est de connecter directement l’électrolyseur à la PAC. De cette manière, la PAC doit être éteinte lorsque les bouteilles se rechargent donc les deux automates doivent être capables de communiquer entre eux afin que l’électrolyseur ne se mette pas en route si la PAC est en fonctionnement.
Semaine du 30 septembre au 6 octobre
Utilisation de Wireshark afin d'identifier le protocole de communication utilisé entre la PAC et le logiciel Heliocentris
Durant cette deuxième semaine notre objectif était de comprendre comment les données des différents capteurs sont récupérées et envoyées au logiciel de supervision et comment les ordres sélectionnés sur ce logiciel sont transmis aux différents modules de la pile.
Grâce à la documentation fournie avec le système, nous avons pu voir que la communication entre les différents modules est effectuée via un bus de données de type "CAN" (Controller Area Network). Le bus "CAN" met en application une approche de multiplexage qui consiste à raccorder à un même câble un grand nombre de capteurs qui communiquent à tour de rôle. Ce bus CAN est ensuite connecté au "panel PC" disposé sur le devant du système qui centralise ces données, les transforment pour qu'elles soient ensuite affichées via l'interface homme-machine intégrée à ce mini-ordinateur.
Le panel PC échange en temps réel ces données via un autre protocole de communication au logiciel Heliocentris installé sur un ordinateur à distance qui récupère ces données afin de les réutiliser pour les afficher sur l'interface de supervision du logiciel. On peut envoyer des ordres via cette interface, par exemple modifier les courants d'entrée et de sortie du convertisseur DC/DC. On en a donc déduit que lorsqu'on envoie un ordre comme celui-ci, le panel PC récupère l'ordre et le dispatche via le bus CAN au module concerné afin d'effectuer la régulation.
Pour connaître le protocole de communication utilisé pour la communication entre l'interface à distance et le mini-ordinateur de la pile, nous avons utilisé un sniffer réseau tel "Wireshark" afin d'analyser les trames de données échangées entre les deux systèmes.
Ce test nous a permis de voir que le protocole de communication utilisé est le TCP/IP et que la connexion entre les deux différents systèmes, l'échange des données des capteurs ainsi que les ordres envoyés à la pile sont effectué par le biais de ces trames TCP.
Sur l'image de gauche ci-dessous on peut observer les trames de connexion entre le panel PC et l'ordinateur à distance (en gris). Sur celle de droite on peut voir un exemple de trame de données envoyé du panel pc à l'ordinateur à distance.
Comparaison MATLAB/LabView
LabView :
- La carte d’acquisition à notre disposition est une National Instrument qui peut être gérée via l’utilitaire DAQ.
- La récupération et le contrôle de données sont de manière générale plus intuitifs sur LabView que sur MATLAB. De même que le design d’interface.
- Cependant, MATLAB Simulink propose de meilleurs modules de commande et simulation.
La meilleure solution serait donc d’associer LabView (récupération de données, envoie de données et interface générale) à MATLAB Simulink (simulation de comportements et commande).
Pour cela, plusieurs possibilités existent :
- Utiliser le Model Interface Tool (MIT) : 1200 euros
- Tunnel ActiveX : MATLAB vers tableur puis tableur vers LabView. Mais ce n’est pas une solution temps réel
- MATLAB script node : permet d’ajouter du code MATLAB dans le fichier LabView. Intéressant mais ne va pas jusqu’à l’utilisation de Simulink.
- Simulink Interface Toolkit (SIT) : permet de convertir le fichier simulink en fichier DLL (récupérable sous LabView). Problème : payant. Une version d’essai peut être installée mais certaines fonctionnalités sont alors indisponibles (et la version ne durera pas le temps du PFE).
Conclusion :
Pour le moment, uniquement LabView sera utilisé. Si des modules complexes sont nécessaires et indisponibles sur LabView (notamment pour la partie simulation de courbes), alors l’utilisation de SIT sera envisagée. Cependant, comme il est évoqué dans ce rapport de projet, des problèmes liés au temps réel ainsi qu’à la version d’essai vont probablement survenir.
Retards
Durant cette semaine, alors que nous pensions pouvoir finir l’identification des données, nous avons rencontré un certain nombre de problèmes.
Tout d’abord, la pile à combustible est complètement déchargée. Les batteries externes n'arrivent pas à la recharger et toutes les bouteilles d'hydrogène sont vides (il faut environ 12h pour en remplir une). De ce fait, elle fonctionne sous warning constant, peu d'ordres peuvent être envoyés et les trames perdent alors de leur sens.
De plus, le PC - sur lequel les logiciels LabView et Matlab sont installés et où une connexion internet est disponible - n'était pas configuré pour recevoir les données de la PAC, ce qui nous a beaucoup ralenti en attendant de résoudre ce problème.
Enfin, nous manquons de connaissances en Réseau et en LabView pour le moment afin d'être aussi efficaces que nous l'aurions souhaité.
Semaine du 7 au 13 octobre
Protocoles de communication
Nous avons continué à analyser les trames interceptées par Wireshark. En effet, alors que c'est un protocole TCP/IP et que la communication se fait via Ethernet, Wireshark ne les identifie pas comme du Modbus comme ce que à quoi l'on pourrait s'attendre (l'automate regroupant notamment l'électrolyseur provient du même constructeur et les données étaient transmises via Modbus). Le port n'est pas 502 (correspondant au Modbus) et nous n'avons pas accès aux registres. Notre port destination étant le 4242, après de nombreuses recherches et discussions avec différents professeurs, nous en sommes venus à la conclusion que nous faisons face à un protocole propriétaire créé par le constructeur Heliocentris, qui complexifie énormément l'étude. Nous avons contacté Heliocentris pour potentiellement avoir plus de détails sur ce protocole, et nous attendons une réponse.
En parallèle à cette conclusion, nous avons eu des informations de M. Mathieu BRESSEL, faisant également parti de l'équipe E2C. Nous avons donc récupéré des documents décrivant le protocole de communication CAN entre la pile et le panel PC et notamment les adresses utilisées pour différents contenus (comme les valeurs de tension, etc). Le panel PC fait donc office d'automate puisque c'est lui qui redirige toutes les informations à la fois vers la pile et éventuellement vers le logiciel PC si connexion il y a.
Depuis ces dernières informations, nous allons donc essayer de récupérer les données depuis le bus CAN. Alors que nous pensions devoir utiliser un convertisseur CAN vers USB (dispositif très cher), nous avons remarqué qu'il y avait déjà ce convertisseur dans la pile (vers le panel PC). Nous avons donc pour but de se placer en série au niveau de la connexion USB juste avant le panel PC, grâce à un switch USB.
Ayant désormais une description détaillée du protocole CAN et un moyen de se placer sur ce bus de transmission, nous espérons que cette méthode nous permettra de communiquer avec la pile à combustible.
Commande d'une nouvelle batterie
La pile à combustible n'ayant pas servi pendant un certain moment, l'une des batteries haute capacité rechargée par la conversion hydrogène-électricité s'est déchargée trop lourdement pour que l'on puisse la recharger. Cela a pour conséquence que le logiciel de supervision envoie constamment des warnings et empêche le système de fonctionner correctement ce qui est un handicap pour l'élaboration de notre interface de supervision.
Nous avons donc démonté et ouvert le module contenant les batteries puis avons repéré l'intensité et la tension nominale des batteries haute capacité.
Le module est composé de deux batteries au plomb, et de deux batteries au plomb 12V, 18 Ah. Après avoir vérifié la tension de chacune des batteries grâce à un voltmètre, nous avons donc repéré la batterie défaillante. Les batteries étant montées en série il suffit de commander une batterie ayant les mêmes caractéristiques et le système de recharge par hydrogène grâce à la PAC sera de nouveau opérationnel.
Nous avons retrouvé le même modèle commandable via cette entreprise allemande : Lien vers la batterie
La commande n'étant pas possible sur ce site si l'on veut être financé par Polytech nous allons dans un premier temps attendre la réponse du technicien avec qui nous avons repéré la batterie défaillante qui nous a confirmé pouvoir se procurer une batterie de même caractéristique inutilisée au sein de l'école.
Interface Labview
De plus, nous avons décidé de prendre en main le logiciel LabView et de prendre de l'avance au niveau de l'interface homme-machine en retranscrivant la première feuille d'interface du logiciel Heliocentris.
En utilisant les différents outils disponibles sous LabView pour la réalisation de la face avant, nous avons donc pu arriver à un résultat équivalant à l'interface constructeur. Bien sûr cette interface n'est pas définitive, elle sera apportée de modifications et de nouvelles fonctionnalités au fur et à mesure du projet. Le simple fait d'avoir recopié cette interface a permis d'améliorer nos facultés graphiques sur LabView et d'avancer sur le projet même en étant bloqué sur la partie communication. Par la suite du projet lorsque nous aurons établi une connexion avec la pile, nous pourrons aborder l'aspect programmation lié à cette face avant pour réaliser la commande et la supervision.
Semaine du 14 au 20 octobre
Solution récupération de trames du bus CAN
Nous avons pu rencontrer Mathieu BRESSEL et discuté de différentes solutions pour récupérer les données de la PAC. Plutôt que de se positionner en série après le convertisseur CAN vers USB, nous en avons conclu que la meilleure idée est de sniffer le bus CAN à l'arrière de la pile.
Comme on peut le voir sur la photo ci-contre, il y a trois possibilités de récupération des données CAN :
- en haut du bus, juste avant le PC panel
- en entrée/sortie du convertisseur DC/DC
- en fin de bus, au niveau de la pile à combustible
Le mieux serait de se placer en haut de la chaîne, afin de pouvoir récupérer les données à la demande et non pas recevoir tout le flux de données comme en fin de chaîne. De plus, nous pourrions y envoyer la commande de différents éléments.
Comme dit plus tôt, l'objectif est de sniffer la communication CAN. Nous avons tout d'abord pensé à un shield CAN Arduino. Cependant cette solution prend énormément de temps (commande du matériel, réalisation du code, etc).
Heureusement, Polytech dispose de PC sniffeur CAN dans la salle C001, que nous avons utilisé l'année dernière dans le cadre des TP Réseaux industriels. Ce PC comporte le logiciel NSi527 qui permet d'établir une communication CAN et tester la récupération/envoie des trames de données.
Réception des trames sur sniffer CAN
La première étape fut de vérifier que nous recevons bien les données du bus CAN sans qu'elles soient cryptées comme pour l'éthernet. Nous nous sommes donc connecté comme le montre la photo ci-contre avec le PC sniffer CAN.
Nous avons réalisé 2x3 tests : comme expliqué dans la partie précédente, il y a trois possibilités de récupération de données CAN. Pour chacune de ces possibilités, nous avons essayé de récupérer les trames avec et sans connecter le PC panel. Nous obtenons les résultats suivants :
- en fin de chaîne (en bas), on récupère un flux constant de trames de données si la pile est allumée et si le bouton start est enclenché (mais pas besoin du pc panel allumé)
- même chose en milieu de chaîne
- en haut de chaîne, on ne peut pas recevoir les données de la pile comme les deux cas précédents car le câble CAN va vers le PC et non pas vers le reste de la PAC. Mais on reçoit des commandes du PC panel (avec notamment une trame de déconnexion du logiciel). Cette fois si le pc panel n'est pas allumé rien ne transite (Il y a une erreur au niveau du logiciel NSI527).
Voici ci dessous trois captures d'écran montrant la bonne réception de données (trames RX), et d'envoie (trames TX), dans l'ordre connexion en fin de chaine, milieu et haut respectivement.
En conclusion de ces premiers tests, on arrive bien à recevoir les données envoyées par la pile et le convertisseur DC/DC vers le panel PC. Cependant, alors que nous pensions pouvoir faire de la récupération de données à la demande, il s'avère que le flux de données est constant quelque soit l'emplacement du port CAN. Le port en fin de chaîne étant un extra port (pas besoin d'enlever une connexion pour pouvoir s'y placer), c'est celui-ci que nous choisissons pour la suite des tests, puisqu'il permet de récupérer les trames tout en potentiellement envoyant des commandes depuis le panel PC. Par la suite, nous verrons s'il est plus judicieux de se placer en début de chaîne afin de jouer le rôle de panel PC depuis notre interface LabView, si cela revient au même ou si l'on risque de manquer certaines informations. Il y a notamment une connexion RS485 au niveau du panel PC que nous n'avons pas encore identifié, et se positionner en haut de la PAC empêche l'éventuel flux de données avec cette connexion (si flux de données il y a).
Identification des trames
Grâce à la documentation de la pile ( Fichier:ProtocoleCAN Nexa1200.pdf ) envoyée la semaine dernière par Mathieu BRESSEL, nous avons pu facilement retrouver un grand nombre de trames associées à la pile. Pour celles associées au convertisseur, nous avons fait la demande pour avoir la documentation, et sommes en attente d'une réponse d'un contact du fournisseur.
Nous avons alors fait une comparaison entre les données du logiciel HEL et celles sniffées sur le logiciel NSI527. Voici les captures d'écran des données sur lesquelles nous nous basons, prises à un temps T sur une absence d'évolution des valeurs. De gauche à droite respectivement la première fenêtre du logiciel HEL, la deuxième fenêtre puis le logiciel NSI527.
En plus du tableau, on peut retrouver dans la documentation le détail bit par bit des données. On sait par exemple que la trame 0x100 contient l'information de tension de la pile sur les deux premiers paquets : XX XX XX XX XX XX, et que cette tension peut varier entre -10V et 50V.
Sur le logiciel NSI527, on retrouve la trame 00 44 00 00 00 00, soit 00 44 les données associées à la tension de la pile.
Nous avons regroupé et comparé les données dans le tableau ci-dessous. En vert les données que nous avons retrouvé dans le logiciel HEL, en jaune celles que nous n'avons pas retrouvé sur les captures d'écran.
En voulant réaliser la conversion hexadécimal vers unité des données, nous observons quelques problèmes (cases rouges). En effet, pour les plages de données allant d'une valeur négative vers une valeur positive, les données ne correspondent pas. Nous allons nous pencher sur le problème dans les jours à venir, une des idées étant que les valeurs binaires seraient signées et ainsi la conversion serait un peu plus complexe que simplement une fonction affine.
Recherches et réalisation de devis
Après avoir réussi à sniffer le bus CAN de la pile à l'aide de la carte d'interface NSi527 et du logiciel associé, il fallait donc trouver une solution pour pouvoir réaliser les mêmes fonctions mais cette fois à partir de LabVIEW pour pouvoir récupérer les trames et donc récupérer les valeurs des différents capteurs ce qui permettra de réaliser la commande et la supervision du système.
Pour cela nous nous sommes donc orientés vers la recherche de matériel National Instruments. Nous avons trouvé une carte d'interface CAN compatible avec le module CompactDAQ déjà en place dans la salle. Il nous suffira donc juste d'enficher cette carte d'interface afin de pouvoir récupérer les trames qui transitent sur le bus CAN mais aussi réinjecter des trames de commandes.
Voici la carte d'interface en question: Lien vers le module d'interface CAN NI-9862
Il dispose d'un port CAN avec une impédance interne de 120 ohms et il peut supporter des réseaux CAN communiquant à des vitesses maximum d'1Mbits/s. Le bus communique à une vitesse de 500Kbits/s et les ports ont une impédance interne de 120 ohms, le module d'interface supporte donc le bus CAN du système que l'on souhaite superviser.
Un devis a donc été transmis à Mme GEHIN qui s'occupe de la commande du matériel pour ce projet : Fichier:NIQuote 1693974-1.pdf
Au niveau de la batterie défaillante, un devis a été réalisé et la commande de celle-ci va être effectuée par Mme GEHIN : Fichier:Devisbatterie.pdf
Une fois que tout ce matériel sera réceptionné nous pourrons donc attaquer la partie LabVIEW en réalisant dans un premier temps une réception et un envoi de trames de données sur le bus CAN de la pile.
Réunion avec les étudiants en Master
Ce vendredi 18 nous avons eu une réunion avec les quatre étudiants en Master intégrant le projet, Sumit Sood le thésard associé au projet, Mme Gehin, M. Ould Bouamama, et M. Dieulot.
Cette réunion avait pour but de présenter le projet aux nouveaux étudiants, ainsi que de leur assigner leur tâches. Ils travailleront donc sur la partie modèle, commande et supervision de l'électrolyseur sur MATLAB, et de notre côté nous continuons nos tâches prévues sur la pile à combustible. Une fois les deux parties terminées, le but sera de les regrouper afin d'avoir une interface commune pour l'ensemble du système présenté en début de wiki.
Semaine du 21 au 27 octobre
Identification des trames
Reprise de la piste des nombres signés
- Essai 1 : En considérant que le bit de poids fort correspond à l'aspect positif/négatif (0/1), nous avons dans un premier temps estimé que la valeur maximale était 7FFF et celle minimale 8000, associées aux extrema respectifs de la documentation. Cela paraissait à première vue cohérent puisque la seule valeur négative issue du logiciel HEL correspondait à un code au bit de poids fort 1. Cependant, en faisant un produit en croix, les valeurs ne corrèlent toujours pas.
M. Blaise Conrard nous a alors suggéré de se placer à l'entrée du panel PC et jouer le rôle de la PAC en envoyant les trames sur lesquelles nous travaillons au panel PC. Cela permet de facilement changer les valeurs affichées sur le panel PC sans pour autant avoir un quelconque impact sur le système. De cette manière, on peut vérifier la concordance entre les données issues de la documentation et celles réelles.
- Essai 2 : Nous nous sommes alors rendu compte que les valeurs hexadécimales n'avait aucun lien avec la documentation. Par exemple, envoyer l'information hexadécimale 8000 sur le paquet correspondant au courant de la pile (I Stack) affiche une valeur de -327,3A, tout comme une température de -327,3°C si l'on envoie cette même information hexadécimale sur le paquet correspondant à la température de la pile (T Stack). Ces valeurs devraient correspondre au minimum (0A pour le courant, 22,3°C pour la pile) et pourtant ce n'est pas le cas. Les intervalles de valeurs données par la documentation sont donc à but purement informatif sur le système mais n'ont pas de lien avec la communication CAN.
- Essai 3 : Après un peu plus de réflexion, nous avons remarqué qu'en convertissant la valeur hexadécimale signée vers sa valeur décimale associée, on retrouve la valeur affichée sur le panel PC, à une ou plusieurs puissance de 10 près. Cela est donc enfin une réussite.
Un des éléments nous ayant ralenti, est que nous avons travaillé sur la valeur V Stack (tension de la pile), car c'est la première information de la trame 100h tout simplement. Et il s'avère que celle-ci à un offset de 0040 (en décimal, et 0,4 en V) par rapport à toutes les autres. De ce fait, lorsque nous avons cherché le point 0, la valeur hexadécimale était différente de simplement 0000 et notre raisonnement fut biaisé pendant un temps.
Pour conclure, nous avons identifié toutes les informations grâce à la documentation, et compris comment retrouver la valeur réelle depuis une conversion hexadécimale signée vers décimal (puis une division par 10 ou 100 selon les données). Nous avons trouvé où se situaient les valeurs "manquantes" de la semaine dernière et nous sommes donc prêts à récupérer ces trames sous LabView, les exploiter correctement et réaliser l'interface.
NB : nous avons reçu la documentation du convertisseur DC/DC et donc avons pu effectuer nos vérifications également sur les valeurs issues de ce dernier, le fonctionnement étant le même que pour les données issues de la pile.
Conversion hexadécimal signé vers décimal
Pour convertir un nombre hexadécimal vers décimal sous LabView, plusieurs choix s'offrent à nous. Voici une proposition.
- conversion hex -> binaire
- si le bit de point fort vaut 0
- faire la conversion binaire -> décimal
- si le bit de point fort vaut 1
- faire le complément à 1 (not X)
- faire le complément à 2 (ajouter 1)
- faire la conversion binaire -> décimal
Pour les conversions, il n'y a pas l'air d'avoir de blocs dédiés sur LabView. Un simple bloc script Matlab pourra nous permettre d'insérer du code facilement, et effectuer les conversions sans problème.
Matériel commandé
Nous avons bien reçu la batterie ainsi que la carte d'acquisition
Semaine du 4 au 17 novembre
Pendant l'interruption pédagogique, le service informatique a effectué un basculement de réseau dans la salle C006 de l'adresse polytech vers les serveurs de l'université. De ce fait, les PC ne retrouvaient pas les licences NI instrument et donc ni Labview ni NI MAX ne pouvaient fonctionner. Nous avons donc du faire en sorte que ce problème soit résolu la première semaine.Ce problème s'est résolu grâce à monsieur Scrive qui a pu réactiver la licence.
Carte d'acquisition NI9862 et connexion CAN
Après avoir installé le driver logiciel NI XNET pour la carte d'interface CAN que nous avons commandé, nous avons donc essayé de recevoir les données via le câble D-Sub directement relié au bus CAN de la pile. Cependant, il s'avère que l'interface NI9862 requiert une alimentation continue entre 9 et 30V (consommation d'1W) en entrée, et le bus CAN de la pile ne fournit pas cette alimentation.
Nous avons utilisé un adaptateur mâle vers femelle en tant qu'élément intermédiaire (pour ne pas travailler directement sur le câble CAN), sur lequel nous avons soudé des câbles pour ressortir chaque pin. L'autre extrémité de chaque pin est alors soudée vers un autre adaptateur qui lui est connecté à la carte d'acquisition. Entre les deux adaptateur se trouve donc une zone tampon où nous pouvons placer l'alimentation appropriée sur les pin 6 (masse) et 9 (VSup). Ci contre une photo du résultat.
Dans un premier temps nous avons travaillé avec les grosses alimentations stabilisées-réglables des salles C20x pour tester notre montage. Grâce à l'interface NI XNET Bus Monitor (capture ci-dessous) nous pouvons facilement voir que nous recevons les données, et en se plaçant juste avant le pc panel nous arrivons à envoyer des données vers celui-ci, comme précédemment avec le sniffer CAN disponible en C00x.
Dans un second temps, nous avons utilisé l'alimentation du châssis CompactDAQ. Nous avons donc coupé le câble pour placer un borgnier entre les deux extrémités. De ce fait, nous avons pu récupérer la tension fournie par l'alimentation du châssis directement. Nous pouvons donc maintenant récupérer les données sans l'une des alimentations des salles c20x. Ci-dessous le montage final, avec la carte d'acquisition à gauche, l'alimentation entourée en violet et le borgnier pour la en haut à droite.
Réception de trames via LabView
Nous avons alors pu commencer à récupérer les trames sur Labview. Pour cela, nous avons utilisé les modules de programmation graphiques de la bibliothèque NI-XNET pour pouvoir lire les données issues de la carte NI9862. Ce code est pour l'instant une ébauche et sera amélioré aux prochaines séances, mais nous pouvons déjà voir sur la capture ci-dessous que nous arrivons à afficher une trame et donc par la suite la décomposer pour l'exploiter correctement.
Semaine du 18 au 24 novembre
Récupération des trames et affichage des données sur LabView
- Lors de cette semaine, nous avons pu approfondir le code LabView. Nous avons donc extrait toutes les trames contenant des données (depuis datasheet) en les distinguant par leur adresse. De là, elles sont traitées dans un sous-VI particulier (selon l'adresse) puis affichées dans la face avant, comme le montre le montage ci-dessous. La face avant est pour l'instant uniquement pratique et nous utiliserons l'interface réalisée quelques semaines plus tôt une fois le programme entièrement fonctionnel.
- Le traitement des trames se fait donc dans des sous-VI pour plus de clarté. Ci-dessous un exemple de traitement des données, avec la trame d'adresse x200.
Pour récupérer la valeur de la concentration d'hydrogène du système, on récupère les valeurs du deuxième et troisième indice. Ces valeurs étant en décimal, on les convertit en hexadécimal. De cette manière, on peut concaténer les deux valeurs afin de former 4 chiffres hexadécimaux correspondant à la valeur hexa signée de p H2 FC. On convertit une nouvelle fois ces 4 chiffres pour d'obtenir la valeur décimale signée. Puis, on divise cette valeur par 100 afin d'être dans la même unité que le PC panel.
Sur la face-avant du VI, on peut vérifier nos conversions et extractions de données en comparant visuellement avec la trame initiale, sans pour autant afficher toutes ces valeurs dans le VI principal.
Pour les données correspondants à des messages d'erreurs ou d'avertissement, on convertit non pas vers une chaîne hexadécimale mais une chaîne de bits, puisque un bit à 1 signifie que le message du même indice doit être affiché. C'est pour l'instant une solution provisoire, puisque nous n'avons pas encore trouvé comment exploiter ces valeurs.
- Pour traiter ces données, nous avons rencontré quelques obstacles, et notamment la division d'un nombre signé.
En effet, nous ne recevons quasiment aucune donnée dans l'unité souhaitée (exemple : 1000 pour 10V), et une division est donc nécessaire avant l'affichage. Cependant, dès que le nombre était négatif, le résultat obtenu par le module diviseur basique de Labview ne correspondait pas à la réalité (car faisait une transformation en non signé). Après de nombreux autres essais, la seule solution que nous avons trouvé est de transformer le type des données grâce à des variables tampons, afin de garder le signe et la valeur initiale. Nous avons regroupé cela dans un sous-VI pour plus de clarté et facilité d'utilisation.
Nous arrivons donc à recevoir et afficher correctement une grande partie des variables.
Envoie de trames de test sur le PC panel
De plus, nous avons réussi à envoyer des données de l'interface Labview vers le panel PC, en connectant notre interface CAN à l'entrée de celui-ci pour observer facilement le changement des données.
Nous avons par exemple testé avec la température de la pile TStack, dont les informations se situent sur les deux premiers éléments de la trame x110. On peut voir sur le montage ci-dessous que lorsque l'on communique la valeur 1000 (le module division n'a pas été utilisé ici mais sera nécessaire par la suite), le panel PC reçoit bien la valeur 10°C.
Pour cela nous avons du convertir la valeur 1000 en hexadécimal, puis séparé cette dernière en deux éléments. Nous avons ensuite re-créé toute la trame avec les éléments, l'adresse, le temps, le type, etc. Sur la face avant du VI on peut donc choisir la valeur, et nous est affiché la conversion hexadécimale ainsi que la trame qui est envoyée pour vérifier le bon fonctionnement. Par la suite, nous pourrons, de la même manière que la réception, programmer chaque trame d’envois (selon la datasheet).
Note : la session NI-XNET est différente entre le protocole de réception et celle d’envois. Nous n'avons pour l'instant pas testé les deux en même temps.
Semaine du 25 Novembre au 1er Décembre
Affichage des messages sur Laview
Dans un premier temps, nous avons réglé le problème d'affichage des messages d'erreurs. Après être partis sur la piste des menus déroulants, ces derniers ne sont finalement pas pratiques car il n'est pas possible de voir le contenu des menus pendant que le programme tourne. En attendant de trouver une solution aussi proche graphiquement parlant de l'interface HEL, nous utilisons des tableaux pour afficher les messages : même lorsque le programme tourne, il est possible de voir le contenu entier du tableau.
Pour cela, nous stockons la valeur étudiée dans un tableau binaire. Si le bit vaut 1, le message associé à l'indice doit s'afficher, sinon non. Il faut noter que plusieurs bits peuvent être à 1 et donc plusieurs messages doivent pouvoir s'afficher.
On initialise en parallèle, un tableau global recensant tous les messages possibles de la valeur associée (par exemple, pour la trame x100 les indices 2 et 3 correspondent aux Warnings, qui correspond à 16 messages possibles. On rentre donc dans un tableau ces 16 messages). Ci-contre tous les tableaux de messages communiqués par la PAC.
Enfin, on parcourt le tableau binaire : si le bit est à 1, on récupère le message correspondant du tableau global pour le stocker dans un tableau final. A la fin de la boucle, le tableau final contient donc tous les messages du tableau global dont la valeur associée dans le tableau binaire vaut 1. Ci-dessous le VI de ce traitement.
Envoi et réception de trames sur le même VI
Nous avons travaillé sur l'envoi et la réception de trames sur le même VI. Un problème de configuration des clusters utilisés nous a ralenti, mais finalement avec deux sessions (une pour la lecture, une pour l'écriture) utilisant le même fichier cluster, il n'y a aucun problème.
Pour tester notre VI, nous avons utilisé les trames x120 et x520. En effet, la trame x120 est envoyée (par la PAC vers le PC) en réponse à la trame x520 (envoyée du PC vers la PAC). Sur la capture ci-dessous, on voit en bleu que la valeur envoyée par la trame 520 est retrouvée dans la trame 120 de réponse (avec le reste des données associées).
Interfaces HEL sur Labview et reste des données=
Nous avons ensuite réutilisé les interfaces dessinées en début de projet pour afficher toutes nos variables. Nous avons utilisé l'outil "Onglet" pour ressembler au mieux à l'interface HEL. Cela nous a permis plus facilement de voir les variables qui nous manquaient et les éventuelles erreurs. En effet, toutes les données ne transitent pas par CAN. Une partie utilise une communication RS485 et une autre USB. Nous avons donc rassemblé les données dans le tableau ci-dessous.
Communications RS485 et USB
- doublon RS485
- conversion RS485 vers RS232
- conversion male/femelle ?
- usb en attente d'une solution
Semaine
Semaine
Semaine
=Documents Rendus=