memoire de pfe – briot nicolas - Bienvenue sur Catalogue des

publicité
MISE EN ŒUVRE D’UN BANC HIL POUR LE TEST
FONCTIONNEL D’UNE ASI HAUTE PERFORMANCE
MEMOIRE DE PFE – BRIOT NICOLAS
INSA de Strasbourg – Spécialité Génie Electrique – Option Systèmes
Chez SOCOMEC Usine 3 - 11 route de Strasbourg - 67235 HUTTENHEIM
Du 01/02/2016 au 29/07/2016
Tuteurs : PLUMERÉ Éric & ROHMER Thierry
Enseignant référant : LAFONT Thomas
1 – FICHE D’OBJECTIFS
L’objectif de ce projet est de doter le département R&D de SOCOMEC – Usine 3 d’un banc de
test fonctionnel sans risque de dommages afin de pouvoir tester leurs logiciels embarqués conçus pour
leur dernier modèle d’onduleur haute performance.
Le choix est donc fait de mettre en place un banc Hardware In the Loop (HIL), c’est-à-dire
exempt de composants de puissance : on remplace toute l’électrotechnique par un boîtier de
simulation. C’est le matériel National Instruments (NI) qui est employé, nous utilisons de nombreux
logiciels dans ce projet.
Le cahier des charges fixé par SOCOMEC comporte les éléments suivants :
-
Modifier l’électronique de mesure du prototype pour pouvoir imiter les courants fort
manipulés avec des sorties du simulateur.
-
Simuler la partie puissance de l’onduleur à partir de son schéma PSIM, utilisant pour ce faire
un outil développé par OPAL-RT, un partenaire de NI.
-
Simuler les éléments connexes tels que la batterie, une charge particulière, les rebonds des
contacteurs ou encore les sondes de températures.
-
Interfacer l’électronique de commande avec le poste opérateur en reproduisant les
commandes passées par le logiciel XpertSoft de SOCOMEC via le protocole Modbus.
-
Concevoir les séquences de test permettant de vérifier que le logiciel respecte bien les
spécifications établies.
-
Développer des outils permettant de faciliter la procédure de test et d’en garantir la
maintenabilité.
Langage de programmation graphique NI
Adapter l'électronique de
mesure sur le prototype
Simuler la partie puissance
Opal-RT eHS
Interfacer l'électronique de
commande avec le poste
opérateur
Logiciel de dialogue/monitoring des produits NI
Concevoir les séquences de
test et autres outils associés
Séquenceur de test NI
Figure 1 : Liste synthétique des étapes du projet et des logiciels NI employés pour les mener à bien
1
Nicolas BRIOT (GE5)
2016
2 – RESUME
Mise en œuvre d’un banc hil pour le test fonctionnel d’une asi haute performance
La complexité des programmes embarqués dans les onduleurs SOCOMEC ne cesse de croitre
et chaque dysfonctionnement peut s’avérer coûteux. Ce projet a pour objectif d’élargir la couverture
de test des logiciels produits tout en réduisant les coûts et les délais de développement : un banc de
test « Hardware In the Loop » (HIL) doit être mis en place. La partie puissance d’un prototype sera
remplacée et émulée par des FPGA, des séquences de test exhaustives permettront par la suite la
validation du code embarqué.
HIL test bench implementation for high efficiency UPS functional characterization
The complexity of SOCOMEC UPS embedded software keeps increasing and any single fault
may prove itself costly. This project’s goal is to improve systems’ software test coverage while reducing
development costs and time: a “Hardware In the Loop” (HIL) test bench must be implemented. A
prototype’s power stage will be replaced and emulated by FPGAs and exhaustive test sequences will
ensure embedded software validation.
2
Nicolas BRIOT (GE5)
2016
3 – TABLE DES MATIERES
Table des matières
1 – FICHE D’OBJECTIFS............................................................................................................................. 1
2 – RESUME ............................................................................................................................................. 2
3 – TABLE DES MATIERES ........................................................................................................................ 3
4 – TABLE DES ILLUSTRATIONS ................................................................................................................ 5
5 – ABREVIATIONS ET DEFINITIONS ........................................................................................................ 7
6 – INTRODUCTION ................................................................................................................................. 8
6.1 – PRESENTATION DE L’ENTREPRISE............................................................................................... 8
6.2 – PRESENTATION DU PRODUIT ................................................................................................... 10
6.3 – PRESENTATION DU PROJET ...................................................................................................... 11
7 – SYNTHESE DU TRAVAIL EFFECTUÉ ................................................................................................... 13
7.1 – LES PERSONNALITES DES CARTES FPGA ................................................................................... 13
7.2 – LA MODELISATION DU RETOUR DES SONDES THERMIQUES ................................................... 15
CARACTERISATION DES SONDES ....................................................................................... 16
ETUDE DES MONTAGES DIVISEURS ................................................................................... 17
CARACTERISATION DE LA GENERATION DE PWM ............................................................. 20
CONCEPTION DU VI SIMULANT LES SONDES..................................................................... 21
GENERATION DU MODELE VERISTAND ASSOCIE............................................................... 22
MODIFICATION DE LA PERSONNALITE FPGA POUR GERER LES PWM DE FREQUENCE
VARIABLE ....................................................................................................................................... 23
7.3 – L’ETUDE DES PROTOCOLES CANOPEN ET MODBUS-TCP.......................................................... 24
LE PROTOCOLE MODBUS ................................................................................................... 25
LE PROTOCOLE CANOPEN.................................................................................................. 26
L’ENCAPSULATION MODBUS DE TRAMES CANOPEN ........................................................ 29
PRESENTATION DES PROTOCOLES A L’EQUIPE ................................................................. 31
LES VIs DE COMMUNICATION ........................................................................................... 31
7.4 – ANALYSE ET EMPLOI DES FICHIERS .INI .................................................................................... 33
LE STOCKAGE DES INFORMATIONS DANS UNE BDD ......................................................... 34
LA GENERATION DE FICHIER XML ET XSD .......................................................................... 35
3
Nicolas BRIOT (GE5)
2016
7.5 – L’AJOUT DES ACRONYMES HIL.................................................................................................. 36
REFONTE DU VI GENERANT LE FICHIER XML ..................................................................... 36
CONCORDANCE DES ACRONYMES HIL ET SOFT ................................................................ 37
7.6 – CONCEPTION DES SEQUENCES DE TEST ................................................................................... 38
SUIVI DE LA FORMATION TESTSTAND ............................................................................... 38
PRESENTATION DU LOGICIEL ET DE SON INTERFACE ........................................................ 38
CONCEPTION DES SEQUENCES ET LEUR ARCHITECTURE .................................................. 39
L’UTILISATION DES CALLBACKS.......................................................................................... 39
7.7 – DEVELOPPEMENT D’OUTILS POUR LE DEPARTEMENT ............................................................. 40
OUTIL COMPLETANT AUTOMATIQUEMENT LA MATRICE DE TRAÇABILITE ...................... 40
OUTIL DE VERIFICATION D’INI FILES (FICHIER UNIQUE) .................................................... 41
OUTIL DE VERIFICATION DE PLUSIEURS INI FILES EN COMPARAISON .............................. 42
8 – CONCLUSION ................................................................................................................................... 43
9 – BIBLIOGRAPHIE ................................................................................................................................ 44
10 – REMERCIEMENTS........................................................................................................................... 45
11 – ANNEXES ........................................................................................................................................ 46
11.1 – ANNEXE 1 : CODE LABVIEW DES OUTILS DEVELOPPES.......................................................... 46
11.2 – ANNEXE 2 : SCHEMA GENERAL DE L’ELECTRONIQUE HPP ..................................................... 47
11.3 – ANNEXE 3 : SCHEMA PSIM DE LA PARTIE PUISSANCE HPP .................................................... 48
4
Nicolas BRIOT (GE5)
2016
4 – TABLE DES ILLUSTRATIONS
Figure 1 : Liste synthétique des étapes du projet et des logiciels NI employés pour les mener à bien . 1
Figure 2 : Image de présentation de SOCOMEC ...................................................................................... 8
Figure 3 : Organisation du département R&D de l'usine 3 ..................................................................... 9
Figure 4 : Schéma de principe d'une A.S.I à double conversion SOCOMEC .......................................... 10
Figure 5 : Maquette H.I.L du HPP .......................................................................................................... 12
Figure 6 : Zoom sur le châssis PXIe_1082 contenant les cartes FPGA .................................................. 12
Figure 7 : Zoom sur les références des modules E/S ............................................................................. 12
Figure 8 : VI de configuration des E/S d'un FPGA.................................................................................. 13
Figure 9 : Extrait d’un fichier XML de listing des paquets FPGA pour VeriStand .................................. 14
Figure 10 : Chaîne de mesure de la température sur maquette ........................................................... 15
Figure 11 : Courbe caractéristique d'une thermistance CTN ................................................................ 16
Figure 12 : Mise en commun des caractéristiques des différentes CTN ............................................... 16
Figure 13 : Schéma simplifié du circuit de mesure des CTN ................................................................. 17
Figure 14 : Circuit de mesure de température du Booster-Charger ..................................................... 17
Figure 15 : Tableau récapitulatif des paramètres des montages diviseurs........................................... 17
Figure 16 : Circuit de mesure de température batterie (pas de RL) ..................................................... 18
Figure 17 : Circuit de mesure de température ambiante...................................................................... 18
Figure 18 : Circuit de mesure de température 4ème bras .................................................................... 18
Figure 19 : Circuit de mesure de température des IGBTs Inverter et Rectifier ..................................... 19
Figure 20 : Circuit de mesure de température Bypass .......................................................................... 19
Figure 21 : Utilisation des données Excel pour lier la tension d’entrée en V (abscisse) et les
caractéristiques de la PWM .................................................................................................................. 20
Figure 22 : Modèles simplifiés intégrant le point (0;0) ......................................................................... 20
Figure 23 : VI calculant la tension image des températures ambiante et batterie ............................... 21
Figure 24 : VI calculant les temps à l’état haut et bas des PWM de toutes les autres températures .. 21
Figure 25 : Comment définir une entrée d'un VI comme Required ...................................................... 22
Figure 26 : Ajout d'un modèle dans le projet VeriStand ....................................................................... 22
Figure 27 : Export d'un VI en un modèle VeriStand .............................................................................. 22
Figure 28 : Syntaxe initiale, fréquence fixe et rapport cyclique variable .............................................. 23
Figure 29 : Nouvelle syntaxe permettant de fixer les temps à l'état haut et bas de la PWM .............. 23
Figure 30 : Tableau des codes fonctions Modbus ................................................................................. 25
Figure 31 : Composition schématique d'une trame Modbus RTU (ADU) ............................................. 25
Figure 32 : Schéma de l'encapsulation Ethernet d'une trame Modbus TCP ........................................ 26
Figure 33 : Composition schématique d’une trame Modbus TCP (ADU) .............................................. 26
Figure 34 : Composition schématique d’une trame Modbus TCP-RTU (ADU) ...................................... 26
Figure 35 : Les 7 couches du modèle OSI .............................................................................................. 26
Figure 36 : Le protocole CANOpen gère les couches Network et supérieures ..................................... 26
Figure 37 : Exemple de Dictionnaire Objet............................................................................................ 27
Figure 38 : Une trame CAN décomposée bit à bit (Wikipédia) ............................................................. 27
Figure 39 : Schéma simpliste d'une trame CAN .................................................................................... 28
5
Nicolas BRIOT (GE5)
2016
Figure 40 : Composition du COB-ID en CANOpen ................................................................................. 28
Figure 41 : Extrait de spécification CANOpen précisant les codes fonction ......................................... 28
Figure 42 : Schéma de la hiérarchie dans les protocoles dans notre système...................................... 29
Figure 43 : Encapsulation de la trame CANOpen dans un PDU de trame Modbus............................... 30
Figure 44 : Analyse des paquets échangés à l'aide du logiciel WireShark ............................................ 30
Figure 45 : Support de la présentation dispensée sur les protocoles CANOpen et Modbus ................ 31
Figure 46 : VIs qui créent un Maître Modbus TCP (en haut) ou TCP-RTU (en bas) en local.................. 31
Figure 47 : Génération d'un PDU Modbus encapsulant une trame CANOpen ..................................... 32
Figure 48 : Interface de test LabVIEW permettant l'envoi de commandes .......................................... 32
Figure 49 : Interface de XpertSoft (à gauche) et extrait d'un INI file (à droite) .................................... 33
Figure 50 : Première solution de Parsing des INI Files employant l'analyse du texte ........................... 33
Figure 51 : Contenu de la base de données MySQL générée pour le projet HIL .................................. 34
Figure 52 : VI permettant l'ajout des données extraites dans une BDD ............................................... 34
Figure 53 : Aperçu du fichier XML regroupant les clés de protocole (à gauche) et du fichier XSD de
définition des règles du schéma (à droite) ainsi qu'un message d'erreur obtenu via XML Tools ........ 35
Figure 54 : Vue d'ensemble du VI permettant l'extraction des clés d'un ensemble de fichiers INI pour
générer un XML associé ........................................................................................................................ 35
Figure 55 : VI générant le fichier XML de protocole après refonte, sont encadrés (en rouge) les subVI s
permettant la correspondance des acronymes .................................................................................... 36
Figure 56 : Capture du fichier INI_Types.xml ........................................................................................ 36
Figure 57 : Aperçu du fichier XML contenant les acronymes produit et HIL ........................................ 37
Figure 58 : Structure du logiciel TestStand............................................................................................ 38
Figure 59 : Découpage de l'interface graphique de TestStand ............................................................. 38
Figure 60 : Deux possibilités pour un Process Model dit séquentiel .................................................... 39
Figure 61 : Face avant (à gauche) et vue d'ensemble du projet (à droite) de l'outil complétant la
matrice de traçabilité ............................................................................................................................ 40
Figure 62 : Exemple d'utilisation de l'outil de vérification d'un seul fichier INI dans un dossier (en bas)
et ouverture du rapport généré (en haut) ............................................................................................ 41
Figure 63 : Gestion d'erreur (en bas) et fenêtre contextuelle de fin d'exécution (en haut) de l'outil de
vérification de multiples .INI ................................................................................................................. 42
Figure 64 : Vue d'ensemble du projet commun des deux outils de vérification de fichiers INI ........... 42
Figure 65 : Code de l'outil complétant la matrice de traçabilité ........................................................... 46
Figure 66 : Code de l'outil de vérification d'un seul fichier INI ............................................................. 46
Figure 67 : Code de l'outil de vérification de multiples fichiers INI ...................................................... 46
Figure 68 : Schéma général de l'électronique de commande HPP ....................................................... 47
Figure 69 : Schéma PSIM de la partie puissance du projet HPP (avec transformateur) ....................... 48
6
Nicolas BRIOT (GE5)
2016
5 – ABREVIATIONS ET DEFINITIONS
ADU
Application Data Unit, désigne l’intégralité d’une trame Modbus
ASI (ou UPS)
Alimentation sans interruption (ou Uninterruptible Power Supply).
BDD
Base de données.
CTN
Sonde de température dotée d’un Coefficient de Température Négatif
DC
Duty Cycle, rapport cyclique d’une PWM
FIFO
First In First Out, une file de données dotée d’une structure à décalage : la
première information arrivée est la première à sortir de la file.
HIL
« Hardware In the Loop », qualifie une façon de tester/développer un
système embarqué complexe en remplaçant les éléments à risque par un
simulateur respectant son modèle.
HPP
High Power Platform, nom du dernier projet de R&D chez SOCOMEC U3
INI
Fichier de configuration, d’extension « .ini ».
Log
Rapport au format texte (.txt)
Parser
Programme recherchant un élément donné dans un contexte défini.
PDU
Protocol Data Unit, correspond à la partie centrale d’une trame Modbus
RTU
Remote Terminal Unit, protocole de transmission série (Modbus)
SVN
Subversion (abrégé), logiciel de gestion de versions
TCP/IP
Transmission Control Protocol/Internet Protocol, protocoles de transport
de donnée
VI
Virtual Instrument, sous-programme codé en LabVIEW.
XML
« eXtensible Markup Language » ou langage de balisage extensible, un
fichier « .xml » contient des informations dont la structure peut facilement
être reproduite, transmise et parcourue.
7
Nicolas BRIOT (GE5)
2016
6 – INTRODUCTION
Dans le cadre de notre PFE, Cédric SCHRAMM (CEQ) et moi-même (NGB) avons intégré le
service Firmware (FIRM) de l’usine 3 au sein de l’entreprise SOCOMEC à Huttenheim. Encadrés par
Messieurs ROHMER Thierry (TRO) et PLUMERÉ Éric (EIP) nous avons été affectés au projet Hardware
In the Loop (H.I.L) sur leur dernier modèle d’alimentation sans interruption (A.S.I) à très haut
rendement dénommée High Power Platform. Le produit « H.P.P » pour lequel nous développons le
H.I.L présente notamment un rendement proche des 98% du fait de l’absence de transformateur
triphasé dans la partie puissance.
Afin de mener à bien ce stage, nous avons été formés sur le matériel et les logiciels National
Instruments, une opportunité qui nous a permis d’acquérir rapidement de l’expérience dans ce
domaine, très recherchée par les employeurs. Nous avons également été initiés à un principe inhérent
à la R&D software : le versionning outil permettant, avec un logiciel comme TortoiseSVN, la
programmation collaborative et la sauvegarde en multiples exemplaires sur serveur.
6.1 – PRESENTATION DE L’ENTREPRISE
SOCOMEC est un constructeur indépendant offrant des solutions expertes pour la
performance énergétique des réseaux électriques BT comptant plus de 3100 collaborateurs dans le
monde cette entreprise totalise un chiffre d’affaire annuel dépassant les 420 M€.
L'usine 3 de SOCOMEC est située à
Huttenheim (67230). Avec une superficie de
13000m², l'usine comptait 243 personnes
embauchées en 2013.
Créée en 1982, elle est depuis cette date
dédiée à la fabrication d'onduleurs, de modules de
transfert de charge, de redresseurs-chargeurs et de
compensateurs d'harmoniques. Elle développe
quatre types de gammes d’ASI et continue de
développer d'autres modèles permettant de
répondre aux besoins du client.
Figure 2 : Image de présentation de SOCOMEC
L’usine 3 abrite un service R&D, une Show-Room, des plateformes de tests, une zone
expédition UPS/service après-vente, un magasin/poste de contrôle de réception, une ligne multimodèle ainsi qu’une de montage spécifique, une zone de test en bout de ligne et un Training Center.
La Show-Room est une salle de démonstration équipée de produits Socomec. Elle permet de
simuler l'installation type d'un client en partant en amont d'un inverseur de source jusqu'à une
utilisation simulée par une charge résistive par exemple, en passant par des onduleurs, les systèmes
de stockage d'énergie et les systèmes de transfert statique. Le Training Center est destiné à former des
techniciens ou clients sur l'utilisation des différentes gammes d'onduleurs.
8
Nicolas BRIOT (GE5)
2016
La plateforme de test est séparée en plusieurs secteurs tels que la zone de test de produits
finis où sont réalisés des tests de routine sur chaque produit et solution, des essais de réception de
matériel et des essais et démonstrations de qualification avant-vente personnalisés. De plus, la
plateforme recherche et développement permet de réaliser des essais de développement et de
qualification requis pour le développement des produits, comme des tests électriques,
électromagnétiques, thermiques ou acoustiques par exemple.
La zone expédition UPS permet la livraison des produits directement de l'usine vers les clients
sans passer par une plateforme logistique. C'est pourquoi SOCOMEC exporte à partir de cette usine
80% de la fabrication. Un service après-vente est aussi disponible.
Plusieurs lignes de montage sont présentes. La ligne multi-modèle est dédiée au montage des
produits standards des gammes DMX, DMP et DGP. La ligne montage spécifique permet de réaliser
d'autres montages tels que les armoires de couplage, by-pass ou de transformation. Il existe aussi une
ligne d'armoires militaires avec une équipe autonome travaillant uniquement sur la réalisation de
projets pour la DCNS. Enfin, le test en bout de ligne d'assemblage permet de tester 100% de la
production selon un processus standard. Si un problème est découvert et non réparable au bout d'un
temps fixé, l'onduleur va sur plate-forme.
J’ai intégré le département de recherche et développement (DEV) sous la direction de Pascal
BOOS, au sein de l’entité Firmware (Fig.3) et avec Éric PLUMERÉ comme maître de stage.
Cette cellule est chargée du développement de la partie logicielle des ASI SOCOMEC et
fonctionne au moyen d’outils de « versionning » permettant une collaboration efficace lors de la
création et de l’édition de code.
Figure 3 : Organisation du département R&D de l'usine 3
Un bilan sur l’avancement des différents projets pris en charge par la cellule est effectué
chaque lundi à 9h30. Ce point hebdomadaire est appelé TOP 30 car sa durée ne doit pas excéder la
demi-heure.
Lors de mon arrivée au sein de ce département, j’ai rejoint l’équipe de Thierry Rohmer sur le
projet H.I.L dont je parlerai plus en détail ci-après.
9
Nicolas BRIOT (GE5)
2016
6.2 – PRESENTATION DU PRODUIT
A ce stade du rapport, il semble judicieux de définir plus en détail le rôle et la structure d’une
A.S.I (ou U.P.S pour Uninterruptible Power Supply) souvent appelé onduleur par abus de langage.
Figure 4 : Schéma de principe d'une A.S.I à double conversion SOCOMEC
Une Alimentation Sans Interruption est un dispositif de l'électronique de puissance qui permet
de fournir un courant alternatif stable et sans coupures/microcoupures, indépendamment du
comportement du réseau électrique source.
Les deux éléments centraux d’une ASI à double conversion sont ainsi le redresseur (Rectifier),
chargé de transformer le réseau de tensions triphasées alternatives en une tension continue et un
onduleur (Inverter) assurant la génération d’un système de tensions triphasées alternatives à partir
d’une source DC. Le bus de tension continu formé en connectant l’entrée de l’Inverter à la sortie du
Rectifier peut ainsi être raccordé ponctuellement à une batterie pour assurer la continuité de service
en cas de coupure du réseau. Cette batterie peut être rechargée (Charger) lorsqu’elle n’est pas
sollicitée lors d’une décharge rapide (Booster). Un organe appelé le quatrième bras (ou 4th Leg) assure
un équilibrage entre la tension négative et positive sur le bus DC.
Par ailleurs, le système de tensions en sortie de l’onduleur se révèle être de bien meilleure
qualité /fiabilité (suppression des harmoniques, stabilité en amplitude et en fréquence) que celui
provenant du réseau. Un passage « à chaud » sur l’alimentation auxiliaire (Automatic Bypass) peut être
effectué en fonctionnement et inversement, cela s’avère notamment intéressant quand l’utilisateur
souhaite ne pas user de la double conversion afin d’atteindre un rendement supérieur ou lors d’un
défaut de l’onduleur.
On peut également choisir de passer ou non par ce système via un contacteur de dérivation
(Manual ByPass) pour en effectuer la maintenance.
10
Nicolas BRIOT (GE5)
2016
6.3 – PRESENTATION DU PROJET
Le H.I.L est un principe de développement pour systèmes embarqués complexes, on émule le
matériel de ces derniers via un modèle mathématique équivalent.
Ce procédé permet ainsi l’implémentation puis le test de nouvelles fonctionnalités dans le
code de façon rapide (et peu couteuse une fois l’achat initial des outils de simulation effectué).
Nos objectifs pour ce stage seront ainsi de reproduire le fonctionnement d’une ASI en boucle
fermée au moyen d’un châssis doté de plusieurs cartes FPGA et d’en tester les fonctionnalités, déjà
programmées ou à venir, fournies par le service de recherche et développement Firmware. Nous
disposerons pour ce faire des moyens suivants :
-
Matériel National Instruments :
o
o
o
-
NI PXIe-1082 : Châssis comportant les cartes FPGA et permettant un dialogue TCP/IP avec
un ordinateur distant (Fig.6).
Cartes FPGA FlexRIO 7961R et 7976R et carte FPGA Compact RIO 7842R : Cartes FPGA
intégrées dans le PXIe.
Modules I/O NI 5742 et 6581B : Cartes d’interface contrôlées par les FPGA et permettant
la connexion de ces derniers à notre électronique de commande, simple électronique
d’adaptation avec faibles temps de propagation (Fig.7).
Logiciels National Instruments :
o
LabVIEW : Logiciel de programmation graphique de NI
Tous les autres logiciels NI peuvent utiliser les codes générés par ce logiciel appelés VI
(Virtual Instruments)
Cédric et moi-même possédions déjà des bases sur ce logiciel mais son utilisation au cours
du stage nous a permis d’obtenir la certification CLAD.
o
VeriStand : Logiciel de monitoring de systèmes NI
Il permet d’interfacer notre électonique via le « mapping » des E/S des diférentes cartes
FPGA et modules
Nous avons suivi une formation de 2 jours pour en saisir les bases.
o
TestStand : Logiciel d’automatisation de séquences de test NI
Il permet de planifier une séquence d’opérations complexes reproduisant les cas
d’utilisations du produit testé.
Nous avons pris part à une formation de 3 jours sur ce soft pour finalement un niveau
d’utilisateur autonome capable d’assister nos maîtres de stage dans le développement.
11
Nicolas BRIOT (GE5)
2016
-
Code FPGA fourni par Opal-RT
Il simule le hardware de l’onduleur dont le schéma est généré sous PSIM, voir Annexe 3. Nous avons
été formés durant 3 jours sur ce « Custom Device ».
-
L’électronique de commande d’un onduleur H.P.P
En développement chez SOCOMEC et montée sur une maquette mobile dans le cadre du projet H.I.L
(Fig.5). Nous avons suivi des réunions internes sur son fonctionnement et sa conception.
Figure 6 : Zoom sur le châssis PXIe_1082
contenant les cartes FPGA
Figure 5 : Maquette H.I.L du HPP
Figure 7 : Zoom sur les références des modules E/S
12
Nicolas BRIOT (GE5)
2016
7 – SYNTHESE DU TRAVAIL EFFECTUE
Dans un premier temps nous avons vérifié l’interfaçage entre l’électronique de la maquette et
les cartes NI mises en place afin de corriger les erreurs éventuelles. De nombreux problèmes de
soudures ont notamment été corrigés durant les premières semaines. Les tests s’effectuaient au
moyen d’un projet LabVIEW réalisé par notre maître de stage pour tester individuellement chaque E/S
des cartes NI. Nous avons ensuite suivi la formation NI VeriStand pour découvrir les fonctions de cet
outil et les prendre en main.
7.1 – LES PERSONNALITES DES CARTES FPGA
Un des premiers travaux que j’ai réalisés fut de me documenter sur le procédé de
personnalisation des cartes FPGA pour les adapter à notre besoin.
Il ne s’agit pas de réécrire le code en VHDL pour les FPGA mais d’éditer un VI de configuration
(Fig.8) dont des exemples (Templates) sont fournis dans LabVIEW pour y ajouter, retirer ou modifier
l’affection des E/S. Ces dernières sont assemblées en un tableau qui est envoyé par le FPGA sous la
forme d’un registre à décalage ou FIFO (First IN First OUT).
La FIFO des entrées FPGA est nommée DMA_Read, celle des sorties DMA_Write. Le système
est cadencé à 40 MHz, les durées sont exprimées en nombre de ticks (un tick représente une durée
1
équivalente à la période du FPGA, soit 40 000 000 secondes = 25 ns). Une PWM de période 800 000 ticks
possèdera donc à une fréquence de 50Hz.
La compilation du VI de définition produit un fichier « .lvbitx » qui peut être interprété par le
FPGA. On appelle ce fichier un « FPGA Bitfile », toute utilisation d’une carte intégrant un FPGA de chez
NI nécessite un tel fichier. On a par cette action définit une « Custom FPGA Personality » (personnalité
FPGA).
Figure 8 : VI de configuration des E/S d'un FPGA
13
Nicolas BRIOT (GE5)
2016
L’interfaçage d’un FPGA avec VeriStand s’appuie sur un fichier « .fpgaconfig », ce dernier est
au format XML (modifiable avec Notepad++ par exemple) et renseigne le type et l’ordre de l’arrivée
des données dans les FIFO d’entrées et de sortie du FPGA : ces registres contiennent des paquets de
64 bits dont nous devons spécifier la nature et la structure (Fig.9).
Un paquet en entrée peut donc par exemple contenir les données de :
-
16 entrées digitales (1 bit chacune)
1 entrée PWM (temps à l’état bas et à l’état haut, en nombre de ticks, codés sur 16 bits chacun)
1 entrée analogique (valeur renvoyée par le convertisseur analogique-digital sur 16 bits).
Il faudra alors rédiger la description de ce paquet en y incluant :
-
16 champs entourés de balises <Boolean>…Liste_des_paramètres…</Boolean>
Deux champs <U16>…Liste_des_paramètres…</U16> car les temps sont positifs (U16 = Unsigned
Integer coded on 16 bits)
Un champ <I16>… Liste_des_paramètres …</I16> car la tension analogique lue peut être négative
(I16 = Signed Integer coded on 16 bits).
J’ai ainsi réalisé les fichiers « .lvbitx » et « .fpgaconfig » des cartes FPGA NI 7842 et NI 7961R
afin de pouvoir les interfacer sous VeriStand et tester notre électronique.
Figure 9 : Extrait d’un fichier XML de listing des paquets FPGA pour VeriStand
La fréquence de la boucle TCP s’exécutant sur la cible gérée par VeriStand n’est pas fixée
dans ce fichier mais dans la définition système. Aussi appelée boucle de contrôle principale (ou
Primary Control Loop), c’est elle qui assure le dialogue avec le PC opérateur et qui instancie les
modèles dont nous allons parler plus en détail par la suite.
14
Nicolas BRIOT (GE5)
2016
7.2 – LA MODELISATION DU RETOUR DES SONDES THERMIQUES
Sur la maquette H.I.L, un monitoring permanent des interrupteurs de puissance, de la
température des batteries et de l’air ambiant est nécessaire pour détecter un éventuel défaut
nécessitant un arrêt de l’ASI.
Afin de reproduire les températures vues par notre électronique simulée, il est nécessaire
d’analyser la chaîne de mesure de température en place sur le prototype et de la reproduire
logiciellement.
Actuellement, des sondes de températures à coefficient négatif (ou NTC pour Negative
Temperature Coefficient) sont intégrées aux IGBT ou sur des cartes de mesures et, par le biais d’un
montage en pont diviseur, renvoient une tension image de la température.
Cette tension est transformée en PWM de rapport cyclique et fréquence variable, c’est
finalement de façon logicielle qu’on mesure le rapport cyclique de cette PWM pour revenir par
linéarisation à la température approximative mesurée (Fig.10).
Mon travail est de produire un modèle VeriStand qui génère la PWM image de la température
que nous simulons. Pour une température en entrée, le modèle doit donc reproduire la variation
exponentielle de résistance de la sonde CTN, obtenir la tension sortant du montage diviseur et
finalement générer le plus fidèlement possible la PWM associé à la tension ainsi obtenue.
Chaine à modéliser
Traitement effectué par le soft HPP
Figure 10 : Chaîne de mesure de la température sur maquette
De nombreux documents sont nécessaires à la complétion de cette tâche :
-
Les datasheets mettant en évidence les coefficients propres aux différentes sondes de
températures et leur loi de variation exponentielle.
-
Les schémas de câblage des montages diviseurs de chacune des cartes intégrant une sonde CTN.
-
La loi de conversion tension-rapport cyclique et tension-fréquence de la carte générant les PWM
(identique pour toutes les différentes sondes).
15
Nicolas BRIOT (GE5)
2016
CARACTERISATION DES SONDES
Dans un premier temps, j’ai rassemblé les datasheets des différentes sondes thermiques
employées, il s’agit de capteurs thermorésistifs à coefficient négatif : leur résistance est une fonction
exponentielle décroissante de la température du matériau semi-conducteur employé.
Dans chaque cas, les trois paramètres qui
nous intéressent sont le coefficient de décroissance B
et un couple Résistance-Température de référence
RREF et TREF.
Ces trois données nous permettent ainsi de
remonter à l’expression fournissant la résistance de la
CTN pour une température donnée (Fig.11).
Figure 11 : Courbe caractéristique d'une thermistance CTN
Voici une synthèse des données collectées dans les documentations techniques sur le portail
de l’entreprise :
Semikron
SEMiX603GB066v7a
(Booster-Charger)
Vincotech
70-W212NMA600SC
(Inverter & Rectifier)
Socomec-Sicon
E221748
(Bypass, 4th Leg,
Ambient & Battery)
Figure 12 : Mise en commun des caractéristiques des différentes CTN
16
Nicolas BRIOT (GE5)
2016
ETUDE DES MONTAGES DIVISEURS
V
REF
VREF
En se basant sur le schéma électrique intégrant la CTN aux
cartes électroniques HPP, on peut établir la relation entre la résistance de
la CTN et la tension de sortie. Il s’agit d’effectuer une étude au cas par cas.
RH
RH
VT
RLL
R
CTN
Figure 13 : Schéma simplifié du
circuit de mesure des CTN
Dans chaque situation, un pont diviseur est constitué, une
résistance peut être mise en parallèle de la CTN pour linéariser la variation
de tension.
Pour chaque montage on définit trois grandeurs récurrentes :
VREF, RH et RL comme indiquée ci-contre (Fig.13).
On peut alors exprimer la tension VT comme une fonction de ces paramètres :
𝑉𝑇 = 𝑉𝑅𝐸𝐹 ∗
𝑅𝑒𝑞
𝑅𝑒𝑞 +𝑅𝐻
avec
𝑅𝑒𝑞 =
1
1
1
+ )
𝐶𝑇𝑁 𝑅𝐿
(
et
𝐶𝑇𝑁 = 𝑅𝑅𝐸𝐹 ∗ e
1
1
)
𝑇 𝑇𝑅𝐸𝐹
𝐵∗( −
On obtient finalement le tableau suivant :
Rectifier Inverter
Bypass
4th Leg
Booster-Charger
Ambient
Battery
VREF (V)
5
5
5
5
3
3,3
RH (Ω)
680
25k
15k
390
21k5
150k
RL (Ω)
1k
75k
46k4
180
54k9
sans
HPP BOARD [page]
HP7P166 [2]
HP520 [2]
HP510 [4]
HP7B506 [4]
HP400 [8]
GIO [3]
Figure 15 : Tableau récapitulatif des paramètres des montages diviseurs
Voir NOT 16 82499
La tension la plus faible l’emporte,
on conserve donc la température
la plus élevée.
RH
VREF
RL
BOOSTER
CHARGER
Figure 14 : Circuit de mesure de température du Booster-Charger
17
Nicolas BRIOT (GE5)
2016
VREF
RH
BATTERIE
Figure 16 : Circuit de mesure de température batterie (pas de RL)
RH
AMBIANTE
E
VREF
RL
Figure 17 : Circuit de mesure de température ambiante
4th LEG
VREF
RH
5V
RL
Figure 18 : Circuit de mesure de température 4ème bras
18
Nicolas BRIOT (GE5)
2016
VREF
IGBTs INVERTER
ET RECTIFIER
RH
RL
Figure 19 : Circuit de mesure de température des IGBTs Inverter et Rectifier
RH
VREF
BYPASS
RL
La tension la plus faible l’emporte,
on conserve donc la température
la plus élevée.
Figure 20 : Circuit de mesure de température Bypass
19
Nicolas BRIOT (GE5)
2016
CARACTERISATION DE LA GENERATION DE PWM
C’est la même carte de conversion qui est utilisée pour les températures de tous les éléments
du prototype HPP (carte HP500, voir Annexe 2) à l’exception des mesures de températures ambiante
et batterie qui ne sont pas converties en PWM (on mesure uniquement la tension qui sort du pont
diviseur).
Il faut caractériser la fonction de transfert liant fréquence et rapport cyclique à la tension
d’entrée. On s’appuie sur le document TempSensor Voltage Freq transform.xls, un fichier Excel de
mesures sur le portail, pour trouver des relations simples entre ces différentes grandeurs (Fig.21).
Figure 21 : Utilisation des données Excel pour lier la tension d’entrée en V (abscisse) et les caractéristiques de la PWM
On peut identifier une relation linéaire entre tension et rapport cyclique ainsi qu’une relation
polynomiale du second ordre entre tension et fréquence du signal PWM en sortie.
Excel donne une bonne approximation des équations que nous allons utiliser ; une relation plus simple
est obtenue en imposant le passage du modèle par le point (0;0) dans les deux cas. Soit VT la tension
mesurée en sortie du pont diviseur, on obtient sensiblement les mêmes courbes (Fig.22) avec les
équations simplifiées suivantes :
Frequency = -198,11*VT 2 + 1004,5*VT
DutyCycle = 19,7*VT
Figure 22 : Modèles simplifiés intégrant le point (0;0)
20
Nicolas BRIOT (GE5)
2016
CONCEPTION DU VI SIMULANT LES SONDES
Une fois que tous les paramètres sont connus, on peut concevoir un subVI incluant un bloc
équation présentant la formule établie. Pour la température ambiante et la batterie la formule est
réduite et ne comporte qu’une tension en sortie.
Ajouter de nombreux modèles dans VeriStand peut fortement réduire les performances du
système global aussi nous avons préféré limiter le nombre de modèles thermiques à deux : un
regroupant les tensions images des températures ambiante et batterie (Fig.23), un autre regroupant
toutes les PWM images des autres températures (Fig.24).
Block diagram
VI Terminals
Figure 23 : VI calculant la tension image des températures ambiante et batterie
Ces VIs comportent un grand nombre d’entrées/sorties, il apparaît donc plus simple de définir
l’ensemble des paramètres comme des constantes.
Block diagram
VI Terminals
Front panel
Figure 24 : VI calculant les temps à l’état haut et bas des PWM de toutes les autres températures
21
Nicolas BRIOT (GE5)
2016
GENERATION DU MODELE VERISTAND ASSOCIE
Il reste à configure les terminaux d’entrée et sortie des VIs de
façon à ce qu’ils soient correctement employés par VeriStand.
On les paramètre ainsi :
-
Les entrées d’un VI qui sont définies Required deviennent
des IN ports dans le modèle VeriStand (Fig.25).
-
Les entrées d’un VI qui sont définies Recommended ou
Optional apparaîtront parameters dans le modèle VeriStand.
-
Les sorties d’un VI apparaîtront toujours comme des OUT
ports dans le modèle VeriStand.
Figure 25 : Comment définir une entrée
d'un VI comme Required
On peut ensuite exporter le VI en un modèle VeriStand (Fig.26) puis l’ajouter au projet via la
définition système (Fig.27), pour que cette option soit disponible dans LabVIEW il faut avoir le
composant NI VeriStand LabVIEW Model Support installé. On importe la totalité des entrées, sorties et
paramètres des modèles.
La procédure complète de création d’un modèle VeriStand à partir d’un VI est détaillée sur le
site de NI [1].
Figure 27 : Export d'un VI en un modèle VeriStand
22
Nicolas BRIOT (GE5)
Figure 26 : Ajout d'un modèle dans le projet VeriStand
2016
MODIFICATION DE LA PERSONNALITE FPGA POUR GERER
LES PWM DE FREQUENCE VARIABLE
Pour terminer, il faut modifier la personnalité FPGA de la 7842 afin de pouvoir gérer les PWM
à fréquence variable. En effet, à l’origine une sortie PWM contrôlée par une valeur numérique de 0 à
100 correspondant à son rapport cyclique, la fréquence étant fixe (Fig.28). La modification du fichier
XML (.fpgaconfig) de la cible FPGA permet de pouvoir agir sur les deux grandeurs à la fois par le biais
du temps à l’état haut et à l’état bas de la PWM (Fig.29).
Figure 28 : Syntaxe initiale, fréquence fixe et rapport cyclique variable
Figure 29 : Nouvelle syntaxe permettant de fixer les temps à l'état haut et bas de la PWM
Le paramètre <Scale> valant 107.374182375 permet la conversion des U32 possédant une
pleine échelle de 232-1 (=4294967296) vers une période en nombre de ticks avec pour maximum
40.000.000 (1 correspondant à 40MHz et 40e+6 à 1Hz). VeriStand calcule, pour une entrée de
l’utilisateur en seconde, le temps correspondant en ticks.
Par la suite les modèles sont testés et finalement optimisé par nos consultant pour utiliser le
moins de ressource possible sur la cible embarquée.
23
Nicolas BRIOT (GE5)
2016
7.3 – L’ETUDE DES PROTOCOLES CANOPEN ET MODBUS-TCP
Dans un premier temps, il faut effectuer des recherches sur ces deux protocoles de
communication nécessaires au dialogue avec l’électronique de commande de la maquette.
En pratique, le dialogue s’effectue avec la carte de communication de la maquette HIL
(ComBoard) via Modbus et cette dernière communique avec les autres cartes en interne en CANOpen
via un bus CAN.
Il faut donc maîtriser aussi bien l’un et l’autre afin de pouvoir échanger des informations
individuellement avec chaque sous-élément du produit. Modbus et CANOpen obéissent tous deux à
des standards décrits dans des spécifications [2][3]. La documentation CANOpen officielle n’est
cependant pas accessible au public (nécessité d’adhérer au CiA).
Il s’agit donc de connaître la composition des trames de requête et de réponse ainsi que la
topologie du bus et de l’architecture de communication pour pouvoir venir s’insérer dans le réseau en
tant que client Modbus et y injecter les commandes adéquates.
Une fois les bases de ces protocoles maîtrisées, il devient possible d’étudier leur jonction : le
CANOpen Over Modbus spécifié dans le CiA 309 [4]. Ce dernier décrit l’implémentation d’un dialogue
CANOpen via une surcouche Modbus, permettant ainsi de communiquer directement avec la carte
interne de notre choix depuis un poste connecté au réseau (Modbus TCP ou TCP/RTU) ou en liaison
série (Modbus RTU).
Nous reviendrons plus en détail sur chacun de ces protocoles dans les parties suivantes.
24
Nicolas BRIOT (GE5)
2016
LE PROTOCOLE MODBUS
Elaboré par Modicon (désormais Schneider Electric) en 1979, ce protocole de communication,
s’est répandu extrêmement rapidement du fait de l’absence de royalties quant à son implémentation.
Il s’est imposé comme un standard de par sa facilité de mise en place, d’utilisation et de maintenance.
Plusieurs implémentations du protocole sont possibles, nous discuterons ici de trois d’entre
elles :
-
Modbus RTU
Modbus TCP
Modbus RTU-TCP
Dans chaque cas la topologie hardware, la composition des entête/fin de trames échangées diffèrent ainsi que le modèle de
communication (Maître-Esclave ou Serveur-Client) diffèrent. Le contenu du
message n’est cependant pas affecté par l’implémentation choisie, on
nomme cette « partie centrale » invariante le Protocol Data Unit (PDU).
Le PDU contient systématiquement un code fonction sur un octet
(Fig.30) puis la donnée relative à ce code, par exemple le code 03 permet la
lecture d’un ou plusieurs registres (mots de 16 bits), la donnée associée
contient le nombre de registres à lire et l’adresse de début de ces registres.
La fonction 43 nous intéressera particulièrement par la suite.
Figure 30 : Tableau des codes
fonctions Modbus
En Modbus RTU, une liaison série (couche physique : RS232 ou RS422 par exemple) est mise
en place entre un maître et un esclave (passif), l’en-tête du message Modbus ne contient ainsi que
l’identifiant de l’esclave sur le bus Série pour l’adresser puis vient directement le PDU et finalement
une vérification de redondance cyclique sur 16 bits (ou CRC, pour Cyclic Redundancy Check, qui
correspond à une simple comparaison de restes dans une division polynomiale) (Fig.31).
Figure 31 : Composition schématique d'une trame Modbus RTU (ADU)
25
Nicolas BRIOT (GE5)
2016
En Modbus TCP, un client va dialoguer
avec le serveur (passif) par l’intermédiaire d’une
connexion Ethernet (Fig.32). Pour ce faire, un
en-tête appelé Modbus Application Header
(MBAP) est ajouté afin de permettre l’appairage
et le bon traitement des requêtes envoyées et
des réponses reçues (Fig.33). On n’adjoint pas de
CRC en fin de trame Modbus car une vérification
d’erreur est déjà mise en place dans la trame
Ethernet (CRC 32).
Figure 32 : Schéma de l'encapsulation Ethernet
d'une trame Modbus TCP
Figure 33 : Composition schématique d’une trame Modbus TCP (ADU)
Une variante du protocole Modbus TCP appelée Modbus RTU over TCP (ou plus simplement
Modbus TCP-RTU) consiste à envoyer une trame Modbus RTU dotée d’un en-tête MBAP via une
connexion Ethernet (Fig.34). Cette solution permet ainsi de simuler une communication maîtreesclave sur un Serveur.
Figure 34 : Composition schématique d’une trame Modbus TCP-RTU (ADU)
LE PROTOCOLE CANOPEN
Initialement développé pour être intégré sur un bus CAN, ce
protocole de communication économique et efficace intègre également
le profil des éléments communiquant sur le bus.
Figure 35 : Les 7 couches du modèle OSI
L’Open System Interconnection (OSI), un modèle de
communication entre ordinateur regroupant les fonctions
nécessaires au dialogue entre ces derniers, les divise en 7 couches
(Fig.35). Du point de vue OSI, le CANOpen prend en charge les
couches de Network à Application (Fig.36) contrairement au
Modbus qui ne gère que la couche Application.
26
Nicolas BRIOT (GE5)
Figure 36 : Le protocole CANOpen gère
les couches Network et supérieures
2016
En CANOpen, chaque élément du système dialoguant sur le bus CAN est appelé « Nœud » et
est une machine à états dotée d’une bibliothèque de données permettant un dialogue normalisé avec
les différents Nœud. Il s’agit du Dictionnaire Object ou OD, pour Object Dictionnary (Fig.37). Chaque
objet de ce dictionnaire est adressé par un Index (sur 16 bits) et éventuellement un Sub-Index (sur 8
bits, valant 0 par défaut).
Figure 37 : Exemple de Dictionnaire Objet
Une trame CANOpen est peu différente d’une trame CAN standard, on étudie donc plus en
détail cette dernière dans un premier temps (Fig.38). Sur un bus CAN (d’impédance nominale 120
Ohms) le 0 logique est dominant, ce qui signifie qu’un conflit sur le bus lui donnera la priorité. Par
ailleurs aucune information n’est représentée par une tension nulle pour pouvoir repérer un défaut
électrique sur le bus.
Figure 38 : Une trame CAN décomposée bit à bit (Wikipédia)
On explicite certains champs importants :
Arbitration Field : Contient le début de trame (un bit au 0 logique) et le CAN-ID du message sur 11 bits.
L’ID d’une trame CAN défini sa priorité sur le bus : plus il est faible (et donc comporte de 0) plus il est
prioritaire.
Data Field : La donnée transmise, sa taille étant fixée dans le champs précédant (Control Field).
CRC Field : Le CRC pour cyclic redundancy check, utilise un code de détection d’erreur (basé sur une
division polynomiale de la donnée du Data Field), on obtient un mot de 15 bits permettant de détecter
une erreur dans la trame reçue.
End of frame : Un mot de 7 bit ne contenant que des 1L annonce la libération du bus.
27
Nicolas BRIOT (GE5)
2016
Plus simplement, on peut supposer que la
trame ne contient qu’un CAN-ID et la donnée
transmise (Fig.39).
CAN-ID
11 bits
DATA
0 à 64 bits
Figure 39 : Schéma simpliste d'une trame CAN
En CANOpen, les 11 bits du CAN-ID sont séparés en deux blocs formant le CAN Objet ID (ou
COB-ID) (Fig.40) :
-
Les 4 premiers bits donnent la fonction du message
(Fig.41).
-
Les 7 bits restants décomptent les Noeud sur le bus
CAN (max 127 Noeuds).
COB-ID
Figure 40 : Composition du COB-ID en CANOpen
Les différentes fonctions importantes sont :
-
Network management (NMT), les
messages pour changer les états de
chaque Noeud, détecter les nouveaux
Noeuds sur le bus et les erreurs.
-
Service Data Object (SDO) message le
plus utilisé dans notre cas, permet la
lecture/écriture dans le dictionnaire
objet d’un Noeud.
-
Process Data Object (PDO) messages
temps-réel pouvant contenir jusqu’à
64bits.
Figure 41 : Extrait de spécification CANOpen précisant les
codes fonction
Ainsi les messages CANOpen sont simplement des trames CAN dotées d’une
codification dans leur en-tête permettant d’établir une communication standardisée entre
des Nœuds tous dotée de données structurées de la même façon.
28
Nicolas BRIOT (GE5)
2016
L’ENCAPSULATION MODBUS DE TRAMES CANOPEN
Le CANOpen est utilisé en interne (via bus CAN), l’utilisateur souhaitant dialoguer avec le
produit doit s’y connecter physiquement et concevoir les trames permettant l’accès aux données
désirées. Ce procédé étant peu pratique et fastidieux, une solution alternative consiste en l’utilisation
d’un autre protocole pour communiquer avec un des nœuds du système qui se chargera de diffuser la
commande en CANOpen en interne (Fig.42). Le protocole sélectionné dans un premier temps était le
Modbus-TCP.
L’ordinateur de l’utilisateur est un Client Modbus
User PC
La carte « COM » du système est
un Serveur Modbus et un Maître
CANOpen
COM Board
Les autres cartes du système sont
donc des Esclaves CANOpen
Other Boards
Figure 42 : Schéma de la hiérarchie dans les protocoles dans notre système
29
Nicolas BRIOT (GE5)
2016
Intéressons-nous à la construction des trames et à l’élaboration du VI permettant leur envoi,
cette dernière est soumise aux spécifications du CiA-309, document détaillant le standard pour
l’encapsulation du CANOpen dans une trame Modbus [4].
L’enveloppe (En-tête et fin de trame) Modbus reste inchangée, c’est le contenu du PDU qui
contient la partie CANOpen, on utilise la fonction 43 (2Bh) et le type de MEI 13 (Modbus Encapsulated
Interface 0Dh) spécialement prévus pour cet usage. Viennent ensuite les options de protocole et
finalement la trame du Service Data Object (SDO) CANOpen (Fig.43).
MODBUS PROTOCOL DATA UNIT (PDU)
Function code
DATA
1 Byte
N Bytes
(XXh)
(N*XXh)
Function code
MEI Type
Protocol Options
CANOpen Header
1 Byte
1 Byte
2 to 6 Bytes (4 optionals)
8 Bytes
CANOpen DATA
M Bytes
(2Bh)
(0Dh)
(XX XX XX XX XX XXh)
(XX XXXX XX XXXX XXXXh)
(M*XXh)
Figure 43 : Encapsulation de la trame CANOpen dans un PDU de trame Modbus
La vérification de la conformité des
trames envoyées et la correction des erreurs
éventuelles sont facilitées par l’emploi d’un outil
analyseur de paquets comme WireShark (Fig.44).
Nous pouvons ainsi filtrer les paquets
échangés entre notre ordinateur (172.23.22.45)
et le HIL (172.23.16.176) via le port 1025.
Ici, le code fonction ABh est reçu, il
correspond à une erreur dans la fonction 2Bh car
un code erreur de réponse est généré en ajoutant
80h au code fonction de la requête client.
Figure 44 : Analyse des paquets échangés
à l'aide du logiciel WireShark
30
Nicolas BRIOT (GE5)
2016
PRESENTATION DES PROTOCOLES A L’EQUIPE
Après avoir saisi les subtilités de ces deux
protocoles de communication, j’ai pu convier tout le
service FIRM à une réunion pour y effectuer un retour
d’expérience (Fig.45). La réunion a duré une trentaine
de minutes au cours desquelles nous avons tenté
d’impliquer un maximum les participants via des mises
en situation (composition de trames de requête et
réflexion sur les trames de réponse attendues).
Il s’agit de faire profiter l’équipe un maximum
des recherches effectuées au cours du stage.
Figure 45 : Support de la présentation dispensée sur les
protocoles CANOpen et Modbus
LES VIs DE COMMUNICATION
Nous avons produit de nombreux VI pour nous interfacer avec le HIL, aussi bien pour un
dialogue CANOpen over Modbus TCP que TCP-RTU. Dans chaque cas, il s’agit d’instancier un Maître
Modbus sur notre ordinateur (Fig.46) puis de générer les trames associées aux commandes que nous
souhaitons envoyer.
Figure 46 : VIs qui créent un Maître Modbus TCP (en haut) ou TCP-RTU (en bas) en local
31
Nicolas BRIOT (GE5)
2016
Nous utilisons les librairies Modbus fournies par National Instruments mais la fonction n’est
pas nativement gérée, il faut donc concevoir le PDU Modbus en y intégrant notre trame CANOpen
(Fig.47). Par la suite, nous avons produit une interface de test permettant l’envoi de commandes
élémentaires ou personnalisées au HIL (Fig.48).
Figure 47 : Génération d'un PDU Modbus encapsulant une trame CANOpen
Figure 48 : Interface de test LabVIEW permettant l'envoi de commandes
Nous avons ainsi la possibilité d’envoyer des requêtes et de recevoir des réponses du
prototype, seulement pour cela il nous faut nous pencher sur le contenu des requêtes que SOCOMEC
envoie aux onduleurs.
32
Nicolas BRIOT (GE5)
2016
7.4 – ANALYSE ET EMPLOI DES FICHIERS .INI
En interne, SOCOMEC emploie des fichiers texte appelés « INI Files » référençant l’adressage
CANOpen et Modbus des différentes commandes, alarmes, mesures et états accessible en lecture
et/ou en écriture via leur logiciel propriétaire « XpertSoft » (Fig.49). Ce dernier permet accessoirement
le monitoring des trames échangées avec le produit : en vert les requêtes passées au H.I.L et en jaune
les réponses reçues.
Figure 49 : Interface de XpertSoft (à gauche) et extrait d'un INI file (à droite)
Ces fichiers sont peu lisibles et plutôt difficiles d’emploi, en ce sens, on nous a demandé de
proposer et générer un format plus accessible et pratique. Nous y reviendrons par la suite.
Les premières tentatives de « parser » dans les fichiers textes sont probantes mais peu
efficaces : l’analyse de chaînes de caractère (Fig.50) se révèle couteuse en ressources et donc en temps
de calcul.
Figure 50 : Première solution de Parsing des INI Files employant l'analyse du texte
33
Nicolas BRIOT (GE5)
2016
LE STOCKAGE DES INFORMATIONS DANS UNE BDD
Une première proposition soutenue par un ingénieur du service de production était d’extraire
les informations (appelées « clés ») pour les stocker dans une base de données MySQL. Après avoir
soumis à l’ingénieur un modèle de structure pour les tables de la base, nous avons entamé son
remplissage (Fig.51).
Figure 51 : Contenu de la base de données MySQL générée pour le projet HIL
Cette base est remplie au moyen d’un VI qui initie une connexion MySQL puis accède à la table
choisie pour y écrire les clés extraites des fichiers INI via un second mécanisme de « parsing » plus
performant que celui mentionné plus haut (Fig.52).
Figure 52 : VI permettant l'ajout des données extraites dans une BDD
34
Nicolas BRIOT (GE5)
2016
LA GENERATION DE FICHIER XML ET XSD
La solution retenue car appuyée par nos consultants en matière d’architecture Software,
MESULOG, est de produire un fichier eXtendable Markup Language (XML) répertoriant de façon claire
et synthétique toutes les informations nécessaires au dialogue avec le produit. Ce langage possède
notamment une structure en arborescence pour une meilleure lisibilité (Fig.53 gauche).
Une fois la structure globale de ce fichier établie, il faut définir strictement les attributs de
chaque objet s’y trouvant, leur type et leur place dans la hiérarchie. Cette syntaxe et ces critères de
validités sont fixés par un fichier XSD (XML Schema Definition) appairé au fichier XML (Fig.53 droite).
Un Plug-In de Notepad++ (logiciel d’édition et de lecture de code) appelé XML Tools permet
ensuite de vérifier que notre fichier XML respecte tous les critères imposés (Fig.53 droite-bas).
Figure 53 : Aperçu du fichier XML regroupant les clés de protocole (à gauche) et du fichier XSD de définition des règles du schéma (à droite) ainsi
qu'un message d'erreur obtenu via XML Tools
Figure 54 : Vue d'ensemble du VI permettant l'extraction des clés d'un ensemble de fichiers INI pour générer un XML associé
35
Nicolas BRIOT (GE5)
2016
7.5 – L’AJOUT DES ACRONYMES HIL
REFONTE DU VI GENERANT LE FICHIER XML
Le VI effectuant la conversion des INI files en un unique fichier XML, bien que parfaitement
fonctionnel, s’avérait complexe à débuguer, maintenir et à faire évoluer (Fig.54).
En ce sens nous avons remanié sa structure afin de permettre une meilleure lisibilité et
modularité du code : nous avons mis l’accent sur la création de SubVI et de définitions de type (Clusters
standardisés) au maximum. Nous avons par la suite ajouté un bloc de conversion des acronymes dont
nous détaillerons l’utilité et le fonctionnement ci-après (Fig.55).
Figure 55 : VI générant le fichier XML de protocole après refonte, sont encadrés (en rouge) les subVI s
permettant la correspondance des acronymes
De plus, afin de standardiser et réglementer la mise à jour des fichiers XML, nous avons mis
en place un fichier appelé « INI_TYPES.xml » qui fige les règles du parsing des fichiers .INI. Il spécifie
l’ordre d’apparition et le type de chacun des attributs de chaque type de donnée (Fig.56).
Figure 56 : Capture du fichier INI_Types.xml
36
Nicolas BRIOT (GE5)
2016
CONCORDANCE DES ACRONYMES HIL ET SOFT
Afin de pouvoir manipuler facilement les mesures obtenues sur le système, nous avons créé
une liste d’Acronymes HIL censé être plus explicites et ne pas varier d’une mise à jour des fichiers INI
à l’autre ni d’un type de produit à l’autre (Fig.57).
Le but recherché est également d’amener le département de production à employer ces
acronymes et nos fichiers XML afin de standardiser le nommage des différentes variables employées.
A terme, une uniformisation des outils de tests pourrait permettre la simple mise en commun des
séquences et sous-séquences utilitaires de tests (moyennant une légère adaptation) entre les
différents acteurs de la vérification des UPS SOCOMEC.
Figure 57 : Aperçu du fichier XML contenant les acronymes produit et HIL
Ce fichier est importé dans LabVIEW pour y effectuer le remplacement des acronymes produits
(Product) par leur équivalent HIL standardisés, un VI subVI gère la récupération des paires d’acronymes
pendant que le second effectue l’échange dans les tables de données recueillies des fichiers INI. La
transposition des acronymes est facultative : un contrôle permet de l’activer ou non.
Il est important de noter que seules les tables dont on trouve un équivalent acronyme HIL sont
conservées au terme du remplacement, puisque seules ces dernières seront utilisées pour les
communications durant les tests et la vérification et production.
L’équipe doit assurer le développement de cette table en la complétant puis en mettant à jour
le fichier XML du projet au moyen des VI développés pendant le stage.
37
Nicolas BRIOT (GE5)
2016
7.6 – CONCEPTION DES SEQUENCES DE TEST
SUIVI DE LA FORMATION TESTSTAND
Du 11 au 13 mai 2016 nous avons suivi la formation NI TestStand 1 afin d’acquérir les bases et
bonnes pratiques en matière de séquençage de tests avec les outils NI. Un ingénieur diplômé de l’INSA
de Lyon, Hugues FAYARD, nous a accompagné dans des exercices de prise en main et nous a fourni des
conseils pour la mise en place de l’architecture de test.
PRESENTATION DU LOGICIEL ET DE SON INTERFACE
Ce logiciel permet la création et l’édition de séquences de
test et les Step utilisés peuvent être codés dans de nombreux
langages tels que le C/C++, .Net ou LabVIEW (Fig.58).
Une notion importante est celle de l’identité de l‘utilisateur,
deux profils existent. « Le développeur » accède à l’éditeur de
séquence pour concevoir/débugger les séquences de test
contrairement à « l’opérateur » qui n’accède qu’à une interface de
monitoring et d’exécution.
Figure 58 : Structure du logiciel TestStand
L’interface graphique de TestStand (Fig.59) paraît complexe à première vue mais se découpe
en fait en fenêtres élémentaires qui sont individuellement très simples :
-
La liste des séquences et sous-séquences du fichier
Le déroulement de la séquence sélectionnée
Liste des variables manipulables
Paramètres du pas de test (ou « Step ») sélectionné dans la séquence
Figure 59 : Découpage de l'interface graphique de TestStand
38
Nicolas BRIOT (GE5)
2016
CONCEPTION DES SEQUENCES ET LEUR ARCHITECTURE
L’objectif du projet est d’obtenir une séquence principale regroupant l’intégralité des tests à
effectuer pour que le code embarqué respecte l’ensemble des spécifications logicielles établies pour
HPP. C’est Thierry Rohmer, notre maître de stage et architecte logiciel, qui se chargeait en partie de
leur rédaction et de leur « digestion » pour nous les communiquer.
Après discussion avec nos consultants, il nous est apparu préférable de ne pas opter pour une
structure parallèle pour nos tests : lancer plusieurs threads poserait de gros soucis d’organisation
autours de sémaphores et nécessiterait une étude bien plus poussée de la structure de nos tests.
Nous avons également défini que le rapport généré par le séquenceur serait au format XML
pour faciliter son traitement automatisé.
L’UTILISATION DES CALLBACKS
TestStand fourni plusieurs modèles de
séquenceur (ou « Process Model ») à l’utilisateur
qui édite les séquences. Comme nous ne
souhaitons pas paralléliser nos tests (pas encore)
nous utilisons le modèle Séquentiel fourni par NI.
Celui-ci nous laisse la possibilité d’effectuer un
test unitaire (Single Pass) ou des tests unitaires
successifs (Test UUTs) (Fig.60).
Dans les deux cas, le fichier séquence
que nous développons est appelé à un moment.
S’il
contient
une
Séquence
appelée
« MainSequence » cette dernière est alors
exécutée à ce moment, ce mécanisme est appelé
un Callback. Chacune des étapes présentées
dans le Process Model peut être remplacée par
une séquence du développeur portant le même
nom. D’ailleurs la plupart des séquences Figure 60 : Deux possibilités pour un Process Model dit séquentiel
présentes sont vides à l’origine car créées juste
pour que le développeur puisse les remplacer.
En ce sens, nous avons par exemple développé un Callback permettant de recommencer un
envoi de requête Modbus ayant échoué. La séquence « SequenceFilePostStepRuntimeError » teste le
code erreur reçu et dans le cas où il s’agit d’une simple erreur de timing/perte de connexion, envoie la
requête à nouveau une unique fois.
39
Nicolas BRIOT (GE5)
2016
7.7 – DEVELOPPEMENT D’OUTILS POUR LE DEPARTEMENT
Le bon déroulement du projet passe également par la mise en place d’outils facilitant
l’utilisation du HIL. J’ai passé la majeure partie de la fin de mon stage à développer ces outils tout en
restant à la disposition de l’équipe pour assister au développement des séquences de test. Chacun des
programmes inclus une gestion d’erreur poussée afin de permettre une maintenance aisée.
OUTIL COMPLETANT AUTOMATIQUEMENT LA MATRICE DE
TRAÇABILITE
La matrice de traçabilité est contenue dans un fichier Excel, elle répertorie l’ensemble des
spécifications du projet HPP et leur état de validation. Lors de la validation de ces spécifications au
cours d’un test, l’utilisateur doit aller écrire manuellement dans le fichier Excel le résultat de chaque
test au bon endroit. Cette opération est très fastidieuse.
Définition du besoin, le programme devait :
-
Ouvrir la matrice dans Excel à partir du chemin du fichier spécifié par l’utilisateur
Analyser le rapport du test (chemin spécifié) à la recherche de toutes les spécifications
mentionnées et pour chacune récupérer l’état (passed/failed) du test la validant
Indiquer ces résultats dans la matrice de traçabilité (OK/NOK) et sauvegarder
Gérer les versions des spécifications pour prévenir de l’obsolescence d’un test
Produire un rapport au format texte de l’ensemble des remarques/erreurs rencontrées
durant l’exécution
Temps de développement approximatif : 50h
Résultats : Programme fonctionnel et commenté
Code en Annexe 1 (Fig.65)
Figure 61 : Face avant (à gauche) et vue d'ensemble du projet (à droite) de l'outil complétant la matrice de traçabilité
40
Nicolas BRIOT (GE5)
2016
OUTIL DE VERIFICATION D’INI FILES (FICHIER UNIQUE)
Les INI Files regroupent l’intégralités des informations nécessaires au dialogue avec l’électronique de
commande HPP. Leur complétion s’effectue majoritairement à la main par les gens du FIRM, ils sont
donc sujet à un grand nombre d’erreurs qui s’avèrent difficiles à trouver.
Définition du besoin, le programme devait :
-
-
A l’exécution, rechercher un fichier .INI situé dans le même dossier et l’ouvrir
Analyser le .INI à la recherche de toutes les erreurs possibles à savoir :
o Un même Acronyme apparaît plusieurs fois dans le fichier
o Une variable n’est pas du type attendu (String, Numeric, Boolean)
o La taille cumulée de toutes les informations d’une table dépasse celle de la table
o Un attribut attendu est manquant (ou bien un attribut est en trop)
Produire un rapport au format texte de l’ensemble des erreurs trouvées
Temps de développement approximatif : 40h
Résultats : Programme fonctionnel
Code en Annexe 1 (Fig.66)
Figure 62 : Exemple d'utilisation de l'outil de vérification d'un seul fichier INI dans un
dossier (en bas) et ouverture du rapport généré (en haut)
41
Nicolas BRIOT (GE5)
2016
OUTIL DE VERIFICATION DE PLUSIEURS INI FILES EN
COMPARAISON
Par ailleurs, les INI Files se doivent d’avoir certaines tables en commun, de mêmes tailles ou
comportant certains éléments identiques entre les différents fichiers. On m’a donc chargé de
développer un second code vérifiant ces propriétés entre les fichiers INI.
Définition du besoin, le programme devait :
-
-
A l’exécution, rechercher tous les fichiers .INI situés dans les sous-dossiers et les ouvrir
Analyser ces .INI et s’assurer que certaines tables présentes dans les logs du prototype
respectent quelques règles, à savoir :
o Les tables dotées du même Node_ID doivent avoir la même taille, exception faite
des tables d’index 5000
o Les tables d’index 4012 doivent toutes avoir une description identique pour
chaque élément de même position dans la table
Produire un rapport au format texte de l’ensemble des erreurs trouvées
Temps de développement approximatif : 30h
Résultats : Code fonctionnel
Code en Annexe 1 (Fig.67)
Figure 63 : Gestion d'erreur (en bas) et fenêtre contextuelle de fin
d'exécution (en haut) de l'outil de vérification de multiples .INI
Figure 64 : Vue d'ensemble du projet commun des
deux outils de vérification de fichiers INI
42
Nicolas BRIOT (GE5)
2016
8 – CONCLUSION
A l’issue de ce stage, nous laissons derrière nous un projet parfaitement fonctionnel et
maintenable. Nous n’avons pas pu achever l’intégralité des séquences de test ni réaliser d’interface
opérateur mais l’équipe a assimilé toutes les compétences que nous avions à lui transmettre avant la
fin de ces six mois et la pérennité du HIL est ainsi assurée.
Les bénéfices pour l’entreprises sont clairement visibles. Le prototype possède un
fonctionnement extrêmement proche de la réalité physique, si bien que des défauts de code
apparaissant sur le produit réel ont pu être reproduit et corrigé sur le banc HIL grâce à une débug bien
plus aisée et poussée que sur plateforme. La durée du cycle de validation et de développement s’en
trouve fortement réduite, le nombre de feedbacks apportés par le HIL étant grand, des améliorations
possibles du code sont rapidement trouvées par l’expérimentation. Des défauts peuvent être
volontairement injectés pour étudier le comportement et la robustesse du produit sans présenter le
moindre danger pour l’utilisateur ou risque de dégradation du prototype. Enfin, le banc se trouve être
extrêmement adaptable à des changements de hardware : il suffit alors de modifier le schéma PSIM.
Par ailleurs, ce stage m’a apporté énormément, tant sur le plan technique qu’humain.
Le contact régulier avec les consultant dans le cadre d’une étroite collaboration est une
expérience de grande valeur pour un ingénieur en devenir, j’ai été convié à de nombreuses réunions
me permettant de nous familiariser avec les outils organisationnels clés de l’entreprise (KANBAN, TOP,
GANTT, SWOT, …) et ai également organisé des réunions dans lesquelles j’ai pris la place d’un
acteur/animateur majeur. La reconnaissance et la grande sollicitation montrées par mes collègues
m’ont donné un grand sentiment d’appartenance à l’entreprise et j’espère avoir pu leur communiquer
le plaisir que j’ai eu à travailler avec eux.
Sur le plan technique, j’ai vraiment beaucoup appris durant ces six mois, nous avons reçu trois
formations accélérées très coûteuse et obtenu une certification dans le domaine du test fonctionnel
avec les outils NI. Un tel profil est très recherché car rare pour des jeunes diplômés, aussi Cédric et
moi-même avons déjà reçus plusieurs offres dans ce domaine. Toutes les connaissances accumulées
au cours de ce stage peuvent se révéler de précieux atouts dans ma future carrière technique, des
protocoles comme le Modbus et le CANOpen sont d’usage courant et le développement collaboratif
sous SVN l’est tout autant.
Ainsi, je quitte SOCOMEC avec la conviction d’y avoir effectué un excellent travail.
La suite de ma carrière va prendre une tournure plus managériale et commerciale, j’ai en effet
signé, le jour même de la fin de mon PFE chez SOCOMEC, un CDI au sein d’Abylsen SUD en tant
qu’Ingénieur d’Affaires Junior. Je commence le 07/09/16 soit le surlendemain de ma soutenance !
43
Nicolas BRIOT (GE5)
2016
9 – BIBLIOGRAPHIE
[1] Creating Models in NI LabVIEW for Use in NI VeriStand; NI Tutorials (2016)
[2] Modbus Application Protocol Specification V1.1b; Modbus-IDA, Pages 12-50 (2006)
[3] CiA 301 CANopen application layer and communication profile V4.2.0; CiA (2011)
[4] CiA 309-2 Interfacing CANopen with TCP/IP - Part 2: Modbus/TCP mapping V1.1; CiA,
Pages 6-15 (2006)
44
Nicolas BRIOT (GE5)
2016
10 – REMERCIEMENTS
Je souhaite, en premier lieu, remercier l’ensemble de l’équipe des Ressources
Humaines de m’avoir convoqué pour l’entretien initial et accueilli au sein de l’entreprise.
Je tiens ensuite à remercier Jean-Louis SCHRICKE et Mathieu REYROLLE, société
MESULOG pour leur soutien technique et leurs conseils tout au long de ce projet qu’ils
continuent de porter après mon départ.
Je tiens à dire un grand merci à tous les professionnels qui nous ont dispensés les
formations nécessaires au bon déroulement du projet : Hugues FAYARD (STYREL), Rémi DA
SILVA (NATIONAL INSTRUMENTS) et Sébastien CENSE (OPAL-RT).
J’adresse également ma reconnaissance à tout le département R&D de l’Usine 3 et
plus encore à l’équipe FIRM au sein de laquelle j’ai vraiment apprécié travailler et me
développer durant ces six derniers mois.
Pour finir, toute ma gratitude va à mes deux maîtres de stage, Thierry ROHMER et Eric
PLUMERE ainsi qu’à mon collègue et ami Cédric SCHRAMM avec qui j’ai eu la joie et la chance
de partager un bureau et un projet pendant ce PFE, je ne connais à ce jour pas de cadre de
travail plus agréable qu’à leurs côtés.
45
Nicolas BRIOT (GE5)
2016
11 – ANNEXES
11.1 – ANNEXE 1 : CODE LABVIEW DES OUTILS DEVELOPPES
Figure 65 : Code de l'outil complétant la matrice de traçabilité
Figure 66 : Code de l'outil de vérification d'un seul fichier INI
Figure 67 : Code de l'outil de vérification de multiples fichiers INI
46
Nicolas BRIOT (GE5)
2016
11.2 – ANNEXE 2 : SCHEMA GENERAL DE L’ELECTRONIQUE HPP
Figure 68 : Schéma général de l'électronique de commande HPP
47
Nicolas BRIOT (GE5)
2016
11.3 – ANNEXE 3 : SCHEMA PSIM DE LA PARTIE PUISSANCE HPP
Figure 69 : Schéma PSIM de la partie puissance du projet HPP (avec transformateur)
48
Nicolas BRIOT (GE5)
2016
Téléchargement