Interface de gestion d’énergie

INTERFACE DE GESTION D’ÉNERGIE
Volume horaire du projet: 98heures

 

OBJECTIF : Réalisation d’une interface pour le contrôle et la gestion d’énergie.

Professeurs référents: 
Monsieur DROUAZ Mahfoud
Monsieur OULD-ABDESLAM Djaffar

Équipe :
ZINK Valentin
ROCA Maxime
BRUGGER Marie-Camille
NAZE Anthony

 

SOMMAIRE :
Présentation du projet :
1. Introduction

Partie traitement des données (présentation DAQExpress) :
1. Acquisition des données
2. Traitement du signal récupéré
3. Création de la base de données
4. Envoi des données

Partie création d’interface et gestion des données :
1. Interface
2. Problèmes rencontrés
3. Solutions apportées

Conclusion :
1. Ouverture du projet

Introduction:

Le projet d’interface de gestion d’énergie nous a été référé par Mr DROUAZ ainsi
que Mr OULD-ABDESLAM. Ce projet a pour but de récupérer des mesures en utilisant le
module de 16 entrées analogiques/numériques NI-9220 (outil développé par National
Instrument), qui, via le châssis NI cDAQ-9174, bufférise toute les données et les envoie via
un port USB. Par la suite, le traitement des données se fait à l’aide du logiciel DAQExpress
(logiciel développé par National Instrument). Sur celui-ci, il existe deux fonctions
principales :
 Le traitement des données (VI’s),
 La configuration et la visualisation directe de la mesure des entrées/sorties.
Les entrées sont configurées d’après les mesures de tension, de courant obtenues. Par la
suite, données stockées seront enregistrées dans des fichiers « .csv ». Un programme envoie
les données sur un serveur, puis, un autre programme récupère les données sur le serveur et
les affiche sur une interface. La programmation se fait à l’aide du langage en Python 3.
Le projet a été réparti en deux grandes parties : la première partie qui traite les données puis
les envoie et la seconde qui les récupère pour pouvoir ensuite les afficher.
Schéma explicatif du projet « Interface de gestion d’énergie »
Il a fallu en premier lieu approfondir nos connaissance de programmation en Python 3 ainsi
qu’apprendre à utiliser le logiciel DAQExpress, semblable au logiciel LabView que nous
avions déjà utilisé.

I. Partie traitement des données (présentation DAQExpress) :
Acquisition des données :
Pour l’acquisition des données, on utilise le logiciel DAQExpress. Tout d’abord, il a fallu
créer un fichier au format « .csv » pouvant stocker les données. Grâce à ce format,
l’organisation des données permet que celles-ci soient envoyées sur le serveur déjà créé
auparavant par les MMI de l’IUT de Mulhouse. Les données sont traitées (diagramme sous
DAQExpress), puis envoyées et enregistrées dans un fichier dont le chemin sur l’ordinateur
a été défini préalablement. L’échantillonnage de la mesure est de 15kHz. Nous avons un
échantillonnage élevé sur une mesure de tension, ce qui lui permet d’être précise.
L’acquisition est à ce stade stoppée par un bouton stop, elle est donc non quantifiée.
Le problème majeur rencontré a été la séparation des informations reçues. Ces
dernières étaient écrites dans le fichier en chaîne de caractères dans une colonne du fichier
au format csv. Il a fallu les séparer par des points-virgules. Ceux-ci sont ensuite retranscrits
par un changement de colonne.

 

Traitement du signal récupéré :
Par la suite, nous avons échantillonné les données à 7 kHz pour pouvoir récupérer la
valeur moyenne de chaque mesure. Elles sont ensuite traitées en les multipliant par l’échelle
des sondes, puis multipliées entre elles pour avoir la puissance. Les valeurs
sont inscrites dans le fichier. Pour pouvoir les traiter, les données, brutes, changent de
« type » pour permettre certaines opérations :
 En tableau pour les grouper
 En nombre décimal pour les calculer
 En chaîne de caractère pour les écrire

Pour pouvoir inscrire les données dans le fichier, on doit les organiser dans un ordre
conventionnel. Nous avons choisi de les organiser dans l’ordre suivant :
1) tension
2) courant
3) puissance
Cet ordre permettra à la partie qui réceptionne et affiche de connaître la correspondance
entre la donnée et sa signification.
Pour finir, nous avons rajouté plusieurs entrées. Nous avons pris 6 entrées : 3 mesures de
tension et 3 mesures de courant. Au total, 9 valeurs sont envoyées : 3 valeurs de tension, 3
valeurs de courant et 3 de puissance. Enfin, il a fallu rajouter la date et l’heure de la mesure
des relevés. Nous avons décidé d’enregistrer chaque mesure dans un fichier .csv qui lui est
propre. Ce fichier commence par le bandeau de présentation de l’ordre des données. Les
valeurs affichées sont le temps puis les neuf mesures.

 

Envoi des données :
Nous devons ensuite envoyer les données. Nous avons donc fais un programme en
Python 3. Le programme scanne le fichier .csv, extrait la date, puis les données et les envoie
via un URL au serveur.

Dans un premier traitement de fichier sur DAQ Express nous avions mis un caractère« * »
marquant la fin du fichier. Par la suite nous avons trouvé une fonction en Python qui
retournait la longueur des données du fichier. Par conséquent, ce caractère était inutile. Au
final, nous avons complété ce caractère par la valeur du temps d’attente entre chaque
mesure. Cette donnée nous permet de régler une fonction Timer dans le programme d’envoi
Python. Il nous suffit maintenant de lancer le programme Python (envoi.py), puis de lancer
l’acquisition de données. DAQ Express crée un fichier pour chaque mesure. A la fin de
l’écriture de chaque mesure, le programme envoie les données du dernier fichier créé. Il faut
ensuite arrêter le programme.

II. Partie création d’interface et gestion des données :
Interface :
En premier lieu, il a fallu apprendre le langage Python. Sur Python nous utilisons la
bibliothèque Tkinter, pour afficher les valeurs obtenues depuis la base de données sur une
interface graphique pour pouvoir les visualiser. Nous a commencé à faire des essais
d’affichages « brutes » de la base de données (date, tension, courant) dans la même frame. Le
résultat n’était pas très lisible.
Pour pouvoir faire cela il a fallu créer 9 blocs (V1, V2 et V3, I1, I2 et I3 et P1, P2 et
P3). Nous avons commencé par créer une interface avec un design plutôt simpliste sans trop
de couleurs, ni d’images afin de ce concentré exclusivement sur la récolte et la visualisation
des données. Nous avons commencé par importer des données d’un fichier .txt et .csv. Nous
nous sommes ensuite diviser le travail encore une fois en 2 partie (Maxime qui fait le
design, et Valentin pour la partie séparation des données et affichage sur l’interface).
Mais cette séparation n’était valable que sur un fichier csv qui devait être sur le même
PC pour pouvoir fonctionner.Il a fallu adapté le code pour extraire les données mais cette
fois depuis la base de données.
Jusqu’à présent les données s’actualisaient manuellement via un bouton situé sur
l’interface. A la demande de M.DROUAZ , nous avons commencé à chercher des solutions
quant à la création d’une actualisation automatique. Suite aux nombreuses difficultés que
cela représentaient,le chef de projet et les 2 responsables de l’interface ont joint leurs efforts.
L’actualisation automatique est d’ailleurs toujours en phase de recherche et de création.

 

Problèmes rencontrés :
Nous avons rencontrés des problèmes sur le placement des différents blocs et sur la
récolte des données. Le fait d’avoir été dans une perpétuelle appréhension du langage
Python avec les objectifs qui nous étaient donnés rendait la tâche difficile. Le code était lui
aussi fastidieux car chaque bloc était constitué de 2 Frames et de 2 Labels. (Une Frame est
un conteneur permettant de séparer des éléments et un Label un espace dans laquelle on
peut écrire du texte). Et le fait de décupler cela pour tous les blocs de tensions de courants et
de puissances rendait le code très chargé et pas très lisible.

Erreur courante :

Le système ne trouve pas le contenu du tableau contenant les valeurs successives de tension, courant et puissance

 

Solutions apportées :
Après une meilleure appréhension du langage Python, nous avons pu exploiter au
maximum ce langage. Afin de remédier aux problèmes rencontrés, nous avons décidé de
revoir notre code quant à la mise en forme de l’interface graphique. Nous avons décidé
d’insérer une image contenant initialement les 9 blocs qu’il nous faut pour n’y insérer que le
texte pour l’affichage de données. Ce qui fait qu’il n’y a plus de Frames et plus de Labels ce
qui nous a permis d’avoir un gain de place dans le code non négligeable.
Après de gros problèmes rencontrés pour l’actualisation automatique de la fenêtre,
nous avons décidé de placer un bouton « Ouvrir » permettant à chaque clic effectuer, de
pouvoir effectuer une actualisation. C’est-à-dire que sur un nombre défini de mesures
récoltés par DAQ Express et envoyés directement à la base de données, on récupère à
chaque clique, le dernier échantillon ce trouvant dans la base de donnée. Cette méthode est
quant à elle facile à mettre en place et à codé, c’est pour cela qu’on l’utilise.

III. Conclusion :

Ouverture du projet :
Actuellement, nous avons réussi a collecter les données et a les envoyer sur le
serveur. Nous avons aussi une interface dont le design est terminé. Nous affichons donc les
valeurs à partir du serveur.
Il nous reste une actualisation automatique à ajouter. Nous pourrions aussi
développer la prise en charge des mesures pour en faire un graphe évolutif de la puissance
sur une une longue période de mesure.