Académique Documents
Professionnel Documents
Culture Documents
THESE
Discipline
GÉNIE INFORMATIQUE, AUTOMATIQUE ET TRAITEMENT DU SIGNAL
Raphaël COUPAT
Je tiens à remercier les membres du CReSTIC qui m’ont accueilli avec beaucoup de
sympathie et ont soutenu mon travail. Je tiens notamment à remercier Monsieur le Professeur
Bernard Riera qui m’a accordé sa confiance en prenant la direction de cette thèse, qui m’a
guidé, corrigé et appris énormément tout au long de ces trois années de travail. Je le remercie
également pour m’avoir appris à prendre de la hauteur et du recul pour comprendre un
problème dans sa globalité. Je n’oublierai pas les meilleurs moments que nous avons partagés.
Je tiens également à remercier Monsieur Alexandre Philippot et Monsieur François Gellot qui
m’ont supporté tous les jours et ont partagé leurs connaissances scientifiques et culturelles. Je
remercie Monsieur David Annebicque pour ses idées et son point de vue informaticien qui ont
grandement contribué à l’avancement de cette thèse. Je garderai un très bon souvenir de ces
trois années passées à travailler avec vous. Enfin je tiens à remercier Madame Ida Lenclume
pour son travail formidable et sa bonne humeur.
3
Je remercie bien entendu ceux qui m’ont supporté (dans les deux sens du terme) pendant les
étapes difficiles de cette thèse, mes parents, mes amis et ma chérie, Claire. Merci Papa,
Maman, d’avoir cru en moi, de m’avoir poussé à aller jusqu’au bout et de m’en avoir donné
les moyens. Merci Claire d’avoir été là pour t’occuper de moi jusqu’à la fin et de rendre ma
vie simplement parfaite. Enfin, merci à mes amis que je ne vais pas énumérer, pour leur joie
de vivre et l’équilibre qu’ils m’apportent.
4
Table des matières
REMERCIEMENTS ............................................................................................................................................. 3
TABLE DES MATIERES ....................................................................................................................................... 5
INDEX DES TABLEAUX ET DES FIGURES ............................................................................................................. 9
TABLEAUX .............................................................................................................................................................. 9
FIGURES .............................................................................................................................................................. 10
GLOSSAIRE, ABREVIATIONS ET SYMBOLES ..................................................................................................... 13
ABREVIATIONS ...................................................................................................................................................... 13
SYMBOLES ........................................................................................................................................................... 15
GLOSSAIRE : EXTRAIT DU REGLEMENT (S11, 2012) ..................................................................................................... 15
INTRODUCTION GENERALE ............................................................................................................................ 17
CHAPITRE 1 : LE METIER DES EALE .................................................................................................................. 23
1.1 INTRODUCTION............................................................................................................................................ 23
1.2 ORGANISATION DU RESEAU ELECTRIQUE ........................................................................................................... 23
1.2.1 Les systèmes de traction ferroviaire .............................................................................................. 23
1.2.2 Rôle des Sous-stations ................................................................................................................... 24
1.3 L’ALIMENTATION ELECTRIQUE......................................................................................................................... 26
1.3.1 L’alimentation en courant continu 1500 V .................................................................................... 27
1.3.2 L’alimentation en courant alternatif monophasé 25 KV 50 Hz ..................................................... 28
1.3.3 L’alimentation en courant alternatif 2x25KV 50 Hz ...................................................................... 29
1.3.4 Architecture d’un secteur caténaire 25KV ou 2x25KV ................................................................... 30
1.3.5 Architecture d’une sous-station 25KV/2x25KV .............................................................................. 31
1.4 SYSTEME DE CONTROLE/COMMANDE DES EALE................................................................................................. 32
1.4.1 Architecture SCADA ....................................................................................................................... 34
1.4.2 Architecture de Conduite Local et d’Automatismes ...................................................................... 35
1.4.2.1 Le système PA ...................................................................................................................................... 35
1.4.2.2 Le système SCLA .................................................................................................................................. 36
1.4.2.3 Les différents types d’abonnés ............................................................................................................ 38
1.5 SURETE DU FONCTIONNEMENT DU SYSTEME DE CONTROLE/COMMANDE ................................................................. 39
1.5.1 Définition de la sûreté du fonctionnement dans le domaine des EALE ......................................... 39
1.5.1.1 Fiabilité ................................................................................................................................................ 39
1.5.1.2 Maintenabilité ..................................................................................................................................... 40
1.5.1.3 Disponibilité......................................................................................................................................... 40
1.5.1.4 Sécurité des abonnés .......................................................................................................................... 40
1.5.1.5 Événement critique redouté ............................................................................................................... 41
1.5.1.6 Intégrité des données .......................................................................................................................... 41
1.5.2 Sûreté du fonctionnement des cartes Entrées/Sorties .................................................................. 41
1.5.2.1 Carte 4 Télé Commandes Doubles / 4 Télé Signalisations Doubles (4TCD/TSD).................................. 42
1.5.2.2 Carte 16 Télé Signalisations Simples (16 TSS) ...................................................................................... 42
1.6 PROGRAMMES BINAIRES OU NOYAU ISAGRAF ................................................................................................. 43
1.6.1 Description des programmes automates ...................................................................................... 45
1.6.1.1 Programme de la phase « Début » ...................................................................................................... 46
1.6.1.2 Programmes séquentiels (SFC) ............................................................................................................ 47
1.6.1.3 Programmes de fin de cycle ................................................................................................................ 47
1.6.2 Synthèse ........................................................................................................................................ 48
1.7 LE METIER DES EALE .................................................................................................................................... 48
1.8 CONCLUSION .............................................................................................................................................. 51
5
CHAPITRE 2 : ETUDE DES VOIES D’AMELIORATIONS POSSIBLES DU METIER DES EALE .................................... 53
2.1 INTRODUCTION............................................................................................................................................ 53
2.2 UNE APPROCHE « SYSTEME HOMME-MACHINE » DU METIER DES EALE ................................................................ 54
2.2.1 Composante économique et technique ......................................................................................... 56
2.2.2 Composante humaine ................................................................................................................... 56
ER
2.3 1 AXE D’AMELIORATION : LA GENERATION AUTOMATIQUE DE LIVRABLES ............................................................... 59
2.3.1 UML ou MDD pour la génération de code ? .................................................................................. 60
2.3.2 Principes de la génération de code par MDA et DSM .................................................................... 61
2.3.2.1 Principes du MDA ................................................................................................................................ 61
2.3.2.2 Principes du DSM................................................................................................................................. 64
2.3.2.3 Avantages de DSM pour le domaine spécifique métier ...................................................................... 65
2.3.3 Synthèse des deux philosophies MDA et DSM ............................................................................... 66
2.3.4 Examen des méthodes et des techniques de génération de code ................................................. 67
2.3.4.1 Les approches de génération de code ................................................................................................. 67
2.3.4.2 Les types de générateur de code ......................................................................................................... 67
2.3.4.3 Les techniques de génération du code ................................................................................................ 69
2.3.5 Solutions DSM pour les automatismes industriels......................................................................... 72
2.3.6 Présentation de la solution Odil de la société Prosyst ................................................................... 76
2.3.6.1 La solution Odil .................................................................................................................................... 77
2.3.6.2 Visual Standard : Solution de développement du Progiciel SNCF EALE ............................................... 77
2.3.7 Synthèse ........................................................................................................................................ 79
EME
2.4 2 AXE D’AMELIORATION : LA COMMANDE...................................................................................................... 80
2.4.1 Approches de conception de la commande : le cas des EALE ........................................................ 80
2.4.2 La SCT (Supervisory Control Theory) .............................................................................................. 84
2.4.3 La synthèse algébrique .................................................................................................................. 86
2.4.4 La commande par contraintes logiques ........................................................................................ 90
2.4.5 Validation et Vérification : V&V .................................................................................................... 94
2.5 CONCLUSION .............................................................................................................................................. 97
CHAPITRE 3 : PROPOSITION D’UNE METHODOLOGIE POUR LES ETUDES D’AUTOMATISATION .................... 101
3.1 INTRODUCTION.......................................................................................................................................... 101
3.2 CYCLE DE PRODUCTION DE LA METHODOLOGIE ................................................................................................. 104
3.3 REVERSE ENGINEERING ET DONNEES D’ENTREES VERS LA STANDARDISATION .......................................................... 107
3.4 DEMARCHE DE GENERATION DU CODE API ...................................................................................................... 108
3.4.1 Standardisation des programmes ............................................................................................... 108
3.4.2 Qualimétrie du code API .............................................................................................................. 109
3.4.3 Analyse par PLC Checker ............................................................................................................. 111
3.4.4 Formalisation des langages ......................................................................................................... 115
3.4.5 Analyse structurelle pour la modélisation du système ................................................................ 116
3.4.5.1 Décomposition de la Partie Opérative............................................................................................... 117
3.4.5.2 Décomposition de la Partie Commande ............................................................................................ 119
3.4.5.3 Liens entre PO et PC .......................................................................................................................... 120
3.4.6 Définition des templates de génération de code ......................................................................... 121
3.4.7 Outil de mise en œuvre de la génération .................................................................................... 123
3.5 DEMARCHE DE GENERATION DU FILTRE A BASE DE CONTRAINTES DE SECURITE ........................................................ 126
3.5.1 Définition du filtre robuste à base de contraintes ....................................................................... 128
3.5.1.1 Principe d’écriture des contraintes ................................................................................................... 130
3.5.1.2 Démarche de définition des contraintes ........................................................................................... 131
3.5.2 Propriétés des contraintes ........................................................................................................... 133
3.5.3 Algorithme de la commande basée sur les contraintes logiques ................................................ 135
3.5.3.1 Prise en considération des CSs et des CFs ......................................................................................... 136
3.5.3.2 Prise en considération des CSc .......................................................................................................... 139
3.5.4 Synthèse ...................................................................................................................................... 142
3.6 CONCLUSION ............................................................................................................................................ 143
6
CHAPITRE 4 : APPLICATION DE LA METHODOLOGIE AUX ETUDES D’AUTOMATISATION DES EALE ............... 145
4.1 INTRODUCTION.......................................................................................................................................... 145
4.2 ANALYSE DU SYSTEME ................................................................................................................................. 146
4.2.1 Partie HT ...................................................................................................................................... 148
4.2.2 Groupe Traction........................................................................................................................... 151
4.2.3 Départ Traction ........................................................................................................................... 153
4.2.4 Batterie de Condensateurs .......................................................................................................... 154
4.2.5 Communs..................................................................................................................................... 155
4.2.5.1 Barre 25kV ......................................................................................................................................... 156
4.2.5.2 Pontage ............................................................................................................................................. 156
4.3 STANDARDISATION ET ANALYSE DU CODE ........................................................................................................ 157
4.3.1 Etudes des principes d’automatisation des EALE ........................................................................ 158
4.3.2 Etude minutieuse des programmes pour la standardisation ...................................................... 158
4.3.3 Analyse des résultats PLC Checker............................................................................................... 159
4.4 FORMALISME DES LANGAGES........................................................................................................................ 163
4.4.1 Structure de fichiers IsaGraf 3.32 ................................................................................................ 163
4.4.2 Grammaire du fichier source du dictionnaire .............................................................................. 164
4.4.3 Grammaire du fichier source d’un sous-programme ................................................................... 165
4.4.4 Grammaire du fichier source d’un sous-programme Ladder Diagram ........................................ 165
4.5 DEFINITION DE LA STRUCTURE DU MODELE ...................................................................................................... 168
4.5.1 Méta-modèle et modèle de PO ................................................................................................... 168
4.5.2 Modèle d’associations entre PO et PC ......................................................................................... 170
4.5.3 Modèles des SePO ....................................................................................................................... 171
4.6 GENERATION DE CODE ET DOCUMENTS........................................................................................................... 172
4.6.1 Choix d’une solution pour la génération de livrables .................................................................. 172
4.6.2 Odil GREMLINS ............................................................................................................................ 175
4.7 DEFINITION DES TEMPLATES DANS VISUAL STANDARD ....................................................................................... 183
4.7.1 Génération des fichiers d’un projet ............................................................................................. 183
4.7.2 Template d’un fichier ST .............................................................................................................. 184
4.7.3 Template d’un fichier LD.............................................................................................................. 186
4.8 AGILITE DE LA DEMARCHE D’AMELIORATION METIER ......................................................................................... 190
4.9 CONSEQUENCES SUR LE WORKFLOW DES CHARGES D’ETUDES ............................................................................. 193
4.10 ANALYSE DES QUESTIONNAIRES UTILISATEURS .................................................................................................. 197
4.10.1 Quelles attentes de la solution ?............................................................................................. 197
4.10.2 Utilisation ............................................................................................................................... 197
4.10.3 Gains ....................................................................................................................................... 198
4.10.4 Synthèse des résultats ............................................................................................................ 199
4.11 CONCLUSION ............................................................................................................................................ 200
CHAPITRE 5 : APPLICATION DE LA COMMANDE PAR CONTRAINTES AUX EALE ............................................. 203
5.1 INTRODUCTION.......................................................................................................................................... 203
5.2 SPECIFICATION D’UN POSTE DE MISE EN PARALLELE ET DE SES FONCTIONS .............................................................. 205
5.2.1 Principe fonctionnel du RAP actuel.............................................................................................. 207
5.2.2 Programmes API actuels ............................................................................................................. 209
5.2.2.1 Programme de Commande de l’IMP ................................................................................................. 210
5.2.2.2 Programme de la fonction DAP ......................................................................................................... 211
5.2.2.3 Programme de la fonction RAP ......................................................................................................... 211
5.3 PROPOSITION D’UNE COMMANDE RAP SEQUENTIELLE ...................................................................................... 213
5.4 DEMARCHE DE GENERATION DE LA COMMANDE SURE POUR LES POSTES DE MISE EN PARALLELE ................................. 216
5.4.1 Définition des observateurs et des contraintes ........................................................................... 217
5.4.1.1 Description des observateurs ............................................................................................................ 217
5.4.1.2 Contraintes de Sécurité simples ........................................................................................................ 220
5.4.1.3 Contraintes de Sécurité combinés ..................................................................................................... 222
5.4.2 Contraintes Fonctionnelles simples ............................................................................................. 224
5.4.3 Prise en considération des CSs et des CFs .................................................................................... 224
5.4.4 Prise en considération des CSc .................................................................................................... 225
7
5.5 PROPOSITION D’INTEGRATION DE LA COMMANDE ACTUELLE DANS LE DESIGN PATTERN
DE LA COMMANDE PAR CONTRAINTES ............................................................................................................. 227
5.6 VERIFICATION PAR MODEL-CHECKING ............................................................................................................. 229
5.6.1 Présentation d’UPPAAL ............................................................................................................... 229
5.6.2 Modèle de Partie Opérative ........................................................................................................ 230
5.7 VERIFICATION DES COMMANDES ................................................................................................................... 235
5.8 CONCLUSION ............................................................................................................................................ 240
CONCLUSION GENERALE ET PERSPECTIVES................................................................................................... 243
BIBLIOGRAPHIE ............................................................................................................................................ 251
ANNEXES ...................................................................................................................................................... 263
ANNEXE 1 : REGLES PLC CHECKER.......................................................................................................................... 263
Règles de Nommage ............................................................................................................................................... 263
Règles sur les Commentaires .................................................................................................................................. 263
Règles d’Ecriture ..................................................................................................................................................... 263
Règles de Structuration .......................................................................................................................................... 263
Informations Utiles ................................................................................................................................................. 264
ANNEXE 2 : MODELES D’UNE SOUS-STATION ............................................................................................................ 265
ANNEXE 3 : COMPARAISON TECHNIQUE DE DEUX SOLUTIONS ....................................................................................... 268
ANNEXE 4 : MONTAGE FINANCIER DES SOLUTIONS DE GENERATION DE CODE .................................................................. 269
Montage financier de la solution : Développement d’une solution ........................................................... 269
Montage financier du développement phase 1 ......................................................................................... 270
Montage financier de la solution : Odil Gremlins ...................................................................................... 271
Montage financier d’Odil Gremlins ............................................................................................................ 272
Synthèse des coûts de développement et de maintenance des solutions ................................................. 272
ANNEXE 5 : ETUDE FINANCIERE .............................................................................................................................. 274
Etude des gains potentiels des solutions ................................................................................................... 274
5.8.1 Calcul des bénéfices ..................................................................................................................... 278
5.8.2 Calcul du temps de rentabilisation du projet ............................................................................... 279
ANNEXE 6 : FICHES DU CAHIER DE RECETTE DE L’IMP ................................................................................................. 281
ANNEXE 7 : CODE DE LA COMMANDE A : APPLICATION DU DESIGN PATTERN A LA COMMANDE LA PLUS PERMISSIVE ............... 283
ANNEXE 8 : CODE DE LA COMMANDE B : COMMANDE ACTUELLE SNCF TRADUITE ........................................................... 289
ANNEXE 9 : CODE DE LA COMMANDE C : APPLICATION DU DESIGN PATTERN A LA COMMANDE ACTUELLE SNCF TRADUITE ...... 292
ANNEXE 10 : QUESTIONNAIRES DES UTILISATEURS DE LA SOLUTION ODIL GREMLINS ........................................................ 300
Réponse n°1 ............................................................................................................................................... 300
Réponse n°2 ............................................................................................................................................... 303
Réponse n°3 ............................................................................................................................................... 306
ANNEXE 11 : DICTIONNAIRE DES VARIABLES ............................................................................................................. 309
ANNEXE 12 : VERIFICATION DES PROPRIETES SOUS UPPAAL ....................................................................................... 310
Commande A ............................................................................................................................................. 310
Commande B ............................................................................................................................................. 311
Commande C.............................................................................................................................................. 312
8
Index des Tableaux et des Figures
Tableaux
Tableau 1 : Tableau descriptif des EALE et des fonctions élémentaires associées ................. 31
Tableau 2 : Tableau des éléments fonctionnels PA .................................................................. 36
Tableau 3 : Eléments fonctionnels des abonnés du SCLA ....................................................... 38
Tableau 4 : Temps limité pour chaque étape du projet ............................................................ 50
Tableau 5 : Comparaison des méthodes de génération d’après Völter .................................... 71
Tableau 6 : Variables ayant un nom trop court ...................................................................... 162
Tableau 7 : Récapitulatif des fichiers textes du dossier d’un abonné automate ..................... 165
Tableau 8 : Type de contact ................................................................................................... 165
Tableau 9 : Type de bobine .................................................................................................... 166
Tableau 10 : Type de Bloc fonctionnel .................................................................................. 166
Tableau 11 : Synthèse de coûts de développement et de maintenance des solutions ............ 174
Tableau 12 : Récapitulatif des fichiers textes du dossier d’un abonné automate ................... 183
Tableau 13 : Comparaison des étapes projets actuelles et des étapes projet
avec Odil GREMLINS pour les projets d’électrification de sous-stations ....... 194
Tableau 14 : Comparaison des étapes projets actuelles et des étapes projet
avec Odil GREMLINS pour les projets d’électrification de postes .................. 195
Tableau 15 : Synthèse des gains annuels de la solution Odil GREMLINS ........................... 196
Tableau 16 : Résultats de la vérification des propriétés des commandes étudiées ................ 239
Tableau 17 : Comparaison détaillée des deux solutions ........................................................ 268
Tableau 18 : Coûts de développements annuels et d’exploitation en dernière année ............ 270
Tableau 19 : Récapitulatif du devis établi par Prosyst ........................................................... 272
Tableau 20 : Coûts de développements annuels et d’exploitation en dernière année ............ 272
Tableau 21 : Synthèse de coûts de développement et de maintenance des solutions ............ 273
Tableau 22 : Etude des gains annuels pour les sous-stations ................................................. 275
Tableau 23 : Etude des gains annuels pour les postes ............................................................ 277
Tableau 24 : Etude des bénéfices réalisables ......................................................................... 278
Tableau 25 : Etude du temps de rentabilisation des solutions................................................ 279
Tableau 26 : Dictionnaire des variables utilisées dans le chapitre 5 ...................................... 309
9
Figures
10
Figure 40 : Méta-modèle de la Partie Opérative .................................................................... 117
Figure 41 : Modèle simplifié d’une sous-station .................................................................... 118
Figure 42 : Méta-modèle de la Partie Commande .................................................................. 119
Figure 43 : Méta-modèle des connexions entre PO et PC...................................................... 120
Figure 44 : Méthode de définition des templates distribués................................................... 122
Figure 45 : Workflow pour la génération de code et de livrables ........................................... 124
Figure 46 : Démarche de génération de la commande par contraintes (en noir).................... 125
Figure 47 : Espace de commande du système ........................................................................ 126
Figure 48 : Modélisation du cycle API synchronisé par rapport à la PO ............................... 128
Figure 49 : Structure interne du filtre robuste ........................................................................ 131
Figure 50 : Démarche de définition des contraintes ............................................................... 133
Figure 51 : Schéma d’entrées et sorties de l’algorithme (et de son Design Pattern) ............. 136
Figure 52 : Exemple pédagogique .......................................................................................... 138
Figure 53 : Exemple avec des caractéristiques fonctionnelles correctes................................ 138
Figure 54 : Exemple avec des caractéristiques fonctionnelles fausses .................................. 139
Figure 55 : Algorithme de commande sûre de fonctionnement ............................................. 141
Figure 56 : Schéma unifilaire de la sous-station de Commune (2x25kV) ............................. 147
Figure 57 : Schéma unifilaire de la partie HT ........................................................................ 148
Figure 58 : Schéma de la partie Haute Tension pour un raccordement RTE en piquage ou en
antenne. ................................................................................................................ 150
Figure 59 : Schéma unifilaire d’un Groupe Traction avec commutateurs de phases ............. 151
Figure 60 : Schéma de mise en œuvre de l’architecture de contrôle/commande/protection du
Groupe Traction .................................................................................................. 152
Figure 61 : Schéma de mise en œuvre de l’architecture de contrôle/commande des
commutateurs de phases ...................................................................................... 152
Figure 62 : Schéma unifilaire de deux Départs Traction........................................................ 153
Figure 63 : Schéma de mise en œuvre de l’architecture de contrôle/commande/protection d’un
Départ Traction .................................................................................................... 154
Figure 64 : Schéma unifilaire d’une batterie de condensateurs.............................................. 154
Figure 65 : Schéma de mise en œuvre de l’architecture de contrôle/commande/protection
d’une batterie de condensateurs .......................................................................... 155
Figure 66 : Schéma unifilaire d’une barre 25kV .................................................................... 156
Figure 67 : Schéma unifilaire de deux pontages (un pontage par voie) ................................. 156
Figure 67 : Programme LD : exemple de l’ouverture de l’IMP par manque tension ............ 167
Figure 68 : Technique basée sur les templates, le méta-modèle du métier et la grammaire de
l’Interface de Programmation .............................................................................. 167
Figure 69 : Méta-modèle de la Partie Opérative .................................................................... 169
Figure 70 : Modèle d’une sous-station 25kV ......................................................................... 169
Figure 71 : Méta-modèle des connexions entre PO et PC...................................................... 170
Figure 72 : Modèle d’un Groupe Traction ............................................................................. 171
Figure 73 : Graphique des résultats comparés........................................................................ 173
Figure 76 : Vue de définition des défauts d’un Groupe Traction ........................................... 177
Figure 77 : Vue de synthèse par abonné (TCD/TSD, TSS, paramètres) ................................ 178
Figure 78 : Vue de connexion des appareils sur une carte 4TCD/TSD ................................. 179
Figure 79 : Vue de description de l’architecture SCLA ......................................................... 180
Figure 80 : Synthèse des TSS généré ..................................................................................... 181
Figure 81 : Exemple de fiche de recette générée (Arrêt Automate) ....................................... 182
Figure 82 : Rung en langage LD de construction de l’observateur defTR ............................. 186
Figure 83 : Rung en langage LD de la fonction de report de protection entre GT ................. 188
Figure 84 : Développement Agile du progiciel Odil GREMLINS ........................................ 191
11
Figure 85 : Extrait des programmes générés de La Voulzie .................................................. 192
Figure 86 : Mise en place du châssis de contrôle/commande de La Voulzie intégrant les
programmes API générés par Odil GREMLINS ................................................. 192
Figure 87 : Workflow pour la génération de code et de livrables ........................................... 193
Figure 88 : Intégration du Design Pattern permettant d’obtenir une commande sûre de
fonctionnement dans la méthodologie pour les études d’automatisation ............ 204
Figure 89 : Schéma d’exploitation simplifié d’un secteur électrifié en 25kV........................ 205
Figure 90 : Chronogramme du fonctionnement RAP sur défaut fugitif ................................ 206
Figure 91 : Chronogramme du fonctionnement RAP sur défaut persistant ........................... 207
Figure 92 : Mise en œuvre du système de contrôle/commande du poste de mise
en parallèle .......................................................................................................... 207
Figure 93 : GRAFCET de commande d’un IMP ................................................................... 210
Figure 94 : Construction de la variable OoIMP en langage Ladder Diagram (IEC 61131-3) 211
Figure 95 : Fonction RAP en langage Ladder (IEC 61131-3, 2003) ..................................... 212
Figure 96 : GRAFCET de surveillance du temps écoulé avant RAP (RSU) ......................... 213
Figure 97 : GRAFCET de gestion du RAP ............................................................................ 215
Figure 98 : Démarche de définition des contraintes ............................................................... 217
Figure 99 : GRAFCETs de commande IMP de l’opérateur ................................................... 218
Figure 100 : GRAFCET de gestion de la fonction RAP ........................................................ 219
Figure 101 : GRAFCET de suivi des tensions U1 et U2 pendant le RAP ............................. 220
Figure 102 : Décomposition de l’espace de liberté du système ............................................. 227
Figure 103 : Design Pattern de la commande par contraintes en tant que filtre de la
commande existante .......................................................................................... 228
Figure 104 : Décomposition temporelle cyclique du système ............................................... 231
Figure 105 : Modèle d’évolution des tensions ....................................................................... 232
Figure 106 : Modèle d’évolution des appareils ...................................................................... 232
Figure 107 : Modèle de commande opérateur ........................................................................ 233
Figure 108 : Modèle de temporisation ................................................................................... 234
Figure 109 : Représentation des trois commandes testées ..................................................... 238
Figure 110 : Méthodologie pour les études d’automatisation et la génération automatique de
livrables ............................................................................................................. 244
Figure 111 : Modèle de la Partie Opérative ........................................................................... 265
Figure 112 : Modèle du Groupe Traction ............................................................................... 265
Figure 113 : Modèle du Départ Traction ................................................................................ 266
Figure 114 : Modèle de la Batterie de Condensateurs ........................................................... 266
Figure 115 : Modèle des sous-ensembles de Partie Opérative Communs ............................. 267
Figure 116 : Modèle des éléments de Partie Opérative Communs ........................................ 267
Figure 117 : Cycle en V du développement logiciel .............................................................. 269
Figure 118 : Cycle en V de développement d’un progiciel .................................................... 271
Figure 119 : Vérification des propriétés de la commande A .................................................. 310
Figure 120 : Vérification des propriétés de la commande B .................................................. 311
Figure 121 : Vérification des propriétés de la commande C .................................................. 312
12
Glossaire, abréviations et symboles
Abréviations
Abréviations Décompositions
AA Abonné Automate
API Automate Programmable Industriel
ACS Automate de Conduite Sécurisée
Batt. K Batterie de Condensateurs
BT Basse Tension
CES Conception et Expertise des Systèmes
CdCF Cahier des Charges Fonctionnelles
CdG (WD) Chien de Garde (ou WatchDog)
CF Contrainte Fonctionnelle
CFs Contrainte Fonctionnelle simple
CF Commande Fermeture
CO Commande Ouverture
CG Contrôle Général
CSc Contrainte de Sécurité combinée
CSs Contrainte de Sécurité simple
CSS Central Sous-Station
CLE Commande Locale Ecran
CReSTIC Centre de Recherche en STIC
DAP Déclenchement Automatique des Parallèles
Déf. C Défaut Complémentarité sur TSD ou TSS
DJ Disjoncteur
DSM Domain Specific Modeling
DT Départ Traction
EALE Equipement d’Alimentation des Lignes Electrifiées
ElPO Elément de Partie Opérative
EN Norme Européenne
FMDS Fiabilité Maintenabilité Disponibilité Sécurité
FICTIF Organe interne à l’équipement de télécommande servant de test
FIP Factory Information Protocol (RLI du SCLA)
FG Fournié Grospaud
GREMLINS GénéRateur Evolutif du Modèle et des LIvrables des Nouvelles Sous-stations
GT Groupe Traction
HT Haute Tension
IEC International Electrotechnical Commission
IFTE Installation Fixe de Traction Electrique
IHM Interface Homme Machine
IMP Interrupteur de Mise en Parallèle
IPA Interface de Programmation d’Application
LD Ladder Diagram (langage de programmation API)
LDI Led de contrôle du mode de commande « Local Individuel »
LGV Ligne à Grande Vitesse
LS Ligne Spécialisée (quarte téléphonique pour les applications SNCF)
13
Abréviations Décompositions
MDA Model Driven Architecture
MDD Model Driven Development
ODIL Outil Description d’Ilots
Organe Désigne une TC, TSS ou TM
PA Poste Asservi (aussi appelé Équipement de Télécommande)
PC Partie Commande
PLC Programmable Logic Controller, acronyme anglais pour API
PO Partie Opérative
PSIGT Département PROJETS SYSTEME INGENIERIE (SNCF)
PSIGT-TE Département PROJETS SYSTEME INGENIERIE Traction Electrique
RAP Réenclenchement Automatique des Parallèles
RFF Réseau Ferré de France
RFN Réseau Ferré National
RLI Réseau Local Industriel
RSS Régulateur Sous-Station
RTU Remote Terminal unit
RTE Réseau de Transport d’Electricité
SCLA Système de Conduite Locale et d’Automatismes
Sect Sectionneur
SePO Sous Ensemble de Partie Opérative (découpage fonctionnel GT, DT…)
SF Signalisation position fermée de l’appareil
SFC Sequential Function Chart (langage de programmation API)
SIL Security Integrity Level
SHM Système Homme Machine
SNCF Société Nationale des Chemins de Fer français
SO Signalisation position ouverte de l’appareil
SP (poste) Poste de sectionnement et de mise en parallèle
SRB Sectionneur à Rupture Brusque
SSL Signalisation Simple Locale
SCT Supervisory Control Theory
ST Structured Text (langage de programmation API)
STIC Sciences et Technologies de l'Information et de la Communication
TC Organe de Télé Commande
TCO Tableau de Contrôle Optique
TCD Télé Commande Double
TPL Tourner Pousser Lumineux
TSD Télé Signalisation Double (associée à une TCD)
TSS Télé Signalisation Simple
TM Télé Mesure
U (U1, U2) Tension (présence tension voie 1, présente tension voie 2)
URCA Université de Reims Champagne-Ardenne
UTE Union Technique de l'Electricité
XML eXtensible Markup Language
14
Symboles
S Sectionneur
Dj Disjoncteur
Int Interrupteur
Tt Transformateur en Tension
Tc Transformateur en Courant
R Redresseur
Caténaire : Ensemble distribuant le courant aux engins moteurs électriques par l’intermédiaire
de pantographes et constitué par les fils de contact, câbles porteurs, feeders, pendules et toutes
pièces intercalées entre ces éléments et les isolateurs séparant les parties sous tension des
supports ou les caténaires entre elles.
Circuit de retour du courant de traction : Ensemble des circuits électriques (rails de roulement,
connexions électriques, …) qui permettent le retour du courant de traction aux sous-stations.
15
Circuit à vide : Circuit sans débit appréciable de courant électrique.
Section élémentaire : Plus petit élément de caténaire pouvant être isolé par des appareils
d’interruptions.
Section commutable : Section caténaire pouvant être alimentée sous tensions différentes.
16
Introduction Générale
Suite à l’ouverture du marché, le Réseau Ferré National (RFN) français doit faire face à la
concurrence du transport ferroviaire européen. Afin de garder sa position de leader du marché
ferroviaire français, la Société Nationale des Chemins de Fer français (SNCF) cherche à
mettre en place des solutions innovantes permettant d’améliorer la productivité. Celle-ci ne
doit pas se faire au détriment de la sécurité des installations et des personnes dont l’ingénierie
de l’infrastructure SNCF est garante. Au sein de cette branche, le département PROJETS
SYSTEME INGENIERIE de Traction Electrique (PSIGT-TE) a pour mission de spécifier les
équipements de téléconduite, automatismes, protections Basse Tension (BT), du marché des
Equipements d’Alimentation des Lignes Electrifiées (EALE). Afin d’améliorer la productivité
et la performance, PSIGT-TE a décidé de mettre en place des solutions innovantes permettant
d’harmoniser le cadre de travail des études de conception du système de téléconduite,
automatismes, protections BT, réalisées sur les EALE au titre d’une maîtrise d’œuvre de
spécialité.
Les EALE sont les points d’alimentation en énergie électrique des lignes électrifiées, appelées
caténaires. Le rôle des EALE est de transformer, de distribuer et de redresser dans le cas
d’une alimentation continue, la tension du réseau Haute Tension en tension compatible avec
les engins de traction (1500 V continu ou 25 kV alternatif). Ces systèmes électriques sous
(très) Haute Tension sont soumis à des normes strictes de sécurité ferroviaire (EN 50126,
2012) (IEC 60870-4, 2013).
Les EALE sont des systèmes automatisés distribués dont le contrôle et la commande peuvent
se faire soit localement, soit à distance dans un poste de commande centralisé appelé Central
Sous-Stations (CSS). Les opérateurs d’exploitation peuvent manœuvrer les appareils HT
depuis cette salle de contrôle. Ils ont la responsabilité d’assurer l’alimentation des EALE en
régime nominal et dégradé (maintien de la tension caténaire), d’assurer la sécurité en cas de
travaux sur les EALE sous réglementation nationale (UTE C 18510, 1988) ou particulière
(S11, consignation C, 2012) et la coupure d’urgence en cas de danger électrique pour les
personnes et les biens.
L’objectif de ce travail de recherche, réalisé dans le cadre d’une Convention Industrielle de
Formation à la Recherche en Entreprise (CIFRE) signée entre la Direction de l’Ingénierie
SNCF et le Centre de Recherche en Sciences et Technologies de l'Information et de la
Communication (CReSTIC) de l’Université de Reims Champagne-Ardenne (URCA), est de
17
Introduction Générale
18
Introduction Générale
Nous avons dans le cadre de ce travail de recherche proposé une méthodologie originale
répondant aux trois objectifs : humain, économique et technique. Le manuscrit de thèse est
décomposé en cinq chapitres.
Le premier chapitre présente le domaine « métier » (i.e. les EALE et leurs systèmes de
contrôle/commande) qui a fait l’objet de ce travail de recherche. Nous commencerons par
présenter le réseau ferroviaire français et les types d’alimentation électrique présents. Ensuite,
l’architecture d’un secteur caténaire et d’une sous-station alimentée en 25kV ainsi que les
programmes Automates Programmables Industriels (API) permettant la commande de ce
système complexe distribué sont décrits. Pour finir, le métier des chargés d’études
d’automatisation des EALE est présenté ainsi que les difficultés qu’ils rencontrent dans la
réalisation du workflow d’un projet.
Le deuxième chapitre présente un état de l’art des voies possibles d’amélioration du métier
des EALE. Etant donné le rôle central du chargé d’études, ce chapitre commence par
présenter une approche « Système Homme-Machine » (SHM) du métier des EALE. Cette
analyse permet entre autres de mettre en évidence que la génération automatique de livrables
(codes, schémas, Interfaces Homme-Machine (IHM), …) doit contribuer a priori à la
régulation de la charge de travail mentale des chargés d’études. Par conséquent, un premier
axe d’amélioration du métier est étudié au travers de la génération automatique de livrables
(codes, schémas, IHM, …). Celle-ci repose nécessairement sur une standardisation et une
modélisation du « métier ». L’approche MDD (Model Driven Development) du génie logiciel,
au travers des architectures MDA (Model Driven Architecture) et DSM (Domain Specific
Modeling), apporte des éléments de solution. Leur pertinence vis-à-vis du domaine applicatif
est étudiée et discutée. Il en ressort que l’approche DSM, au travers des solutions logicielles
reposant sur l’utilisation de « templates métiers », semble la plus adaptée. Toutefois, il est
fondamental de générer des livrables de qualité et du code API sûr de fonctionnement. En
complément des méthodes de validation et de vérification utilisées par la communauté des
automaticiens, trois approches de synthèse de la commande (la Supervisory Control Theory
(SCT), la synthèse algébrique et la commande par contraintes logiques) permettant a priori de
répondre à ces objectifs de sûreté sont présentées et discutées. La commande par contraintes
logiques présente l’avantage majeur de séparer la sécurité (qui est vérifiée formellement hors
ligne) et le fonctionnel, et de pouvoir être utilisée avec des programmes API existants, ne
remettant pas ainsi en cause la méthodologie de développement des chargés d’études.
19
Introduction Générale
Le troisième chapitre propose une méthodologie originale pour les études d’automatisation
devant contribuer à une amélioration du métier des chargés d’études intégrant les deux voies
de progrès : génération automatique de livrables et code API sûr de fonctionnement.
L’approche DSM au travers de l’outil logiciel ODIL de la société PROSYST, a été retenue.
Celui-ci permet, à partir d’une modélisation du « métier » des EALE, de générer
automatiquement des « templates » basés sur le code API existant. En vue de s’assurer de la
qualité de celui-ci, l’outil PLC Checker, proposé par la société Itris Automation Square, est
utilisé dans un premier temps afin d’analyser les codes API existants et de vérifier le respect
de règles de programmation établies par la SNCF. Le code est ensuite formalisé par une
grammaire du langage de programmation. Le deuxième axe d’amélioration métier proposé
dans notre démarche consiste à appliquer un algorithme original (ou Design Pattern) pour
obtenir une commande sûre de fonctionnement basée sur des contraintes logiques. Pour cela,
un ensemble de contraintes de sécurité doit être défini pour chaque sortie de l’API. Cette
approche permet de séparer clairement les aspects fonctionnels et sécuritaires de la
commande. Il est alors possible d’appliquer la proposition de Design Pattern de deux façons
différentes : i) filtre de sécurité + commande par contraintes fonctionnelles, ou ii) filtre de
sécurité + commande existante.
20
Introduction Générale
œuvre sont complexes et peu lisibles. Nous proposons une nouvelle commande séquentielle
spécifiée en GRAFCET (IEC 60848, 2002). Les deux possibilités offertes par l’algorithme de
commande par contrainte sont ensuite explorées : i) la commande par contraintes intégrant les
contraintes fonctionnelles et ii) l’utilisation du Design Pattern comme filtre de la commande
actuellement implémentée par la SNCF. Pour comparer les performances des différentes
commandes proposées, le système (Partie Opérative et Partie Commande) a été modélisé au
moyen d’automates communicants et le model checker UPPAAL utilisé afin de vérifier si les
propriétés tirées du cahier de recettes du système sont formellement vérifiées par les
commandes implémentées. Les résultats obtenus mettent en évidence que le filtre de
commande permet de fiabiliser la commande existante.
Un bilan reprenant les objectifs, les propositions et les résultats obtenus dans le cadre de cette
thèse est présenté dans la conclusion générale. La démarche proposée et l’outil Odil
GREMLINS développé sont opérationnels et permettent :
1) une amélioration des conditions de travail des chargés d’études sans modifier leur métier
car les principes de développement des programmes API sont conservés.
2) un gain économique important car les temps consacrés aux études sont réduits.
3) une fiabilisation de la commande au travers de la proposition d’un Design Pattern simple à
implémenter et reposant sur un filtre à base de contraintes logiques (vérifiées formellement)
de sécurité et robuste aux erreurs de commande.
Ce travail ouvre également de nombreuses perspectives théoriques et applicatives de
recherche qui seront décrites en conclusion générale de ce document.
21
22
Chapitre 1 : Le métier des EALE
1.1 Introduction
Ce premier chapitre a pour but de décrire le domaine spécifique sur lequel nous avons
travaillé. Pour commencer, le domaine de la Traction Electrique, l’organisation du réseau
électrique et plus particulièrement l’alimentation sur laquelle nous avons travaillé par la suite,
l’alimentation en 25kV, sont décrites. Les principes et les avantages de ce type d’alimentation
sont détaillés. Dans la suite de ce chapitre, l’architecture des Equipements d’Alimentation des
Lignes Electrifiées (EALE) est présentée. Les EALE sont les installations en charge de
l’alimentation électrique des lignes de chemin de fer électrifiées. Ces installations sont
automatisées afin d’assurer leur contrôle et leur commande à distance mais également afin
d’automatiser certaines séquences de fonctionnement afin de répondre aux contraintes de
haute disponibilité du système. Les lignes sont électrifiées en permanence. La perte de
l’alimentation d’une voie lors de la circulation d’un train signifie un retard immédiat et un
risque de retard du trafic ferroviaire, c’est évidemment un événement redouté par la SNCF.
C’est pourquoi le système de contrôle/commande associé à ces installations, ainsi que les
problématiques techniques liées à ce domaine notamment en termes de sûreté du
fonctionnement, sont décrits. La fin de ce chapitre traite du métier sur lequel le projet de
recherche porte. Le périmètre de notre travail consiste à proposer des solutions pour améliorer
le métier des chargés d’études qui produisent et réalisent les études d’automatisation des
EALE. Ces problématiques techniques, économiques et humaines liées à la production des
études d’électrification des installations sont au cœur des préoccupations de ce projet de
recherche. L’objectif est d’améliorer les conditions de travail des chargés d’études tout en
diminuant le temps d’étude nécessaire et en garantissant la sûreté du fonctionnement du
système.
Au début du XXème siècle, la préoccupation principale des chemins de fer était de résoudre le
problème de la traction électrique afin de faire fonctionner les locomotives. Il existe en France
23
Chapitre 1 : Le métier des EALE
deux modes de traction pour les convois ferroviaires : électrique et thermique. Les
locomotives thermiques, « diesel », sont en complément des machines électriques.
Pour assurer la traction électrique, il est nécessaire de disposer d’un réseau de lignes
électrifiées. Le réseau est électrifié suivant deux systèmes différents :
L’un à courant continu, avec une tension de 1.5 KV,
L’autre à courant alternatif d’une tension de 25KV-50hz.
En 2012, les lignes exploitées sont estimées à une longueur de 30 000 Km, dont 14 176 Km
électrifiées et alimentés par 520 sous-stations. Parmi ces lignes électrifiées sont compris 2 034
Km de Lignes à Grande Vitesse (LGV).
Quel que soit le type d’électrification (1.5 KV ou 25KV-50Hz), un système d’alimentation
électrique est composé d’installations fixes comprenant :
les sous-stations réparties le long de la ligne ferroviaire avec des distances allant
généralement de 8 à 20 Km pour le 1.5 KV et de 40 à 90 Km pour le 25 KV,
les lignes de contact ou caténaires,
les postes assurant l’alimentation ou la mise en parallèle des caténaires,
les rails de roulement assurant le retour du courant vers la sous-station.
Les sous-stations sont les points d’alimentation en énergie électrique des lignes électrifiées.
Elles sont la propriété de RFF (Réseau Ferré de France). Leur rôle est de transformer (voir
transformer et redresser) la tension du réseau Haute Tension en tension compatible avec les
engins de traction (1,5 KV continu/ 25 KV alternatif). Les sous-stations alimentent des
tronçons de lignes, appelés secteurs.
La puissance délivrée par les transformateurs des sous-stations dépend du trafic de la ligne
qu’ils vont alimenter. En effet, plusieurs trains peuvent emprunter un même secteur, c’est
pourquoi la puissance à fournir est calculée préalablement à la réalisation de la sous-station.
24
Chapitre 1 : Le métier des EALE
25
Chapitre 1 : Le métier des EALE
Les types d’EALE qui permettent l’alimentation de la caténaire sont multiples. Chaque
installation a un rôle et des fonctions à assurer. Nous allons décrire le rôle et l’intérêt de
chaque installation.
L’architecture des sous-stations et du réseau a été pensée pour que n’importe quel secteur
puisse être alimenté en secours en situation dégradée (maintenance ou défaut sur
l’infrastructure). Ce découpage permet de séparer électriquement les secteurs entre eux et
ainsi d’assurer la maintenance d’un secteur sans bloquer l’alimentation de l’ensemble de la
ligne. Si l’alimentation d’un secteur est défectueuse un appareil de pontage entre deux
secteurs peut en faire la liaison (électriquement) pour assurer, malgré tout, son alimentation et
ainsi permettre aux trains de circuler.
La disponibilité des secteurs est l’objectif principal de l’alimentation électrique. Cette
disponibilité dépend de celle des installations amont, et de la capacité de reconfiguration du
26
Chapitre 1 : Le métier des EALE
système, réalisable par les pontages entre secteurs, leur mise en parallèle ou l’alimentation de
deux départs par le même disjoncteur comme il sera expliqué par la suite.
Pour répondre à l’augmentation des puissances appelées par les engins de traction, la solution
du transport de l’énergie de la caténaire vers les engins de traction sous une tension plus
importante fut retenue. A partir de 1950, les électrifications nouvelles sont réalisées en 25 KV
alternatif. Le courant étant redressé dans l’engin de traction pour alimenter les moteurs séries
à courant continu.
De ce fait, la distance séparant deux sous-stations s’est accrue considérablement, passant de
15 Km en 1500V continue à 65 Km en moyenne pour l’alimentation 25KV alternative.
L’emplacement d’une installation est surtout lié aux possibilités de piquage sur le réseau de
Réseau de Transport d’Electricité (RTE).
Le réseau SNCF comporte trois systèmes principaux d’alimentation des caténaires :
le courant continu 1500 V
le courant alternatif monophasé 25 KV 50 Hz
le courant alternatif 2 x 25 KV 50 Hz
C’est l’alimentation la plus ancienne qui nécessite l’infrastructure la plus importante, aussi
bien au niveau des sous-stations qu’en ligne.
Le courant 1500 V continu est obtenu par transformation et redressement d’une tension
triphasée. L’alimentation HT des sous-stations 1500 V, se fait en 15 KV, 20 KV, 30 KV, 63
KV ou 90 KV.
Le long de la voie, la répartition des sous-stations varie de 4 à 20 Km maximum. Entre
chaque sous-station, des postes de sectionnement et des postes de mise en parallèle sont
installés (Figure 3) :
Les postes de sectionnement (Poste PMPS) sont utiles pour limiter les zones privées
de tension lors des consignations établies pour l’entretien de la caténaire, ils assurent
également la mise en parallèle des caténaires.
Les postes de mise en parallèle (Poste PMP) sont installés pour diminuer la chute de
tension de la caténaire entre la sous-station et l’engin moteur ; les caténaires parallèles
jouent le rôle de feeder d’alimentation.
27
Chapitre 1 : Le métier des EALE
L’électrification monophasée 25 KV 50 Hz est apparue dans les années 1950. Du fait de son
infrastructure plus légère donc moins onéreuse, ce système d’alimentation est installé au
détriment de l’alimentation 1500 V.
L’alimentation HT des sous-stations se fait en 90 KV. La tension 25 KV alternatif est obtenue
par des transformateurs monophasés reliés à 2 phases d’un réseau haute tension.
Le long de la voie, la répartition des sous-stations varie de 40 à 80 Km maximum. Entre
chaque sous-station des postes de sectionnement et des postes de mise en parallèle (Postes SP
et SSP) sont installés pour assurer le sectionnement et la mise en parallèle des caténaires
(Figure 4).
28
Chapitre 1 : Le métier des EALE
Le groupe traction est composé d’un transformateur 225KV / 2x25 KV à point milieu de 60
MVA. Le point milieu est relié au rail et à la terre. Une sortie du transformateur alimente la
caténaire, l’autre le feeder. La tension entre la caténaire et le rail est de 25 KV, de 50 KV
entre caténaire et feeder. Les deux tensions, caténaire et feeder, sont en opposition de phases.
Le feeder alimente la caténaire à travers des auto–transformateurs. Des injections sont faites à
chaque poste SP et PMP (Figure 5), ce qui renforce la caténaire et maintien une tension
constante sur tout le secteur. Grâce à ce type d’alimentation les secteurs sont allongés tout en
disposant d’une puissance maximale sur la ligne.
29
Chapitre 1 : Le métier des EALE
En général, pour éviter les transits d’énergie la mise en parallèle de deux sous-stations est
interdite. En effet, chaque sous-station est souvent raccordée sur une phase HT différente. Sur
les secteurs 25KV et 2x25KV, les postes permettent d’optimiser l’alimentation électrique du
secteur. La différence en 2x25KV est due à l’intégration d’autotransformateurs (AT) dans
certains postes qui permettent de réinjecter de la puissance sur la ligne. Le Tableau 1 décrit les
EALE qui composent une ligne. Les postes sont décrits selon une fonction élémentaire
associée. Cependant, dans la réalité, un poste réalise plusieurs fonctions élémentaires, comme
30
Chapitre 1 : Le métier des EALE
par exemple les postes PMP 2x25KV avec AT (Figure 5) qui réalisent les fonctions de mise
en parallèle et d’injection.
Poste de sectionnement (S) Poste (au droit d’une zone neutre) assurant la séparation
et occasionnellement le pontage entre secteurs alimentés
par des sous-stations différentes.
31
Chapitre 1 : Le métier des EALE
DT
GT
HT
32
Chapitre 1 : Le métier des EALE
33
Chapitre 1 : Le métier des EALE
Un CSS pilote plusieurs EALE situés dans une zone d'action qui varie de 200 à 400 Km. Ils
sont au nombre de 17 en France. Un CSS fonctionne 24 heures sur 24, les opérateurs,
nommés régulateurs sous-stations (RSS), sont chargés de surveiller l’état des installations et
de donner les consignations aux agents chargés de la maintenance et des travaux.
Le central est composé :
D’un Tableau de Contrôle Optique (TCO) qui permet la visualisation globale de la
zone de contrôle avec l'état des appareils (disjoncteurs, sectionneurs…). Les TCO
« classiques » ont des boutons de commande intégrés (Tourner Pousser Lumineux -
TPL) qui permettent la manipulation des équipements. Dans les CSS plus récents, le
TCO est un mur d’image et les commandes se font depuis un poste informatique.
Des postes de régulation à partir desquels les régulateurs pilotent les installations à
distance.
Un local technique dans lequel des armoires permettent la communication avec les
postes distants et les sous-stations (Télécommande).
En fond de la Figure 9, se trouve le mur d’image (anciennement TCO). Tandis qu’au premier
plan, se trouvent les postes de régulation.
34
Chapitre 1 : Le métier des EALE
1.4.2.1 Le système PA
Ce système est conçu pour répondre aux fonctions de téléconduite uniquement. Il reçoit des
ordres de télécommande, Commande d’Ouverture (CO) et Commande de Fermeture (CF) et
transmet des signalisations de type TSD (TéléSignalisations Doubles) du type Signalisation
d’Ouverture (SO) ou Signalisation de Fermeture (SF) et de types TSS (Télésignalisation
simple de type absente ou présente).
Le Tableau 2 décrit de manière non exhaustive les fonctions principales attendues par la mise
en œuvre des équipements.
35
Chapitre 1 : Le métier des EALE
Extension éventuelle
Acquisition des Entrées TOR : TSD et TSS
Acquisition des entrées TM
Pupitre de commande locale individuelle
La mise en œuvre du système SCLA est décrite dans le document technique interne
(VZU13_68, 2001). Le système SCLA est, en plus de la fonction téléconduite, muni de la
fonction automatisme. Les automates reliés aux différents appareils et/ou capteurs échangent
des informations (ordres, états, mesures …) par l’intermédiaire d’un réseau FIP (Factory
Information Protocol). On distingue 6 types d’abonnés (A1, A2, …, A6) (Figure 11). Il
communique avec le CSS grâce au Remote Terminal Unit (RTU) par un protocole
propriétaire (HNZ).
Le RTU sert d’interface de zone entre la liaison HNZ (protocole de communication
propriétaire de la SNCF) et le réseau FIP de communication inter-automates (Figure 10). Le
RTU est considéré comme esclave, il répond aux interrogations du RTU maître situé au CSS.
HNZ FIP
CSS RTU PA
36
Chapitre 1 : Le métier des EALE
37
Chapitre 1 : Le métier des EALE
Le Tableau 3 présente l’ensemble des abonnés présents sur le réseau FIP du SCLA ainsi que
leurs éléments fonctionnels spécifiques. Chaque abonné a un rôle bien déterminé selon son
type comme la Figure 11 le présente.
38
Chapitre 1 : Le métier des EALE
Les abonnés sont des automates programmables industriels (API) de type ACS21, la section
suivante décrit la couche matérielle et logicielle de ces abonnés en s’intéressant
principalement à l’aspect de sûreté du fonctionnement.
Jusqu’en 2014, le type d’automates utilisé par la SNCF était l’Automate de Conduite
Sécurisée ACS21 de Leroy Automation, intégré par la société Fournié Grospaud (FG)
Energie. Un appel d’offres a été lancé en 2013 afin de renouveler le matériel utilisé.
Néanmoins, les principes appliqués au matériel jusqu’alors resteront valables. En effet, le
matériel de contrôle/commande respecte des normes spécifiques au domaine des EALE,
notamment de sûreté du fonctionnement (IEC 60870-4, 2013).
1.5.1.1 Fiabilité
L’objectif de la fiabilité est de caractériser l’aptitude d'un système à accomplir une fonction
requise, dans des conditions données, pendant un intervalle de temps déterminé. Une mesure
pratique de la fiabilité est le MTBF (Mean Time Between Failure) qui est la durée moyenne
entre deux défaillances consécutives d’une entité réparée. Pour en obtenir une valeur, on peut
recourir au taux de défaillance . Ce taux est le rapport entre le nombre de pannes pendant le
cycle de vie du composant et le temps de fonctionnement cumulé correspondant. Si est
supposé constant dans le temps (ce qui peut en général être considéré comme vrai sur la durée
de vie de la plupart des composants), la répartition des défaillances en fonction du temps est
exponentielle. D’après la norme IEC 60870-4, les équipements des EALE doivent répondre à
la Classe de fiabilité R3 soit un MTBF > 10 000 h. Cette valeur se réfère à la fiabilité d’un
équipement en mode simple pour une configuration maximale à une température externe de
55°C.
39
Chapitre 1 : Le métier des EALE
1.5.1.2 Maintenabilité
Le MTTR (Mean Time To Repair) est le temps de dépannage total mesuré pour un groupe
d’unités divisé par le nombre total de défaillances. Ce critère quantifie la maintenabilité d’un
système. Il est l’addition des composantes suivantes :
le temps administratif : période de temps entre la détection d’une panne et la
notification au service de maintenance,
le temps de transport : période de temps entre la notification au service de
maintenance et l’arrivée sur place du personnel de maintenance muni du matériel
nécessaire,
le temps moyen de réparation (MRT (Mean Repairing Time)).
Les équipements des EALE doivent répondre aux exigences de la classe de maintenabilité M3
pour laquelle le temps de réparation est ramené à 15 minutes.
1.5.1.3 Disponibilité
La disponibilité caractérise l’aptitude d'un système à être en état d'accomplir une fonction
requise, dans des conditions données, à un instant donné ou pendant un intervalle de temps
déterminé, en supposant que la fourniture des moyens extérieurs soit assurée. La disponibilité
intrinsèque est exprimée numériquement à l’aide de la formule :
MTBF
A 100
MTBF MTTR
L’ensemble de l’équipement de télécommande doit répondre à la classe A3 (Disponibilité
supérieure à 99,95%).
40
Chapitre 1 : Le métier des EALE
Le comportement de l’équipement doit correspondre au type 3 prévu dans la norme NFC 63-
850, c'est-à-dire « que le défaut doit être détecté, signalé et les sorties doivent prendre un état
0 sur défaut interne ».
Assurer l’intégrité des données commence par l’acquisition sécurisée des entrées et la
transmissions sécurisées des ordres. Ce paragraphe décrit les principes mis en place pour
assurer cette intégrité.
41
Chapitre 1 : Le métier des EALE
Les modules 4TCD/TSD (Figure 12) sont des cartes d’entrées/sorties sécurisées adaptées à la
commande de quatre appareils. Chaque appareil est connecté en face avant du module par un
câble qui part du bornier de l’appareil (face arrière du châssis) jusqu'à l’automate.
Ce module permet d’envoyer des ordres de Commande d’Ouverture (CO) et de Commande de
Fermeture (CF) vers quatre appareils. Il permet également de vérifier l’état des appareils au
travers des Signalisations Ouverte (SO) et Signalisation Fermée (SF). Une led Local Distant
Individuel (LDI) permet pour chaque organe de vérifier si le contrôle de l’appareil est en
commandé en local individuel. Une led d’avertissement Watchdog local (Wdl) permet de
vérifier le bon fonctionnement de la carte.
Un module de type TéléCommande Double (TCD) restitue des ordres issus de télécommande
et/ou de séquences d’automatismes. Il réalise l’acquisition des états de position (TSD) de
l’organe pris en compte, pour un traitement d’automatismes et/ou de télésignalisations.
42
Chapitre 1 : Le métier des EALE
Entrées
C24V= Electronique
Com (*) de Signalisation
C48V=
C125V=
Les travaux réalisés pendant cette thèse ont été appliqués pour l’automate exploité et seront
appliqués pour les futurs automates. Les programmes, quel que soit l’API utilisé, devront
respecter les principes et la structure présentés dans cette section.
En dehors des abonnés RTU et TCO, chargés avec un programme applicatif dédié et
immuable, les abonnés automates ont besoin d’être préalablement initialisés avec un
programme appelé « Noyau ISaGRAF » permettant ainsi de charger dans chaque abonné
automate l’applicatif élaboré à partir du logiciel ISaGRAF de la société ICS Triplex.
Le noyau gère dans chaque abonné :
Les mémoires (RAM, FLASH, EEPROM)
Les ports de communication (FIP, Modbus, RS485,…)
Les cartes Entrées/Sorties
Cycle automate
Watchdog
Il assure les liens entre les séquences d’automatismes provenant de l’atelier ISaGRAF et les
fonctions de lecture ou d’écriture sur FIP, les échanges des informations des ports Modbus,
les fonctions de lecture ou d’écriture en EEPROM…
43
Chapitre 1 : Le métier des EALE
L’exécution des programmes des API cibles d’IsaGraf 3.32 est cyclique comme le montre la
Figure 14. L’exécution des programmes est découpée en trois phases distinctes. Ces trois
phases permettent de séparer les programmes en fonction de leur rôle.
44
Chapitre 1 : Le métier des EALE
La Figure 15 donne un aperçu des programmes qui composent un cycle API pour le
contrôle/commande des EALE. Ces programmes sont décrits dans trois sous-paragraphes
pour les démarquer selon la phase du cycle à laquelle ils interviennent (début, séquentiel et
fin).
45
Chapitre 1 : Le métier des EALE
46
Chapitre 1 : Le métier des EALE
La séquence télégestion fige l’état des positions des appareils pendant 5 secondes afin
d’enregistrer les changements de positions et de les envoyer à la télégestion.
La séquence « PCL_OUT » crée les variables analogiques utilisées lors de la connexion en
local individuel à l’automate, c’est-à-dire lorsqu’un poste de commande local est connecté à
l’automate.
La séquence « FIP_OUT », fonctions d’écriture sur le réseau FIP est chargée de renvoyer des
informations pouvant être consommées par les autres abonnés, en outre :
Ecriture des TSD distantes
Ecriture des TSD locales
Ecriture des TSS
Ecriture des SSL (signalisations simples locales (messages afficheurs)
Construction des réflexes (variables de déclenchement d’un appareil)
Ecriture des réflexes
Ecriture des SSI (variable LDI)
Ecriture des SYS (Défaut Carte)
Ecriture des analogiques
Ecriture des infos télégestion
47
Chapitre 1 : Le métier des EALE
La séquence « défaut carte » force toutes les sorties de l’abonné à leur état de sûreté,
désactivée, en cas de détection d’un défaut sur une carte de l’API.
1.6.2 Synthèse
48
Chapitre 1 : Le métier des EALE
49
Chapitre 1 : Le métier des EALE
Annexe 10. Cette surcharge de travail est due aux différents projets qu’ils ont à mener en
parallèle.
Tableau 4 : Temps limité pour chaque étape du projet
Phases d'un projet Temps estimé
par projet (en
heures)
Pré-études 70h
CdCF et liste matériel 40h
Schémas généraux 30h
Etudes 80h
Validation schémas 30h
Programmes et fichier de 50h
paramétrage
Vérifications 80h
Cahier de Recette 40h
Essais Usine 40h
Corrections 20h
Corrections 20h
Validations 40h
Essais Site 40h
Ce travail de conception et d’étude des EALE, réalisé par les chargés d’études, nécessite une
forte activité intellectuelle pendant toute la durée du projet et une concentration pour ne pas
commettre d’erreurs. Cette concentration peut être altérée par différents éléments. L’élément
le plus probant d’altération de cette concentration, réduisant l’efficacité du chargé d’études est
la pluralité des projets en cours qu’il doit réaliser dans un temps limité. En effet un nombre
d’heures est alloué à chaque tâche d’un projet, en fonction de la complexité de la structure de
l’EALE. La notion de deadline peut entrainer un stress supplémentaire (Sargent et Terry,
2000). Ne serait-ce qu’au sein du « workflow » du projet, la multiplicité des outils
informatiques de réalisation des différentes tâches n’aide pas le chargé d’études à optimiser
son temps de travail. Le changement d’outil peut entrainer une perte d’informations et des
50
Chapitre 1 : Le métier des EALE
erreurs de recopie. De plus une relation a été montrée entre la multiplication des ressources et
le travail de mémorisation (Baddeley, 1990) pouvant mener à une surcharge mentale (Young
& Stanton, 2001).
Cette pluralité des outils, indispensable pour fournir les différents livrables (documents,
programmes, schémas électriques…), entraine également une saisie multiple des mêmes
informations concernant un même projet. Cette répétitivité d’actions, en plus d’être source
potentielle d’erreurs et une perte de temps, nuit à la concentration ainsi qu’à l’intérêt que le
chargé d’études porte à son travail par le manque de valorisation et de reconnaissance. Sa
charge de travail mentale est de ce fait réduite, il s’agit de sous charge mentale (Stanton,
Young & McCaulder, 1997). Ces notions de charge mentale seront définies dans le chapitre
suivant, dans la partie traitant de l’aspect humain. De plus, les chargés d’études forment une
équipe mais travaillent séparément ce qui peut entrainer des différences d’interprétation des
principes mis en place.
1.8 Conclusion
Comme nous venons de le voir, le workflow suivi pas les chargés d’études est composé de
phases nécessitant une forte concentration mais également de phases répétitives. Cette
variation de charge mentale n’est pas optimale pour la concentration des chargés d’études. Le
nombre d’outils menant à la saisie multiple des mêmes données d’entrée est également source
d’erreurs. Une solution permettant d’obtenir un environnement de saisie unique des données
d’entrées au travers d’une modélisation graphique semble donc intéressante. A partir de cette
saisie unique, la génération de documents tels que le cahier de recette, long et fastidieux à
écrire, peut offrir une alternative au workflow actuel que les chargés d’études accepteraient
d’intégrer dans leur travail.
Par optimisation de la production est sous-entendu un gain de temps de production des études
mais aussi une amélioration de la standardisation des études, qui mène a posteriori au même
51
Chapitre 1 : Le métier des EALE
objectif. Une solution pouvant mener à la résolution de cette problématique est la génération
de code API et de livrables des projets.
Les EALE sont des systèmes complexes, cependant leur structure est décomposable. Par cette
propriété, liée à l’aspect distribué de l’architecture de contrôle/commande/protection, un
travail sur la génération de code distribué est envisageable. L’aspect structurel et
décomposable en objets des installations est un aspect nécessaire et suffisant pour la
génération documentaire.
La sûreté des installations est également améliorable par la standardisation des principes et
des programmes. La génération de code est également considérée dans les moyens menant à
une évolution de la sûreté du fonctionnement du système.
Pour mettre en place ces deux propositions, qui ne sont pas décorrélées, une méthodologie
pour les études d’automatisation sera proposée dans le Chapitre 3. Les travaux qui ont inspiré
ce travail pour établir une méthodologie menant à la résolution des problématiques exprimées
par la SNCF, sont présentés dans le chapitre suivant.
52
Chapitre 2 : Etude des voies d’améliorations possibles du
métier des EALE
2.1 Introduction
Dans le chapitre précédent, les enjeux du domaine des Équipements d’Alimentation des
Lignes Electrifiées (EALE) ont été présentés. Les conditions de travail des chargés d’études,
l’optimisation de la production et la sûreté du fonctionnement sont les problématiques
auxquelles nous désirons apporter des éléments de solutions dans le cadre de ce travail de
recherche.
Les programmes des Automates Programmes Industriels (API) des EALE sont aujourd’hui
écrits par les chargés d’études. Ils s’inspirent de programmes existants d’installations
similaires ayant été validés en usine puis sur site. Cette façon de travailler, est critiquable car
elle ne permet pas de garantir la qualité des livrables et entraine une surcharge de travail des
chargés d’études comme cela a été montré dans le premier chapitre.
Ce chapitre présente les voies de progrès explorées afin de répondre à ces problématiques.
L’optimisation de la production des études d’électrification nécessite de prendre en
considération l’aspect économique, technique mais également humain.
L’approche présentée dans ce manuscrit propose et intègre deux axes d’amélioration visant
d’une part à augmenter la productivité tout en améliorant les conditions de travail des chargés
d’études, et d’autre part à garantir la sûreté de fonctionnement du système.
Le premier axe retenu est la génération automatique des livrables (documentation, schémas,
cahier de recettes…) et plus particulièrement du code API, réalisés par les chargés d’études.
C’est un moyen de réduire le temps de travail des chargés d’études en leur évitant des tâches
souvent routinières. Cette amélioration des conditions de travail devrait entrainer une
régulation et une amélioration de leur charge de travail mentale en évitant les erreurs
consécutives à la sous-charge et à des pics de surcharge. Toutefois, cela entraîne une
modification de leurs activités qui doit être acceptable et acceptée. Ce travail s’est présenté
dans une conjoncture favorable pour être accepté par les chargés d’études étant donné leur
53
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Le deuxième axe concerne la commande. En effet, l’écriture des programmes API est
aujourd’hui une des tâches essentielles des chargés d’études. Il est fondamental, si nous
désirons automatiser partiellement ou totalement cette activité, de générer du code API de
qualité et standardisé tant sur le plan de l’écriture (respect de règles génériques ou métiers,
lisibilité, commentaires, absence de code mort) que du fonctionnel (code vérifié, validé, sûr
de fonctionnement et robuste aux erreurs des opérateurs humains des CSS).
Les aspects économiques, techniques et humains sont donc étroitement liés dans la recherche
d’outils et de solutions pour les chargés d’études responsables du contrôle/commande des
EALE. La première partie du chapitre s’intéresse aux EALE sous l’angle « Système Homme-
Machine » (SHM) en détaillant les composantes techniques et humaines. Ce travail permet
d’orienter les choix de solutions pour les 2 voies d’amélioration proposées.
54
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
55
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
L’automatisation des EALE est confrontée à la même difficulté que l’automatisation des
systèmes manufacturiers. La qualité des études doit être améliorée tout en ayant un coût
moindre. Il s’agit donc de réduire le temps d’étude tout en assurant la sûreté du
fonctionnement et la sécurité du système. L’automatisation des EALE doit donc répondre à
des objectifs économiques et techniques. Les objectifs économiques s’intéressent aux
bénéfices financiers de l’entreprise et portent sur la diminution des coûts de fonctionnement,
gain de temps sur les études, amélioration structurelle du système, recherche de solutions
économes, … Les objectifs techniques sont liés au processus de conception de la Partie
Commande. Pour les atteindre, il est nécessaire de travailler sur :
L’automatisation des EALE, comme nous l’avons vu, ne peut pas être considérée sans
prendre en compte la composante humaine et les conditions de travail des chargés d’études.
Les études EALE et les essais contiennent aujourd‘hui des tâches stressantes, répétitives,
pénibles pour les chargés d’études. Nous proposons d’analyser leur activité au travers du
concept de la charge de travail utilisé dans l’analyse des Systèmes Homme-Machine. Il s’agit
d’une notion complexe dont l’usage a été étendu à plusieurs secteurs de la psychologie et de
56
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
57
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
doivent être réduites au maximum dans la réalisation de systèmes sécuritaires. Bien qu’elles
puissent être décelées lors des essais de validation, il est préférable de les inhiber en amont.
Le travail de conception et d’étude des EALE, réalisé par les chargés d’études, nécessite en
moyenne une forte activité intellectuelle pendant toute la durée du projet et une concentration
pour ne pas commettre d’erreurs. Cette concentration peut être altérée par différents éléments
parmi lesquels on peut citer la pluralité des projets en cours qu’il doit réaliser dans un temps
limité. En effet un nombre d’heures est alloué à chaque tâche d’un projet, en fonction de la
complexité de la structure de l’EALE. Le stress dû aux « deadlines » (Sargent & Terry, 2000)
peut conduire à une surcharge mentale. Une autre difficulté rencontrée par le chargé d’études
concerne la multiplicité des outils informatiques de réalisation des différentes tâches au sein
du « workflow » du projet. Cela ne l’aide pas à optimiser son temps de travail. Le changement
d’outil peut entrainer une perte d’informations et des erreurs de recopie. A ce sujet, une
relation a été montrée entre la multiplication des ressources et le travail de mémorisation
(Baddeley, 1990) (Wickens et al., 1998) pouvant mener à une surcharge mentale (Young &
Stanton, 2001).
Il est donc concevable que la tâche cognitive de conception des EALE pourrait être assistée
par un outil logiciel afin d’éviter une surcharge de travail, mais également les erreurs de
routine (Coupat et al., 2013). L’homogénéisation des documents et des livrables, et leur
génération automatique semblent être une solution pertinente car elle permet de gagner en
performance et en qualité, et facilite la lecture d’un projet par l’ensemble des intervenants.
Toutefois, ce travail ne peut pas se faire sans standardisation et peut conduire à une
modification des activités des chargés d’études qu’il convient d’évaluer.
58
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Naturellement, une diminution du temps de réalisation des études conduit à une diminution
des coûts. Actuellement, une partie importante du temps d’étude est consacrée à un travail
répétitif. La standardisation permet la réutilisabilité et par là même la génération automatique
(de documents, codes, …). Il s’agit de thèmes de recherche d’actualités, porteurs d’enjeux
industriels importants, car ils contribuent à l’amélioration de la qualité et de la maintenabilité
tout en diminuant le temps de développement. Toutefois, ce problème est étroitement lié au
domaine applicatif et, reste encore ouvert. En effet, la technologie évolue sans cesse et
rapidement, tout comme les processus d'étude du domaine spécifique (c’est le cas des études
d’automatismes des EALE). La première raison qui explique que ce problème n'a pas encore
été résolu est la diversité technologique qui existe dans le milieu industriel. Chaque appareil a
un fonctionnement différent et donc une commande spécifique. Cette diversité conduit à une
nouvelle phase d’étude du système à chaque changement d'architecture technologique ou
typologique. En second lieu, même si le domaine spécifique est décrit à l'aide des outils
« traditionnels » du domaine, les modèles ainsi obtenus ne servent en général que de
documentation, de sorte qu'ils ne sont pas transformables en code de programme exécutable
par exemple. Le problème le plus observable est généralement le manque de spécifications
complètes et exactes décrivant les objectifs fonctionnels et sécuritaires des programmes ou
encore l’architecture que les programmes doivent suivre. Par conséquent, la difficulté majeure
du développement de logiciels spécifiques à un domaine métier est dû à un espace sémantique
entre les modèles et le langage de programmation (Bajovs et al., 2013), qui permet la
transformation de la description du domaine spécifique en code exécutable.
L'esprit humain perçoit l'information graphique bien mieux que l’information textuelle
(Bajovs et al., 2013). C’est pourquoi il est utile de décrire un système au travers un modèle
pendant sa phase de description. Le langage de modélisation unifiée (Unified Modeling
Language – (UML, 2011)) est très employé en génie logiciel pour modéliser les systèmes
orientés objets. L’UML a été créé non seulement comme outil de spécification de systèmes,
mais également comme outil permettant de produire automatiquement le code associé aux
modèles UML. On notera le développement de SysML (Pearce & Friedenthal, 2013) qui
59
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
reprend et adapte les concepts d’UML pour la conception dans le domaine de l’ingénierie des
systèmes.
Dans notre cadre d’étude, la génération de code API est un verrou technologique à lever sur
lequel une solution doit être apportée pour la SNCF. C’est pour cela que dans la suite de ce
chapitre nous focaliserons plus particulièrement le propos sur la génération de codes
informatiques. Toutefois, la standardisation doit également permettre la génération de la
documentation, des Interfaces Homme-Machine et du cahier de recette, qui sont également
des activités chronophages et sources d'erreurs pour les chargés d'études.
Générer complètement du code à partir des modèles est un objectif industriel depuis de
nombreuses années. Les modèles servent de mécanismes à une meilleure compréhension et
une meilleure documentation, mais ils peuvent également être employés pour produire du
code complet et fonctionnel. Ceci automatise le développement menant à une amélioration en
productivité, en qualité et en dissimulation de la complexité. L'organisation OMG donne la
définition suivante d'un modèle (UML, 2011) : « Le modèle d'un système est une description
ou des spécifications de ce système et de son environnement pour certains objectifs ». (Völter
et al., 2013) insiste sur l'importance de l’utilisation de la modélisation en général dans le
développement de logiciel moderne en écrivant : « Sur la base des années de ma propre
expérience, aussi bien que sur l’expérience de la communauté globale du développement
dirigé par les modèles (Model Driven Development – MDD), je suis convaincu que le MDD
est un pas dans la bonne direction et provoque des améliorations significatives de la
productivité, de la qualité et de l’ensemble du système ». Selon (Völter & Groher, 2007), la
modélisation en MDD est compacte et formelle en même temps. Elle contient la signification
précise du code de programme de sorte que le modèle ne soit pas seulement une
documentation mais aussi une partie du logiciel. Le MDD est apparu parce qu'il y avait la
nécessité pour diminuer les efforts, de créer et d’employer des modèles d'analyse et de
conception à chaque étape du processus d’étude et de développement des programmes et
d'automatiser la transformation des modèles (Eveleens & Verhoef, 2010).
En informatique l’UML est un langage de modélisation graphique à base de pictogrammes. Il
est utilisé en développement logiciel, et en conception orientée objet. L’UML est couramment
utilisé dans les projets logiciels. Malheureusement, les outils actuels d’UML sont basés sur les
60
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Ce paragraphe décrit les principes de MDA et de DSM et les normes associées à la génération
de code, qui ont été créés par l’organisation OMG. L'importance de la génération de code a
été justifiée dans la section précédente par son intérêt qualitatif, productif et pérennisant. En
raison de l'importance de ce processus, les techniques, les méthodes et les approches relatives
ont été étudiées. Plusieurs solutions permettant d’atteindre l’objectif de génération de code
ont été étudiées.
61
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Le MDA propose de construire quatre modèles de base pour le système développé. La Figure
18 présente un exemple emprunté à la banque.
62
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
d'exécution. Pour le modèle bancaire, le PSM correspond aux modèles des sous-tâches
PIM convertis dans le langage de programmation adapté (java, C++, php…).
Un ou plusieurs codes sources qui représentent le résultat final du processus MDA, le
code source est obtenu par génération automatique (partielle ou totale) du code de
l'application à partir du PSM. Le code source obtenu peut toujours être enrichi ou
modifié manuellement. Les modèles PSM permettent de générer le code associé aux
sous-tâches comme une interface de banque en PHP et les applications d’analyse des
données en Java, C++…
Les composants de MDA, visibles sur la Figure 18, représentent toutes les activités incluses
dans le processus de développement MDA. Les modèles CIM, PIM et PSM constituent les
étapes principales de l'approche MDA. Chacun de ces modèles contient des informations
nécessaires à la génération du code source de l'application. Le code est obtenu par génération
automatique à partir du PSM. Le PSM est obtenu par transformations successives des modèles
CIM vers PIM et des modèles PIM vers PSM. La transformation de modèles est une étape
importante du processus MDA, c'est grâce aux transformations que les modèles deviennent
des éléments productifs de MDA. L'exécution des transformations permet d'assurer un lien de
traçabilité entre les différents modèles du processus MDA. Ces liens sont un gage de qualité
du processus de développement logiciel dans le MDA.
Transformations CIM vers PIM : Les modèles CIM expriment les besoins du métier.
Cette étape consiste à construire, partiellement, des modèles PIM à partir des CIM. Il
s’agit de la transcription des spécifications du métier vers un modèle qui permette de
les prendre en compte quelques soient les contraintes techniques.
Transformations PIM vers PSM : Cette étape consiste à créer des modèles PSM à
partir des informations fournies par les modèles PIM, en y ajoutant des informations
techniques relatives à la plateforme d'exécution cible.
Transformations PSM vers code : La transformation des modèles PSM en code source
consiste à générer le code source de l'application, de façon totale ou partielle, à partir
des modèles PSM de l'application.
Cette dernière étape n'est pas à proprement dit considérée comme une transformation par
MDA. En effet, une transformation selon MDA est définie par la transformation d'un modèle
vers un autre modèle, chacun d'eux étant structuré par leur méta-modèle (Bévan, 2013). Or le
code source n'a pas de méta-modèle, la transformation des PSM vers le code est plutôt
considérée comme une retranscription textuelle du modèle PSM.
63
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
La philosophie soutenue par le DSM pour résoudre les problèmes de génération est d’élever le
niveau d’abstraction des modèles. Les modèles ne devraient pas être conçus pour visualiser
les langages de programmation (comme l’UML), mais pour décrire les abstractions de plus
haut niveau du domaine spécifique.
Dans le DSM, et c’est là l’originalité, les éléments de modèle représentent des éléments du
domaine spécifique, pas des éléments de programmes, voire de code. Le langage de
modélisation suit les abstractions et la sémantique de domaine spécifique, permettant aux
concepteurs de modèles de travailler directement avec les concepts de domaine. Les règles du
domaine peuvent être incluses dans le langage comme contraintes, rendant impossible la
spécification de modèles illégaux ou non désirés. Le rapprochement entre le langage du
domaine et le domaine spécifique du métier permet d’élever davantage le niveau
d’abstraction. Cet intérêt majeur est la clé d’une productivité améliorée, d’une meilleure
dissimulation de la complexité, et d’une meilleure qualité de système.
Le plus haut niveau de l'abstraction varie entre les applications et les produits. Chaque
domaine contient ses propres concepts et contraintes spécifiques de conception. Par
conséquent, le langage de modélisation doit être spécifique pour chaque domaine. Prenons un
exemple proposé par (Tolvanen, 2005). Si nous devions développer un portail pour la
comparaison de produits d'assurance, pourquoi ne pas employer la terminologie d'assurance
directement dans le langage de conception ? Les concepts tels que « Risque », « Bonus »,
« Malus », « Dégâts » communiquent mieux le langage des assurances que les concepts de
classes Java. Un langage spécifique aux assurances peut également garantir que les produits
modelés sont valides : l'assurance sans bonus n'est pas un bon produit, ainsi un tel produit
devrait être impossible à concevoir (contrainte du langage). Ces concepts de domaine sont en
général déjà connus et déjà utilisés, ils sont plus naturels et reflètent déjà les modèles
fondamentaux requis pour concevoir les produits. Le code final peut être généré à partir de
ces caractéristiques de haut niveau. La pierre angulaire pour la génération automatisée de
code à partir des modèles est que le langage et les générateurs ont besoin de répondre
uniquement aux exigences du domaine spécifique du métier.
64
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
On peut supposer que plus le niveau d’abstraction est élevé plus le gain en productivité est
fort. En effet, les changements de spécifications concernent habituellement le domaine
spécifique du métier et non les outils de modélisation. De plus, des modifications dans le
langage de modélisation qui emploie les termes du domaine spécifique sont plus faciles.
Enfin, dans un domaine complètement spécifié, les non-programmeurs peuvent définir les
caractéristiques complètes d’un système et utiliser un Générateur basé sur le DSM pour
générer l’intégralité du code.
Le DSM réduit le besoin d'apprendre une nouvelle sémantique. Les concepts du domaine du
métier sont en général déjà connus et employés, une sémantique bien définie existe et est
considérée comme « naturelle » puisqu’elle appartient aux utilisateurs du métier. Puisque la
65
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
sémantique du domaine spécifique doit être maîtrisée autant l’utiliser pour en faire un modèle
de haut niveau. Cette vision spécifique différencie le DSM et le MDA.
Le DSM mène à un système de meilleure qualité, principalement pour deux raisons. D'abord,
le DSM peut inclure des règles d'exactitude du domaine spécifique, empêchant la définition
de caractéristiques illégales ou non désirées. En second lieu, les générateurs sont basés sur les
prototypes de code source établis par le métier, à un niveau plus proche du code, et le résultat
produit n'a pas besoin d'être édité par la suite (si le comportement intégral du système a été
modélisé).
Les spécifications écrites à partir du langage spécifique du métier sont normalement plus
lisibles, compréhensibles, appréhensibles, validables et communicables (Tolvanen, 2005).
Après avoir décrit les grands principes du DSM nous pouvons maintenant le comparer à
d'autres approches basées sur des modèles, notamment l’approche MDA. Fondamentalement,
le MDA implique de transformer des modèles d'UML d’un plus haut niveau de l'abstraction
en modèles d'UML d’un niveau d'abstraction plus bas. Généralement il y a deux niveaux
d’abstraction, les PIM et les PSM. Ces PIM et PSM sont des modèles UML simples et
n'offrent ainsi aucun gain d’abstraction.
Dans le MDA, à chaque étape les modèles sont enrichis pour, à la fin, produire un code
substantiel à partir du modèle final. Le but de l'OMG avec le MDA est de permettre
d'employer le même PIM pour différentes plates-formes logiciel et de normaliser toutes les
transformations et les formats de modèles de sorte que les modèles deviennent portatifs entre
les outils de différentes sociétés. Cette réalisation est très ambitieuse mais également loin
d’être achevée. Cette vision presque antagoniste à celle du DSM qui se concentre sur un
domaine spécifique établit clairement la différence entre les deux philosophies.
Le DSM exige l'expertise de domaine, une capacité qu'une société peut acquérir seulement en
travaillant sans interruption dans le même domaine de métier. Ce qui est typiquement le cas
de l’ingénierie technique, garante du savoir-faire métier. L'indépendance peut être facilement
réalisée avec le DSM en ayant différents générateurs de code pour différentes plates-formes
de logiciel et/ou de produit. Mais surtout le DSM répond particulièrement aux besoins
exprimés pour les études EALE qui est d'améliorer de manière significative la productivité, la
qualité des études tout en conservant le langage et le vocabulaire technique établis du métier.
66
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Le MDA ne se concentre pas sur l’utilisation de langages spécifiques aux métiers mais sur
l’UML générique. Il ne regarde pas comment encapsuler l'expertise de domaine qui peut
exister dans un métier. Le MDA exige une connaissance profonde de sa méthodologie,
connaissance externe à la société qui doit être acquise par expérience. Ainsi, tandis que
l'expertise de domaine requise pour le DSM est déjà disponible et appliquée dans la société,
l'expertise de MDA doit être acquise ou achetée à l'extérieur.
Lorsque l’organisation OMG a lancé le MDA, elle a également décrit comment fonctionne
l’architecture MDA. De nos jours plusieurs normes liées à la génération de code existent
(OMG, 2012), mais aucune méthode ne peut fournir les directives complètes sur la manière de
convertir toute cette théorie en pratique. Cependant, les diverses méthodes et techniques
existantes essayent de définir certains aspects importants du procédé de génération de code.
Selon (Czarnecki & Helsen, 2003), les deux approches principales de génération de code sont
l’approche « visitor-based » et l’approche « template-based ».
L’approche « visitor-based » propose de générer le code à partir d’une représentation textuelle
du modèle.
L'approche « template-based » est l’approche la plus utilisée et permet de générer le code
pour les systèmes complexes. Cette approche implique d’écrire des canevas ou prototypes
textuels spéciaux (templates), qui forment fondamentalement un ensemble de règles. Ces
règles spécifient la manière de générer le code d'un modèle spécifique. Cette approche semble
la plus adaptée aux systèmes dont il faut conserver le savoir-faire métier et respecter les règles
d’écriture établies.
Cinq types différents de générateurs de code peuvent être choisis (Herrington, 2003) :
1. Le « code-munger » est le plus simple de ces derniers. Le « Mung-ing » signifie
transformer une chose d'une forme en une autre forme, ainsi le générateur parcourt le
fichier et recherche des mots clés ou des signets pour les remplacer par le contenu à
générer vers le fichier de sortie. Ce genre de générateur peut être employé pour
67
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
68
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
(Volter, 2011) et (Küster, 2011) décrivent les techniques de génération de code telles que :
La technique basée sur les templates et le filtrage (Figure 20) définit des sections de
code source généralisées comme canevas textuels. Pendant le procédé de génération
de code, les variables de ces canevas sont associées au modèle de système.
69
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
70
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
(Völter, 2011) établit une comparaison synthétique des différentes techniques de génération
(Tableau 5) selon trois critères :
difficulté d’apprentissage,
utilisabilité pour les systèmes complexes,
utilisabilité pour la transformation du modèle vers le code.
Template +
Haute Très bonne Très bonne
Méta-Modèle
Basée sur les IPA Dépend des IPA Dépend des IPA Pas très bonne
Le Tableau 5 met en évidence l’intérêt de l’approche par templates et méta-modèles par son
applicabilité aux systèmes complexes et sa capacité à transformer le modèle en code. Bien que
cette méthode soit considérée comme compliquée, elle est la meilleure option pour répondre
aux problématiques de génération de code.
(Bajovs et al, 2013) ont réalisé une étude comparative des outils de génération de code tels
qu’IBM Rational Software Architect 8.0, Sparx Enterprise Architect 9, Microsoft Visual
Studio 2010 et Eclipse 3.7.2. Leur conclusion montre que la complexité de ces outils n’aide
pas le monde industriel à pousser leur utilisation jusqu’à une génération de code aboutie. Ces
outils intègrent de multiples fonctionnalités mais ils ne prennent pas en compte les
particularités des plateformes spécifiques cibles. Ils peuvent réaliser différentes tâches mais
demandent l’application immédiate d’un haut niveau technique.
Cette complexité des outils et cet aspect multifonctions trop complexe ne correspondent pas
aux attentes d’un outil spécifique de génération adapté à un métier. Nous nous sommes alors
orientés vers un environnement progiciel dédié à la génération de code à partir d’une
approche DSM à base de méta-modèle et de templates.
71
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
72
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
projet les problèmes associés aux espaces libres, aux interférences et les autres problèmes
potentiels de construction.
En remplaçant la conception assistée par ordinateur (CAO) 2D traditionnelle, les flux de
travaux sur papier et les collections disparates de logiciels, par des outils 2D et 3D avancés
intégrés dans Bentley Substation, les équipes projet peuvent réduire la durée de conception
des systèmes électriques de sous-station.
Malheureusement cet outil dépasse notre périmètre d’action. Sa mise en œuvre nécessiterait
de modifier complètement les processus établis au sein de l’ensemble du département
PROJETS SYSTEME INGENIERIE de Traction Electrique (PSIGT-TE). Cet outil intègre
des modèles déjà existants, il faudrait alors que les chargés d’études s’adaptent à l’outil. Ce
qui ne correspond pas à la philosophie que nous souhaitons suivre.
Dans le domaine des sous-stations, la norme (IEC 61850, 2010) définit les standards de
communication. L’IEC 61850 a le potentiel de réduire de manière significative les coûts de la
planification, et peut permettre de configurer et d’améliorer le système d'automatisation de la
sous-station par la suite. L’expérience du terrain semble montrer que l'utilisation du format de
fichier standard (IEC 61850-6, 2010) : Substation Configuration Language (SCL) et de la
capacité d'auto-description du protocole peut réduire le temps requis pour installer le
dispositif de protection qui est une partie de la sous-station de 75% ou plus. Cependant il
existe encore peu d’outils intégrant les standards et les caractéristiques de description de la
norme IEC 61850. En effet, la mise en œuvre de l’IEC 61850 nécessite un matériel approprié
compatible mais également un outil de configuration logiciel adapté. Le développement des
produits compatibles IEC 61850 a suivi un modèle assez simple, les premiers équipements
étaient dédiés à une fonction particulière et développés pour être compatibles avec les
standards, comme par exemple les relais de protection. Les premiers outils de configuration
développés ont donc seulement dû prendre en compte quelques options des équipements
compatibles pour établir un modèle objet complet de la norme IEC 61850. L'utilisateur peut
choisir, par exemple, quels paramètres de protections à activer. L'outil de configuration
exploite ces quelques modifications pour établir automatiquement l'ensemble de données que
le dispositif produit sur le réseau. Au début, la vue de certains équipements compatibles IEC
61850 était fixe, sans options à spécifier. Avant de pouvoir utiliser la norme IEC 61850, il
faudra donc commencer par l’enrichir pour que le modèle objet considère toutes les options
possibles des équipements des EALE.
73
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Une telle approche fonctionne très bien pour un appareil électronique intelligent spécialisé
(Intelligent Electronic Device - IED), mais pas aussi bien pour des dispositifs devant être plus
flexibles. Les dispositifs tels que les interfaces utilisateurs de sous-station, les convertisseurs
de protocole (RTU), les API doivent agir en tant que clients de l’IEC 61850, recueillant des
données de dizaines d'appareils électroniques intelligents (IEDs). Ils doivent lire les données
et les écrire dans leurs bases de données internes ; ils peuvent afficher les données ou les
traiter avant de les transmettre. Le nombre de type d’IED varie considérablement dans une
sous-station. Tandis que la norme IEC 61850 normalise comment les données devraient être
appelées et structurées, les spécifications de la norme concernant les appareils laissent la plus
grande liberté aux fournisseurs. Ainsi ils peuvent ajouter ou enlever des options de certains
appareils. Le nombre d’options n’étant pas limité, cela complexifie davantage la description
de l’installation.
L’idée intéressante de la norme IEC 61850 qui consiste à décrire la sous-station à partir des
équipements qui la compose correspond tout à fait à ce que nous souhaitons obtenir. La
structuration définie par la norme IEC 61850 ne correspond cependant pas à nos attentes par
rapport à l’aspect distribué du système de contrôle/commande. De plus, aujourd’hui les
équipements utilisés par la SNCF ne sont pas compatible avec cette norme. L’intégration des
standards IEC 61850 dans notre projet de recherche aurait pu être une piste intéressante mais
n’est pas envisageable dans l’état actuel des EALE.
Dans le secteur ferroviaire, Esterel Technologie a mis au point une méthode nommé SCADE
(Safety-Critical Application Development Environment). Cette méthode consiste à générer
automatiquement le code d’une application à partir d’un modèle formellement vérifié. Ainsi
les erreurs sont détectées au plus tôt. Le langage SCADE est graphique, ce qui permet à tous
les acteurs du projet de comprendre le sens du diagramme qui doit correspondre à leur métier.
Le langage SCADE inclut les flux de données et les machines à états. Le logiciel intègre des
vérifications sémantiques et syntaxiques des codes définis pour éviter les erreurs de
programmation. Mais surtout, lorsque le modèle est complet, SCADE permet de définir des
propriétés à respecter par le modèle. Il est alors possible de simuler le fonctionnement du
système, SCADE garantit que les résultats de la simulation du modèle sont identiques à ceux
qui seront obtenus plus tard par le code généré à partir du modèle sur la cible.
SCADE propose également de vérifier formellement par model-checking que les propriétés du
système sont respectées.
74
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
La démarche SCADE permet de générer du code sûr de fonctionnement et certifié SIL (Safety
Integrity Level) 3/4 de l’(EN 50128, 2012) pour le secteur ferroviaire, comme nous le
souhaitons à partir d’une modélisation graphique du système. Néanmoins, SCADE ne génère
que du code C, qui peut être implémenté dans certains API, mais pas dans tous. Surtout, le
code généré ne correspondrait pas aux attentes de la SNCF pour les programmes de
contrôle/commande des EALE, étant donné qu’ils souhaitent conserver la lisibilité actuelle
des programmes séquentiels et des programmes à contacts. L’approche SCADE révèle
également le besoin de vérifier formellement que la commande implémentée est sûre de
fonctionnement. La méthode SCALE ne sépare pas la partie fonctionnelle de la partie
sécuritaire de la commande, pourtant cette séparation parait tout à fait adaptée à la vision
objet de la méthode SCALE. Nous nous intéresserons à ces problématiques au travers du
deuxième axe d’amélioration.
Dans le domaine de l’automatisation, des sociétés comme Siemens avec Comos et Schneider
Electric avec Unity Application Generator (UAG), proposent des environnements dédiés à la
description d’un métier spécifique pouvant mener à la génération du code spécifique à leur
plateforme de programmation automate respective (TIA, Unity Pro XL, …). Les
cloisonnements qui existent entre les différents fournisseurs d’Automates Programmables
Industriels (API) sont des barrières à la mise en place d’outils pérennes dans le temps pour
une entreprise comme la SNCF. En effet le changement de type d’API (Automate
Programmable Industriel) lors d’un appel d’offre mettrait en péril les choix stratégiques ciblés
envers un seul fournisseur. Des standards comme PLCopen (http://www.plcopen.org) (Van
der Wal, 2009) visent une uniformisation des formats des fichiers de programmation d'API
(Programmable Logic Controller : PLC en anglais), sous la forme de fichiers XML. Plusieurs
groupes de travail ont été créés par cette organisation mondiale pour promouvoir les standards
définis dans la norme (IEC 61131-3, 2003) sur la structure des applications, les langages de
programmation, les adresses d’entrées/sorties, etc. Chaque groupe travaille sur la
standardisation d’un aspect de la programmation. Ainsi le groupe TC6 (Technical Committee)
de PLCopen tente de concevoir un schéma XSLT définissant la grammaire du langage XML
compatible avec l’ensemble des fournisseurs d’API. D’autres groupes sont en charge de
définir des niveaux de conformité ou de réutilisabilité de blocs fonctionnels. Le groupe 3 tente
de définir des blocs fonctionnels standards pour les systèmes manufacturiers et notamment
pour les systèmes motorisés. La standardisation est donc dans l’air du temps et il est
préférable de ne pas restreindre les possibilités de l’outil qui sera choisi par rapport au
75
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
matériel. C’est pourquoi une solution indépendante de tout fournisseur est préférable. Des
sociétés françaises comme ITRIS AUTOMATION SQUARE (PLC Converter, PLC DocGen)
ou PROSYST (ODIL) proposent ce type de solution. ODIL (Outils Descriptifs d’ILots),
contrairement aux outils logiciels de ITRIS AUTOMATION SQUARE, est une solution
« tout en un » qui encapsule, déploie et maintient les standards généraux de conception et les
standards organiques des métiers, pour rationaliser et garantir la conformité des études.
L'application est créée à partir des standards métiers afin de générer la documentation projet
(analyse fonctionnelle, manuels opérateurs), les schémas électriques, les programmes API, les
applications IHM, le modèle de simulation, etc. Pour ce faire, ODIL doit être adapté pour
chaque métier qui l’utilise. Visual Standard permet de modéliser et de définir l’architecture
d’ODIL et du métier spécifique. L’approche ODIL est fondée sur la modélisation du domaine
spécifique (Domain Specific Modeling – DSM). Comme cela a été montré dans la première
partie de ce chapitre, le DSM apporte une vision différente de l’utilisation du MDA. Tout en
conservant les méthodes de méta-modèle et templates, le DSM est une philosophie de
conception qui met le métier cible au cœur du modèle. Le DSM élève le niveau de
l'abstraction au-delà de la programmation, en spécifiant la solution directement à partir des
concepts de domaine. Les produits finis sont générés à partir de ces caractéristiques de haut
niveau. Cette abstraction est possible parce que le langage spécifique métier est spécifique à
l’entreprise et le générateur est spécifique au domaine métier.
Prosyst est une entreprise mûre, âgée de plus de 25 ans, fondée par des docteurs de
l’Université de Valenciennes désireux d’industrialiser leur solution de diagnostic pour les
automates. Ils ont développé des solutions d’automatisation pour l’ensemble du cycle de vie
d’un projet. De la génération de code et de livrable grâce à Odil, à l’aide au diagnostic et à
l’enregistrement d’événements précis jusqu’à la milliseconde, pour la vie du système
(Aidiag), en passant par la simulation de partie opérative pour tester les programmes générés
(SIMAC).
Odil a été développé il y a dix ans et n’a cessé d’évoluer depuis. A l’origine le logiciel a été
développé pour Renault dans le but de générer leurs cahiers de recette. Les possibilités d’Odil
ont ensuite montré la capacité de générer les programmes dans le cadre d’une standardisation
au niveau mondial. PSA, Michelin, Bombardier sont également clients de cette solution pour
76
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
l’industrie et la performance de production. Odil est aussi utilisé par Schneider Electric dans
le cadre des parcs photovoltaïques et par Areva dans le retraitement des déchets nucléaires.
Ces deux derniers domaines sont contraints par des normes de sécurité.
Odil est un environnement logiciel pour les bureaux d’étude, sur un principe de « saisie
unique ». Chaque déclaration est propagée dans tous les points de vue et livrables du projet.
Odil accompagne l’étude des projets en suivant les étapes du « workflow » du projet.
L’objectif de l’intégration d’Odil dans notre démarche est de pouvoir générer le code des
applications API à partir d’une description graphique. Les chargés d’études décrivent le
schéma unifilaire de l’installation étudiée et définissent les propriétés des objets de
l’installation décrite.
Odil inclut une structure de données autonome, exploitée par le cœur d’Odil, contenant les
standards (templates) de conception et la personnalisation de l’environnement Odil. Cette
structure est développée et maintenue par les responsables Méthodes, à l’aide d’un éditeur
spécialisé : VISUAL Standard.
77
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Structurer l’interface Odil pour chacun des « points de vue » : vue Visio, Word,
éditeurs spécialisés, pour que l’Interface Homme Machine (IHM) soit agréable à
utiliser par les chargés d’études et qu’elle corresponde à leur langage.
Définir la constitution des fichiers d’export pour chacun des livrables générés par
Odil, au travers des templates.
Visual Standard permet de construire le modèle de données autonome qui, intégré dans Odil,
personnalise l’environnement d’édition.
La réalisation du standard est appréhendable, ce qui rend possible la prise en main, à terme, de
Visual Standard pour faire évoluer l’ensemble du Progiciel au sein de la section CES2. La
génération des livrables et programmes se fait à partir de requêtes sur la base de données,
interprétées dans les templates de génération. Cette solution de génération s’intègre
parfaitement dans la démarche de génération d’un code de qualité pour les systèmes distribués
et reconfigurables. Odil intègre une vérification de la cohérence des données lors de la
78
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
réalisation d’un projet, ainsi il est impossible d’exporter les livrables tant que le projet ne
respecte pas les contraintes établies pour un projet.
De plus, la solution Odil s’intègre totalement dans l’approche Domain Specific Modeling que
nous préconisons. Le but est bien de décrire un langage métier qui corresponde au vocabulaire
des chargés d’études et de définir une interface graphique où celui-ci pourra modéliser son
système à partir d’éléments qu’il connaît. La modélisation objet réalisée est intégrée dans le
Standard et permet de récupérer toutes les informations des objets du système pour générer
correctement le code à partir des templates établis. Cette solution nous permet de générer un
code lisible pour les chargés d’études qui correspond à 100% au code qu’ils connaissent.
A long terme, l’indépendance de cette société par rapport aux fournisseurs d’API est un atout
pérenne puisque quel que soit l’interface de programmation de l’application (IPA) du futur
API, les standards pourront être adaptés pour générer le code de n’importe quel atelier logiciel
(PL7 PRO, Unity Pro, STEP7, ISaGRAF, Straton…). Ainsi nous ne sommes pas dépendants
d’un fournisseur d’API et la solution peut évoluer de manière indépendante.
2.3.7 Synthèse
79
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Toutefois, générer du code API est une chose, encore faut-il que celui-ci soit de qualité et
standardisé. Sans standardisation, la génération automatique n’est pas envisageable. Le
deuxième axe d’amélioration proposé concerne donc la conception de la commande en vue de
générer un code API de qualité et sûr de fonctionnement.
Dans cette partie du chapitre, nous nous intéressons à la démarche de conception d’une
commande sûre de fonctionnement. La première partie de cette section s’intéresse aux
approches de conception de la commande et en particulier à la formalisation de la conception.
Trois approches de conception formelle sont explorées. Enfin la dernière partie de cette
section s’intéresse à deux concepts importants pour l’automaticien : la validation et la
vérification.
Depuis les années 1970, l’automatisation industrielle ne cesse d’innover. Elle a fourni pendant
longtemps différents domaines de recherches, de développements et d’applications. Ce
secteur a produit ses propres méthodes de conception et langages de programmation. En
raison de son importance pour l'industrie, beaucoup de ces méthodes ont été normalisées
internationalement. Actuellement les normes les plus influentes sont les (IEC 61131-3, 2003),
(IEC 61499-2, 2000) ainsi que la norme (IEC 61850, 2010) pour le domaine des sous-stations.
Compte tenu du nombre de capteurs et d’actionneurs, il est difficile de décrire intégralement
l’espace d’état du vecteur d’entrées/sorties vu de la partie commande. Une des forces du
langage de spécification GRAFCET (IEC 60848, 2002) est de permettre une description de ce
que le système doit faire lorsqu’il est dans un état particulier. Cette approche est très
performante mais présente plusieurs inconvénients. Habituellement, les aspects sécuritaires et
fonctionnels sont mélangés. De plus, rien ne garantit que la commande réalisée soit sûre de
fonctionnement. C’est pour cette raison qu’aujourd’hui, l’utilisation de méthodes formelles de
validation et de vérification du code API est de plus en plus envisagée (EN 50126, 2012). En
effet, la complexité croissante des problèmes de contrôle, les contraintes de réduction du
temps d’élaboration, et la réutilisation possible des modules de logiciels existants ont comme
conséquence le besoin d'approches formelles dans la programmation API. Les articles de
80
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
81
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
respectent un ensemble de règles et sont globalement standardisés mais laissent une place non
négligeable au savoir-faire du chargé d’études. De plus, le fait de récupérer des « extraits »
d’études précédentes ne garantit pas que l’on ne recopie pas d’erreurs. En recopiant des
extraits, le risque est également une régression des principes mis en œuvre en récupérant une
ancienne version de programmes. Généralement les spécifications informelles se composent
d'une description du système, et des conditions normales d’exploitation. L'algorithme de
contrôle repose principalement sur l’expérience, la prise en considération des « bonnes
pratiques » indiquées par les fournisseurs d’équipements et l’utilisation de règles d’écriture
des programmes API de la SNCF. Il est important de noter que l’ensemble de ces
informations n’est pas standardisé dans un document référentiel.
Une des missions importantes attachée à cette thèse a donc été la définition de fiches
référentielles décrivant les fonctions des éléments constituants les EALE, permettant
ainsi une standardisation des spécifications et du métier de chargé d’études, nécessaire à
la génération automatique de livrables.
La méthode de validation utilisée dans le cas des EALE consiste en une phase de test du
système de contrôle/commande au moyen de fiches d’essais réalisées par les concepteurs et
les utilisateurs du système. Cette approche reste encore souvent utilisée dans l’industrie. Le
problème de cette validation est qu'elle n'est jamais complète, qu’elle est chronophage et
stressante pour les chargés d’études.
Un code API doit être correct tant sur le plan de son écriture (lisibilité, respect des règles
d’écriture, absence de code mort, …) que du respect des spécifications fonctionnelles.
Concernant ce dernier point, pour vérifier un code API existant, deux approches sont
possibles. La première consiste à réécrire le code API dans un langage interprétable par les
méthodes formelles. La seconde consiste à vérifier des propriétés directement à partir du code
API existant (Lampérière-Couffin et al., 1999).
82
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Les approches pour la réinterprétation des programmes API écrits en langages normalisés par
(IEC 61131-3, 2003) (IL, LD, ST, FBD, SFC) peuvent être trouvés dans les articles suivants :
(Mertke & Menzel, 2000) traduisent l'IL en réseaux de Petri.
(Canet et al., 2000) utilisent un système de transition pour réinterpréter l'IL.
(Hassapis et al., 1998) traduisent le SFC en automates hybrides.
(Kowalewski & PreuBig, 1996) réinterprètent le SFC en systèmes orientés
condition/événement.
(Volker & Kramer, 1999) représentent le ST, le SFC et le FBD par une logique de
d’ordre plus élevé, le SFC et le FBD étant d’abord convertis en ST avant la
réinterprétation.
(Jimtnez-Fraustro & Rutten, 1999) emploient le langage synchrone SIGNAL pour
réinterpréter le ST.
(Sarmento et al., 2008) transcrivent les programmes SFC pour vérifier formellement
des propriétés avec le model-checker UPPAAL.
(Fernandez Adiego et al., 2013) transcrivent les programmes ST pour vérifier
formellement des propriétés avec le model-checker NuSMV.
Le problème de cette réinterprétation du code est qu’elle vérifie a posteriori que le code
respecte les spécifications sécuritaires et fonctionnelles. L’autre technique se rapproche des
méthodes de génération automatique vues dans la première partie de ce chapitre et consiste à
transcrire les spécifications en modèles (formels ou non) et à concevoir et/ou générer une
commande sûre de fonctionnement à partir de ceux-ci. Nous avons retenu trois approches qui
semblent a priori intéressantes : la Supervisory Control Theory (SCT), la synthèse algébrique
et la commande par filtre.
83
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
84
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
dans lesquels les valeurs des signaux dictent en permanence le comportement de la partie
opérative. Le superviseur ne pouvant pas imposer des évolutions mais seulement en autoriser
ou en interdire certaines, des problèmes de déterminisme lorsque plusieurs évolutions
associées à des événements contrôlables ou non sont simultanément possibles. Une nouvelle
interprétation a donc été proposée pour être plus proche des problématiques rencontrées dans
l’obtention d’un modèle de commande par la théorie de supervision dans le cadre des
systèmes automatisés manufacturiers utilisant les API.
Dans (Balemi, 1992, 1993), une interprétation de la théorie de supervision pour la conception
de contrôleurs logiques de systèmes automatisés de production est proposée. Le principe
consiste à étudier les valeurs des signaux échangés entre la partie commande et la partie
opérative. La partie opérative subit les changements de signaux de la partie commande. Les
termes « commandable » et « contrôlable » sont distingués en fonction de l’interprétation
utilisée : le terme « contrôlable » est utilisé dans la synthèse de Ramadge et Wonham tandis
que le terme « commandable » est utilisé dans l’interprétation de Balemi. Le modèle de
commande reçoit de la partie opérative des événements non commandables issus des capteurs
et envoie des événements commandables que la partie opérative doit exécuter (Figure 26).
Cette interprétation donne un autre sens aux modèles : le modèle de commande impose des
événements commandables au modèle de partie opérative. Les événements non
commandables correspondent aux réponses de la partie opérative à ces sollicitations. Le
modèle de partie opérative n’est plus uniquement perçu comme un générateur d’événements
spontanés pouvant être inhibés par le superviseur.
L’utilisation d’API comme applicatif nécessite de s’intéresser plus particulièrement au
problème d’implantation. Un des problèmes auquel la synthèse de la commande fait face est
le type de résultat obtenu : en effet, la synthèse ne fournit pas le modèle de comportement de
85
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Même si la SCT ne peut pas être utilisée en l’état pour résoudre le problème pratique de la
génération de code API sûr de fonctionnement pour les EALE, l’idée de base d’un
superviseur inhibant ou non les événements contrôlables nous semble très séduisante et sera
d’ailleurs exploitée dans la suite de ce mémoire.
Les travaux conduits au LURPA de l’ENS Cachan entre autres par Hietter (2009) dans le
domaine de la synthèse sont originaux et séduisants. Les chercheurs ont apporté une réponse
algébrique au problème de la conception d’un contrôleur. L’objectif est de donner à
l’automaticien les moyens d’obtenir automatiquement les lois de commande à implanter dans
l’API à partir des fragments de spécification dont il dispose. La méthode proposée utilise un
cadre mathématique rigoureux (Hietter, 2009) : l’algèbre de Boole des fonctions booléennes,
et repose sur 4 étapes (Figure 27) :
86
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
( )
87
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
∏ ( )
Où est l’ensemble des n-uplets où chaque composante est l’un des éléments
particulier 0 et 1.
( )
Lorsque cette condition est respectée, cette équation admet un ou plusieurs n-uplets solutions
( ( ) ( )) où chaque composante peut être décrite à l’aide de la forme paramétrique
suivante :
( ) ∏ ( )
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
∏ ( )
( un élément quelconque de )
où
( ) ( ) ( )
Appliqué à l’ordre 1, c’est-à-dire avec une seule inconnue, ce théorème permet d’écrire le
théorème suivant (Hietter, 2009) :
88
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Lorsque cette condition est respectée, cette équation admet une ou plusieurs solutions que la
forme paramétrique suivante permet de décrire :
L’ensemble des solutions de l’équation peut également être décrit à l’aide de l’une de ces
deux formes équivalentes :
̅ ( )
̅ ̅
La troisième et dernière approche de commande présentée dans ce mémoire repose sur des
travaux menés depuis 2006 au Centre de Recherche en STIC de l’Université de Reims
Champagne-Ardenne.
89
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Cette approche repose initialement sur la surveillance de la commande au moyen d’un filtre
qui constitue un bloc de validation entre la PC et la PO (Figure 28). Cette approche (Lhoste,
1994 ; Alanche et al., 1986 ; Cruette 1991 ; El-Khattabi, 1993 ; Toguyeni, 1992) n’est pas
récente et a été remise d’actualités au travers la thèse de P. Marangé (Marangé, 2008) :
« synthèse et filtrage robuste de la commande pour des systèmes manufacturiers sûrs de
fonctionnement ».
90
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
91
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
92
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Initialement le filtre avait été prévu pour stopper la commande en bloquant les actionneurs
dans un état de sécurité et empêcher ainsi l’évolution de la PO. Cette approche a été étendue
pour faire de la commande sûre de fonctionnement (Benlorhfar et al., 2011). L’idée consiste
en cas de violation d’une contrainte de sécurité à interdire le ou les ordres erronés de
commande uniquement pour le cycle API en cours. Ainsi, à la façon de la SCT, le filtre
autorise ou inhibe les événements commandables. Cette approche présente des avantages. Il
devient possible de séparer structurellement les parties « sécuritaire » et « fonctionnelle »
dans le contrôleur. Cela peut éventuellement permettre une simplification de la loi de
commande mais change radicalement la façon de travailler des automaticiens. Toutefois, cette
méthode peut également être utilisée pour sécuriser des programmes existants. Cette approche
(Figure 30) peut donc ne pas modifier considérablement la façon de concevoir la commande
et n’implique pas forcément des changements majeurs de méthodes de travail des chargés
d’études. Ce point est fondamental comme cela a été montré dans la première partie de ce
chapitre consacrée aux Systèmes Hommes-Machine.
93
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
Cette approche semble très prometteuse et adaptée à la problématique des EALE et au travail
des chargés d’études. Nous l’avons étendue et développée dans le cadre de ce travail de thèse
(cf. chapitre 4). En effet, en plus de garantir formellement la sécurité, elle est adaptée à des
programmes API existants.
La norme (ISO 9000, 2005) propose les définitions suivantes. La validation est la «
confirmation par des preuves tangibles que les exigences pour une utilisation spécifique ou
une application prévues ont été satisfaites ». Le terme « validé » désigne l’état correspondant
et les conditions d’utilisation peuvent être réelles ou simulées. Valider, c’est donc répondre à
la question : « Faisons-nous le bon produit ? ». En revanche, la vérification, c’est la
« confirmation par des preuves tangibles que les exigences spécifiées ont été satisfaites ». Le
terme « vérifié » désigne l’état correspondant. La confirmation peut couvrir des activités telles
que la réalisation d’autres calculs, la comparaison d’une spécification de conception nouvelle
avec une spécification de conception similaire éprouvée, la réalisation d’essais et de
démonstrations, la revue des documents avant diffusion. En conception et développement, la
vérification concerne le processus d'examen du résultat d'une activité en vue de déterminer la
conformité aux exigences requises fixées pour ladite activité. Vérifier, c’est donc répondre à
la question : « Faisons-nous le produit correctement ? ».
C’est le point de vue de l’Association Française de NORmalisation (AFNOR) qui considère
que la vérification concerne essentiellement les contrôles en cours, et la validation, les
contrôles avant livraison. Validation et vérification concernent aussi bien les activités de
production que les activités de conception. Lorsque l'on produit un objet à travers une suite
chronologique d'opérations, il est possible d'effectuer des vérifications de conformité au cours
de chacune des phases du procédé de production. Cela permet d'éviter de constater une
anomalie grave en fin de procédé alors que celles-ci auraient pu être détectées lors des
opérations précédentes. Ensuite, lorsque l'objet est prêt à être livré au client, une dernière
vérification peut être réalisée (contrôle de fin de fabrication).
Pour les activités de conception, il est possible de la même manière d'effectuer des contrôles
au fur et mesure de la « production » de données de sortie de la conception. Une spécification,
un plan, un prototype seront vérifiés sans attendre la fin de la phase de conception. Les
vérifications se font souvent en regard des données d'entrée qui concernent l'élément produit.
Il s’agit de vérifier que l'on a bien tenu compte de toutes les informations et de tous les
94
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
paramètres entrants qui ont été bien identifiés et analysés au préalable. Les vérifications
peuvent être opérées soit par les personnes qui produisent les données de sortie à contrôler
soit par un groupe lors de revues de projets. Les vérifications peuvent bien entendu se
rapporter à des travaux internes (qui ne constituent pas de données de sortie) comme par
exemple des notes de calcul. Il est souhaitable que ces vérifications soient planifiées lors du
début des travaux ou lors de revues (par exemple au fur et à mesure de l'avancement de la
conception) et que les résultats des contrôles soient enregistrés.
La validation est donc une vérification finale de la performance de la conception. Elle
consiste, comme tout contrôle final, à vérifier que les exigences définies en début de
conception (et qui tiennent compte des évolutions possibles), c'est-à-dire : celles contenues
dans le cahier des charges, sont satisfaites. Ces exigences peuvent naturellement être des
éléments impactant la performance du produit. La validation peut être effectuée tout ou partie
chez un client pour simuler les conditions réelles de production des performances requises. La
validation ne peut pas être de la responsabilité du client. Dans une approche « client-
fournisseur », on comprend que ces deux notions puissent se recouvrir et que les outils et
méthodes soient les mêmes. Ces dernières peuvent être formelles ou non.
95
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
96
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
2.5 Conclusion
Ce chapitre a permis d’introduire deux voies d’amélioration du travail des chargés d’études et
de la qualité des livrables. La commande des EALE doit être sûre de fonctionnement pour
répondre aux exigences sécuritaires du domaine ferroviaire. Actuellement, un projet est
réalisé en s’inspirant des études précédentes existantes et est validé en usine et sur site au
moyen de fiche d’essais. Nous avons montré que des outils évolués de conception
d’automatismes existent mais ne sont pas à ce jour utilisés à la SNCF. Ils permettent entre
autres la génération automatique de livrables et de codes. Ces outils doivent être adaptés au
workflow du domaine spécifique pour répondre aux besoins du métier. C’est pourquoi
l’approche DSM semble la plus pertinente dans notre cas. Par la mise en place d’outils
évolués, il est ainsi possible d’améliorer les conditions de travail des chargés d’études, la
productivité et la sécurité. En effet, la génération de code API et de livrables permet d’éviter
les tâches répétitives, améliore le processus et les méthodes projet en focalisant l’attention des
acteurs sur les tâches importantes. La mise en place de la génération dans un premier temps,
permet d’assurer la non-régression des programmes et est un premier pas vers leur
fiabilisation en utilisant des templates de programmes déjà exploités dont le retour
d’expérience (REX) assure leur fiabilité. Des outils tels qu’ODIL de la société PROSYST
semblent répondre à nos besoins en terme de lisibilité, maintenabilité et conservation des
règles d’écriture des programmes par l’utilisation de « templates » basés sur les livrables
actuellement réalisés par les chargés d’études. En effet, il nous semble important de s’orienter
vers des solutions industrielles éprouvées que de développer une application « auteur »
difficile à maintenir et qui risque d’aboutir davantage à une preuve de concept qu’à un outil
véritablement utilisable par les chargés d’études.
Générer des livrables et le code API est une première étape, mais il est également
fondamental de garantir la sûreté de fonctionnement de la commande. L’approche de filtre
robuste aux erreurs de commande proposée par le CReSTIC est séduisante. Son extension par
la mise en place d’un algorithme de commande par contraintes formellement vérifiées hors
ligne par model-checking devrait permettre d’assurer l’objectif sécuritaire des programmes
tout en conservant la structure des programmes API existants. On notera également que le
filtrage sécuritaire de la commande doit permettre d’inhiber les erreurs de commande qui
97
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
pourraient provenir du Central Sous-Station (CSS) et ainsi également limiter le stress des
opérateurs de conduite des installations.
Figure 31 : Deux axes de recherche pour une méthodologie d’amélioration métier à trois
composantes
La Figure 32 synthétise les deux voies de progrès que nous avons retenues dans cette thèse.
La génération automatique devrait améliorer l’intervention humaine dans la réalisation de ces
tâches. Cette solution est basée sur le principe de la saisie unique, permettant d’optimiser la
98
Chapitre 2 : Etude des voies d’amélioration possible du métier des EALE
charge de travail. La description de l’EALE dans cet environnement logiciel unique, doit
permettre de générer tous les livrables (documents, programmes, schémas électriques…).
Cette solution logicielle doit faire partie, comme nous l’avons montré, d’un processus de
standardisation du métier.
La mise en place d’un filtre de commande à base de contraintes logiques et vérifié
formellement non bloquant doit permettre d’obtenir un contrôleur sûr de fonctionnement sans
modifier la structure des programmes API existants.
La méthodologie pour les études d’automatisation proposée intégrant ces deux voies de
progrès fait l’objet du chapitre suivant. Cette méthodologie est appliquée aux études
d’automatisation des EALE dans le chapitre 4.
99
100
Chapitre 3 : Proposition d’une méthodologie pour les
études d’automatisation
3.1 Introduction
Le chapitre précédent a présenté un état de l’art des deux voies de progrès (ou axes de
recherche) préconisées pour améliorer les études d’automatisation des EALE : la génération
automatique de livrables et la commande sûre de fonctionnement. Nous proposons dans ce
chapitre une méthodologie originale, intégrant ces deux axes d’amélioration en vue
d’apporter, au travers du développement d’un progiciel destiné aux chargés d’études, une
réponse technique, économique et humaine aux études d’automatisation des systèmes
distribués.
101
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
102
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
103
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Le cycle de production en V (Royce, 1970) est la méthode de gestion de projet la plus suivie
dans le monde de l’industrie. Pourtant cette méthode n’est pas la plus efficace dans tous les
cas. Pour un projet de recherche et de développement, la méthode Agile (Schwaber et al.,
2001) présente plusieurs avantages. Son point de vue incrémental est intéressant parce qu’il
permet d’avancer élément par élément puis groupe par groupe. Ainsi chaque développement
peut être testé avant de poursuivre, ce qui nous intéresse particulièrement puisque dans notre
cas, une fois que le modèle du système est implémenté, il reste à remplir les boites vides. Il
n’est cependant pas nécessaire de les remplir toutes en même temps. Cette méthode est tout à
fait adaptable aux systèmes décomposables en Sous-ensembles de Partie Opérative (SePO) et
Eléments de Partie Opérative (ElPO) qui composent les SePO.
La méthode du cycle itératif incrémental (Figure 35), tente de formaliser une approche plus
pragmatique et maniable. Cette méthode se décompose en 7 étapes, dont 5 qui en constituent
le « cœur » :
104
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Pour commencer, le client exprime son besoin, dont la faisabilité est étudiée en termes de
temps et de technicité. Les informations fournies en entrée ainsi que le besoin peuvent évoluer
au cours des itérations du cycle. Une fois que le besoin est clairement défini ainsi que les
contraintes du projet, le processus itératif peut commencer :
Spécification : à chaque itération du cycle, une partie du besoin doit être traduite en
spécification technique.
Développement : le premier développement consiste à créer le squelette ou le noyau
de l’application. Dans les cycles suivants, il s’agit du développement d’une partie,
SePO ou ElPO.
Vérification : l’équipe chargée du développement réalise les tests unitaires et vérifie
que ce qui est obtenu correspond aux spécifications.
Validation: le fournisseur valide la partie réalisée en vérifiant que les fonctionnalités
développées correspondent aux besoins du client.
Évaluation : cette étape permet un retour d’expérience à chaque itération du cycle.
Ainsi l’expérience des acteurs du projet augmente à chaque cycle et cela permet
d’éviter de réitérer les erreurs commises précédemment.
Déploiement : les livrables qui ont été validés sont déployés pour être exploités par les
équipes en production.
La mise en place de cette démarche permet d’éviter les dérives entre le besoin exprimé et le
résultat obtenu. Les étapes de vérification et validation itérative permettent de re-corréler le
résultat avec le besoin si nécessaire et d’anticiper les futures dérives. Un retour d’expérience
105
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
est réalisé à chaque itération et permet aux acteurs d’apprendre et de corriger leurs erreurs
beaucoup plus rapidement qu’avec le cycle en V où les erreurs seront toutes corrigées a
posteriori.
Cette méthode permet également de redéfinir un planning réaliste régulièrement. Lors de
développements réalisés dans le cadre de projets de recherche, il est possible que des étapes
soient plus complexes à réaliser qu’initialement prévu. Dans ce cas, la divergence sera
anticipée au cycle suivant pour le développement du prochain SePO ou ElPO.
La première phase à laquelle est appliquée la méthode Agile est la phase de génération de
code API (Figure 36). La méthode Agile permet en effet de générer le code de la partie
commande étape par étape comme nous le verrons dans la section suivante. Ainsi le code
correspondant à chaque élément est vérifié avant de passer à l’élément suivant.
106
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
107
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Cette section présente la partie génération de code API de la méthodologie. A partir des
programmes standardisés existants, il est possible de générer des programmes de qualité. Les
programmes actuels doivent tout d’abord subir une analyse qualimétrique. Les langages de
programmation mais également le langage métier doivent être formalisés afin de définir la
structure de la PO d’une part et de la PC d’autre part. Enfin, à partir des modèles établis de la
PO et de la PC et des programmes formalisés, des templates peuvent être définis afin de
générer le code API distribué.
Avant de vouloir générer des programmes, dans tous les cas, une étape de standardisation est
nécessaire. Des organisations telles que PLCopen (présentée dans le Chapitre 2) (Van der
Wal, 2009), mettent en avant le besoin de standardisation. PLCopen veut notamment
standardiser la structure des programmes pour qu’ils puissent être adaptés indépendamment
de la plateforme cible. C’est une première étape vers la standardisation que les programmes
doivent franchir. Mais la standardisation qui nous intéresse le plus est de plus bas niveau
puisque c’est la standardisation du code en lui-même. PLCopen sur ce problème propose
l’utilisation de bloc fonctionnel pour standardiser les programmes. Mais ces blocs
fonctionnels agissent comme des boites noires dont le fonctionnement interne devient inconnu
des utilisateurs à force d’utilisation. Dans notre cas, il est nécessaire que le comportement des
fonctions soit connu. C’est pourquoi plutôt que de révolutionner un métier en intégrant des
108
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
L’idée de cette approche de standardisation est de définir pour chaque programme ou fonction
ou « rung » de programme Ladder Diagram (LD), les entrées et les sorties possibles de cet
élément. Cette approche peut également être vue comme la définition d’un système
maximaliste prenant en compte toutes les options possibles. En ayant tous les cas de figure
répertoriés au sein d’une seule application, les templates n’ont qu’à définir les conditions
d’intégration de chaque fonction et de ses entrées/sorties.
Avant d’écrire les templates de génération de code, il faut être certain que les programmes
dont nous allons nous inspirer soient de qualité. Pour ce faire, nous proposons de réaliser une
analyse qualimétrique à partir de programmes maximalistes, reproduits à partir des
programmes existants. Ainsi, toutes les fonctions sont analysées et toutes les erreurs peuvent
être détectées.
Pour apporter une vision objective à cette étude, une phase d’analyse des programmes et des
principes du système est nécessaire (Figure 37). Cette analyse mène la démarche de
standardisation vers la normalisation des règles de codage utilisées dans le métier. Cette
normalisation se fait à partir du savoir-faire, du retour d’expérience des chargés d’études et
grâce à l’analyse des programmes réalisée avec PLC Checker (Philippot et al., 2014). PLC
Checker est un outil d’analyse de code API développé par la société Itris Automation Square
(IAS). Cet outil analyse automatiquement les programmes automates et vérifie de façon
exhaustive leur conformité par des règles génériques décrites dans les normes se rapportant
généralement au domaine du génie logiciel, (ISO 9126, 2001) (Figure 38). Cette analyse
permet d’assurer la qualité des programmes qui serviront par la suite pour la définition des
templates.
109
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
110
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
L’utilisation de cet outil permet d’assurer le respect des règles génériques de programmation
mais également celui des règles spécifiques au métier. En effet, il est possible de définir des
règles complémentaires spécifiques afin de vérifier la cohérence et l’harmonie des
programmes.
Les corrections doivent être poursuivies jusqu’à ce que les types d’erreurs non justifiés
n’apparaissent plus dans le rapport généré par PLC Checker.
Ce processus de réécriture des programmes doit être réitéré jusqu’à ce que le rapport de PLC
Checker ne fasse plus mention des règles non justifiées. Un code de qualité est alors obtenu à
la fin de cette méthode et des règles d’écriture du langage métier ont pu être définies.
Ce paragraphe récapitule les règles et les informations utiles mentionnées dans les résultats
d’analyse de PLC Checker. Les règles spécifiques utilisées pour analyser les programmes API
sont expliquées. Une liste de l’ensemble des règles de PLC Checker est disponible en Annexe
1.
111
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Chaque étape et chaque transition d’un programme SFC doivent être commentées.
pour les variables qui ont été initialisées dans la base de données,
pour les variables en provenance des communications,
pour les variables d’état qui mémorisent la valeur d’un cycle antérieur.
Exemple :
if alarmeUrgente then
traitementAlarme;
end if;
# ...
alarmeUrgente := presenceDefaut AND ...;
Une sortie physique ne doit être écrite qu’une seule fois par cycle automate
L’écriture multiple d’une sortie peut conduire à des problèmes de sécurité de fonctionnement.
Par ailleurs, un code dans lequel les sorties sont écrites plusieurs fois est moins facile à
comprendre et donc à maintenir. A noter que l’écriture dans une boucle est considérée comme
une écriture multiple et constitue donc une violation de cette règle.
Exemple :
112
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
if condition_tres_compliquee then
ma_sortie_critique := TRUE;
end if;
#... beaucoup plus loin dans le code
if une_autre_condition tres compliquee then
ma_sortie_critique := TRUE;
end if;
Dans le cas où cette sortie n’est pas commandée alors qu’elle le devrait, il est très difficile
d’identifier quelle affectation est exécutée.
Mesure de la complexité
Le code complexe cache des erreurs. Certaines parties de programmes sont plus complexes
que d’autres. C’est particulièrement vrai lorsque le flot d’exécution séquentiel du programme
est interrompu. Cette règle recherche certaines causes d’interruption du flot que sont les
boucles, les sauts en arrière et les niveaux d’imbrication d’instructions complexes trop élevés.
M = E − N + 2P
où
M = complexité cyclomatique
E = le nombre d'arêtes du graphe
N = le nombre de nœuds du graphe
P = le nombre de composantes connexes du graphe.
Le nombre cyclomatique donne une information relative à la complexité d’une routine. Il est
important que le nombre cyclomatique reste raisonnablement bas. Le nombre cyclomatique
représente le nombre de chemins d’exécution différents qui peuvent être exécutés dans une
routine. Plus ce nombre est élevé, plus il est difficile de valider le comportement correct de
cette routine. Il est alors nécessaire de diviser celles-ci en d’autres sous-routines de nombre
cyclomatique inférieur au seuil.
113
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Règles spécifiques
PLC Checker permet également de définir des règles spécifiques. Une règle spécifique à la
SNCF par exemple, est la mise en œuvre de GRAFCET (IEC 60848, 2002) dans l’atelier de
programmation automate en langage SFC (IEC 61131-3, 2003). Grâce à ce langage, le
fonctionnement séquentiel des appareils est décrit visuellement. Ainsi les programmes SFC de
l’ensemble des projets suivent la même structure. Cette structure permet à n’importe quel
chargé d’études de comprendre le programme grâce au nommage et aux commentaires qui
doivent suivre les règles décrites.
Grâce à PLC Checker, il est possible d’analyser objectivement la qualimétrie des programmes
et d’obtenir un retour d’expériences sur les programmes (Figure 37). Après cette première
étape d’analyse, les règles spécifiques du métier peuvent être définies et intégrées dans PLC
Checker pour les analyses suivantes.
Une fois le retour d’expériences sur les programmes d’origine obtenu, des corrections peuvent
être apportées aux programmes afin de les améliorer. L’objectif est de corriger tous les
avertissements émis par PLC Checker afin de répondre aux exigences de la norme ISO 9126.
A la fin de cette étape, les programmes peuvent servir de base pour l’établissement des
templates de génération de code. Cette étape a permis de mettre en évidence quelques défauts
dans les programmes API existants et de les corriger. Les erreurs constatées proviennent
principalement du fait que les programmes actuels sont le résultat de nombreux projets
antérieurs. Par conséquent, des variables non utilisées ou encore du code mort ont été mis en
évidence. L’étape suivante consiste à décomposer la partie commande et la partie opérative
afin d’obtenir une architecture de contrôle/commande distribuée répondant aux besoins de
disponibilité du système.
114
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Maintenant que les programmes ont été étudiés et améliorés selon des critères de qualité, il est
possible de définir les liens qui existent entre eux et d’établir une structure générique. Le
paragraphe (2.3.4.3 – Les techniques de génération du code) du chapitre précédent a décrit
différentes techniques permettant de définir les templates qui serviront pour générer les
programmes. L’application de l’approche « template-based » à un domaine alliant concepts
métier et automatisation, permet la prise en considération de deux techniques (Figure 39) :
115
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
L'analyse structurelle est une méthode de structuration d'une réflexion collective. Le système
étudié peut être défini comme un ensemble d'éléments en interaction. L’objectif est de se
poser les bonnes questions et de mettre en évidence les variables et les critères influents.
Préalablement à la mise en place de cette démarche d’analyse structurelle, il est nécessaire de
définir les besoins au travers d’un modèle. Pour construire ce modèle, des données d’entrée
sont nécessaires :
“Who?” Quels sont les objets qui forment le modèle ? Peuvent-ils être regroupés par
famille ou par groupe ?
“What?” Quelles fonctionnalités (attributs et méthodes) apporteront ces objets ? Quels
héritages peuvent être mis en place ?
“Where?” Où seront contrôlés les objets, par quel API ?
“How?” Comment organiser ces objets avec cohérence dans le modèle final ?
116
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
A partir des réponses à ces interrogations, nous allons construire le modèle de PO d’une part
puis le modèle de PC et construire les liens existant entre la PO et la PC. Pour répondre à ces
questions et construire les modèles du système, il est nécessaire d’avoir intégré les principes
du métier et surtout de s’appuyer sur le savoir-faire des chargés d’études qui possèdent une
expertise du métier qui n’est pas forcément retranscrite dans les documents techniques.
Pour répondre à ces questions, il faut partir du système global étudié : la Partie Opérative
(PO). La PO (Figure 40) peut être décomposée en sous-ensembles de Partie Opérative (SePO)
en fonction du rôle ou des tâches à effectuer de ces sous-ensembles. Enfin, chaque SePO est
composé d’éléments de Partie Opérative (ElPO), que forment les objets du système réel. Un
type d’ElPO ne peut être contenu que dans un type de SePO. Cette décomposition forme le
méta-modèle du système qui doit être respecté par le modèle du système qui sera proposé.
Partie Opérative
1
*
SePO
1
*
ElPO
La PO, les SePO et les ElPO sont des objets instanciables ayant des attributs et des méthodes.
Pour chacun, il faut recenser les variables qui le caractérisent. Ces attributs et ces méthodes
permettront de définir des comportements différents selon leur valeur lors de l’étape de
génération de code. Il est donc nécessaire de porter un grand intérêt à cette étape. Celle-ci ne
peut se faire sans une connaissance approfondie du système. L’intervention des experts du
domaine spécifique est donc indispensable pour cette étape. Ils connaissent les paramètres, les
options et les différences possibles de chaque SePO et ElPO.
117
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Pour rester dans le thème des EALE, la Figure 41 donne une décomposition simplifiée d’une
sous-station. Cette décomposition permet de structurer la PO. Dans cet exemple, la
décomposition est structurée en groupes fonctionnels qui sont composés d’appareils HT. Ces
groupes fonctionnels sont instanciables et les relations sont comparables aux agrégations et
compositions des diagrammes de classe. Dans ce modèle simplifié et par conséquent
incomplet (Figure 41), une sous-station est composée d’un ou plusieurs DT, GT et Batteries
de condensateurs (Batt. K). Un DT est composé d’un ou deux appareils de coupure Tête de
Câble (TdC) et d’un ou deux Disjoncteurs (Dj) de DT. Un GT est composé d’un
Transformateur (Transfo.), d’un Sectionneur à Rupture Brusque (SRB) et d’un Disjoncteur de
GT. Une batterie de condensateurs est composée d’un disjoncteur (DK) et de zéro ou un
sectionneur (SK).
Sous-station
1 1
1 1
1
*
*
*
DT GT Batt. K
1 1 1 1 1 1 1
1
1..2
1
1 1 1..2
1 1 1
*
*
*
*
118
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Partie Commande
*
API
1
*
Module E/S
1 1 1 1
*
*
Entrée Sortie
La PC est toujours composée d’au moins un API. Un API est composé de modules
d’Entrées/Sorties (E/S). Un module d’E/S peut être soit une carte d’entrées, soit une carte de
sorties, soit une carte d’E/S. Selon les systèmes, ce modèle de PC peut être contraint. Par
exemple, pour les SCLA, il n’existe pas de cartes de Sorties. La position des appareils
commandés par les API est toujours contrôlée. Ils sont donc nécessairement connectés sur une
carte d’E/S.
Maintenant que la PO et la PC ont été décomposées, les liens entre les différents niveaux de
décomposition obtenus peuvent être établis.
119
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Base
1 1
1
*
*
1 1
1 1
*
*
API SePO
1 1
1
1
*
ElPO
1..*
120
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Les templates correspondent à la structure que doivent respecter les programmes liés à chaque
SePO ou ElPO. Le code généré est basé sur un template textuel rempli par un moteur de
génération grâce aux éléments contenus dans le méta-modèle.
1. Lisibilité du code généré : le code généré doit être facile à lire et comprendre. Il doit
respecter la mise en forme qui existait auparavant (indentation, commentaires, etc.).
2. Réutilisation : les templates doivent être réutilisables dans différents contextes. Ils
peuvent être utilisés par des objets abstraits du modèle. Le comportement du template
doit alors être adapté en fonction du contexte d’appel.
3. Maintenabilité : les templates sont créés pour être modifiés. Le changement doit être
fait d'une manière rapide et agile, il doit être lisible ou pouvoir être rendu lisible. En
effet les templates donnent la forme que suivront les fichiers générés. Toutefois,
trouver un compromis entre lisibilité du template et respect de la forme du fichier
généré n’est pas toujours évident.
4. Composition : un template doit être importable par d'autres templates.
5. Séparation des rôles : les templates génèrent le code des programmes, le moteur gère
l’architecture du fichier ou des fichiers à générer et un contrôleur vérifie que la
structure des fichiers est conforme à la grammaire ou au modèle du fichier.
6. Constance : l’exécution d’un template avec un ensemble de paramètres doit toujours
donner le même résultat.
A partir du code source d’une application, il est possible de définir les tâches exécutées et de
les affecter à différentes ressources. Dans notre cas les ressources sont les API. Pour chaque
tâche, des données d’entrée sont nécessaires et peuvent dépendre d’autres tâches parallèles. A
partir de cette analyse du partage des tâches par SePO et ElPO, qui doit correspondre à
l’architecture de la Partie Commande, les templates de l’application peuvent être définis
(Figure 44). Les templates d’une application API respectent des règles qui correspondent à la
grammaire du langage de l’Interface de Programmation. Chaque API exécute un programme
qui peut nécessiter des informations venant d’autres API. Dans tous les cas, un programme
API est toujours composé de l’architecture matérielle de l’API, de la définition des
connexions de ses E/S et des programmes (IL, LD, ST, FBD ou SFC) qu’il exécute.
121
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
122
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Les modèles présentés dans cette section permettent d’établir les bases du domaine spécifique
des API. Ces règles sont applicables à tout système automatisé et distribué.
L’intégration d’un outil industriel de génération de code et de livrables par la méthode de
Domain Specific Modeling (DSM) (Tolvanen, 2005) permet de garantir la pérennité du projet
et d’apporter des garanties quant aux résultats de la démarche. En effet, l’industriel apporte en
plus de sa solution logicielle, l’expérience de réalisations passées. Par l’aspect DSM des outils
industriels, leur intégration au sein de notre démarche d’amélioration métier est naturelle.
L’avantage de ces solutions DSM est qu’une fois que le langage métier est défini et modélisé,
comme nous l’avons montré jusqu’ici dans ce chapitre, les cibles de génération peuvent
évoluer ou augmenter sans avoir à remettre en cause tous les modèles. Au contraire, à partir
des modèles existants, il suffit de définir de nouveaux templates pour générer de nouvelles
cibles d’export. L’avantage pour les chargés d’études est également de pouvoir leur apporter
une solution plus ergonomique. En effet, les solutions industrielles intègrent des vues pour
que les chargés d’études puissent définir la configuration de leur système de manière
graphique à partir d’objets prédéfinis qu’il faut paramétrer.
La génération à partir d’une saisie graphique évite une saisie multiple des mêmes
informations dans les livrables qui peut entrainer un sentiment de monotonie (Sperandio,
1988). Cette description unique permet alors de concentrer l’attention du chargé d’études et
ainsi d’optimiser et de lisser la courbe de sa charge de travail mentale. Il s’agit également par
cette description paramétrable, d’ajouter une première sécurité dans le processus de
génération du projet. En effet, lors de la description, un contrôle de cohérence est effectué afin
d’empêcher les saisies incohérentes. L’information est alors visible par le chargé d’études afin
qu’il puisse corriger lui-même son erreur. La cohérence est basée sur le modèle objet de
l’installation transcrit en modèle de Base de Données Relationnelle (BDR) correspondant au
modèle objet du système.
La génération des livrables à partir de la description unique effectuée par le chargé d’études
nécessite une relecture (Figure 45). Cette tâche cognitive demande davantage de
concentration au chargé d’études puisqu’il s’agit d’une tâche de validation des documents
qu’il aurait eu à écrire précédemment. Cette phase de relecture permet également au chargé
d’études d’avoir un regard critique sur les éléments générés, dont le retour permet d’améliorer
la génération. Il doit être concentré afin d’analyser les manques et compléter les éléments
générés. Cette tâche demande, elle aussi, une concentration importante du chargé d’études. Il
123
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
doit compléter à la fois les livrables mais aussi les programmes pour les ElPO qui n’ont pas
pu être définis lors de la description.
124
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
La deuxième partie de notre démarche consiste à intégrer une génération de la commande sûre
de fonctionnement. L'approche proposée sépare la partie commande fonctionnelle de la partie
commande sécuritaire. L’objectif de cette séparation de la partie fonctionnelle, de la partie
sécuritaire, est d’assurer la sécurité du système, quelle que soit la partie fonctionnelle
implémentée dans l’API. L’intérêt de la démarche de génération du filtre robuste et de la
commande par contraintes est d’assurer au chargé d’études qu’il ne risque pas de nuire à la
sécurité du système et des hommes. Ainsi, il peut être serein et éviter un état de stress pouvant
mener à une surcharge mentale. La section suivante présente la démarche de génération de la
commande par contraintes qui est intégrée dans la démarche globale proposée (Figure 46).
125
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
126
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
sont formellement vérifiées hors ligne par model-checking (Marangé et al., 2010) et sont
définies pour garantir l’espace de liberté du système sûr le plus large possible. En cas de
violation d’une contrainte pendant le cycle API, la commande envoyée permet de replier la
PO dans un état de repos sans danger. Les contraintes de sécurité sont exprimées sous la
forme d’un monôme (produit de variables logiques, forme ) qui est une fonction logique des
Entrées/Sorties de l’Automate Programmable Industriel (API) et d’éventuels observateurs
(fonction des Entrées) pour pallier au manque d’observabilité du système. Le filtre robuste
s’implémente à la suite du programme de commande dans l’API afin d’assurer la sécurité
quelle que soit la commande implémentée dans le contrôleur industriel (API).
Le travail de définition des contraintes de sécurité appliqué à l’automatisation des EALE ne
doit être fait qu’une seule fois. Seule la partie fonctionnelle des éléments peut être amenée à
être modifiée. C’est pourquoi l’intérêt d’assurer la sécurité des ElPO, SePO et du système
global, grâce au filtre formel, quelle que soit la commande implémentée dans l’automate
semble pertinente. Bien que cette approche formelle nécessite l’intervention d’un expert du
système, combinée à la démarche de standardisation, elle permet de renforcer la sécurité des
ElPO et SePO sans compliquer le travail des chargés d’études.
Dans la méthodologie initiale décrite par (Marangé et al., 2010 , Riera et al., 2009) et
présentée succinctement dans le chapitre 2, l’ensemble de contraintes de sécurité est vérifié
formellement au moyen du « model-checker » UPPAAL (Behrmann et al., 2002) et repose sur
une modélisation du système (PO et PC) au moyen d’automates à états temporisés prenant en
compte différents types de données (intervalle d’entiers, tableaux, …). Les propriétés
permettent de vérifier que les contraintes de sécurité garantissent que la PO ne se trouvera
jamais dans un état dangereux.
L’idée que nous avons développée consiste à étendre l’utilisation du filtre à la
commande. Pour cela, le principe s’apparente à la SCT de Ramadge et Wonham présentée
dans le chapitre 2 en autorisant ou en bloquant les événements commandables à chaque cycle
API. Contrairement à l’approche initiale du filtre, en cas de violation de contraintes, la PO
n’est pas systématiquement repliée dans un état de repos. Le paragraphe suivant présente
notre contribution théorique au domaine et développe la méthode, le formalisme du
filtre et son utilisation pour obtenir un contrôleur sûr de fonctionnement facilement
implémentable dans un API.
127
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Les API ont un fonctionnement cyclique. Pour pouvoir reconstruire toutes les informations
nécessaires à la commande du système, il est nécessaire de mémoriser les valeurs des
informations, capteurs et sorties du cycle précédent. Dans la démarche, pour vérifier les
propriétés de sécurité, il est nécessaire de modéliser ce fonctionnement cyclique, qu’il faut
synchroniser par rapport aux évolutions de la PO. En effet, pendant le cycle de l’automate, le
système peut évoluer, mais ces évolutions ne seront lues qu’au cycle suivant. Cette
synchronisation est modélisée dans la Figure 48.
Chaque cycle commence par la lecture des entrées de l’automate (Lecture !). Ensuite, la
commande est calculée. Dans l’approche initiale, aucune hypothèse n’est faite et le contrôleur
est modélisé par un automate à états non déterministes. En d’autres termes, tous les
changements possibles des sorties sont envisagés. Ensuite, une phase de reconstruction des
informations (calcul des fronts montants, descendants, observateurs) est nécessaire
(Reconstruction !) Les contraintes peuvent alors être calculées. Si une contrainte est violée, la
commande entrainant un repli de la PO est calculée (Contraintes !). Enfin les valeurs des
sorties sont écrites vers les actionneurs (Ecriture !). Les actions des actionneurs font évoluer
le modèle de partie opérative (PO !) avant le début du cycle suivant, qui commence par une
nouvelle lecture des entrées.
128
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
“.”, “+”, “‾‾” sont respectivement les opérateurs logiques AND, OR, et NOT. La
valeur 0 correspond à FAUX (ou FALSE) et 1 correspond à VRAI (ou TRUE),
La méthodologie proposée pour concevoir les contrôleurs sûrs est basée sur l'utilisation des
contraintes logiques de sécurité. Il est donc nécessaire de bien comprendre la philosophie de
définition des contraintes.
129
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Les contraintes sont toujours définies du point de vue de la partie commande (PC), et il est
supposé que le temps de cycle API est suffisant pour détecter tous les changements du vecteur
d'entrées (opération synchrone, changements d'états simultanés des entrées de l’API
possibles).
Dans cette approche, les contraintes de sécurité sont exprimées sous la forme de monômes
logiques (produit des variables logiques, ∏). Les contraintes de sécurité doivent toujours être
égales à 0 (FAUX) à la fin de chaque cycle API avant la mise à jour des sorties, afin de
garantir la sécurité. L'état initial sûr de tous les actionneurs ( ) est défini à 0.
Les contraintes doivent être également définies afin de garantir la contrôlabilité du système.
Cela signifie que l’espace sécuritaire du système doit être suffisamment grand pour que le
système soit vivant. Après application des contraintes de sécurité, il doit être possible de
concevoir un contrôleur qui répond aux spécifications fonctionnelles du système. Par
exemple, en considérant l'hypothèse précédente au sujet de l'état initial sûr, un ensemble de
contraintes de sécurité qui remet à zéro toutes les sorties est sûr mais n'assure pas la
contrôlabilité.
Il faut différentier les contraintes qui impliquent une sortie unique à l’instant t (appelées
contraintes de sécurité simples, CSs), et les contraintes impliquant plusieurs sorties à l’instant
t (appelées contraintes de sécurité combinées CSc). Les contraintes exigent la connaissance
des E/S à l’instant t et aux instants précédents (présence de fronts par exemple).
Il peut être nécessaire de définir des observateurs dus au manque d'observabilité de système.
A titre d’exemple, une caisse peut être présente sur un convoyeur sans qu’un capteur indique
sa présence. Les observateurs correspondent idéalement à une fonction séquentielle des
entrées de l’API et permettent d’intégrer un état de la séquence aux contraintes de sécurité.
L'ensemble de contraintes de sécurité est considéré comme nécessaire et suffisant pour
garantir la sécurité du système. En d’autres termes, le retrait d’une contrainte ne garantit plus
la sécurité et l’ajout d’une contrainte n’apporte rien au niveau de la sécurité. Dans cette
approche, les contraintes de sécurité peuvent toujours être représentées comme des monômes
logiques et dépendent des entrées (à t, t-1, t-2…), sorties (à t, t-1, t-2…) et observateurs
(dépendant uniquement des entrées à t, t-1, t-2…) (Figure 49).
130
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Seul un expert du domaine peut définir les contraintes du système. L’expert a le recul
suffisant sur le fonctionnement du système pour suivre la démarche proposée (Figure 50). Le
but est de parvenir à définir les contraintes de sécurité sans faire d’hypothèses sur la
commande proposée.
1. La première étape est une analyse structurelle du système. Dans le cas qui nous
intéresse, celle-ci fait partie de la méthodologie proposée en début de chapitre.
2. La deuxième étape consiste à définir le document d’entrée pour définir rigoureusement
les contraintes. Selon le système étudié, cette étape de définition peut se faire à partir
de différents documents d’entrées :
A partir d’une analyse dysfonctionnelle, disponible ou réalisée par l’expert.
L’analyse dysfonctionnelle permet de définir les interactions entre ElPO et les
états que le système ne doit pas atteindre. Une analyse dysfonctionnelle est
généralement décomposée par élément et permet alors de définir
modulairement les CSs.
A partir du cahier de recette, qui contient tous les tests d’intégration auxquels
doit répondre le système. Sa complétude est affirmée par le retour d’expérience
131
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
132
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Les CSs et les CSc sont représentés (équations (1) et (2)) comme des fonctions monômiales
logiques (∏) qui doivent toujours être égales à FAUX à la fin de chaque cycle pour garantir la
sécurité. Il est important de noter que chaque CSs dépend seulement d'une variable
commandable (sortie : ok) et chaque CSc dépend de plusieurs variables commandables (sorties
: ok, ol, …).
[ ] [ ]
∏( ) (1)
[ ] ( ) [ ]
∏( ) (2)
133
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Il existe seulement deux formes exclusives des contraintes de sécurité simples (CSs) parce
qu'elles sont exprimées comme fonction de monôme, et elles impliquent seulement une sortie
unique à l’instant t (équation (3) ou (4)) :
[ ] [ ]
( ) (3)
XOR
̅̅̅ ( ) (4)
Ces contraintes de sécurité simples (CSs) expriment le fait que si ( ), qui est une fonction
monômiale (produit) de variables non commandables à l’instant t est VRAI, alors ok doit être
nécessairement FAUX (équation (3)) afin de maintenir les contraintes égales à 0. Si ( ) est
VRAI, ok doit être nécessairement VRAI (équation (4)).
Pour chaque sortie, il est possible d'écrire l'équation (5) correspondant à une somme logique
de toutes les contraintes de sécurité simples.
∑ ∑ ( ( )) (5)
( ) est une fonction logique ∑∏ indépendante des autres sorties à t étant donné que
seules les CSS sont considérées. ( ) peut être développé dans l'équation (6) où et
sont les fonctions polynômiales (somme de produits, ∑∏) des variables non
commandables (c’est-à-dire : lues uniquement). L'équation (6) doit toujours être égale à
FAUX étant donné que toutes les contraintes de sécurité simples doivent toujours être égales à
FAUX à la fin de chaque cycle API.
( ) ( ) ̅̅̅ ( ) (6)
En considérant toutes les CSs, il est possible d'écrire l'équation (7).
∑ ∑ ( ( ) ̅̅̅ ( )) (7)
On constate que nous retrouvons l’expression du théorème démontré par Hieter (2009)
présenté dans le chapitre 2. Par conséquent, les contraintes de sécurité simples doivent
respecter la propriété mathématique suivante (équation 8) pour que l’équation admette une
solution :
( ) ( )=0 (8)
En effet, si cette propriété n’est pas respectée, cela signifie que deux CSs sont en
contradiction et une des deux n'est pas vérifiée, ainsi l'ensemble de contraintes n'est pas
cohérent. Si fs0k = 0 ou si fs1k = 0, la propriété est logiquement vérifiée. Il est également
possible de démontrer la proposition suivante :
134
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
135
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Il est possible de définir, comme pour les CSs, des contraintes fonctionnelles simples (CFs) de
la sortie ok indiquant quand elle doit être égale à 0 ( ) ou à 1 ( ) (équation 11), d'un
point de vue fonctionnel.
( ) ( )
( ) ̅̅̅ ( ) (11)
Dans ce travail, uniquement les CFs et les sont considérées car cela correspond à la
réalité des programmes API existants. En effet, d’une part un programme API indique le plus
souvent à quel instant la sortie doit être activée et non pas à quel instant il ne faut pas
l’activer. D’autre part, les correspondent souvent à l’activation de sorties ( ) en fonction
des étapes de GRAFCET (IEC 60848, 2002) ou de SFC (IEC 61131-3, 2003) qui peuvent être
interprétés comme des observateurs. Dans le cas d’application de l’algorithme en tant que
filtre d’une commande existante, les correspondent aux valeurs des sorties calculées par
cette commande existante ( ) (équation 14) En intégrant les résultats de (Hietter, 2008)
sur la synthèse algébrique des contrôleurs logiques détaillée dans le chapitre 2, il est possible
136
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
Pour utiliser l’algorithme en tant que filtre d’une commande existante, il suffit d’affecter à
chaque la sortie calculée par sa commande existante (équation 14).
(14)
La commande obtenue est sûre (s'il y a seulement des CSs) parce que la sécurité est assurée
indépendamment de la partie fonctionnelle. En effet, si les CFs tentent d’imposer une sortie à
0 ou à 1, en contradiction avec la sécurité, les membres et continuent de garantir la
sécurité. Par conséquent même si le programme API présente des erreurs de commande, la
sécurité reste assurée.
Un exemple pédagogique va permettre de bien comprendre l’idée de base. Supposons la table
de vérité d’un contrôleur, représentée par le tableau de Karnaugh de la Figure 52, où la sortie
(variable commandable) dépend de 4 entrées (variables non commandables) a, b, c, d.
Pour chaque vecteur d'entrées, la sortie est indiquée. Elle peut être égale à 0 ou 1 ou à une
valeur indéterminée (0 ou 1). Une valeur indéterminée vient d’une combinaison d’entrées
pour laquelle la valeur de la sortie n’a pas été définie par le concepteur, et par conséquent
n’influence pas le système. Certaines valeurs de la sortie sont imposées par la sécurité
(respectivement et ). Les autres valeurs relèvent des exigences fonctionnelles.
137
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
S’k ab
cd 00 01 11 10
00 0 0 (f0) 0 (f0) X (0 or 1)
01 0 0 (f0) 0 (f0) X (0 or 1)
11 0 0 (f0) 1 (f1) 1 (f1)
10 0 1 1 0
{ ̅ ̅ (16)
S’k ab
cd 00 01 11 10
00 0 0 (f0) 0 (f0) X (0 or 1)
01 0 0 (f0) 0 (f0) X (0 or 1)
11 0 0 (f0) 1 (f1) 1 (f1)
10 0 1 1 0
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
( ̅ ̅ ) ̅ (17)
Un des points les plus intéressants est que, même si g1k est incorrectement exprimé (équation
18 et Figure 54), le calcul renvoie une valeur sûre. Ceci signifie que même si les
conditions fonctionnelles sont erronées la commande demeure sûre.
138
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
{ ̅ ̅ (18)
̅
S’k ab
cd 00 01 11 10
00 0 0 (f0) 0 (f0) X (0 or 1)
01 0 0 (f0) 0 (f0) X (0 or 1)
11 0 0 (f0) 1 (f1) 1 (f1)
10 0 1 1 0
Le problème des CSc semble être plus complexe. En effet, quand une CSc n'est pas vérifiée, il
est nécessaire d'accorder la priorité à une ou plusieurs sorties. Cependant, les CSc doivent
toujours être cohérentes avec les CSs, qui sont généralement prioritaires parce qu'elles
dépendent seulement des entrées et des observateurs. De plus, quand une CSc est résolue, cela
peut impliquer des problèmes avec d'autres CSc. Prenant en considération ces points, et
utilisant l'équation (13), il est possible d'écrire l'équation (19).
̅̅̅̅̅ (̅̅̅̅̅ ) (19)
fc0k et fc1k forcent la sortie ok à 0 ou 1 en prenant en considération les CSc. Durant le cycle API
à l’instant t, une valeur sûre de la sortie ok doit être trouvée. Cela signifie que la valeur de ok
doit être conforme avec toutes les CSc impliquant ok. Si fc0k et fc1k sont mal définis, une valeur
sûre de ok peut être impossible à calculer. Pour illustrer ce problème, prenons un exemple
simple. Soient les 2 CSc suivantes (équation 20) :
̅̅̅
̅̅̅ (20)
Dans ce cas, si o1 = 1 et o3 = 0, il est impossible de définir une valeur pour o2 respectant les 2
contraintes. Pour détecter ce problème, il faut vérifier qu’une CSc n’est pas violée deux fois
pendant un même cycle API. Ce sera le cas si une solution n’a pas été trouvée au bout de
(NCSc+1) tentatives au cours du même cycle API. En théorie, ce problème n’apparait pas si les
139
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
contraintes de sécurité ont été vérifiées formellement mais peut se produire en cas de
défaillance de capteurs par exemple.
Afin de présenter l’algorithme complet, il est nécessaire d’introduire des notations
complémentaires.
⃗⃗⃗⃗⃗ et ⃗⃗⃗⃗⃗ sont des vecteurs colonnes représentant respectivement les k valeurs de fc0k et fc1k.
⃗⃗⃗⃗⃗ et ⃗⃗⃗⃗⃗ peuvent être obtenus au moyen de deux matrices, MC0 et MC1 que le chargé
d’études doit définir pendant l'étape initiale d'analyse de sécurité pour indiquer la priorité
entre les sorties lorsque des CSc sont violées. MC0 et MC1 sont des matrices avec NCSc
colonnes et No lignes. MC0 et MC1 indiquent pour chaque CSc, si les sorties ( ⃗ ) doivent être
forcées respectivement à 0 ou à 1. Les équations (21 et 22) sont obtenues en utilisant le
produit logique de matrice.
⃗⃗⃗⃗⃗ ( ) ⃗⃗⃗⃗⃗⃗⃗
⃗⃗⃗⃗⃗ ( ) ( ) (21)
⃗⃗⃗⃗⃗ ( ) ⃗⃗⃗⃗⃗⃗⃗
⃗⃗⃗⃗⃗ ( ) ( ) (22)
140
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
La Figure 55 présente l'algorithme détaillé pour qu’il puisse être mis en application dans un
API en langage ST (IEC 61131-3, 2003).
/* g1k est calculé précédemment (programme existant ou non) ainsi que les observateurs (O) du
programme. Les matrices MC0 et MC1 des CSc sont également connues.
* Tous les sont calculés à chaque cycle API.
* Par sécurité, l’égalité suivante est vérifiée :
* Initialisation de et
Flag_CSs = FALSE
For k=1 to No
Flag_CSs = Flag_CSs + fs0k.fs1k
= False // INIT
= False // INIT
End for
Flag = not Flag_CSs
Cpt =0 // compteur pour les CSc
End For
End For
End If
End While
If Flag_CSs Then
print "Problème CSs"
Break // STOP avec erreur
End If
If (cpt= =NCSc) Then
print " Problème CSC"
// ok sont définies à une valeur sûre False en priorité.
For k=1 to No
̅̅̅̅̅
End For
End If
// Les sorties sont définies à une valeur sûre
For k=1 to No
End For
Figure 55 : Algorithme de commande sûre de fonctionnement
141
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
L’algorithme peut être utilisé comme Design Pattern de la commande, quel que soit le
système à commander et les spécifications. Il ne modifie pas en profondeur la commande
existante car le code correspondant au Design Pattern est ajouté à la fin des programmes
existants. Même si l’espace de fonctionnement restreint par la partie fonctionnelle (contraintes
fonctionnelles ou programmes existants) n’était pas suffisant pour garantir la sécurité du
système, celle-ci resterait assurée par les contraintes de sécurité. De plus, en cas de défaillance
matérielle du système, la structure « While » a été définie de telle sorte qu’elle ne risque pas
de provoquer de boucle infinie et donc le watchdog de l’API car le nombre de contraintes de
sécurité combinées (NCSc) est fini (Riera, Coupat et al., 2014b).
3.5.4 Synthèse
Cette section a présenté une méthode de génération de la commande sûre basée sur
l'utilisation des contraintes de sécurité (représentées comme ensemble de contraintes logiques
qui peuvent être simples ou combinées). Le résultat de ce travail est un algorithme générique
facile à implémenter dans un API ou à intégrer dans un template de commande par
contraintes. Le contrôleur programmé est sûr même si la partie fonctionnelle (contraintes
fonctionnelles ou programmes existants) est erronée car seule une commande respectant
les contraintes de sécurité est permise. La séparation des aspects « sécuritaires » et des
aspects « fonctionnels » offre des perspectives intéressantes comme l’amélioration des
performances et de la flexibilité du système. La gestion des modes de marche et arrêt ou des
modes opératoires liés au Manufacturing Execution System (MES) peuvent être facilité. Il en
est de même pour les modes « manuels » au travers des Interfaces Homme Machine (IHM) ou
des systèmes de supervision (Supervisory Control and Data Acquisition (SCADA)). Enfin,
cette méthodologie de définition de la commande pourrait changer la manière « traditionnelle
» de concevoir les contrôleurs des systèmes automatisés. Néanmoins, elle présente le grand
avantage de pouvoir être appliquée à une commande existante, ce qui est tout à fait approprié
au monde industriel. Dans le cas des EALE, cette vision du filtre de la commande est
intéressante et applicable car elle ne modifie pas fondamentalement le travail des chargés
d’études.
142
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
3.6 Conclusion
Ce chapitre a présenté notre contribution qui est à la fois méthodologique et théorique. Une
démarche originale pour les études d’automatisation permettant d’aboutir à la conception et la
réalisation d’un progiciel destiné aux chargés d’études et permettant la génération
automatique de livrables et de programmes API sûrs de fonctionnement a été proposée. Elle
entraîne in fine une amélioration du travail des chargés d’études sans modifier leur « savoir-
faire » car les livrables obtenus (à partir des templates) sont ceux qu’ils ont l’habitude de
produire. Elle s’applique, compte tenu de sa généricité, à tout domaine spécifique où la
commande est distribuée et la PO décomposable en SePO et ElPO. L’application de cette
méthodologie à un domaine « métier » se fait au moyen de la méthode itérative Agile (cycle
en VvvvWvvvWvvvV) de gestion de projets. En effet, une première étape de standardisation
est nécessaire afin d’établir les règles utilisées par le métier. Cette standardisation doit mener
à la définition des méta-modèles et de la grammaire des langages métier utilisés. Dès lors que
le métier est standardisé et le squelette du modèle défini, l’étude et le développement des
modèles et des templates de chaque SePO est réalisé indépendamment. Cette démarche
permet aux acteurs du projet d’avoir un retour d’expérience immédiat après chaque cycle du
processus. Ainsi, les vérifications ayant montré des erreurs dans la définition des templates
permettent d’établir des corrections qui seront également prises en compte pour les templates
suivants. L’intérêt de la décomposition en SePO intervient également lors de la génération du
filtre robuste aux erreurs de commande car elle permet d’éviter l’explosion combinatoire lors
de la vérification par model-checking des propriétés de sûreté et de fonctionnement. Une des
originalités de notre travail est d’avoir proposé une utilisation non bloquante du filtre de
commande à base de contraintes logiques, garantissant ainsi la sûreté de fonctionnement des
contrôleurs existants.
Dans le chapitre suivant, la méthodologie est appliquée au domaine spécifique des EALE.
Nous verrons comment elle a été mise en œuvre et quels outils ont permis l’aboutissement de
cette démarche.
143
Chapitre 3 : Proposition d’une méthodologie pour les études d’automatisation
144
Chapitre 4 : Application de la méthodologie aux études
d’automatisation des EALE
4.1 Introduction
Le chapitre précédent a présenté une méthodologie originale pour les études d’automatisation
devant contribuer à une amélioration du métier des métiers d’études d’automatisation. Nous
avons montré que cette démarche est applicable à tout métier dont le système étudié peut être
divisé en Sous-ensembles de Partie Opérative (SePO) et dont l’architecture de
contrôle/commande est distribuée. Cette méthodologie a pour but de répondre aux
problématiques (humaines, techniques et économiques) énoncées dans le chapitre 1.
Deux axes de recherche ont été intégrés dans la démarche présentée en Figure 33 du chapitre
3. Ce chapitre traite de la première voie d’amélioration, à savoir, la démarche de
standardisation et de génération de livrables. Le second axe de recherche, la proposition d’une
commande sûre de fonctionnement sera traitée dans le chapitre 5.
Dans ce chapitre, le travail réalisé pour mettre en place la démarche de génération de code
orientée modèles, est présenté. A partir d’un métier standardisé, il est possible de générer des
livrables, dont la qualité doit être vérifiée et assurée. Pour s’assurer de la qualité du code, des
outils tels que PLC Checker, proposé par la société Itris Automation Square existent. Ils
permettent d’analyser le code API et de vérifier le respect de règles de programmation
établies. Lorsque le code est de qualité, il faut le formaliser. Pour cela il faut définir la
grammaire du langage de programmation. Enfin pour générer un code de qualité à partir de
modèles, puisque nous nous orientons vers la programmation à base de modèles, il faut définir
des modèles de la Partie Opérative (PO) mais également de la Partie Commande (PC) et
définir les associations qui lient ces deux parties du système. Pour englober ces travaux, deux
solutions ont été étudiées : le développement d’un outil spécifique et l’intégration d’une
solution industrielle existante. Les résultats de cette comparaison sont donnés et la solution
choisie est décrite. Les vues, les modèles, les templates de génération du code sont présentés.
Nous insistons à la fin de ce chapitre sur le cycle Agile mis en place pour le développement
de l’outil choisi et sur les conséquences que la solution développée a sur le workflow et le
métier des chargés d’études. Les résultats d’un questionnaire anonyme adressé aux chargés
d’études sont analysés à la fin de ce chapitre.
145
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
146
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Ce schéma décrit la Partie Opérative (PO) qu’il est nécessaire de décomposer en Sous-
ensembles de Partie Opérative (SePO) et en Eléments de Partie Opérative (ElPO).
Les paragraphes suivants reprennent le contenu des fiches référentielles et synthétisent les
informations pour décomposer et décrire le système étudié. Ainsi nous définissons les SePO
principaux d’une sous-station :
Les SePO sont composés d’ElPO, dont voici une liste exhaustive. Chacun de ces types
d’ElPO peut être spécifié en fonction de la fonction qu’il doit remplir au sein d’un SePO
particulier. En effet, un ElPO peut apparaître dans deux SePO mais n’aura pas la même
fonction dans ces deux SePO. C’est pourquoi ils seront différentiés lors de l’analyse
147
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
structurelle du système (par exemple, le sectionneur de partie HT n’a pas la même fonction
qu’un sectionneur à rupture brusque (SRB) de GT) :
Disjoncteur,
Sectionneur,
Transformateur en courant (Tc),
Transformateur en Tension (Tt),
Transformateur,
Batterie de Condensateurs (Batt. K)
4.2.1 Partie HT
Cette partie haute tension est reliée au réseau haute tension RTE (entre 63kV et 400kV)
(Figure 57). Elle dépend du type de raccordement au réseau RTE (antenne, piquage, coupure
d’artère, double dérivation).
148
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
149
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Arrivée Arrivée
HT 1 HT 2
3 AAi 3 AAj
RTE
RFN
SHT1 SHT2
CO/CF
Abonné Automate CO/CF
Arrivée HT i Abonné Automate
so/sf, Défauts Arrivée HT j
so/sf, Défauts
RLI tempos
Abonné Automate
Commun k
SHT3 SHT4
Défauts
CO/CF
so/sf,
AAk
SBHT1 SBHT2
Dans le cas d’un raccordement RTE en coupure d’artère, la position des appareils est
récupérée par un unique Abonné Automate. Un transformateur en tension est positionné en
aval de chaque arrivée HT.
150
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Le Groupe Traction a pour but de convertir la tension HT fournie par RTE en une tension
permettant l’alimentation des caténaires (25 kV, 2x25 kV).
151
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Mise en œuvre GT
152
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
En cas d’arrivées HT par Groupe Traction, la limite de propriété RTE peut être située en
amont du sectionneur HT du GT. Celui-ci pourra être associé à un sectionneur de Mise A La
Terre (MALT) (Il n’y aura pas d’abonné automate Arrivée Haute Tension).
153
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Deux Départs Traction alimentant les voies d’une même direction sont couplés par un
Sectionneur By Pass (SP) permettant l’alimentation du sectionneur tête de câble par le
disjoncteur de l’autre DT. La Figure 63 montre la mise en œuvre de deux départs traction
dans un abonné automate de départs traction correspondant, associés à deux protections.
154
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
4.2.5 Communs
Les autres éléments constitutifs d’une sous-station sont appelés communs. Le nombre
important de sous-stations, système complexe et évoluant dans le temps, est source de
particularités. C’est pourquoi ils sont regroupés dans les fonctions communes de l’installation.
Néanmoins, certaines fonctions de ces communs peuvent également être intégrées dans des
SePO : barre 25kV, pontage…
155
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Elle est composée de sectionneurs de barre 25kV (SPL1 et SPL2), positionnés entre chaque
GT.
4.2.5.2 Pontage
Les pontages permettent une alimentation secours en assurant la liaison électrique de deux
secteurs contigus normalement isolés par lame d’air (Figure 67). Cette exploitation en mode
dégradé peut avoir lieu lorsqu’un Départ Traction est en défaut.
156
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Pour chaque SePO décrit (HT, GT, DT, Communs), un type d’abonné automate est dédié.
Cette première étape d’analyse permet d’aborder l’étude des programmes en considérant la
structure du système. La qualité du code des programmes actuels est étudiée dans la section
suivante. Les programmes actuels sont utilisés depuis 1998, année de première utilisation de
l’API actuellement utilisé par la SNCF, l’ACS21. Bien que ces programmes n’aient jamais
entrainé de problèmes de contrôle/commande, ils n’ont pas cessé d’évoluer depuis 1998. C’est
pourquoi nous avons proposé d’évaluer leur qualité et leur niveau de standardisation. En effet,
les programmes sont réalisés par les chargés d’études, chacun ayant sa propre façon de
programmer. Les programmes initiaux ont donc subi de nombreuses mutations. Comme
proposé dans la méthodologie, les programmes API ont été homogénéisés et des règles, de
nommage par exemple, ont été établies, pour que tous les programmes puissent être lisibles
par l’ensemble des chargés d’études. Cette analyse des programmes mènera ensuite vers
l’analyse structurelle du système (PO) et de la Partie Commande (PC).
Dans le but de réaliser des programmes API seins, il convient d’examiner en détail le code
réalisé actuellement. Ce travail se décompose en trois phases.
Dans un premier temps, les principes de commande mis en œuvre sur le système sont étudiés
afin de comprendre le fonctionnement de ceux-ci. La partie commande doit être étudiée pour
comprendre comment elle est distribuée, comment les fonctions sont implémentées et
comment se font les échanges d’informations.
Etant donné l’aspect séquentiel important du système étudié, une phase d’étude des
GRAFCETs et des programmes SFC est indispensable pour comprendre leur évolution. Cette
étude minutieuse de reverse engineering, mise en relation avec l’étude préalable des principes
d’automatisation et l’étude fonctionnelle du système, permet de vérifier la cohérence du code
en plus des règles de codage utilisées dans le contrôle/commande des EALE. Les programmes
existants sont écrits par l’ensemble des chargés d’études, dont l’expérience en programmation
API est différente. Le code produit par chacun d’eux est par conséquent différent. Au travers
de cette étape, les bonnes pratiques du métier doivent être définies pour être intégrées dans les
templates de génération.
157
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Enfin la dernière étape consiste à utiliser un outil permettant de vérifier les règles d’écriture
des programmes. Cet outil, très développé dans le milieu logiciel, nous a permis de mettre en
évidence des règles précises de codage et de définir de nouvelles règles spécifiques au
domaine des EALE. En effet PLC Checker de la société ITRIS Automation Square (cf.
chapitres 2 et 3) est un outil d’analyse qualimétrique du code adapté aux API. Basé sur la
norme (ISO 9126, 2001), il analyse les programmes et génère un rapport décrivant les règles
non respectées des programmes API.
L’un des objectifs de cette étape, est également de croiser les différentes réalisations afin de
mettre en évidence les divergences entre chaque projet. Les EALE étudiés par la direction de
l’ingénierie sont répartis sur l’ensemble du territoire français. Selon les régions, les règles de
maintenance peuvent évoluer de manière différente, le matériel peut également avoir évolué
ainsi que les principes d’exploitation qui leurs sont liés et des différences existent. Cette
dimension géographique, corrélée à l’évolution temporelle du système, dont les éléments sont
amenés à changer régulièrement en fonction des appels d’offre produit, explique l’existence
de divergence entre les programmes.
Les programmes étant réalisés par l’ensemble des chargés d’études, d’un programme à
l’autre, les variables ne sont pas nommées de la même manière, la casse des variables peut
être modifiée et les abréviations au sein des variables ne sont pas normalisées. Des règles de
nommage doivent donc être définies. Exemple : imaxGT ou ImaxGT ou iMaxGT pour
maximum d’intensité du Groupe Traction.
158
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Les règles de casse permettent de savoir comment lire une variable, des règles d’abréviations
peuvent définir la décomposition du nom de chaque variable, en définissant un nombre de
caractères attribués à chaque partie composant le nom de la variable. Exemple : DeclDegiv ou
DecDegiv pour déclenchement dégivrage.
Dans le programme d’acquisition des TSS (AcquiTSS), les entrées observées en direct et en
inverse ne sont pas séparées. Les entrées observées en direct sont alimentées lorsqu’un signal
est reçu par l’API alors que les entrées observées en inverse sont alimentées lorsque le signal
disparaît. Ainsi, les informations sécuritaires sont envoyées en inverse, ainsi elles reçoivent
un signal en continu tant qu’il n’y a pas de défaut. L’apparition d’un défaut ou une défaillance
du système entraine la coupure du signal et le repli du système concerné dans un état de
sécurité, généralement le défaut entraine l’ouverture du disjoncteur associé. Ce mélange
d’informations sécuritaires et non sécuritaires peut porter à confusion lors de la lecture des
programmes. Une distinction permettrait de mettre en évidence directement les variables
sécuritaires.
Dans ce paragraphe, les résultats obtenus par l’analyse effectuée avec PLC Checker sont
discutés. Nous avons vu dans le paragraphe 4.2 (Analyse du système) qu’il existe plusieurs
types d’abonnés automates en charge de fonctions différentes. Afin d’obtenir des résultats
cohérents et représentatifs de l’existant, des programmes maximalistes pour les différents
159
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
types d’abonnés ont été testés, c'est-à-dire qu’ils comprenaient toutes les options et fonctions
existantes :
Pour que l’analyse de ces programmes soit la plus juste possible, les programmes standards
maximalistes ont été écrits à partir du code des applications d’une vingtaine de projets
existants et en service. L’intérêt de tester des programmes maximalistes est que toutes les
options, toutes les fonctions et tous les cas sont traités. Ainsi, lorsque les templates seront
écrits, à partir de ces applications maximalistes, il faudra conditionner certaines fonctions
selon la structure des configurations ou certaines entrées/sorties de ces fonctions. Au total, au
travers des trois applications standards réalisées, ce sont environ 21 000 lignes de code qui ont
été testées. Pour chaque remarque rapportée par PLC Checker, l’évolution ou non des
programmes est justifiée.
Les remarques les plus récurrentes dans l’analyse des résultats sont les règles de commentaire.
Les commentaires doivent être homogénéisés et complétés dans l’ensemble des programmes.
Il est donc inutile de s’attarder sur cet aspect. Il est considéré comme essentiel à la
maintenabilité des programmes et donc pris en compte.
160
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Dans les aiguillages des appareils, l’étape de contrôle en local individuel a une
complexité cyclomatique de 10 :
if not(defautCarte) then
if((cfindAPP1=1) AND (coindAPP1=0)) then
cfAPP1 := TRUE;
coAPP1 := FALSE;
else if((cfindAPP1=0) AND (coindAPP1=1)) then
cfAPP1:=FALSE;
coAPP1:=TRUE;
else if((cfindAPP1=0) AND (coindAPP1=0)) then
cfAPP1:=FALSE;
coAPP1:=FALSE;
else
cfAPP1 := false;
coAPP1 := false;
AnoLDI:=TRUE;
end_if;
end_if;
end_if;
else
cfAPP1 := false;
coAPP1 := false;
end_if;
solAPP1 := soAPP1;
sflAPP1 := sfAPP1;
sodAPP1 := false;
sfdAPP1 := false;
Le code écrit dans cette étape ne peut pas être simplifié. En effet, l’affectation des variables
dépend des différents cas traités afin d’assurer la bonne prise en compte de la commande
souhaitée. Dans le cahier de recette, le contrôle/commande des appareils en local individuel
est testé selon son passage local (ldi), la commande envoyée (co/cf), la signalisation reçue
(so/sf). En considérant chaque cas et son inverse, la complexité cyclomatique de 10 est
atteinte et n’est donc pas gênante, étant donné que tous les cas sont testés.
161
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
L’information N2 liste les variables et les programmes ayant un nom de moins de quatre
lettres. Les variables peuvent alors ne pas être explicites (Tableau 6).
Le nom de ces variables fait partie du vocabulaire métier, leur présence dans les programmes
ne gêne pas la lecture.
La règle S12 indique les programmes où une structure conditionnelle de type « if then else »
n’a pas de cas par défaut. Ce problème ne risque pas d’entrainer de blocage sur le cycle
automate.
La règle S2 indique les variables qui sont écrites depuis plusieurs programmes. Dans les
applications API, les sorties sont toujours écrites dans le programme SFC de commande des
appareils ou dans le programme de mise à zéro de toutes les sorties. L’aspect séquentiel des
programmes est responsable de cette multi-écriture. Cependant, elle ne peut se produire au
cours d’un même cycle. Le programme SFC d’aiguillage des appareils est responsable de
l’écriture multiple des variables de signalisation distante et locale. Mais cette écriture est
nécessaire pour le choix du contrôle des appareils.
L’information S7 liste les variables n’étant pas utilisées dans les programmes. Un grand
nombre de variables apparaissent ainsi comme non utilisées, ceci est dû à une volonté de
standardisation des variables dans les programmes. Ainsi, d’un programme à l’autre, les
mêmes variables existent même si elles ne sont pas utiles dans le programme original, en cas
de modification, elles peuvent être utilisées par la suite. Cela évite aux chargés d’études de
devoir réécrire les variables dans le dictionnaire, le commentaire et l’adresse. Bien que cette
pratique soit compréhensible, vue la méthode de travail actuelle, les variables non utilisées
devront disparaître lorsque les programmes seront générés.
162
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
A partir des analyses qui viennent d’être présentées, un retour d’expérience sur la qualité des
programmes est obtenu. Les remarques remontées n’ayant pas de justifications valables
doivent être corrigées. Un code de qualité est alors obtenu à la fin de cette méthode et des
règles d’écriture du langage métier ont pu être définies (Figure 37).
Le code de qualité obtenu peut maintenant servir de template dans la suite de la démarche.
Les templates doivent être formalisés afin d’avoir une structure de référence permettant
d’éviter les erreurs de structure dans le fichier source. La prochaine section présente le
formalisme d’IsaGraf3.32, utilisé pour programmer l’ACS21, API pour le contrôle/commande
des EALE.
Pour générer le code d’une application, il est nécessaire d’avoir un format d’import/export des
programmes lisibles dont la structure est formalisable. Ce format est généralement disponible
en XML dans la plupart des Interfaces de Programmation d’Applications (IPA). C’est le cas
d’Unity Pro, l’atelier de Schneider Electric ou encore de Straton, l’atelier de COPALP.
Malheureusement ce format d’import/export n’existe pas dans IsaGraf 3.32. IsaGraf 6, le
nouvel atelier proposé par ICS Triplex, est compatible avec IsaGraf 3.x et propose un format
XML d’import/export. Toutefois, la version actuelle d’IsaGraf 6 ne gère pas le langage SFC
en compatibilité de projet IsaGraf 3.x. Il a donc fallu trouver une autre solution pour générer
les programmes actuellement réalisés par la SNCF sous IsaGraf 3.x.
Heureusement, les fichiers sources d’IsaGraf 3 sont lisibles. Pour chaque automate, un dossier
est créé dans le répertoire projet, par défaut dans le répertoire IsaGraf : C:\ISAWIN. Ce
dossier contient des fichiers textes lisibles selon l’architecture décrite dans le Tableau 7.
163
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Chacun de ces fichiers suit une structure particulière. Pour illustrer nos propos, la structure du
dictionnaire de variables et celle des sous-programmes API sont présentées dans les
paragraphes suivants. Ces structures particulières forment la grammaire de l’IPA. Cette
grammaire est détaillée pour chaque fichier source présenté.
Ces fichiers contiennent toutes les variables définies dans l’application. Pour chaque variable,
une ligne est écrite selon la grammaire suivante :
#B[1]%+[adresseVariable]%[NomVariable]%%%[CommentaireVariable]
Le #B de l’exemple ci-dessous est utilisé pour les variables booléennes. Pour les variables
entières et réelles, la ligne commence par #A, pour les temporisations, la ligne commence par
#T.
164
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Pour chaque langage de programmation de la norme IEC 61131-3, une grammaire propre à
IsaGraf 3 existe.
Pour les langages textuels, tels que le Structured Text (ST) ou le Instructions List (IL), la
grammaire est celle du langage de programmation même. Il n’y a pas de grammaire
supplémentaire outre celle imposée par le langage de programmation.
La grammaire spécifique est présente pour les langages graphiques de la norme (IEC 61131-3,
2003). Ainsi, les grammaires des langages Ladder Diagram (LD), Function Block Diagram
(FBD) et Sequential Function Chart (SFC) doivent être définies. A titre d’exemple, la
grammaire du langage LD est présentée dans le paragraphe suivant.
Le Ladder Diagram est un langage graphique dont l’idée initiale est la représentation de
fonction logique sous la forme de schémas électriques. Ce langage se lit rung par rung.
Chaque rung est composé des éléments suivants :
les entrées (ou contacts), pour lire la valeur d'une variable booléenne :
165
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
les sorties (ou bobines), pour écrire la valeur d'une variable booléenne :
Dans chaque rung, un élément a une position horizontale (positionX) et une position verticale
(positionY) dont le point d’origine est le début du rung.
(*Commentaire*)
Il se finit par :
Lorsqu’un élément est mis en parallèle d’un autre, l’instruction BST est mise avant l’élément
de la première ligne et l’instruction NXB devant l’élément de la ligne du dessous.
L’instruction BND permet de finir la mise en parallèle d’une ligne.
166
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Exemple :
167
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Pour écrire les templates, sur la base de la grammaire de l’IPA, il est nécessaire d’intégrer
également les méta-modèles et les modèles de PO et de PC. La prochaine section décrit de
manière non exhaustive les méta-modèles et les modèles réalisés sur les sous-stations 25kV.
Dans le chapitre 3, les méta-modèles et modèles pouvant être adaptés à tout système
automatisé ont été présentés. Dans ce chapitre, pour poursuivre la présentation de la
démarche, les modèles d’une sous-station 25kV sont présentés ainsi que leur cohérence avec
les méta-modèles. Lors de la phase de modélisation, il est nécessaire de savoir dans quel but
le modèle est réalisé, pour cela des données d’entrées ont été définies dans le chapitre 3.
De cette analyse structurelle découlera l’ensemble des liens entre les objets du système.
Lorsque les templates seront écrits, pour la génération du code d’un élément, si cet élément a
un lien avec un autre élément du système, cet élément doit être accessible. La principale
relation observable dans les modèles est la composition, qui permet d’accéder à n’importe
quel élément du système en remontant les parents d’un élément puis en redescendant vers
l’élément recherché.
168
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Partie Opérative
*
SePO
*
ElPO
Pour commencer, la sous-station, qui est notre PO, est décomposée en SePO. L’analyse du
système a permis d’établir les sous-ensembles qui constituent une sous-station 25kV (Figure
71). La sous-station 25kV est composée de n éléments Communs, d’un à quatre Départs
Traction (DT), d’un à trois Groupes Traction (GT), de zéro à deux Batteries de Condensateurs
(Batt. K) et d’une Partie HT.
Sous-station
1 11 1 1 1
1
1
1
1
Chacun de ces SePO peut être décomposé en ElPO. Le chapitre 3 a également traité du lien
entre PO et PC (Figure 72). Chaque SePO et ElPO défini doit être associé à un API et à des
E/S de cet API.
169
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Le modèle simple présenté dans le chapitre 3 a été enrichi afin d’obtenir un modèle de
connexion adapté à notre système. Créer des liens de plus bas niveau entre la PO et la PC
permet de parcourir facilement les connexions E/S et facilite l’écriture des templates.
Base
1 1
1
1
*
*
1 1
1 1
*
*
API SePO
1 1
1
1 1
*
ElPO
*
1 1..4
1 1 1
*
16 8 8
16
1
1
Les SePO doivent, autant que possible, se rapprocher d’une fonction attribuée à un API du
système de contrôle/commande distribué. En effet, le contrôle/commande des sous-stations
25kV a été étudié pour assurer la disponibilité de l’installation. Outre les appareils communs,
chaque SePO est contrôlé et commandé par un abonné (API) spécifique.
170
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Les sous-stations fiabilisées sont composées à minima de deux GT et donc de deux abonnés
automates GT (AAGT). Chaque SePO renvoie des informations vers la PC. Les informations
comprennent également les défauts et sont câblées aux TSS. Les SePO sont composés
d’appareils connectés sur les cartes 4TCD/TSD. Chaque carte 4TCD/TSD peut contrôler et
commander 4 appareils.
Le modèle d’un GT est détaillé en Figure 73. Les modèles des autres SePO sont disponibles
en annexe 2.
1
11 GT AAGT
11 1 1
1 1
1 1 1 1
1
1 1 1
*
*
*
1 0..3 0..1
*
1 1 1 1
Protection Sect. Phases Sect. HT Dj GT Transfo. SRB Information
Le Groupe Traction est composé d’une partie supérieure (HT) qui se traduit par la présence
d’un sectionneur HT ou de trois sectionneurs (commutateurs) de phases ou d’aucun appareil
HT. Le GT possède un disjoncteur (Dj GT), un sectionneur à rupture brusque (SRB), une
protection et un transformateur. Il renvoie également des informations vers son abonné
(AAGT) dédié.
La PO, les SePO et les ElPO sont des objets instanciables ayant des attributs et des méthodes.
Pour chacun, il faut recenser les variables qui le caractérisent. Ces attributs et ces méthodes
permettront de définir des comportements différents selon leur valeur lors de l’étape de
génération de code. Il est donc nécessaire de porter un grand intérêt à cette étape. Celle-ci ne
peut se faire sans une connaissance approfondie du système. L’intervention des experts du
domaine spécifique est donc indispensable pour cette étape. Ils connaissent les paramètres, les
options et les différences possibles de chaque SePO et ElPO.
Chacun d’eux peut être instancié et possède des caractéristiques spécifiques. Ces
caractéristiques et le méta-modèle décrit sont utilisés pour définir les templates de génération
171
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
de code. La section suivante présente la solution de génération de code qui a été choisie par
rapport à une solution de développement interne.
Maintenant que la grammaire de l’IPA IsaGraf 3 a été définie, que les modèles sont assez
évolués pour intégrer les compositions d’éléments, les liens entre chacun et les associations
existantes, il est nécessaire de choisir un environnement de développement du projet. En effet
l’écriture des templates dépend de la solution choisie et du langage de programmation de la
solution. Deux solutions permettant la génération de livrables ont été techniquement et
économiquement analysées.
Pour réaliser le logiciel de génération de livrables, deux solutions ont été explorées :
Les avantages et les inconvénients des deux solutions ont été étudiés dans la limite des
connaissances disponibles lors de l’étude. Les deux solutions ont été évaluées par les
responsables de la section Conception et Expertise des Systèmes (CES2) en charge des
installations de contrôle/commande des EALE, selon les critères suivants :
172
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
L’évaluation des solutions a mené au diagramme présenté en Figure 74. Le détail de l’analyse
est disponible en Annexe 3.
Que le logiciel soit développé en interne ou externe, il ne pourra pas être développé au sein de
la section des chargés d’études. Les compétences requises pour le développement d’un tel
outil dépassent notre cadre de travail. Le code source du logiciel ne pourra pas être modifié en
interne à cause du niveau d’expertise nécessaire au développement de celui-ci.
La propriété des sources est un avantage pérenne qui a pour inconvénient de devoir
disponibiliser des ressources spécifiques et rares dans l’entreprise. Cet inconvénient n’est pas
source de pérennité à cause de la dépendance envers cette ressource couteuse.
Le risque d’entreprise est différent dans les deux cas. Prosyst est responsable de la
maintenance du logiciel Odil. Une équipe est dédiée à ce travail. Le risque vient uniquement
de sa santé économique. Alors qu’un développement en interne aurait pour risque, le manque
de partage de la conception du logiciel. En effet celui-ci serait réalisé par un développeur qui
serait seul à connaitre le code source. La pérennité du logiciel ne dépendrait alors que de lui.
173
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
L’évolution des templates dépend du savoir-faire métier. Elle doit donc être réalisable par la
section des chargés d’études (CES2). Les modifications seront effectuées sur le progiciel
spécifique SNCF, sans avoir à modifier le code source du logiciel. Le cœur du logiciel
permettant la génération de code n’a pas de lien direct avec le métier d’IGTE, les évolutions
de cette partie doivent être réalisées par des informaticiens compétents au travers d’un contrat
de maintenance évolutive et corrective.
Une étude financière a été menée pour comparer les deux solutions, le Tableau 11 présente les
résultats de l’étude (Annexe 4). Le tableau ci-dessous présente la synthèse des coûts de
développement annuels de chaque solution dans le but d’avoir une comparaison aisée de
celles-ci.
174
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Pour convertir les mois en valeur monétaire dans le Tableau 11, nous utilisons le nombre
d’heures travaillées par mois : 151h au tarif horaire d’un bureau d’étude : 80€. La synthèse de
l’étude financière montre que l’intégration de la solution Odil au sein de notre démarche
permet de limiter les coûts de développement logiciel. Ce qui parait cohérent puisque cette
solution se base sur une structure logicielle déjà existante qu’il est possible d’adapter en
décrivant le métier ciblé au travers d’un standard, comme il sera expliqué dans la suite de ce
chapitre.
Le progiciel développé pour les études de contrôle/commande des EALE a été baptisé
GénéRateur Evolutif du Modèle et des LIvrables des Nouvelles Sous-stations (GREMLINS)
175
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
176
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
o Une vue des défauts de chaque SePO, dans laquelle les chargés d’études
activent ou désactivent les défauts liés aux SePO de leur projet. La Figure 76
présente les défauts associés à un Groupe Traction.
177
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
178
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
o Une vue de connexion des cartes E/S est créée pour chaque carte. Ces vues
permettent de connecter les TCD/TSD aux appareils et de connecter les TSS
aux défauts. La Figure 78 montre l’interface de connexion des appareils, celle
de connexion des défauts est équivalente.
La vue SCLA permet de répartir les entrées/sorties de chaque SePO sur l’abonné automate
associé (Figure 79). Les abonnés communs doivent être ajoutés manuellement en fonction des
données d’entrées des chargés d’études. Un câblage automatique est alors proposé, respectant
les règles de disponibilité du système. Cette répartition peut être modifiée manuellement par
les chargés d’études pour chaque projet. Un contrôle de cohérence est effectué sur
l’association des appareils aux TCD/TSD et sur l’association des défauts et des informations
aux TSS.
179
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Une vue API permettant de vérifier que toutes les propriétés des SePO et ElPO ont été
correctement complétées.
180
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
181
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
o Cahier de Recette (.doc) contenant toutes les fiches de tests que doit subir le
système (la Figure 81 montre la génération de la fiche de recette « Arrêt
Automate »).
182
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
La génération des programmes automate est basée sur les fichiers sources des programmes
standardisés. Pour générer le code des projets IsaGraf 3, il faut créer les fichiers
correspondants à l’application voulue. Le but étant de ne pas ajouter de fichiers inutiles dans
le dossier de programmation lors de l’export des programmes.
Dans IsaGraf 3, un projet de programmation API est contenu dans un dossier. Ce dossier
contient l’ensemble des fichiers sources décrit dans le paragraphe 4.4.1. Des fichiers sont liés
automatiquement à la création d’un abonné (lié à un SePO) dans le projet, mais d’autres
fichiers sont ajoutés en fonction des ElPO présents dans cet SePO. Le Tableau 12 décrit les
fichiers contenus dans le dossier de programmation d’un AAGT à titre d’exemple et définit le
parent de chacun. C’est en fonction de la présence de ce parent que le fichier sera ajouté. Les
fichiers ayant pour parent AAGT, sont automatiquement ajoutés, c’est le cas de tous les
fichiers appli.*.
Pour créer les fichiers qui ne dépendent pas de AAGT, des requêtes conditionnées de type «
pour chaque » sont utilisées. Par exemple, l’ensemble des sectionneurs, disjoncteurs et
interrupteurs héritent de la classe abstraite modeleAppareil. Pour créer les fichiers sources
LSF d’aiguillage et de commande de ces appareils, il suffit de parcourir les objets de type
modeleAppareil, fils du GT associé à l’AAGT. Dans le code ci-dessous les propriétés sont
appelées entre crochets ([NomAIG] par exemple).
183
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
<OdilExportXml
Fonction="Enumeration"
Requete="SELECT_FROM(Parent::modeleAppareil)">
<OdilExportXml Fonction="CreateFile"
FileProto=".\ProtosAPI\ProtosAAGT25kV\[NomAIG].LSF"
FileExport=".\[NomAIG].LSF">
<OdilExportXml Fonction="CreateFile"
FileProto=".\ProtosAPI\ProtosAAGT25kV\[NomCDE].LSF"
FileExport=".\[NomCDE].LSF.XML">
</OdilExportXml>
Le code source de ces fichiers contient des dépendances avec d’autres éléments. Le
paragraphe suivant présente l’écriture d’un template avec Visual Standard.
A partir des fichiers sources de programmes existants, analysés avec PLC Checker, un code
standard de qualité est obtenu. A partir de ce code, les templates des programmes ont été
définis. Pour illustrer nos propos, l’exemple d’un extrait du fichier AcquiFIP.LSF du Groupe
Traction est donné.
Extrait 1 : Le code ci-dessous permet de récupérer les ordres envoyés par l’opérateur du CSS
sur le réseau FIP :
(* Lecture des ordres provenant du RTU sur FIP *)
codS1:=LectFIP('COD', 0);
cfdS1:=LectFIP('CFD', 0);
codD1:=LectFIP('COD', 3);
cfdD1:=LectFIP('CFD', 3);
codSRB1:=LectFIP('COD', 4);
cfdSRB1:=LectFIP('CFD', 4);
Pour générer le code ci-dessus, les modules d’E/S de toutes les cartes 4TCD/TSD de l’AAGT
sont parcourus. Lorsqu’un module n’est pas vide (sous-entendu connecté à un appareil) et
qu’il n’est pas connecté au retrait automatismes (fonction inhibant les reports de protections),
alors les lignes de lecture des ordres sont ajoutées avec des variables dépendantes de l’objet
connecté au module d’E/S. [NomConnexion] correspond au Mnémonique de l’appareil
connecté à la TCD/TSD. [NumAuto] correspond au numéro de ce module d’E/S parmi les
TCD/TSD de l’AAGT parent. Cet exemple illustre parfaitement le besoin d’association entre
le modèle de PO et le modèle de PC comme nous l’avions exprimé dans le chapitre 3 et dans
la section 4.5.2 de ce chapitre.
184
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
#combinatory
(* Lecture des ordres provenant du RTU sur FIP *)
<OdilExportXml
Fonction="Enumeration"
Requete="SELECT_FROM(TypeCarteTCD::ModeleES;[ET([TypeConnexion]!=[EMPTY()];
[NomConnexion]!=RetAuto)])" Tri="NumAuto">
<OdilExportXml Fonction="CreateNode">
<Node>
cod[NomConnexion]:=LectFIP('COD', [ARITHM([NumAuto]-1)]);
cfd[NomConnexion]:=LectFIP('CFD', [ARITHM([NumAuto]-1)]);
</Node>
</OdilExportXml>
</OdilExportXml>
Extrait 2 : Le code ci-dessous permet de récupérer les variables réflexes envoyées par les
autres abonnés sur le réseau FIP. Dans cet extrait, il s’agit de récupérer l’information de non
fonctionnement des Départs Traction à la bonne adresse sur le réseau.
Pour générer les lignes ci-dessus, l’ensemble des objets de type abonné automate de DT
(AADT) est parcouru. Une variable {ValHexa} permet de créer les lettres d’identification des
départ à partir de leur identifiant [NumAuto]. Leur [Direction] est également indiquée pour
que le chargé d’études puisse identifier facilement le départ dont il s’agit.
Ce programme est écrit en langage ST, il n’y a donc pas de grammaire spécifique au langage
à suivre. Le paragraphe suivant présente le template d’un fichier LD dont la grammaire a été
présentée dans le paragraphe 4.4.4.
185
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Pour illustrer nos propos, l’exemple d’un extrait du fichier DefautGT.LSF du Groupe Traction
est donné. Pour construire les rungs présentés ci-dessous, il est nécessaire d’être attentif à la
grammaire détaillée précédemment et de comprendre les objectifs de chaque rung. Pour
chaque extrait présenté, la représentation graphique introduit le résultat souhaité, le code
source correspondant est présenté et enfin le code du template correspondant est décrit.
Pour générer le code ci-dessus, il faut ajouter les défauts du transformateur en parallèle. Le
défaut Masse cuve récupéré par le réseau Modbus a été mis à part de la liste de défauts. Ce
défaut est ajouté par une instruction conditionnelle (Si, alors, sinon). Une propriété famille de
défauts [FamilleDef], appelée TRF (transformateur), a été créée. La liste des défauts TRF
conditionnée par la propriété [Actif] (défaut surveillé) est parcourue par l’instruction
« Enumération ». Chaque défaut répondant à ces conditions est ajouté soit dans un nœud
correspondant au dernier défaut de la liste [LastDefTRF], soit dans un nœud correspondant
aux défauts qui ne sont pas les derniers de la liste. En effet, le traitement de l’écriture de ces
nœuds est différent à cause de la grammaire spécifique d’IsaGraf 3. Enfin l’instruction BND
est ajoutée pour chaque défaut ajouté précédemment.
186
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
(*défaut transfo*)
SOR [0,[VAR_EVT(CPT)]] (**) (**)
<OdilExportXml Fonction="CreateNode">
<Condition>[SI([Parent::TypeProtection::ModbusMasseCuve]==oui;oui;non)]</Co
ndition>
<Node>
BST XIC [1,[VAR_EVT(CPT2)]] (*masseT1*) (*Défaut Masse Cuve TR *)
NXB
<OdilExportXml Fonction="SetVarEvt" VarEvtName="CPT2"
Value="[ARITHM([VAR_EVT(CPT2)]+1)]">
</OdilExportXml>
</Node>
</OdilExportXml>
<OdilExportXml Fonction="Enumeration"
Requete="SELECT_FROM(Parent::TypeDefaut;[ET([FamilleDef]==TRF;[Actif])])"
Tri="Rang">
<OdilExportXml Fonction="CreateNode">
<Condition>[Handle]!=[Parent::LastDefTRF]</Condition>
<Node>
BST XIC [1,[VAR_EVT(CPT2)]] (*[Mnemo]*) (*[Label]*)
NXB
<OdilExportXml Fonction="SetVarEvt" VarEvtName="CPT2"
Value="[ARITHM([VAR_EVT(CPT2)]+1)]">
</OdilExportXml>
</Node>
</OdilExportXml>
<OdilExportXml Fonction="CreateNode">
<Condition>[Handle]==[Parent::LastDefTRF]</Condition>
<Node>
XIC [1,[VAR_EVT(CPT2)]] (*[Mnemo]*) (*[Label]*)
</Node>
</OdilExportXml>
</OdilExportXml>
<OdilExportXml Fonction="CreateNode">
<Condition>[SI([Parent::TypeProtection::ModbusMasseCuve]==oui;oui;non)]</Co
ndition>
<Node>
BND
</Node>
</OdilExportXml>
<OdilExportXml Fonction="Enumeration"
Requete="SELECT_FROM(Parent::TypeDefaut;[ET([FamilleDef]==TRF;[Actif])])"
Tri="Rang">
<OdilExportXml Fonction="CreateNode">
<Condition>[Handle]!=[Parent::LastDefTRF]</Condition>
<Node>
BND
</Node>
</OdilExportXml>
</OdilExportXml>
OTE [2,0] (*defTR*) (*Défaut transfo *)
EOR [3,0]
<OdilExportXml Fonction="SetVarEvt" VarEvtName="CPT"
Value="[ARITHM([VAR_EVT(CPT)]+5)]">
</OdilExportXml>
187
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Pour générer le code ci-dessus, le sectionneur SRB du GT courant est ajouté, ensuite une
énumération parcourt la liste des sectionneurs de barre ayant la propriété [câblé] entre le GT
courant et le GT « 2 » relatif au GT parent. Cette liste est créée par rapport à la position sur
l’axe horizontal des objets dans la zone de dessin Visio. Enfin les variables de position du
SRB du GT relatif « 2 », le défaut qu’il renvoie et l’ordre d’ouverture du disjoncteur D1 sont
ajoutés à la position correspondante dans le rung courant pour que la représentation graphique
soit correctement dessinée dans IsaGraf 3.
188
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
<OdilExportXml Fonction="CreateNode">
<Condition>[SI([LIST_COUNT([SELECT_ALL(ModeleGroupeTraction;oui)])]==2;oui;
non)]</Condition>
<Node>
(*ouverture DJ par défaut GT2*)
SOR [0,[VAR_EVT(CPT)]] (**) (**)
XIO [1,0] (*soSRB1*) (*Signalo ouvert S*)
<OdilExportXml Fonction="SetVarEvt" VarEvtName="VARJ" Value="2">
</OdilExportXml>
<OdilExportXml Fonction="Enumeration" Liste="[Parent::ListSectBarreGT2]"
Tri="NumAuto">
<OdilExportXml Fonction="CreateNode">
<Condition>[cable]</Condition>
<Node>
XIO [[VAR_EVT(VARJ)],0] (*so[Mnemo]*) (*Signalo ouvert sectionneur barre*)
<OdilExportXml Fonction="SetVarEvt" VarEvtName="VARJ"
Value="[ARITHM([VAR_EVT(VARJ)]+1)]">
</OdilExportXml>
</Node>
</OdilExportXml>
</OdilExportXml>
XIO [[ARITHM([VAR_EVT(VARJ)]+1)],0] (*soSRB2*) (**)
XIC [[ARITHM([VAR_EVT(VARJ)]+2)],0] (*defGT2*) (**)
OTE [[ARITHM([VAR_EVT(VARJ)]+3)],0] (*OoGT2D1*) (**)
EOR [[ARITHM([VAR_EVT(VARJ)]+4)],0]
<OdilExportXml Fonction="SetVarEvt" VarEvtName="CPT"
Value="[ARITHM([VAR_EVT(CPT)]+2)]">
</OdilExportXml>
</Node>
</OdilExportXml>
Les extraits présentés ci-dessus sont relativement simples, mais ils illustrent bien les
algorithmes utilisés pour écrire les templates. Mieux le modèle est construit et mieux la
grammaire est appréhendée, mieux les templates seront écrits et leur écriture sera facilitée. En
effet, plus le modèle est riche, moins les requêtes pour accéder aux autres objets sont
complexes. C’est pourquoi nous avons insisté sur l’importance de la modélisation et de la
méta-modélisation. Dans ce chapitre les langages FBD et SFC n’ont pas été présentés mais la
méthode pour étudier la grammaire et écriture des templates des programmes est équivalente à
celle du langage LD.
189
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
190
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
10. Le code généré a été testé lors de la recette usine sur le châssis de contrôle/commande
de La Voulzie. L’application a été testée au travers de l’intégralité du cahier de recette
du projet. Toutes les fiches du cahier de recette ont été réalisées et les corrections
restantes ont été réalisées manuellement et notées pour être ensuite intégrées dans les
templates.
11. Les corrections notées ont été intégrées dans les templates.
12. Le code généré et corrigé en usine a été testé sur site par validation des fiches du
cahier de recette.
13. La sous-station de La Voulzie est aujourd’hui en service.
Cette démarche permet de garantir que les programmes générés (Figure 85) respectent les
règles de sécurité et les principes mis en œuvre. Elle comprend une première validation sur la
plate-forme d’essais de la section CES2, suivie d’une validation usine sur des châssis, et se
termine par les essais sur site en situation réelle.
191
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Cette démarche s’est déroulée avec succès pour la première fois à la sous-station de LA
VOULZIE (Ligne Nouvelle 1 (LGV Paris – Lyon) – LN1), mise en service fin Mars 2014,
avec la coopération du responsable d’affaire Monsieur Gal Blaszczyk (Figure 86).
192
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Comme nous l’avons vu dans le chapitre 3, l’intégration d’Odil GREMLINS ajoute une étape
(Figure 87) au workflow des chargés d’études.
193
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Tableau 13 : Comparaison des étapes projets actuelles et des étapes projet avec Odil
GREMLINS pour les projets d’électrification de sous-stations
Un nouveau workflow de projet a été défini pour intégrer Odil GREMLINS. Les tâches de
rédaction sont remplacées par la description graphique dans Odil GREMLINS et la
vérification des livrables générés. Les chargés d’études peuvent consacrer davantage de temps
aux tâches complexes comme la validation des schémas. Les tâches répétitives comme la
rédaction du cahier de recette sont remplacées par des tâches de relecture et correction si
nécessaire, ce qui évite des étapes de sous charge mentale et réduit le temps d’étude
nécessaire pour un projet d’électrification.
194
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
La charge de travail des chargés d’études peut être diminuée par la mise en place de ce
nouveau workflow. Etant donné qu’il y a environ 8 projets de régénération de sous-stations
par an, ce sont environ 920 heures par an qui peuvent être économisées. Sans compter que
cette démarche a également été appliquée aux postes d’alimentation électrique, dont les
régénérations sont des projets plus courts mais plus nombreux sur l’année, environ 20 projets
par an. Le détail du temps économisé par projet est donné dans le Tableau 14.
Tableau 14 : Comparaison des étapes projets actuelles et des étapes projet avec Odil
GREMLINS pour les projets d’électrification de postes
5h Description Odil
GREMLINS
3h Description PO
1h Description PC
1h Vérification
195
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Au travers de ces gains en heures agents, il est facile d’obtenir des résultats en gain financier.
Le tarif horaire d’un chargé d’études est estimé à 80 euros. Le Tableau 15 propose une
estimation des bénéfices annuels prévisibles sur la base des coûts de développement présentés
dans la partie 4.6.
La solution Odil GREMLINS sera donc rentable dans les trois années après son passage en
production. Ce qui peut mener à l’envie d’aller plus loin dans l’utilisation de cette solution
aux dirigeants de la SNCF.
196
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Dans le but de recueillir les premiers retours des utilisateurs de la solution Odil GREMLINS,
nous avons distribué un questionnaire anonyme (Annexe 10). Le questionnaire se décompose
en trois parties :
Au travers de ces trois parties, le but est de vérifier dans un premier temps que les attentes des
utilisateurs correspondent bien à celles qui ont été traitées par la solution Odil GREMLINS.
Dans un deuxième temps, il s’agit de vérifier que l’utilisation d’Odil GREMLINS leur a
permis de répondre à ces attentes et de gagner du temps.
D’après les réponses au questionnaire proposé, un besoin réel de disposer d’un outil de
production adapté au métier est ressenti par les chargés d’études. Les attentes des chargés
d’études se portent sur les thèmes de :
L’intérêt des chargés d’études pour ces problématiques est également observable au travers de
leur charge de travail estimée au-delà des 100% et de leur évaluation de la qualité du code
produit sans la solution de génération, estimée à 70%.
4.10.2 Utilisation
L’utilisation de la solution Odil GREMLINS n’est pas encore généralisée et se fait en général
avec mon accompagnement. Les chargés d’études ne peuvent pas répondre qu’ils sont
197
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
4.10.3 Gains
Une fois que l’installation est décrite, la répartition du contrôle/commande peut être définie.
L’utilisateur doit définir les automates communs qu’il souhaite ajouter. Les autres abonnés
automates ont été ajoutés automatiquement. Il lui reste alors à définir la répartition des
TCD/TSD, TSS s’il souhaite qu’elle soit différente de celle proposée de manière standard. En
effet, une répartition standard des appareils et des informations sur les cartes TCD/TSD et
TSS a été définie pour chaque sous-ensemble de Partie Opérative. Pour les chargés d’études
ayant défini un plan de câblage différent de celui proposé, l’outil ne les a pas aidé à le définir,
contrairement à ceux qui ont pu définir le câblage automatiquement en fonction des standards
grâce à Odil GREMLINS. Dans tous les cas, Odil GREMLINS a été utilisé pour générer les
programmes et le fichier de paramétrages associé. L’aide apporté par Odil GREMLINS a été
ressentie par chaque utilisateur.
Lors des premières utilisations d’Odil GREMLINS pour générer le code, l’outil était encore
en phase de tests et de déverminage. La lisibilité du code généré n’a pas été garantie,
notamment à cause des programmes écrits en Structured Text (ST), de communication sur le
réseau FIP. Les fonctions de communication prennent en compte 8 ou 16 arguments, qu’il
convient d’écrire à la suite ou ligne à ligne. Lors de la définition des premiers templates, la
mise en page n’était pas notre principale préoccupation. Ces problèmes de mise en page ont
été résolus depuis. La qualité du code et la standardisation du code a été jugée comme
Globalement Au Moins Equivalente (GAME) par les chargés d’études. Ce qui sous-entend
qu’ils reconnaissent le code généré comme équivalent à celui qu’ils écrivaient précédemment,
qu’ils n’ont pas besoin de faire d’efforts pour le comprendre ou le lire.
Les chargés d’études pensent que la solution Odil GREMLINS permet d’ajouter une qualité
supplémentaire aux documents et programmes générés. En effet, ils ne risquent plus d’avoir
de problèmes liés aux recopies de projets existants ni d’oublis de modifications. Pour les
198
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Le gain de temps pour la répartition du contrôle/commande des appareils dans les abonnés
automates, la synthèse des TCD/TSD, des TSS, des SSL, la programmation des abonnés
automates et la rédaction des cahiers de recette a été reconnue par tous les chargés d’études
après les corrections effectuées avec la coopération de Monsieur Gal Blaszczyk. Ces phases
sont réduites à 100% dès lors que l’installation peut être décrite complètement, c'est-à-dire
qu’elle est standard. La répartition et la synthèse des informations et du câblage des appareils
est automatique, le code généré est fiable et complet, tout comme le cahier de recette. Pour
l’instant tous les chargés d’études s’accordent à dire que la solution leur permet de gagner du
temps et de réduire leur charge de travail, mais aucun n’a pu donner de chiffre quant à ce gain
de temps. Ce gain de temps se traduit également par leur volonté forte à réutiliser Odil
GREMLINS pour leurs prochains projets d’électrification.
199
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
Certaines phases de projets peuvent être réduites de 100% par l’utilisation d’Odil
GREMLINS sur l’ensemble du workflow d’un projet. Pour l’instant, les chargés d’études
n’ont pas donné d’estimation de la réduction de leur charge de travail, mais il ne fait aucun
doute qu’Odil GREMLINS leur permet d’optimiser leur temps de travail et de se concentrer
sur les phases intéressantes de leur workflow.
4.11 Conclusion
La méthodologie proposée dans le chapitre 3 a été appliquée aux études d’automatisation des
EALE. A partir de l’étude des principes et des programmes déjà éprouvés sur les installations
en service, des standards de programmes API ont été définis. Ces standards ont été analysés à
l’aide du logiciel PLC Checker qui a permis d’améliorer la qualité du code standardisé.
Pour respecter la structure de la Partie Commande mise en place dans les projets de
contrôle/commande des EALE, des méta-modèles et des modèles ont été proposés. Ces
modèles respectent les normes du métier des EALE. Les modèles sont inspirés du langage
métier existant.
Une solution pour générer les programmes IsaGraf 3 a été trouvée au travers des fichiers de
code source. La grammaire du code IsaGraf 3 a été définie pour les fichiers sources ainsi que
pour les programmes API dans les langages de la norme (IEC 61131-3, 2003) : LD, ST, FBD,
SFC.
200
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
l’objectif est d’obtenir les templates les plus génériques possibles afin qu’ils permettent la
génération d’un maximum de configurations, même non standardisées.
La démarche de génération des programmes API et des livrables a été menée avec succès et
l’application Odil GREMLINS a déjà été éprouvée sur des projets réels. Lorsque les derniers
développements pour la génération des cahiers des charges seront terminés, la charge de
travail mentale des chargés d’études sera reconcentrée sur des tâches intéressantes, pour
lesquelles leur savoir-faire métier apporte une réelle valeur ajoutée tandis que leurs tâches
répétitives seront fortement diminuées.
Ce chapitre a donc présenté le premier axe de notre démarche vers l’amélioration du métier,
l’axe de génération automatique de code API et de livrables. Le deuxième axe d’amélioration,
au travers de l’intégration du filtre de contraintes formellement vérifié, est présenté dans le
chapitre suivant. En effet, le code API généré se fait à partir d’une analyse et d’une
standardisation du code existant. Son analyse qualimétrique a été réalisée. Toutefois, aucune
vérification formelle de sa sûreté de fonctionnement n’a été réalisée. Nous proposons une
201
Chapitre 4 : Application de la méthodologie aux études d’automatisation des EALE
solution formelle dans le chapitre suivant, permettant d’assurer que le code API généré sur la
base des programmes existants est sûr de fonctionnement en appliquant un algorithme original
de commande par contraintes en tant que filtre sécuritaire de la commande existante d’un
interrupteur de mise en parallèle 25kV. Pour cela, le chapitre 5 reprend les étapes nécessaires
à la définition des contraintes de sécurité à partir de l’analyse des spécifications du système et
du cahier de recette pour définir les propriétés sécuritaires que le système doit respecter. Afin
de montrer que l’ensemble de contraintes de sécurité est suffisant pour garantir la sécurité du
système, il est appliqué à la commande la plus permissive possible.
202
Chapitre 5 : Application de la commande par contraintes
aux EALE
5.1 Introduction
203
Chapitre 5 : Application de la commande par contraintes aux EALE
Les vérifications des propriétés sécuritaires des commandes étudiées seront comparées et
expliquées. Des perspectives de travail dans la continuité de cet axe sont évoquées dans la
conclusion.
204
Chapitre 5 : Application de la commande par contraintes aux EALE
Le système étudié est un poste électrique 25kV de mise en parallèle des voies composé d’un
interrupteur de mise en parallèle (IMP) ayant les fonctions de débouclage et de refermeture
automatique des parallèles (DAP et RAP). En situation normale d’exploitation, chaque
secteur de ligne électrifiée est alimenté depuis une sous-station par un disjoncteur de Départ
Traction. Des postes de mise en parallèle sont implantés le long des secteurs, les interrupteurs
de mise en parallèle (IMP) effectuent une liaison électrique entre les deux voies, ceci pour
limiter la chute de tension car la résistance équivalente de la caténaire est divisée par deux par
rapport aux secteurs sans mise en parallèle (Figure 89). Cette configuration d’alimentation est
la condition d’application de la fonction RAP.
Lors d’un défaut, les disjoncteurs de la sous-station s’ouvrent et provoquent la mise hors
tension des secteurs.
Dans chaque poste de mise en parallèle la fonction de débouclage fait ouvrir les interrupteurs
de mise en parallèle. Elle est déclenchée par l’apparition d’une absence de tension sur les
deux caténaires.
Après quelques secondes, les disjoncteurs de la sous-station se referment automatiquement.
Si toutes les conditions nécessaires à l’activation de la fonction RAP sont réunies, alors la
fonction RAP referme les IMP.
205
Chapitre 5 : Application de la commande par contraintes aux EALE
Un défaut fugitif sur la voie 1 ou la voie 2, entraine les actions suivantes (Figure 90) :
déclenchement DP1 et DP2,
absence tension détectée par les Transformateurs de tension (Tt) (UDP1, UDP2, UV1
et UV2),
ouverture IMP1 par manque tension voie,
réenclenchement DP1 et DP2,
disparition de l’absence tension sur les quatre Tt,
verrouillage du réenclencheur DP1 et DP2 pendant 15mn,
refermeture automatique des parallèles par RAP.
206
Chapitre 5 : Application de la commande par contraintes aux EALE
Les postes de mise en parallèle sont des systèmes moins complexes que les sous-stations.
Leur système de contrôle/commande n’est pas distribué. Il est centralisé dans un seul abonné
automate qui reçoit les informations des Tt, contrôle et commande l’IMP et d’autres appareils
si nécessaire (Figure 92).
La fonction RAP est mise en service dans les postes de mise en parallèle 25kV d’après le
principe fonctionnel détaillé ci-après. Ce principe fonctionnel se traduit par l’implémentation
d’un programme dédié dans l’Automate Programmable Industriel (API) en charge du
contrôle/commande de l’IMP associé.
207
Chapitre 5 : Application de la commande par contraintes aux EALE
La mise en veille est effective si l’IMP est fermé et qu’il y a présence tension sur les 2 voies
depuis un temps supérieur à 15 minutes (T1).
La veille est désactivée en cas de :
Commande volontaire de fermeture de l’IMP,
Commande volontaire d’ouverture de l’IMP,
Fin d’activation du relais d’ordre (perte de position fermée de l’IMP),
Fin du temps de surveillance écoulé (RSU)
2. Armement RAP
La détection simultanée de l’absence ou présence tension sur les voies évite les conséquences
liées au phénomène de ferro résonance. Le risque de ferro résonnance apparaît sur une
caténaire lorsque celle-ci est mise hors tension alors que la caténaire adjacente reste sous
tension.
208
Chapitre 5 : Application de la commande par contraintes aux EALE
La préparation de la fermeture de RAP est assurée si l’IMP est ouvert et que la présence
tension est détectée sur les 2 voies simultanément.
Si ces conditions sont vérifiées, la présence tension doit rester durant au moins 10 s (T4) à
partir de cet instant sur les 2 voies.
A l’issue de T4, une commande de fermeture (CF) est émise pendant 15 s (T5). Elle est
maintenue pendant T5 quel que soit l’état de l’appareil et des tensions caténaires. Une
information (TSS) « Fonctionnement RAP » est émise pendant la même durée.
5. Désactivation RAP
A la fin de T5, le module est désactivé, l’ensemble des étapes ci-dessus est mis à zéro. Le
module est verrouillé pendant 15 minutes (T1).
Dans le cas où la séquence est interrompue à partir de l’armement, la temporisation de temps
écoulé (RSU) désactive le module qui se verrouille pendant 15 minutes (T1).
A tout instant, le module peut être mis hors service, si un ordre de commande volontaire de
fermeture (CF) ou d’ouverture (CO) est reçu. Le module est alors verrouillé au moins 15
minutes (T1).
Le module restitue l’ordre de débouclage par manque de tension de façon à le dissocier d’un
ordre d’ouverture volontaire.
Dans l’application API, plusieurs programmes influencent la commande de l’IMP étant donné
qu’il existe plusieurs fonctions qui font intervenir cet appareil. Les variables utilisées sont
décrites dans l’Annexe 12.
209
Chapitre 5 : Application de la commande par contraintes aux EALE
210
Chapitre 5 : Application de la commande par contraintes aux EALE
existe sur les disjoncteurs et les interrupteurs, étant donné leur rôle sécuritaire dans
l’exploitation des EALE. En effet, en cas de perte d’alimentation ou de rupture de câble,
l’appareil s’ouvrira automatiquement.
L’activation de l’étape X1 provoque l’envoi des sorties de commande de l’IMP. Les ordres
cf1IMP, cf2IMP, co1IMP et co2IMP provoquent alors la fermeture de l’IMP. La réceptivité
menant à cet état peut être provoquée par un ordre de l’opérateur (CFIMP) ou par la fonction
RAP (OfRAP).
L’ouverture de l’IMP est normalement provoquée par le passage en étape X3. La transition
vers X3 peut être provoquée par un ordre de l’opérateur (COIMP) ou par un ordre d’ouverture
sur défaut (OoIMP). Dans notre cas, le défaut surveillé est l’absence de tension, la fonction
DAP.
Le déclenchement par absence tension est traité en début de cycle dans un programme de
traitement des entrées. Dans les programmes, la tension de la voie surveillée par la fonction
DAP est représentée par la variable VA9 (absence de tension sur la voie 1 par exemple)
(Figure 94) :
Le principe fonctionnel du RAP décrit précédemment est traduit en langage Ladder Diagram
pour être implémenté dans l’API (Figure 95). Les variables VA9 et VA10 correspondent
respectivement à la présence de la tension sur les voies 1 et 2. Les états T1, T2, T3, T4, T5,
R1 et R2 décrits précédemment correspondent aux variables du programme.
211
Chapitre 5 : Application de la commande par contraintes aux EALE
Cette version de la fonction RAP manque de lisibilité. Il est impossible pour quelqu’un qui
voudrait comprendre ce programme de repérer les états dans lequel se trouve le système. Les
variables ne sont pas explicites. Nous proposons une version plus lisible de la fonction RAP
au travers d’un GRAFCET.
212
Chapitre 5 : Application de la commande par contraintes aux EALE
Etant donné l’aspect séquentiel de la fonction RAP décrite précédemment, il parait tout à fait
envisageable de pouvoir décrire cette fonction sous la forme d’un GRAFCET. Pour garder la
même philosophie de programmation, la commande de l’IMP est conservée telle qu’elle est
faite actuellement. De même pour la fonction DAP qui est très succincte.
Pour réaliser la fonction séquentielle RAP, le problème est décomposé en deux GRAFCETS.
La fonction RAP doit être réalisée dans les 30 secondes qui suivent l’apparition d’un manque
tension sur les deux voies. Un GRAFCET simple (Figure 96), synchronisé sur le GRAFCET
qui gère la séquence d’événements observables, permet de vérifier que la fonction s’exécute
dans le temps imparti, sinon une information est envoyée (RSU) pour réinitialiser la séquence
en état initial (X10).
213
Chapitre 5 : Application de la commande par contraintes aux EALE
Le GRAFCET de gestion du RAP (Figure 97) décompose le suivi des événements selon les
étapes suivantes, correspondant à certains états de la fonction RAP actuelle :
X2 : étape d’attente de l’armement du RAP. Tant que les conditions (pas d’ordre opérateur,
fonction RAP en service et RSU non atteint) sont respectées, le GRAFCET reste dans cette
étape jusqu’à l’apparition d’un manque tension sur l’une des deux voies.
X3 : « armement du RAP », étape temporisée à 1 seconde, le manque tension doit être apparu
sur les deux voies avant ce temps sinon la fonction RAP est réinitialisée, le GRAFCET
retourne en X0.
X4 : étape d’attente du retour de la tension sur l’une des deux voies qui doit être assuré par le
réenclenchement automatique des disjoncteurs de Départ Traction de la sous-station qui
alimente le secteur concerné. Si la tension n’est pas détectée dans les 30 secondes, le temps
RSU sera atteint et le GRAFCET réinitialisé, de même en cas de commande opérateur.
X5 : étape temporisée à 3 secondes, la tension doit être réapparue sur les deux voies avant ce
temps sinon la fonction RAP est réinitialisée, le GRAFCET retourne en X0.
X6 : « préparation fermeture RAP », la tension doit être présente sur les deux voies pendant
10 secondes et les conditions (pas d’ordre opérateur, fonction RAP en service et RSU non
atteint) doivent être respectées pendant ce temps sinon la fonction RAP est réinitialisée, le
GRAFCET retourne en X0.
214
Chapitre 5 : Application de la commande par contraintes aux EALE
Cette solution, bien qu’elle soit plus lisible par l’utilisateur et qu’elle décrive l’aspect
séquentiel de cette fonction, reste complexe à appréhender. Le GRAFCET de commande de
l’IMP contient des parties fonctionnelles et sécuritaires qu’il pourrait être pertinent de séparer.
L'algorithme de commande présenté dans le chapitre 3 permet de garantir la sécurité, par une
approche plus simple et plus formelle qu'une approche conventionnelle basée sur des
spécifications complètes en GRAFCET (IEC 60848, 2002) qui ne distingue pas l'aspect
fonctionnel de l’aspect sécuritaire. De plus, l’intérêt de la mise en place de notre démarche est
d’assurer formellement que la commande obtenue est sûre de fonctionnement puisque les
propriétés du système sont vérifiées par model-checking. Nous verrons par la suite comment
définir les propriétés que le système doit vérifier formellement.
215
Chapitre 5 : Application de la commande par contraintes aux EALE
216
Chapitre 5 : Application de la commande par contraintes aux EALE
Pour écrire les contraintes de ce problème séquentiel, il est nécessaire de créer des
observateurs correspondant à certains états du système. Ces observateurs sont créés par besoin
d’observabilité du système. Ils répondent à un besoin ressenti lors de l’écriture des
contraintes, mais il est plus clair de commencer par expliquer le rôle de ces observateurs avant
de détailler les contraintes.
Dans le but de vérifier les fonctions RAP et DAP, nous avons volontairement simplifié les
GRAFCETs de gestion des commandes opérateur. En effet, dans les GRAFCETs présentés en
Figure 99, l’opérateur envoie une commande de fermeture (CFIMP) tant qu’il veut garder
217
Chapitre 5 : Application de la commande par contraintes aux EALE
l’IMP fermé ou une commande d’ouverture (COIMP) tant qu’il veut garder l’IMP ouvert. Il
ne peut pas envoyer les deux commandes en même temps.
Le GRAFCET ci-dessous gère la fonction RAP (Figure 100). La variable Obs vérifie
qu’aucune commande venant de l’opérateur n’a été émise depuis plus de 900 secondes
(équation 23). X20 est l’étape initiale, d’attente des conditions initiales pour qu’un RAP
puisse avoir lieu (étape de mise en veille). X21 est l’étape d’attente de l’armement du RAP.
Lorsque les conditions d’armement du RAP sont réunies, X22 s’active pour un temps
maximum de 30 secondes, temps maximum de réalisation de la fonction RAP (RSU). Le
passage en X22 lance le GRAFCET de suivi des événements du RAP (Figure 101). Ce
GRAFCET permet de suivre l’évolution des tensions U1 et U2. Si l’ensemble des événements
a lieu pour activer le RAP, le GRAFCET de gestion du RAP évolue en X24 et un ordre de
refermeture de l’IMP automatique peut avoir lieu. Sinon le RAP est avorté et le GRAFCET
réinitialisé (X20).
218
Chapitre 5 : Application de la commande par contraintes aux EALE
La Figure 101 présente le GRAFCET de suivi des tensions pendant le RAP. La suite
d’événements attendus correspond à celle décrite dans le RAP actuel. Lorsqu’une chute de
tension est observée sur une voie (X31), elle doit être observée sur les deux voies dans la
seconde qui suit (X32). La tension doit être vue sur une voie (X33) (avant la fin du temps
maximum de la fonction RAP), puis sur les deux voies dans les trois secondes qui suivent
(X34). Enfin la tension doit être observée continuellement sur les deux voies pendant 10
secondes (X35) avant que la refermeture automatique de l’IMP ne soit autorisée (X24). Si
l’une des étapes n’est pas franchie correctement ou que l’opérateur envoie une commande, le
GRAFCET est réinitialisé en X30.
219
Chapitre 5 : Application de la commande par contraintes aux EALE
A partir des étapes des GRAFCETs de la Figure 100, de la Figure 101 et des observateurs, les
contraintes du système peuvent être définies. L’observateur ̅ utilisé dans les contraintes
correspond à l’absence tension sur l’une des deux voies (équation 24).
220
Chapitre 5 : Application de la commande par contraintes aux EALE
Dans un premier temps, les contraintes de sécurité simple (CSs) sont présentées :
La sortie co1IMP ne peut pas être active s’il n’y a pas de tension U1 ou U2. La sortie
co1IMP est câblée en inverse. L’ouverture de l’IMP est ordonnée par la non-réception
de l’information co1IMP par le module de commande de l’appareil (équation 25) :
CSs1 : ̅ (25)
La sortie co1IMP ne peut pas être activée si l’IMP n’est pas déjà ouvert. La sortie
co1IMP étant câblée en inverse, cette contrainte permet d’être sûr que l’ouverture de
l’IMP sera effectuée jusqu’à ce que la position soIMP soit atteinte (équation 26) :
La sortie cf1IMP ne peut pas être active s’il n’y a pas de tension U1 ou U2 (équation
27) :
CSs3 : ̅ (27)
La sortie cf1IMP ne peut pas être active si l’IMP est déjà fermé (sfIMP). Ce qui
implique également que la sortie cf1IMP est désactivée dès que l’IMP est fermé
(sfIMP) (équation 28) :
CSs4 : (28)
La sortie cf1IMP ne peut pas être désactivée si l’IMP n’est pas fermé (sfIMP) et que la
tension est présente sur les 2 voies (U1 et U2). Cela se traduit également par le fait que
si un ordre de fermeture a été envoyé, la sortie est activée jusqu’à ce que l’IMP soit
fermé (sfIMP) (équation 29) :
221
Chapitre 5 : Application de la commande par contraintes aux EALE
La sortie cf1IMP doit être active si l’étape X24 est active. Cette contrainte représente
l’ordre de refermeture automatique des parallèles (OFRAP). Par sécurité et par
cohérence vis-à-vis des autres contraintes, la présence tension des voies (U1 et U2) est
vérifiée. L’ordre de fermeture est arrêté dès que l’IMP est fermé (équation 30) :
La sortie cf1IMP ne peut pas être activée si l’une des étapes X22 ou X23 est active. Le
RAP ne s’est pas déclenché avant la fin du temps maximum (RSU) et ne peut plus être
déclenché avant l’intervention d’un opérateur (équation 32). Pour écrire cette
contrainte simplement, l’observateur X22X23 est utilisé (équation 31).
(31)
CSs7 : ( ) (32)
La sortie cf1IMP ne peut être activée si l’IMP n’est pas ouvert (équation 33). Si aucun
ordre n’est envoyé à la commande électrique de l’interrupteur, celui-ci s’ouvre
mécaniquement, une commande de fermeture ne peut donc avoir lieu qu’à partir du
moment où il est déjà ouvert.
Les contraintes de sécurité combinées (CSc) considèrent deux sorties. Si la CSc est violée, la
valeur de l’une des deux est forcée pour obtenir le comportement désiré.
La sortie co1IMP ne peut pas être désactivée si la sortie cf1IMP est active. La sortie
co1IMP sera activée pour que la CSc soit respectée. co1IMP étant câblé en inverse, on
considère qu’elle doit être activée lorsque cf1IMP est activée (équation 34) :
222
Chapitre 5 : Application de la commande par contraintes aux EALE
La sortie co2IMP ne peut pas être désactivée si la sortie cf2IMP est active. La sortie
co2IMP sera activée pour que la CSc soit respectée. co2IMP et cf2IMP sont chacune
équivalentes aux sorties co1IMP et cf1IMP (équation 35) :
o La sortie co2IMP ne peut pas être activée si la sortie co1IMP n’est pas active.
La sortie co2IMP sera désactivée pour que la CSc soit respectée. (équation
37) :
o La sortie cf2IMP ne peut pas être activée si la sortie cf1IMP n’est pas active.
La sortie cf2IMP sera désactivée pour que la CSc soit respectée. (équation
39) :
223
Chapitre 5 : Application de la commande par contraintes aux EALE
Pour tester l’algorithme complet par model-checking, les contraintes fonctionnelles permettant
de prendre en compte les commandes envoyées par l’opérateur sont définies :
La sortie co1IMP doit être activée si l’étape X0 est active. Cette contrainte représente
la commande d’ouverture par l’opérateur (COIMP) (équation 40) :
La sortie cf1IMP doit être activée si l’étape X11 est active. Cette contrainte représente
la commande d’ouverture par l’opérateur (CFIMP) (équation 41) :
Maintenant que les observateurs et toutes les contraintes (CSs, CSc et CFs) ont été définis, les
équations de chaque sortie peuvent être écrites.
A partir des contraintes fonctionnelles simples (CFs), l’équation de chaque sortie est
obtenue (équation 42 pour co1IMP et 43 pour cf1IMP) :
(42)
(43)
A partir des contraintes de sécurité simples (CSs), les équations de mise à zéro ( ), et de
mise à un ( ), de chaque sortie sont obtenues :
(45)
224
Chapitre 5 : Application de la commande par contraintes aux EALE
Les équations des sorties co2IMP et cf2IMP sont respectivement égales à celles de
co1IMP et cf1IMP.
Le problème des CSc semble être plus complexe. En effet, quand une CSc n'est pas vérifiée, il
est nécessaire d'accorder la priorité à une ou plusieurs sorties (cf. chapitre 3). Cependant, les
CSc doivent toujours être cohérentes avec les CSs, qui sont généralement prioritaires parce
qu'elles dépendent seulement des entrées et des observateurs qui sont des événements
incontrôlables. De plus, quand une CSc est résolue, cela peut impliquer des problèmes avec
d'autres CSc. Une solution pour éviter tes problèmes a été proposée dans le chapitre 3.
⃗⃗⃗⃗⃗ et ⃗⃗⃗⃗⃗ sont des vecteurs colonnes représentants respectivement les k valeurs de fc0k et fc1k.
⃗⃗⃗⃗⃗ et ⃗⃗⃗⃗⃗ peuvent être obtenus par deux matrices, MC0 et MC1 que le chargé d’études doit
définir pendant l'étape initiale d'analyse de sécurité pour indiquer la priorité entre les sorties.
MC0 et MC1 sont des matrices avec NCSc colonnes et No lignes. MC0 et MC1 indiquent pour
chaque CSc, si les sorties ( ⃗ ) doivent être forcées respectivement à 0 ou à 1. Les équations
(48 et 49) sont obtenues en utilisant le produit logique de matrice.
( )
225
Chapitre 5 : Application de la commande par contraintes aux EALE
⃗⃗⃗⃗⃗ ( ) ⃗⃗⃗⃗⃗⃗⃗
⃗⃗⃗⃗⃗ ( ) (48)
( )
⃗⃗⃗⃗⃗ ( ) ⃗⃗⃗⃗⃗⃗⃗
⃗⃗⃗⃗⃗ ( ) (49)
( )
L'algorithme détaillé dans le chapitre 3 peut être implémenté dans un API en langage ST (IEC
61131-3, 2003) à partir des données d’entrée données dans les équations 42 à 49.
L’algorithme est utilisé comme Design Pattern de la commande.
Cet algorithme de génération de la commande par contraintes peut être utilisé différemment.
En effet, dans cette section, des contraintes fonctionnelles ont été définies en tant que partie
fonctionnelle de la commande. Il est tout à fait possible de conserver une commande existante
comme celle actuellement utilisée par la SNCF et de l’intégrer comme partie fonctionnelle en
tant que g1k.
226
Chapitre 5 : Application de la commande par contraintes aux EALE
227
Chapitre 5 : Application de la commande par contraintes aux EALE
Figure 103 : Design Pattern de la commande par contraintes en tant que filtre de la
commande existante
Par rapport à la section précédente, il s’agit alors uniquement de remplacer les équations (42
et 43) par les équations (50 et 51).
(50)
(51)
228
Chapitre 5 : Application de la commande par contraintes aux EALE
La prochaine étape de notre démarche est de vérifier formellement que la commande réalisée
par le Design Pattern est sûre de fonctionnement. Pour cela il est nécessaire de modéliser
notre système dans un model-checker. La prochaine section décrit le travail de modélisation
qui a été réalisé sur ce système. Nous proposons ensuite de comparer plusieurs commandes au
travers de la vérification de propriétés pour montrer l’intérêt de l’application du Design
Pattern de commande par contraintes.
Nous utilisons UPPAAL pour simuler des modèles de parties opératives et pouvoir vérifier la
contrôlabilité ainsi que la sécurité du système étudié. UPPAAL est un outil de validation qui
propose un mode de vérification graphique par model-checking pour des systèmes temps réel.
L’intérêt de cet outil consiste à modéliser un système en utilisant des automates temporisés, le
simuler et vérifier les propriétés du système.
229
Chapitre 5 : Application de la commande par contraintes aux EALE
Afin de vérifier les propriétés de notre système, il est primordial de proposer un modèle
cohérent. Ainsi la première étape de notre travail a consisté à définir les ElPO de notre
système et comment les modéliser pour obtenir le comportement désiré. Pour se faire,
l’espace temporel est décomposé autour du cycle de l’automate (Figure 104). L’espace
physique de la partie opérative est également décomposé.
230
Chapitre 5 : Application de la commande par contraintes aux EALE
Lors du premier cycle de l’automate, une phase d’initialisation est nécessaire pour paramétrer
la partie opérative étudiée. Une fois cette initialisation effectuée, le cycle normal de
l’automate commence par la lecture des variables d’environnement. Dans le cas présent, il
s’agit par exemple de la lecture de la position de l’appareil (position ouverte, position fermée
de l’IMP) vers les entrées de l’API (signalisation ouverte, signalisation fermée de l’IMP).
Ensuite, les commandes envoyées par l’opérateur sont récupérées, sur le même principe que la
décomposition du cycle réalisé par la SNCF. En début de cycle, les entrées sont lues et les
ordres des opérateurs sont récupérés sur le réseau FIP. Une étape de reconstruction permet
ensuite de définir les observateurs, les fronts montants et descendants. L’étape suivante
consiste en l’application du Design Pattern de la commande par contraintes pour calculer les
Sorties de l’API. L’algorithme de commande calcule la valeur des Sorties (co1IMP, co2IMP,
cf1IMP, cf2IMP), qui sont écrites avant l’étape d’évolution de la PO. Pendant cette phase
d’évolution de la PO, le modèle de l’interrupteur évolue pour calculer les positions qui seront
lues au cycle suivant et les tensions U1 et U2 peuvent également évoluer aléatoirement. Le
cycle modélisé respecte le déroulement réel du cycle API.
La Figure 105 présente le modèle d’évolution aléatoire de la tension, appliqué aux tensions
U1 et U2 de notre système. Le modèle est synchronisé par rapport au cycle API. Lors de
l’étape PO, le modèle peut évoluer pour que la tension soit présente ou non, librement puisque
l’évolution n’est pas synchronisée par rapport à une étape. A l’étape Lecture, le modèle ne
peut plus évoluer jusqu’à la fin du cycle API et le retour en étape PO. Pour vérifier que
l’ensemble de contraintes est suffisant et qu’il est cohérent, une solution bloquant l’évolution
du modèle de commande est proposée (Etat « Err ») (équation 52). Si le système est dans un
231
Chapitre 5 : Application de la commande par contraintes aux EALE
état où une contrainte est violée après l’exécution de l’algorithme, alors la cohérence de
l’ensemble de contraintes n’est pas satisfaite. Si tel est le cas, l’évolution des modèles est
bloquée.
∑ ( ( )) ∑ ( ( )) (52)
232
Chapitre 5 : Application de la commande par contraintes aux EALE
Les sorties cf1IMP et cf2IMP sont câblées en direct sur le système réel, leur activation
entraine la fermeture de l’IMP. Les sorties co1IMP et co2IMP sont câblées en inverse, leur
désactivation entraine l’ouverture de l’IMP. Il faut donc activer co1IMP et co2IMP pour que
l’IMP puisse se fermer et rester fermé.
Sur le même principe de synchronisation que les tensions, les commandes envoyées par
l’opérateur peuvent évoluer librement entre l’étape Commande et l’étape Reconstruction.
L’opérateur ne peut envoyer une commande d’ouverture (CO) et une commande de fermeture
(CF) simultanément (Figure 107). En cas d’insuffisance ou d’incohérence de l’ensemble de
contraintes, l’évolution des commandes est également bloquée dans l’état « Err ».
233
Chapitre 5 : Application de la commande par contraintes aux EALE
A partir de ces modèles, le fonctionnement du système étudié peut être reproduit. Pour cela, il
faut instancier ces modèles dans la déclaration système :
Deux tensions (U1 et U2) sont nécessaires pour simuler la tension observable sur 2
caténaires,
Un appareil de type interrupteur pour simuler l’appareil réel (IMP),
Une commande opérateur pour simuler l’envoi d’ordres de manœuvre de l’IMP.
Trois solutions pour réaliser la commande de ce système ont été implémentées. L’objectif de
cette comparaison est de montrer qu’il est possible de formaliser la sûreté du fonctionnement
au travers de l’intégration du Design Pattern de commande par contraintes. Les commandes
présentées et comparées dans les sections suivantes sont implémentées dans la fonction
« Sequentiel() », appelée par l’étape synchronisée Contraintes! (Figure 104). La comparaison
est réalisée au travers des propriétés sécuritaires extraites du cahier de recette de ce système.
234
Chapitre 5 : Application de la commande par contraintes aux EALE
UPPAAL fournit plusieurs solutions pour vérifier les propriétés sécuritaires du système et
ainsi s’assurer que les contraintes sont nécessaires et suffisantes. Le model-checker propose
de parcourir l’arbre des solutions en profondeur ou en largeur mais également de réduire
l’espace de recherche. Il est impératif de considérer le but de la vérification proposée afin
d’adapter méthodiquement les paramètres de parcours des solutions. Il est par exemple
préférable de parcourir l’arbre en profondeur pour vérifier l’existence d’un état (E<> (test)). A
contrario, il est préférable de parcourir l’arbre en largeur pour vérifier qu’une propriété est
valable pour tous les chemins (A[] (test)).
Pour vérifier ou comprendre pourquoi une propriété n’est pas vérifiée, des traces d’exécution
peuvent être enregistrées. La trace peut décrire le plus court chemin, le plus rapide, ou
n’importe quel chemin. Le choix de la trace d’exécution est déterminant dans la réussite de
vérification d’une propriété. Par exemple, si une propriété nécessite de chercher une solution
en profondeur, il sera très long de chercher le chemin le plus court et cela risquerait de
nécessiter trop d’espace mémoire.
235
Chapitre 5 : Application de la commande par contraintes aux EALE
Avant de pouvoir vérifier les propriétés sécuritaires du système, il convient de commencer par
vérifier que le modèle est correct et que les commandes respectent les propriétés de vivacité
du système. Les propriétés fonctionnelles suivantes ont donc été vérifiées :
La vivacité des systèmes a été vérifiée au travers de ces propriétés mais également au travers
de parcours manuels des états.
A partir des fiches du cahier de recette, des propriétés de sécurité ont été définies (Coupat et
al., 2014). Les fiches du cahier de recette sont disponibles en Annexe 6 et indiquent la
correspondance avec les propriétés décrites ci-dessous. Les propriétés définies et vérifiées
sont synchronisées par rapport au cycle également. Les propriétés sont vérifiées après
l’écriture des sorties et avant l’évolution de la Partie Opérative (tprop - Figure 104).
236
Chapitre 5 : Application de la commande par contraintes aux EALE
1. Il existe un chemin tel que l’opérateur peut envoyer un ordre de fermeture (CFIMP) et
la tension U1 est présente et que les sorties (cf1IMP et cf2IMP) sont activées :
o E <> CFIMP . U1 . cf1IMP . cf2IMP doit être vérifiée.
2. Il existe un chemin tel que les ordres de fermeture cf1IMP et cf2IMP peuvent être
envoyés alors que la tension U1 est présente :
o E<> cf1IMP . cf2IMP . U1 . obs doit être vérifiée.
3. Pour tous les chemins de l’arbre, il n’y a pas de chemin tel que les ordres de fermeture
cf1IMP et cf2IMP soient envoyés alors qu’il n’y pas de tension U1 (DAP) :
o E<> !U1 . cf1IMP . cf2IMP ne doit pas être vérifiée.
4. Pour tous les chemins de l’arbre, il n’y a pas de chemin tel que les ordres d’ouverture
(qui maintiennent la position fermée de l’IMP) co1IMP et co2IMP soient envoyés
alors qu’il n’y pas de tension U1 (DAP) :
o E<> !U1 . co1IMP . co2IMP ne doit pas être vérifiée : la propriété est validée
s’il n’existe aucun chemin tel que la tension est présente (U1) et que les sorties
(co1IMP et co2IMP) sont activées.
5. Il existe un chemin tel que les ordres de fermeture (cf1IMP et cf2IMP) sont envoyés
alors que les conditions d’ordre de RAP (OfRAP – X24 pour la commande par
contraintes – T5 pour la commande SNCF) sont réunies et qu’il n’y a pas eu d’ordres
opérateur depuis plus de 900s :
o Pour la commande par contraintes : E<> X24 . cf1IMP . cf2IMP doit être
vérifiée.
o Pour la commande SNCF : E<>T5 . cf1IMP . cf2IMP doit être vérifiée.
6. Pour tous les chemins de l’arbre, il n’y a pas de chemin tel que les ordres de fermeture
soient envoyés par le RAP (OfRAP – X24 pour la commande par contraintes – T5
pour la commande SNCF) et qu’il n’y a pas eu d’ordres opérateur depuis plus de 900s
alors que la tension (U1) n’est pas présente :
o Pour la commande par contraintes : E<> X24 . cf1IMP . !U1 ne doit pas être
vérifiée.
o Pour la commande SNCF : E<> T5 . cf1IMP . !U1 ne doit pas être vérifiée.
237
Chapitre 5 : Application de la commande par contraintes aux EALE
Nous proposons de vérifier ces propriétés selon trois commandes présentées précédemment
(Figure 109):
A. Commande générée avec le Design Pattern de la commande par contraintes avec les
contraintes fonctionnelles présentées dans la section 5.4.
B. Commande actuellement utilisée par la SNCF présentée dans la section 5.2 et traduite
sous forme d’équations.
C. Commande générée avec le Design Pattern de la commande par contraintes intégrant
comme partie fonctionnelle la commande actuelle SNCF, présentée dans la section
5.5.
Pour chaque système étudié, le code de la fonction séquentielle est donné en (Annexes 7, 8 et
9) pour montrer la correspondance entre les GRAFCETs présentés précédemment et le code
équivalent. Le Design Pattern de la commande par contraintes peut également être retrouvé
dans le code proposé.
Le Tableau 16 présente les résultats obtenus lors de la vérification des propriétés selon les
trois commandes proposées. Des copies d’écran des résultats obtenus sont disponibles en
Annexe 12. Pour vérifier ces propriétés, le parcours de l’arbre de solutions peut être réalisé en
profondeur (P) ou en largeur (L). Les propriétés 3, 4 et 6 demandent un parcours total de
l’arbre pour satisfaire leur vérification. Le parcours de l’ensemble des solutions peut s’avérer
coûteux en mémoire vive. Etant donné l’aspect séquentiel de la commande analysée et les
238
Chapitre 5 : Application de la commande par contraintes aux EALE
temporisations de plusieurs secondes voir minutes, le nombre d’états que peut atteindre le
système, en fonction de l’évolution aléatoire des tensions U1 et U2 et de la commande
opérateur, explose. Pour réduire cette explosion combinatoire, deux solutions ont été mise en
œuvre pour atteindre les meilleurs résultats :
Les temporisations ont été réduites de manière proportionnelle pour réduire le nombre
d’évolutions des modèles entre les étapes de la fonction RAP.
La solution complémentaire a consisté en l’utilisation du centre de calcul Romeo de
l’Université de Reims Champagne-Ardenne. Ne pouvant éviter un nombre d’états
important à cause des temporisations des événements séquentiels du système, il a été
nécessaire de se tourner vers une configuration matérielle suffisante pour répondre à
nos besoins, notamment en termes de mémoire vive. Chaque nœud du centre Romeo
étant composé de 32Go de RAM. L’utilisation d’un seul nœud a permis de vérifier les
propriétés du système A. Malheureusement nous n’avons pas eu le temps de réaliser
les démarches nécessaires pour augmenter le nombre de nœuds. Cela aurait
probablement permis de vérifier les propriétés du système C.
Les deux solutions mises en œuvre ont permis d’atteindre les résultats présentés dans le
Tableau 16 pour les systèmes A et B. Le nombre d’états du système C est plus élevé que celui
des systèmes A et B. Pour réduire davantage les évolutions possibles du système, nous avons
tenté de vérifier les propriétés 3, 4 et 5 avec une seule tension modélisée telle que (U1 = U2)
mais cette solution n’a pas été suffisante pour que l’arbre soit complètement parcouru. Les
propriétés 3, 4 et 5 du système C n’ont donc pas pu être formellement vérifiées.
Cette vérification formelle met en évidence que la commande SNCF n’est pas sûre. Le
problème révélé par l’analyse des propriétés de la commande SNCF vient d’un scénario
précis qui n’est pas testé dans le cahier de recette. Pour vérifier cette propriété dans le cahier
239
Chapitre 5 : Application de la commande par contraintes aux EALE
de recette, il faudrait simuler une absence de tension (U1) pendant la fermeture de l’IMP. En
effet, si la tension est présente au moment où l’opérateur envoie un ordre de fermeture
(CFIMP), la séquence de fermeture de l’IMP par le programme SFC de commande de l’IMP
est lancée. Les sorties cf1IMP, cf2IMP, co1IMP et co2IMP sont activées jusqu’à ce que
l’IMP soit fermé même si la tension disparait. L’étape X2 est alors atteinte, l’ordre
d’ouverture par manque tension (OoIMP) est actif, ce qui entraine l’ouverture immédiate de
l’IMP par la transition vers l’étape X3. Formellement les propriétés 3 et 4 ne sont donc pas
vérifiées. Le problème révélé par la propriété 6 est le même, si la tension baisse alors que la
refermeture automatique de l’IMP vient d’être autorisée par OfRAP, l’IMP se fermera jusqu’à
atteindre sa position fermée, puis s’ouvrira instantanément par manque tension (DAP). Ce
problème a pour conséquence un risque de réalimentation de défauts caténaires.
Ce problème est résolu lorsque le filtre généré par le Design Pattern est appliqué en sortie de
la commande SNCF. En effet la CSs3 (équation 27) empêche d’envoyer la commande de
fermeture de l’IMP (cf1IMP et cf2IMP) lorsque la tension n’est pas présente. Les sorties sont
donc forcées à zéro par le filtre et notamment par les équations et . Sur cet
exemple de commande de l’IMP, l’intérêt du filtre est évident, il ne contraint pas la vivacité
du système et assure formellement la sûreté de fonctionnement du système. Les propriétés à
vérifier étant obtenues à partir du cahier de recette, la commande obtenue répond aux
exigences de validation de la recette usine.
5.8 Conclusion
240
Chapitre 5 : Application de la commande par contraintes aux EALE
Pour tester les propriétés des commandes proposées, le comportement d’un poste de mise en
parallèle a été modélisé sous UPPAAL, un outil de model-checking. Grâce à celui-ci, les
propriétés auxquelles doivent répondre les commandes proposées ont été vérifiées
formellement. Les propriétés ont été définies à partir des fiches du cahier de recette,
permettant de vérifier le comportement du système lors des recettes usine et site.
Les résultats ont montré que le Design Pattern permet d’obtenir une commande sûre avec une
partie fonctionnelle la plus permissive. Son application en tant que filtre de la commande
existante a permis de sécuriser le comportement du système qui ne l’était pas entièrement.
Pour des raisons évidentes de sécurité, le domaine étudié des Equipements d’Alimentation des
Lignes Electrifiées (EALE), a toutes les raisons d’intégrer la vérification formelle dans ces
méthodes de travail. Marc Antoni écrit dans ses travaux sur la signalisation ferroviaire
(Antoni, 2012), et notamment sur le système ERTMS (Europan Rail Traffic Management
System), que des catastrophes telles que Fukushima doivent remettre en cause les approches
probabilistes selon laquelle des scénarii peu probables n’ont pas besoin d’être étudiés. Dans
notre domaine d’études, la sécurité est également au cœur des préoccupations, il serait donc
préférable de ne pas attendre une catastrophe pour généraliser l’utilisation des méthodes
formelles telles que le model-checking.
241
Chapitre 5 : Application de la commande par contraintes aux EALE
242
Conclusion Générale et Perspectives
Les travaux menés lors de ce projet de recherche ont abouti à une proposition de
méthodologie pour les études d’automatisation permettant d’améliorer les conditions de
travail des chargés d’études. Cette démarche (Figure 110) est basée sur une modélisation d’un
domaine spécifique (qui constitue le métier cible) et a été élaborée en considérant à la fois les
aspects humains, économiques et sécuritaires. Celle-ci intègre deux axes de recherche. Le
premier concerne la génération automatique de livrables (codes, documents, schémas…).
Celle-ci repose nécessairement sur une standardisation et une modélisation du « métier ».
L’approche MDD (Model Driven Development) du génie logiciel et l’approche DSM
(Domain Specific Modeling), apporte des éléments de solution reposant sur l’utilisation de
« templates métiers ». Toutefois, il est fondamental de générer des livrables de qualité et du
code API (Automates Programmables Industriels) sûr de fonctionnement. Le second axe de
recherche vise à garantir la sûreté de fonctionnement de la commande. Trois approches de
synthèse de la commande (la Supervisory Control Theory (SCT), la synthèse algébrique, la
commande par contraintes logiques) permettant a priori de répondre à ces objectifs de sûreté
ont été présentées et discutées. La commande par contraintes logiques possède l’avantage
majeur de séparer la sécurité (qui est vérifiée formellement hors ligne par model-checking) et
le fonctionnel, et de pouvoir être utilisée avec des programmes API existants, ne remettant pas
ainsi en cause la méthodologie de travail des chargés d’études.
243
Conclusion Générale et Perspectives
Dans le cadre de cette thèse, un outil logiciel intégrant la contribution apportée par ce travail
de recherche a été développé : Odil GREMLINS. Il permet aux chargés des études
d’automatisation d’améliorer leur condition de travail et la sécurité tout en gagnant en
productivité et cela, sans modifier fondamentalement le workflow et le langage métier qu’ils
connaissent. L’utilisation de l’outil est basé sur la définition du système étudié à partir d’une
liste exhaustive d’objets métiers modélisés (model based design).
244
Conclusion Générale et Perspectives
L’intérêt du model based design pour un domaine spécifique est la standardisation des étapes
du cycle de production tout en conservant le langage spécifique du domaine (Domain Specific
Language – DSL).
A partir de la description graphique effectuée par le chargé d’études, il devient ainsi possible
de réaliser automatiquement les tâches suivantes :
la vérification de la cohérence des données du modèle par rapport aux modèles et aux
méta-modèles prédéfinis,
la génération de la synthèse des entrées et des sorties des API,
la génération du code des programmes API,
la génération des cahiers de recette.
Les règles de programmation mises en œuvre pour le contrôle/commande des EALE ont été
définies et les programmes API ont été standardisés. L’intégration de l’outil PLC Checker au
sein de la démarche a permis d’assurer la qualité du code généré. Les programmes API
générés sont homogènes et respectent les règles établies (lisibilité, maintenabilité…).
Les programmes sont générés sur la base de templates de code source respectant la grammaire
de l’Interface de Programmation d’Application (IPA) IsaGraf 3. La structure des programmes
a été définie d’après les fichiers sources lisibles présents dans un répertoire projet. Les
programmes ont pu être générés dans tous les langages de la norme (IEC 61131-3, 2003)
utilisés : LD, ST, FBD, SFC.
245
Conclusion Générale et Perspectives
leur installation par drag and drop (glisser déplacer) d’objets prédéfinis composant le
système. Les objets et les propriétés sont standardisés par des valeurs attribuées par défaut,
qui peuvent être modifiées selon les besoins des projets. Ainsi, la description peut être rapide
pour des projets standards. L’architecture de contrôle/commande est également standardisée
est peut être spécifiée.
L’intégration de cet outil dans le workflow des projets d’automatisation des EALE permet
d’éviter les tâches répétitives telles que la rédaction du cahier de recette que les chargés
d’études devaient réaliser au travers de la recopie de fiches de tests existantes. L’outil évite
également, au travers du principe de saisie et de description unique, la saisie multiple des
mêmes informations. La standardisation et la génération des programmes API, sur la base de
templates définis par rapport aux programmes existants et analysés par un outil qualimétrique,
assurent l’homogénéité du code, sa qualité et surtout le respect des règles de programmation
établies par les experts métier.
La contribution théorique majeure de notre travail de recherche est une approche originale de
la commande. Celle-ci peut être exploitée en tant que commande à part entière ou en tant que
filtre robuste d’une commande existante. En effet, l’algorithme proposé et son Design Pattern
peuvent être utilisés dans les deux cas. L’approche proposée est basée sur la définition de
contraintes logiques limitant l’espace de fonctionnement du système. L’idée originale est de
séparer la partie sécuritaire de la partie fonctionnelle. La partie sécuritaire est définie à partir
des contraintes de sécurité simples (CSs) et des contraintes de sécurité combinées (CSc). La
partie fonctionnelle est définie à partir de contraintes fonctionnelles (CF) qui peuvent soit
provenir du programme API existant ou d’un programme gérant uniquement l’aspect
fonctionnel. Le but du filtre défini par le Design Pattern est d’assurer que la commande soit
sûre de fonctionnement. Pour cela, à partir du cahier de recette et de l’analyse des modes de
défaillances, les propriétés sécuritaires que le système doit respecter, ainsi qu’un ensemble de
contraintes de sécurité, sont définis. Pour vérifier que la commande générée par le Design
Pattern à partir des contraintes de sécurité est sûre de fonctionnement, nous avons proposé de
vérifier formellement par model-checking que les propriétés sécuritaires sont respectées. Les
approches formelles sont encouragées par les normes ferroviaires telles que l’(EN 50126,
2012) pour vérifier la sûreté du fonctionnement des applications de contrôle/commande, plus
généralement dans le monde industriel ayant des contraintes de sûreté de fonctionnement par
la norme (IEC 61508, 2010).
246
Conclusion Générale et Perspectives
Les solutions proposées sont en adéquation avec les principes de l’automatique « humaine »
qui vise à apporter des solutions originales au problème de l’automatisation en développant
des outils adaptés à l’opérateur humain. Une campagne expérimentale a été également
conduite en vue d’évaluer l’utilité et l’utilisabilité des outils coopératifs développés.
Ce travail de recherche a été concrétisé par le développement d’un outil logiciel supportant la
méthodologie. Celui-ci a été testé en production pour les sous-stations électrifiées en 25kV.
Le développement de l’outil pour les postes électrifiés en 25kV est en cours de finalisation et
devrait être livré pour la fin de l’année 2014. Il restera alors à appliquer la méthodologie aux
EALE électrifiés en 1500V. Grâce à l’expérience acquise sur les installations électrifiées en
25kV, nous espérons que l’adaptation aux EALE électrifiées en 1500V sera plus rapide même
si les principes et les architectures sont différents, le métier conserve le même langage, la
même grammaire et des principes proches.
247
Conclusion Générale et Perspectives
Comme nous l’avons vu, l’algorithme de commande proposé présente l’intérêt de pouvoir
sécuriser des programmes API existants sans les modifier. Toutefois, un autre de ses
avantages est de pouvoir séparer les parties fonctionnelles et sécuritaires d’un contrôleur. Il
devient donc possible de concevoir des programmes de façon très différente. En effet,
aujourd’hui, le plus souvent la spécification en GRAFCET mélange les aspects fonctionnels
et sécuritaires. Le fait de concevoir la commande en séparant les deux peut conduire à des
méthodes de conception originales et innovantes. Pour la SNCF, volontairement, nous avons
décidé d’utiliser l’algorithme en tant que filtre non bloquant d’une commande existante car
cela permet de ne pas modifier les méthodes et habitudes des chargés d’études. Il a été montré
sur un exemple réel (Interrupteur de Mise en Parallèle) qu’il devient possible d’obtenir une loi
de commande différente et qui semble au final plus simple et plus lisible. Il serait donc
intéressant d’appliquer cette approche sur d’autres programmes API de la SNCF.
La vérification par model-checker est très performante. Toutefois, il faut faire face à des
explosions combinatoires et dans notre cas, nous n’avons pas été en mesure de vérifier toutes
les propriétés avec la commande existante de la SNCF associée au filtre. Nous désirons d’une
part poursuivre les tests sur le super calculateur ROMEO de l’Université de Reims
Champagne-Ardenne en augmentant le nombre de nœuds et la mémoire vive disponible.
D’autre part, des travaux peuvent être menés pour modifier les modèles utilisés pour la
vérification en vue de tenter de limiter l’explosion combinatoire. Enfin, nous avons pu
prouver que la commande la plus permissive (CPP) associée au filtre était sûre de
fonctionnement. Si l’on arrive à prouver que la commande existante est inclue dans la CPP, il
est possible de prouver formellement toutes les propriétés et sans forcément avoir recours à
des moyens de calcul très performants.
L’algorithme de commande peut être également amélioré. Une analyse structurelle des
contraintes de sécurité (CS) devrait permettre de réduire le nombre de boucles dans la
structure WHILE. Actuellement, le nombre maximal d’itérations correspond au nombre de
contraintes de sécurité combinées. Il est possible de réduire ce nombre et ainsi d’augmenter
les performances de l’algorithme. En effet, une analyse structurelle d’un graphe des
248
Conclusion Générale et Perspectives
contraintes peut mettre en évidence les cycles. Dès qu’un cycle est repéré (conséquence d’un
défaut sur la PO), il est possible de sortir de la structure WHILE.
Des liens semblent possibles entre l’algorithme de commande et le diagnostic. En effet, si les
contraintes de sécurité ont été formellement vérifiées, le fait de sortir de la boucle WHILE
suite à un dépassement du nombre maximal d’itérations indique vraisemblablement une
défaillance de la Partie Opérative. Il est donc possible d’une part d’étudier la cause logique de
l’incohérence des contraintes pour en déduire les causes possibles de défaillance. D’autre part,
un travail sur la définition des contraintes de sécurité en vue de faciliter le diagnostic peut être
envisagé.
249
Conclusion Générale et Perspectives
1) une amélioration des conditions de travail des chargés d’études sans modifier leur
métier car les principes de développement des programmes API sont conservés.
2) un gain économique important car les temps consacrés aux études sont réduits.
250
Bibliographie
Alanche, P, Lhoste, P., Morel, G., Roesh, M., Salim, M., Salvi, P. (1986). Application de la
modélisation de la Partie opérative à la structuration de la commande, Journée AFCET,
Montpellier, 1986
Alur R., Henzinger, T.A. (1992). Logics and models of real time: a survey, Real Time: Theory
in Practice, Springer LNCS 600, pp. 74-106, 1992
Antoniadis, L.A., Leopoulus, V.I.N. (2000). A concept for the integrated process description,
PLC programming and simulation using Petri nets: Application in a production process, Proc.
of the IEEE SMC, 2000.
Askenazy, P., Caroli, E. (2003). Pratiques innovantes, accidents du travail et charge mentale:
résultats de l’enquête française sur les Conditions de travail. Pistes, 1 (5), 1-30.
Baddeley, A. (1990). Human memory: theory and practice. Hove: Lawrence Erlbaum
Associates.
Bajovs, A., Nikiforova, O., Sejans, J. (2013). Code Generation from UML Model: State of the
Art and Practical Implications, Applied Computer Systems. doi:10.2478/acss-2013-0002
Balemi, S., Kozák, P., Smedinga, R. (1993). Discrete Event Systems: Modeling and Control,
Progress in Systems and Control Theory, Birkháuser Verlag, Basel, Switzerland, 1993.
251
Bibliographie
Balemi, S. (1992). Control of discrete event systems: theory and application, PhD Thesis,
Swiss Federal Institute of Technology, Zürich, Switzerland, 1992.
Baresi, L., Mauri, M., Monti, A., and Pezzk, M., (2000). PLCTOOLS: Design, formal
validation, and code generation for programmable controllers, Proc. of the IEEE SMC 2000.
Behrmann, G., Bengtsson, J., David, A., Larsen, K.G., Pettersson, P., Yi, W. (2002). Uppaal
implementation secrets, 7th International Symposium on Formal Techniques in Real-Time and
Fault Tolerant Systems. Springer-Verlag London, UK 2002: 3-22.
Benlorhfar, R., Annebicque, D., Gellot F., Riera B. (2011). Robust filtering of PLC program
for automated systems of production, 18th World Congress of the International Federation of
Automatic Control, Milan, Italie, août 2011.
Bézivin, J., Gérard, S., Muller, P.-A., and Rioux, L. (2003). MDA components: Challenges
and Opportunities. Metamodelling for MDA, First International Workshop. York, UK, 2003.
Canet, G., Couffin, S., Lesage, J.-J., Petit, A., and Schnoebelen, P. (2000). Towards the
automatic verification of PLC programs written in instruction list, Proc. of the IEEE SMC,
2000.
Chikofsky, E.J., Cross, J.H. (1990). Reverse engineering and design recovery: A taxonomy,
IEEE Software 7: 13–17. doi:10.1109/52.43044
Clarke, E. M., Emerson, E. A., & Sistla, A. P. (1986). Automatic verification of finite-state
concurrent systems using temporal logic specifications. ACM Transactions on Programming
Languages and Systems (TOPLAS), 8(2), 244-263.
252
Bibliographie
Coupat, R., Meslay, M., Burette, M. A., Philippot, A., Annebicque, D., Riera, B. (2014).
Standardization and Safety Control Generation for SNCF Systems Engineer. 19th IFAC World
Congress 2014 (IFAC WC 2014), Cape Town, South Africa, 2014.
Coupat, R., Meslay, M., Burette, M. A., Philippot, A., Annebicque, D., Riera, B. (2013).
Standardized generation and Robust filtering for optimization of the mental workload of the
systems engineer. 12th IFAC Symposium on Analysis, Design, and Evaluation of Human-
Machine Systems (HMS 2013), Las Vegas, USA, 2013.
Debernard, S., Riera, B., Poulain, T. (2014). Chapter 8 : The Common Work Space for the
Support of Supervision and Human–Machine Cooperation, Designing Human-machine
Cooperation Systems, Patrick Millot, Wiley InterScience, ISBN 978-1-84821-685-3, pp 285-
342, 2014.
Debernard, S., Riera, B., Poulain, T. (2013). ‘L'espace de travail commun pour l'aide à la
supervision et à la coopération homme-machine’. In P. Millot, Ergonomie des systèmes
homme-machine : Conception et coopération (Traité IC2, série Systèmes automatisés),
Hermès, pp. 295-341, ISBN 9782746239203.
253
Bibliographie
Eveleens, J. L., Verhoef, C. (2010). “The Rice and Fall of the Chaos Report Figures”, IEEE
Software, IEEE Computer Society, 2010, pp. 30-36.
Fernandez Adiego, B., Darvas, D., Tournier, J.-C., Blanco Vinuela, E., Gonzalez, S., Victor,
M. (2014). “Bringing Automated Model Checking to PLC Program Development - a CERN
Case Study”, 12th IFAC - IEEE International Workshop On Discrete Event Systems
(WODES'14), Paris, France, 2014.
Fernandez Adiego, B., Blanco Vinuela, E., Tournier, J.-C., Victor, M., Gonzalez, S., Bliudze,
S. (2013). Model-based automated testing of critical PLC programs. 11th IEEE International
Conference on Industrial Informatics, pages 722–727, 2013.
Frey, G., Litz, L. (1998) ‘Verification and Validation of Control Algorithms by Coupling of
Interpreted Petri Nets’, Proc. Of the IEEE SMC‘98, San Diego, Vol. 1, pp. 7-1 2, 1998.
Hamon-Cholet, S., & Rougerie, C. (2000). La charge mentale au travail : des enjeux
complexes pour les salariés. Économie et statistique, N°339-340, 9/10, 243-255.
Hassapis, G., Kotini, I., Doulgeri, Z. (1998). ‘Validation of a SFC software specification by
using hybrid automata’, INCOM’ 98, Volume 11, pp. 65-70, 1998.
Henzinger, T.A. (1998). ‘It’s about time: real-time logics reviewed’, Proceedings of the Ninth
International Conference on Concurrency Theory (CONCIJR 1998), Springer LNCS 1466,pp.
439-454, 1998.
254
Bibliographie
Hietter, Y. (2009). Synthèse algébrique de lois de commande pour les systèmes à évènements
discrets logiques, thèse de doctorat, Cachan, École normale supérieure.
Hietter, Y., Roussel, J.-M., Lesage, J.-J. (2008). Algebraic synthesis of dependable logic
controllers, 17th IFAC World Congress, Seoul (Korea), pp. 4132-4137, July 2008.
Holloway, L.E., Krogh, B.H., (1994). Controlled Petri nets: A tutorial survey, 11th Int. Conf.
on Analysis and Optimization of Systems, Discrete Event Systems, volume 199 of LNCS,
1994
IEC 60848 (2002), Second edition 2003-01, Programmable controllers – Part 3: Programming
languages GRAFCET specification language for sequential function charts Reference number
CEI/IEC 60848: 2002.
IEC 60870-4 (2013). Telecontrol equipment and systems. Part 4: Performance requirements
Ed. 1.
IEC 61499-2 (2000). (2nd committee Draft, Ed. 1.0), Function blocks for industrial-process
measurement and control systems - Part 2: Engineering Task Support.
IEC 61508 (2010). (Ed. 2.0 Commented version), Functional safety of electrical / electronic /
programmable electronic safety-related systems.
255
Bibliographie
ISO 10075 (1991). Principes ergonomiques concernant la charge de travail mental -- Termes
généraux et leurs définitions (1991).
ISaGRAF. ICS Triplex ISaGRAF Inc. - leading IEC 61131 and IEC 61499 software.
Available: http://www.isagraf.com
Jacobson, I., Booch, G., Rumbaugh, J. (2002). The Unified Software Development Process,
Addison-Wesley, 2002, pp. 512.
Küster, J. (2011). Model Driven Research Engineering, Code Generation, IBM Research,
Zurich, 2011.
Lampérière-Couffin, S., Rossi, O., Roussel J.M., Lesage, J.J. (1999). Formal validation of
PLC programs: A survey, Proceedings of the ECC’99, 1999.
Lancry, A., Lammens, J.M. (1998). Étude différentielle des fluctuations de performances à
une tâche complexe au cours de la journée. Le Travail Humain, 61 (2), 153-169.
256
Bibliographie
Marangé, P., Benlorhfar, R., Gellot, F., Riera, B. (2010). Prevention of human control errors
by robust filter for manufacturing system, 11th IFAC Symposium on Analysis, Design, and
Evaluation of Human-Machine Systems (HMS 10), France.
Mertke, Th., and Menzel, Th., (2000). Methods and tools to the verification of safety-related
control software, Proc. of the IEEE SMC, 2000.
Millot, P. (2014). La conception centrée sur l'homme. In P. Millot, Ergonomie des Systèmes
Homme-machine: conception et coopération, Hermés, Paris, France, pp. 31-67
Millot, P. (1987). Coopération homme-machine dans les tâches de supervision des procédés
automatisés, thèse de doctorat, Valenciennes, 1987.
Parasuraman, R., Sheridan, T., and Wickens, C. (2000). A model for types and levels of
human interaction with automation. IEEE Transactions on Systems, Man and Cybernetics,
SMC-30(3), 286–297.
Pearce, P. and Friedenthal, S., (2013). A Practical Approach for Modelling Submarine
Subsystem Architecture in SysML, Proceedings from the 2nd Submarine Institute of Australia
(SIA) Submarine Science, Technology and Engineering Conference, pp. 347-360, October
2013
257
Bibliographie
Philippot, A., Riera, B., Gellot, F., Annebicque, D., Coupat, R., Pierrel, E. (2014). Initiation à
la qualimétrie de code d’automate programmable industriel, Enseignement des Technologies
et des Sciences de l'Information et des Systèmes, CETSIS, Besançon, 2014.
Ramadge, P.J.G., Wonham, W.M. (1987). Supervisory Control of a Class of Discrete Event
Processes, SIAM J., Control and Optimisation, 25: 206-230, 1987.
Ramadge, P.J.G., Wonham, W.M. (1989). The Control of Discrete Event Systems, Proc. of
the IEEE, Vol. 77, pp. 81-97, 1989.
Reisig, W. (1992) A Primer in Petri Net Design, Berlin, Heidelberg, New York, Springer,
1992.
Richard, J.-F. (1996). Faut-il revoir la notion de charge mentale ? Psychologie Française, 41
(4), 309-312.
Riera, B., Coupat, R., Annebicque, D., Philippot, A., Gellot, F. (2014a). Control synthesis
based on safety Boolean guards for manufacturing systems: application to a sorting system,
10th International Conference on Modeling, Optimization & SIMulation (MOSIM'2014),
Nancy, France, 2014.
Riera, B., Coupat, R., Philippot, A., Gellot, F., Annebicque, D. (2014b). Control design
pattern based on safety logical constraints for Manufacturing Systems: Application to a
Palletizer, 12th IFAC - IEEE International Workshop On Discrete Event Systems
(WODES'14), Paris, France, 2014.
Riera, B., Philippot, A., Annebicque, D., Gellot, F. (2012). Safe control synthesis based on
Boolean constraints for manufacturing systems, 8th Symposium on Fault Detection,
Supervision and Safety of Technical Processes (SAFEPROCESS 2012), Mexico.
258
Bibliographie
Riera, B., Marangé, P., Gellot, F., Nocent, O., Magalhaes A., and Vigario B. (2009)
Complementary usage of real and virtual manufacturing systems for safe PLC training, 8th
IFAC Symposium on Advances in Control Education (ACE09), Kumamoto, Japon, 2009.
Riera, B., Debernard, S. (2003). Basic Cognitive Principles Applied to the Design of
Advanced Supervisory Systems for process control, Handbook of Cognitive Task Design,
Erick Holnagel (Ed.), Lawrence Erlbaum Associates, pp 255-281, 2003.
Rohée, B., Riera, B. (2009). Advanced supervisory control for manufacturing systems: from
concepts to a separated monitoring system, International Journal of Intelligent Systems
Technologies and Applications (IJISTA) special issue on intelligent system design and
development, 2009.
Royce, W.W. (1970). Managing the Development of Large Software Systems. IEEE Wescon,
p. 1-9, 1970
Sarmento, C.A., Silva, J.R., Miyagi, P.E., Santos Filho, D.J. (2008). Modeling of programs
and its verification for programmable logic controllers. 17th IFAC World Congress, 2008.
Sargent, L. D., Terry, D. J. (2000). The moderating role of social support in Karasek’s job
strain model. Work and Stress, Vol. 14, No. 3, pp. 245-261, 2000.
Schwaber, K., Beedle, M. (2001). Agile Software Development with SCRUM, Prentice Hall,
Upper Saddle River, New Jersey, 2001.
259
Bibliographie
Shankar, N. (2000). Combining theorem proving and model checking through symbolic
analysis, Concurrency Theory (pp. 1-16), Springer Berlin Heidelberg, 2000.
Stanton, N. A., Young, M., and McCaulder, B. (1997). Drive-by-wire: The case of driver
workload and reclaiming control with adaptive cruise control. Safety Science, 27(2/3).
Toguyeni, A.K.A., Dangoumau, N, Lee, E.J. (2007). Synthesis Approach for Reconfigurable
Manufacturing Systems Design Based on Petri Nets, Studies in Informatics and Control
(SIC), volume 16 (1), 2007.
Toguyeni A.K.A., (1992). Surveillance et diagnostic en ligne dans les ateliers flexibles de
l’industrie manufacturière, thèse de doctorat, Université de Lille, novembre 1992.
Tolvanen , J. P. (2005) Domain-Specific Modeling for Full Code Generation, Methods and
Tools, 2005.
UML (2011). OMG, OMG Unified Modeling Language (UML) Specification, 2011.
UTE C 18510 (1988). Operations on electrical work and installations and in an electrical
environment - Electrical hazard prevention, 1988.
Van der Wal, E. (2009), PLCopen, IEEE Ind. Electron. Mag., vol. 3, p. 25, Dec. 2009.
Volker N., Kramer, B.J. (1999) Modular Verification of Function Block Based Industrial
Control Systems, Proc. 24th IFAC/lFIP Workshop on Real-Time Programming, May 1999.
Völter, M., Stahl, T., Bettin, J., Haase, A., & Helsen, S. (2013). Model-driven software
development: technology, engineering, management. John Wiley & Sons.
260
Bibliographie
Völter, M. (2011). From Programming to Modeling - and Back Again, IEEE Software, Nov.-
Dec. 2011, pp. 20-25.
Völter, M., Groher, I. (2007). Product Line Implementation using Aspect-Oriented and
Model-Driven Software Development, 11th International Software Product Line Conference,
SPLC, 2007.
Wickens, C. D., Gordon, S. E., Liu, Y. (1998). An introduction to human factors engineering.
Yerkes, R. M., Dodson, J. D. (1908). The relation of strength of stimulus to rapidity of habit-
formation. Journal of Comparative Neurology and Psychology 18: 459–482.
doi:10.1002/cne.920180503.
Young, M.S., Stanton, N.A. (2002). Attention and automation: new perspectives on mental
underload and performance, Theoretical Issues in Ergonomics Science, Taylor & Francis, 3,
2, 178-194, 2002.
Young, M. S., Stanton, N. A. (2001). Mental workload: theory, measurement, and application.
In W. Karwowski (Ed.), International encyclopedia of ergonomics and human factors: Vol. 1,
pp.507-509. London: Taylor and Francis.
261
Bibliographie
262
Annexes
Règles de Nommage
Règles d’Ecriture
E.1 - Non-spécifique - Toutes les variables doivent être écrites avant d’être lues
E.2.a, E.2.b - Les entrées des blocs fonctionnels utilisateur doivent être lues et ne pas être
écrites
E.2.c, E.2.d - Les entrées/sorties des blocs fonctionnels utilisateur doivent être lues et écrites
E.2.e - Les sorties des blocs fonctionnels utilisateur doivent être écrites avant leur éventuelle
lecture
Règles de Structuration
263
Annexes
Informations Utiles
264
Annexes
Partie HT
1 1
1
1 0..2
Arrivée HT AACommun
1 1
1
1 1 1
1
1 1
*
*
0..1 *
0..1 0..1
Sect. HT Dj HT Protection
0..1
Barre HT
1
1
*
0..2
Sect. HT 1 1 AACommun
1
11 GT AAGT
11 1 1
1 1
1 1 1
1
1 1
*
1 0..3 0..1
*
1 1 1
Protection Sect. Phases Sect. HT Dj GT Transfo. SRB
265
Annexes
1 DT AADT
11 1 1
1 1
1 1 1
1
1 1
*
1..2 0..1
*
1..2 1..2 0..1
Protection Sect. MR Dj DT TdC Sect. By Pass
1 Batt. K AACommun
11 1 1
1 1
1 1
1
1
*
1 0..1
*
1 1
Protection SK DK K
266
Annexes
Commun
1 1
1
1 1
1
1
1
*
0..2
Sect. Barre
0..4
Pontage AACommun
1 1
1
1 1
1
1
*
0..1 1
Sect. SM Sect. P
Commun
1
1 11 1 1
1
*
*
*
*
Sect. Interrupteur AnnulPA DU
267
Annexes
Maitrise
structure progiciel ++ --
Code Source -- ++
Architecture -- -
Développement ++ +
Débogage + -
Evolution
modification des standards ++ +
modification du générateur -- -
modification du modèle ++ +
Risques
Finalisation du logiciel ++ +
Collaboration + +
Savoir-faire/Compétences ++ --
Entreprise - +
Couts
Développement + ++
Maintenance + ++
Evolution des standards + ++
Livrables
Programmes ++ +
Cahier des charges ++ +
Liste du matériel ++ ++
Fiche IA (id automatismes) ++ ++
Prix objectif ++ ++
Cahiers de recette ++ +
Schémas électriques -- --
Synoptique CLE - PC Vue ++ --
268
Annexes
Afin d’estimer au plus juste le coût financier du développement d’un logiciel propre à PSIGT-
TE, celui-ci a été décomposé selon le cycle de production en V (Figure 117). Ainsi les phases
de réalisation d’un tel projet ont été décomposées.
269
Annexes
270
Annexes
Afin d’estimer au plus juste le coût financier du développement du progiciel Odil pour les
études d’automatisation des EALE, le cycle de production a été adapté.
La Figure 118 montre le cycle en V complet d’un développement logiciel. La partie sur fond
bleu ne fait pas partie du cycle de développement progiciel. En effet, de par la structure
progicielle d’Odil, cette partie du cycle est considérée comme déjà réalisée. Il faut cependant
exprimer un besoin au travers du cahier des charges à fournir à Prosyst, pour qu’ils puissent
intégrer nos exigences dans le standard (progiciel) de nos EALE. Une fois que le progiciel
aura été validé par Prosyst et débogué, Prosyst garantit le bon fonctionnement d’Odil
Gremlins. Cependant au-delà du bon fonctionnement du progiciel, il est nécessaire de vérifier
que les exports générés assurent leurs fonctions et respectent les contraintes relatives au
métier (FDMS, standards de programmes…). Cette phase de vérification fonctionnelle aura
lieu lors des tests systèmes en usine puis sur site le cas échéant.
271
Annexes
Des coûts supplémentaires s’ajoutent au travail qui sera réalisé par Prosyst :
Tableau 20 : Coûts de développements annuels et d’exploitation en dernière année
2013 2014 2015…
Total des coûts de prestation de Prosyst 88,5k€ 30,5k€ 33k€
Validation des programmes générés 1 mois
Charge de travail 4 mois 1 4 mois 2 2 mois 3
Financement R&D R&D Gain projets
272
Annexes
33k€ + 3 mois
2015 133k€ + 3 mois
Production
Coûts de Maintenance
Coût d'exploitation et de
maintenance en production (en euros 33k€ + 2 mois 90k€ + 2 mois
+ heures)
Coût d'exploitation et de
maintenance en production (en 57160 114160
euros)
Les mois sont convertis en valeur monétaire dans le Tableau 21, en utilisant le nombre
d’heures travaillées par mois : 151h au tarif horaire d’un bureau d’étude : 80€.
273
Annexes
L’étude est réalisée dans le cas le moins favorable, c'est-à-dire en considérant les coûts
maximums de développement d’une part. D’autre part, la rentabilité est calculée en sous
estimant le nombre de projets annuels. En effet, nous considérerons que 8 sous-stations et 20
postes sont réalisés annuellement.
La réalisation d’un projet est décomposée en étapes pour lesquelles un temps est imparti. A
partir de cette décomposition, pour chaque solution le gain de temps réalisable grâce au
logiciel de génération standardisée a été estimé.
274
Annexes
DOE 20h 5h 5h
Correction 20h 5h 5h
Temps de paramétrage du
0 10h 20h
progiciel
Total des heures 290 180 225
Total des prestations 2 500 € 2 500 € 2 500 €
Nombre de sous-stations traitées
annuellement 8
Total annuel des heures 2320 1440 1800
Gain des solutions par rapport
aux réalisations actuelles (en
heures) 0 880 520
Gain sur le Synoptique CLE (en
euros) 0 0
Coût horaire d'un chargé d'étude 80
Gain des solutions par rapport
aux réalisations actuelles (en
euros) 0 70400 41600
275
Annexes
Dans le Tableau 22, dans les phases où la génération n’intervient pas, le temps imparti reste le
même, il n’est modifié que lorsque la génération peut être utilisée pour les livrables de la
phase. Le temps réduit qui est alors imparti permet de paramétrer le logiciel ou le progiciel
d’une part et de vérifier le livrable généré d’autre part.
Dans la seconde partie du Tableau 22, les gains réalisables sur une sous-station typique sont
multipliés par le nombre réduit de projets réalisés annuellement au niveau des sous-stations.
Nous avons considéré que la qualité des livrables générés grâce à Odil permettrait de gagner
d’avantage de temps que la solution développée spécifique à nos besoins puisque nous
bénéficierons du savoir-faire de Prosyst et de leur retour d’expérience sur la cohérence de
données du modèle servant à la génération.
De la même manière, cette étude est effectuée sur les électrifications des postes.
276
Annexes
DOE 10h 5h 5h
Correction 10h 5h 5h
Temps de paramétrage
0 5h 10h
du progiciel
Total des heures 190 133 145
Nombre de sous-stations
traitées annuellement 20
Total annuel des heures 3800 2660 2900
Gain des solutions par
rapport aux réalisations
actuelles (en heures) 0 1140 900
Coût horaire d'un chargé
d'étude 80
Gain des solutions par
rapport aux réalisations
actuelles (en euros) 0 91200 72000
277
Annexes
Le Tableau 24 montre clairement les bénéfices réalisables grâce à la génération des livrables.
En effet en soustrayant les coûts annuels d’exploitation et de maintenance aux gains réalisés
sur les projets de sous-stations et de postes, les bénéfices annuels en exploitation sont obtenus.
Le Tableau 24 met en avant les résultats prometteurs d’une collaboration avec Prosyst. En
effet, les gains réalisables annuellement sur les projets sont supérieurs grâce à la qualité des
livrables. Les coûts annuels d’exploitation et de maintenance sont réduits par rapport à la
solution de développement, car cette solution nécessiterait de disposer d’un expert logiciel à
temps plein.
La solution proposée par Prosyst est la solution réalisable sans études complémentaires la plus
rentable comparée aux solutions de développement logiciel. Sachant que le développement
logiciel serait une solution ne générant pas de bénéfices.
278
Annexes
104440 -560
Bénéfices annuels (en euros)
2014 -284880
2015 -180440
2016 -76000 -539280
2017 28440 -539840
2018 132880 -540400
2019 237320 -540960
2020 341760 -541520
2021 446200 -542080
2022 550640 -542640
2023 655080 -543200
2024 759520 -543760
2025 863960 -544320
2026 968400 -544880
2027 1072840 -545440
2028 1177280 -546000
2029 1281720 -546560
2030 1386160 -547120
2031 1490600 -547680
2032 1595040 -548240
2033 1699480 -548800
2034 1803920 -549360
2035 1908360 -549920
2036 2012800 -550480
2037 2117240 -551040
2038 2221680 -551600
2039 2326120 -552160
2040 2430560 -552720
279
Annexes
La solution proposée en collaboration avec Prosyst est estimée rentable en trois années. Ce
qui correspond à une rentabilité de 1 pour 1, le temps de développement du projet étant
échelonné sur trois années. La solution de développement n’est pas rentable. Les bénéfices
générés par cette solution restent néanmoins relativement inférieurs à ceux espérés avec la
solution Odil GREMLINS.
280
Annexes
Conditions initiales
IMP ouvert
Tension injectée dans les BNU des Tt 6528-2 et Tt 6528-1= 0V~
R.A. hors service et IMP en commande à distance.
TSS 9 et 10 présentes
Actions à réaliser
1. Injecter 100V~ dans les BNU des Tt 6528-2 et Tt 6528-1.
2. Fermer les IMP (fermeture sous tension).
3. Couper l’injection de tension dans le BNU Tt 6528-1
4. Couper l’injection de tension dans le BNU Tt 6528-2
Résultats attendus
1. TSS 9 et 10 absentes.
2. IMP fermé.
3. TSS 10 présente.
4. TSS 10, 9 présentes. Ouverture de l’IMP.
Commentaires
Prop1 : E<> CFIMP . U1
Prop2 : E<> cf1IMP . cf2IMP . U1
Prop3 : A[] not ( !U1 . cf1IMP . tprop )
ou E<> !U1 .cf1IMP . tprop non vérifiée
Prop4 : A[] not ( !U1 . co1IMP . tprop )
ou E<> !U1 .co1IMP . tprop non vérifiée
Décisions
Correct Gênant Bloquant N° FFT
Usine : Usine :
Test réalisé par Date du test
Site Site
281
Annexes
Actions à réaliser
1. Couper l’injecter dans les BNU des Tt 6528-2 & Tt 6528-1 simultanément (<1s) attendre
quelques secondes (<30s) et remettre l’injection 100V~ dans les BNU des Tt 6528-2 & Tt
6528-1 simultanément (<3s).
Résultats attendus
1. Ouverture IMP puis 10s après le retour de la présence tension sur les deux Tt,
réenclenchement IMP et TSS 14 (Fonctionnement RAP) présente durant le temps
paramétré.
Commentaires
Prop3 : E<> X31 . cf1IMP . tprop ne doit pas être satisfaite
Prop4 : E<> X24 . !cf1IMP . obs . tprop ne doit pas être satisfaite
Décisions
Correct Gênant Bloquant N° FFT
Usine : Usine :
Test réalisé par Date du test
Site Site
282
Annexes
void sequentiel()
{
COnIMP = !COIMP;
CFnIMP = !CFIMP;
283
Annexes
// Graphe RAP
284
Annexes
{
X20=0;
X21=1;
}
//X35
if(X35 and (sfIMP or not(obs)))
{
X35=0;
X30=1;
}
//X34
if(X34 and obs and (U1 and U2) and fintempoX34)
{
X34=0;
X35=1;
}
//X33
if(X33 and obs and (U1 and U2) and not(fintempoX33))
{
X33=0;
X34=1;
}
285
Annexes
{
X31=0;
X32=1;
}
//X30
if(X30 and obs and X22 and (not(U1) or not(U2)))
{
X30=0;
X31=1;
}
// Contraintes
G10 = X0;
G11 = X0;
G12 = X11;
G13 = X11;
//co1IMP
F00 = not(U1) or not(U2) or (not(soIMP) and not(co1IMP_P));
F10 = false;
//co2IMP
F01 = false;
F11 = false;
//cf1IMP
F02 = (not(U1) or not(U2)) or ((X22 or X23)and not(cf1IMP_P)) or sfIMP or not(soIMP) and not(cf1IMP_P);
F12 = not(sfIMP) and U1 and U2 and cf1IMP_P or (X24 and U1 and U2 and not sfIMP);
//cf2IMP
F03 = false;
F13 = false;
/* STEP 1 : INIT */
Fc00 = false;
Fc10 = false;
Fc01 = false;
Fc11 = false;
Fc02 = false;
Fc12 = false;
Fc03 = false;
Fc13 = false;
Fc04 = false;
Fc14 = false;
Fc05 = false;
Fc15 = false;
Flag = true;
Cpt=0;
/* STEP 2 */
Ns = 4;
286
Annexes
Ncsc = 6;
Cpt = Cpt+1;
Fc01 = CSC5;
Fc03 = CSC6;
Fc10 = CSC1;
Fc11 = CSC2 or CSC3;
Fc13 = CSC4;
/* STEP 3 */
if (Cpt==Ncsc)
{
S10= not(F00) and F10;
S11= S10;
S12= not(F02) and F12;
S13= S12;
}
co1IMP = S10;
co2IMP = S11;
cf1IMP = S12;
cf2IMP = S13;
287
Annexes
//Si une contrainte est violee apres l algo, alors il y a une erreur dans la modelisation ou dans la commande alors
les evolutions des modeles sont bloquees
if((FlagCSpost))
{
Erreur=1;
}
U1_P = U1;
soIMP_P = soIMP;
sfIMP_P = sfIMP;
COIMP_P = COIMP;
CFIMP_P = CFIMP;
co1IMP_P = co1IMP;
co2IMP_P = co2IMP;
cf1IMP_P = cf1IMP;
cf2IMP_P = cf2IMP;
288
Annexes
void sequentiel()
{
COnIMP = !COIMP;
CFnIMP = !CFIMP;
// Trait Ent
OoIMP = not(U1);
// tempo sans commande opérateur Timer_1(EnHorRAP and not(T5) and not(RSU) and not(coIMP) and
not(cfIMP) and (sfIMP and U1 and U2 or T1), 10000) #900000) #(*900s = 15 minutes*)
oper = not(T5) and not(RSU) and not(COIMP) and not(CFIMP) and (sfIMP and U1 and U2 or T1);
// X31 Timer_2(EnHorRAP and not(T5) and not(RSU) and not(coIMP) and not(cfIMP) and T1 and (not(U1)
or not(U2)),1000) #(*1s*)
X31 = not(T5) and not(RSU) and not(COIMP) and not(CFIMP) and T1 and (not(U1) or not(U2));
//X33 Timer_3(EnHorRAP and not(T5) and not(RSU) and not(coIMP) and not(cfIMP) and T1 and (U1 or
U2),3000) #(*3s*)
X33 = not(T5) and not(RSU) and not(COIMP) and not(CFIMP) and T1 and (U1 or U2);
//X22 Timer_4(EnHorRAP and not(T5) and not(RSU) and T1 and R1,30000) #(*30s*)
X22 = not(T5) and not(RSU) and T1 and R1;
//X34 Timer_5(EnHorRAP and not(T5) and not(RSU) and T1 and R1 and soIMP and U1 and U2 and (not(T3)
or R2),10000) #(*10s*)
X34 = not(T5) and not(RSU) and T1 and R1 and soIMP and U1 and U2 and (not(T3) or R2);
289
Annexes
//trap Timer_6(EnHorRAP and not(T5) and not(RSU) and T1 and R1 and (T4 or R3),1000) #(*1s*)
trap = not(T5) and not(RSU) and T1 and R1 and (T4 or R3);
T1=not(T5) and not(RSU) and not(COIMP) and not(CFIMP) and (sfIMP and U1 and U2 or T1) and
fintempo1;
T2=not(T5) and not(RSU) and T1 and (not(U1) or not(U2)) and fintempoX31;
T3=not(T5) and not(RSU) and T1 and (U1 or U2) and fintempoX33;
R1=not(T5) and not(RSU) and T1 and (not(U1) and not(U2) and not(T2) or R1);
RSU=not(T5) and not(RSU) and T1 and R1 and fintempoRAP;
R2=not(T5) and not(RSU) and T1 and R1 and soIMP and U1 and U2 and (not(T3) or R2);
T4=not(T5) and not(RSU) and T1 and R1 and soIMP and U1 and U2 and (not(T3) or R2) and
fintempoX34;
R3=not(T5) and not(RSU) and T1 and R1 and (T4 or R3);
T5=not(T5) and not(RSU) and T1 and R1 and (T4 or R3) and trap;
OFRAP=not(T5) and not(RSU) and T1 and R1 and (T4 or R3) and not(T5);
//X4
if(X4 and fintempoX4)
{
X4=0;
X0=1;
}
//X3
if(X3 and soIMP and not(fintempoX3))
{
X3=0;
X0=1;
}
//X2
if(X2 and (COIMP or OoIMP) and sfIMP)
{
X2=0;
X3=1;
}
//X1
if(X1 and sfIMP and not(fintempoX1) )
{
X1=0;
290
Annexes
X2=1;
}
//X0
if(X0 and soIMP and not(OoIMP) and (fm_CFIMP or fm_OFRAP))
{
X0=0;
X1=1;
}
co1IMP = X1 or X2;
co2IMP = X1 or X2;
cf1IMP = X1;
cf2IMP = X1;
U1_P = U1;
U2_P = U2;
soIMP_P = soIMP;
sfIMP_P = sfIMP;
COIMP_P = COIMP;
CFIMP_P = CFIMP;
co1IMP_P = co1IMP;
co2IMP_P = co2IMP;
cf1IMP_P = cf1IMP;
cf2IMP_P = cf2IMP;
OFRAP_P = OFRAP;
291
Annexes
void sequentiel()
{
COnIMP = !COIMP;
CFnIMP = !CFIMP;
// Trait Ent
OoIMP = not(U1);
// tempo sans commande opérateur Timer_1(EnHorRAP and not(T5) and not(RSU) and not(coIMP) and
not(cfIMP) and (sfIMP and U1 and U2 or T1), 10000) #900000) #(*900s = 15 minutes*)
oper = not(T5) and not(RSU) and not(COIMP) and not(CFIMP) and (sfIMP and U1 and U2 or T1);
// XS31 Timer_2(EnHorRAP and not(T5) and not(RSU) and not(coIMP) and not(cfIMP) and T1 and (not(U1)
or not(U2)),1000) #(*1s*)
XS31 = not(T5) and not(RSU) and not(COIMP) and not(CFIMP) and T1 and (not(U1) or not(U2));
292
Annexes
//XS33 Timer_3(EnHorRAP and not(T5) and not(RSU) and not(coIMP) and not(cfIMP) and T1 and (U1 or
U2),3000) #(*3s*)
XS33 = not(T5) and not(RSU) and not(COIMP) and not(CFIMP) and T1 and (U1 or U2);
//XS22 Timer_4(EnHorRAP and not(T5) and not(RSU) and T1 and R1,30000) #(*30s*)
XS22 = not(T5) and not(RSU) and T1 and R1;
//XS34 Timer_5(EnHorRAP and not(T5) and not(RSU) and T1 and R1 and soIMP and U1 and U2 and (not(T3)
or R2),10000) #(*10s*)
XS34 = not(T5) and not(RSU) and T1 and R1 and soIMP and U1 and U2 and (not(T3) or R2);
//trap Timer_6(EnHorRAP and not(T5) and not(RSU) and T1 and R1 and (T4 or R3),1000) #(*1s*)
trap = not(T5) and not(RSU) and T1 and R1 and (T4 or R3);
T1=not(T5) and not(RSU) and not(COIMP) and not(CFIMP) and (sfIMP and U1 and U2 or T1) and
fintempoS1;
T2=not(T5) and not(RSU) and T1 and (not(U1) or not(U2)) and fintempoXS31;
T3=not(T5) and not(RSU) and T1 and (U1 or U2) and fintempoXS33;
R1=not(T5) and not(RSU) and T1 and (not(U1) and not(U2) and not(T2) or R1);
RSU=not(T5) and not(RSU) and T1 and R1 and fintempoSRAP;
R2=not(T5) and not(RSU) and T1 and R1 and soIMP and U1 and U2 and (not(T3) or R2);
T4=not(T5) and not(RSU) and T1 and R1 and soIMP and U1 and U2 and (not(T3) or R2) and
fintempoXS34;
R3=not(T5) and not(RSU) and T1 and R1 and (T4 or R3);
T5=not(T5) and not(RSU) and T1 and R1 and (T4 or R3) and trap;
OFRAP=not(T5) and not(RSU) and T1 and R1 and (T4 or R3) and not(T5);
//XS4
if(XS4 and fintempoXS4)
{
XS4=0;
XS0=1;
}
//XS3
if(XS3 and soIMP and not(fintempoXS3))
{
XS3=0;
XS0=1;
}
//XS2
if(XS2 and (COIMP or OoIMP) and sfIMP)
{
XS2=0;
XS3=1;
}
293
Annexes
//XS1
if(XS1 and sfIMP and not(fintempoXS1) )
{
XS1=0;
XS2=1;
}
//XS0
if(XS0 and soIMP and not(OoIMP) and (fm_CFIMP or fm_OFRAP))
{
XS0=0;
XS1=1;
}
// Graphe RAP
294
Annexes
X20=1;
}
//X35
if(X35 and (sfIMP or not(obs)))
{
X35=0;
X30=1;
}
//X34
if(X34 and obs and (U1 and U2) and fintempoX34)
{
X34=0;
X35=1;
}
295
Annexes
//X33
if(X33 and obs and (U1 and U2) and not(fintempoX33))
{
X33=0;
X34=1;
}
// Contraintes
G10 = co1IMPsncf;
G11 = co2IMPsncf;
G12 = cf1IMPsncf;
G13 = cf2IMPsncf;
//co1IMP
F00 = not(U1) or not(U2) or (not(soIMP) and not(co1IMP_P));
F10 = false; //soIMP and U1 and U2;
//co2IMP
F01 = false;
296
Annexes
F11 = false;
//cf1IMP
F02 = (not(U1) or not(U2)) or ((X22 or X23) and not(cf1IMP_P)) or sfIMP or not(soIMP) and not(cf1IMP_P);
F12 = not(sfIMP) and U1 and U2 and cf1IMP_P or (X24 and U1 and U2 and not sfIMP);
//cf2IMP
F03 = false;
F13 = false;
/* STEP 1 : INIT */
Fc00 = false;
Fc10 = false;
Fc01 = false;
Fc11 = false;
Fc02 = false;
Fc12 = false;
Fc03 = false;
Fc13 = false;
Fc04 = false;
Fc14 = false;
Fc05 = false;
Fc15 = false;
Flag = true;
Cpt =0;
/* STEP 2 */
Ns = 4;
Ncsc = 6;
Cpt = Cpt+1;
Fc01 = CSC5;
Fc03 = CSC6;
297
Annexes
Fc10 = CSC1;
Fc11 = CSC2 or CSC3;
Fc13 = CSC4;
/* STEP 3 */
if (Cpt==Ncsc)
{
S10= not(F00) and F10;
S11= S10;
S12= not(F02) and F12;
S13= S12;
}
co1IMP = S10;
co2IMP = S11;
cf1IMP = S12;
cf2IMP = S13;
//Si une contrainte est violee apres l algo, alors il y a une erreur dans la modelisation ou dans la commande alors
les evolutions des modeles sont bloquees
if((FlagCSpost))
{
Erreur=1;
}
U1_P = U1;
U2_P = U2;
soIMP_P = soIMP;
sfIMP_P = sfIMP;
COIMP_P = COIMP;
298
Annexes
CFIMP_P = CFIMP;
co1IMP_P = co1IMP;
co2IMP_P = co2IMP;
cf1IMP_P = cf1IMP;
cf2IMP_P = cf2IMP;
OFRAP_P = OFRAP;
299
Annexes
Réponse n°1
Préface
1. Ressentiez-vous le besoin d'avoir un outil de productivité et de standardisation ?
Oui, Oui, Ne sais pas Non, pas Non, pas du
pleinement éventuellement vraiment tout
Utilisation de Gremlins
6. Trouvez-vous l’interface ergonomique (détailler éventuellement en sous point) ?
a. Description PO
Très lisible Lisible Correcte Peu lisible Illisible
b. Architecture SCLA
Très lisible Lisible Correcte Peu lisible Illisible
c. Cahier de Recette
Très lisible Lisible Correcte Peu lisible Illisible
Non testé
7. Avez-vous facilement pris en main Gremlins ?
Instantanément
Après quelques explications
Après quelques heures de manipulation
La manipulation a été réalisée conjointement avec M. Coupat vu les délais imposés par le
projet.
Après quelques jours de manipulation
300
Annexes
Qualité de la génération
9. Comment évalueriez-vous globalement la qualité du code produit par la solution
Gremlins ?
0 55 100
(Code inutilisable) (Code robuste, commenté, absence de code mort)
RQ : Code généré lorsque Gremlins était en phase de test/débugage
10. Les programmes générés sont-ils GAME en ce qui concerne :
a. La maintenabilité : Lisibilité
11. Estimez-vous que Gremlins permette d’apporter une qualité supplémentaire aux
programmes et documents produits ?
Tout à fait D’accord Neutre Pas d’accord Pas du tout
d’accord d’accord
301
Annexes
d. La fiabilité
Oui Non
e. La maintenance
Oui Non
13. Quel pourcentage du projet a pu être généré par Gremlins ? échelle sur 100%
0 80 100
Rq : Code généré lorsque Gremlins était en phase de test/débugage. Certaines parties du code
n’avaient pas encore été programmées pour être générées.
Gain en production
Personnellement, je n’ai pas de point de comparaison car c’était mon premier projet. De plus,
le temps investi sur Gremlins et son code généré n’est absolument pas représentatif du gain
potentiel étant donné qu’il s’agissait d’une phase de test/débugage.
14. Combien estimez-vous avoir gagné de temps d’étude pour : (en heures)
a. La répartition du contrôle/commande des appareils dans les automates
0 100
c. La programmation
0 100
15. Combien estimez-vous avoir gagné de temps en essai (optimisation du code) ? (en
heures)
0 100
Avis personnel
302
Annexes
Réponse n°2
Préface
1. Ressentiez-vous le besoin d'avoir un outil de productivité et de standardisation ?
Oui, Oui, Ne sais pas Non, pas Non, pas du
pleinement éventuellement vraiment tout
Utilisation de Gremlins
6. Trouvez-vous l’interface ergonomique (détailler éventuellement en sous point) ?
a. Description PO
Très lisible Lisible Correcte Peu lisible Illisible
b. Architecture SCLA
Très lisible Lisible Correcte Peu lisible Illisible
c. Cahier de Recette
Très lisible Lisible Correcte Peu lisible Illisible
Instantanément
Après quelques explications
Après quelques heures de manipulation
Après quelques jours de manipulation
Toujours pas autonome
303
Annexes
Qualité de la génération
9. Comment évalueriez-vous globalement la qualité du code produit par la solution
Gremlins ?
0 60 100
(Code inutilisable) (Code robuste qui nécessite des corrections dans le
cas de sous-stations non standardisées)
10. Les programmes générés sont-ils GAME en ce qui concerne :
a. La maintenabilité : Lisibilité
11. Estimez-vous que Gremlins permette d’apporter une qualité supplémentaire aux
programmes et documents produits ?
Tout à fait D’accord Neutre Pas d’accord Pas du tout
d’accord d’accord
304
Annexes
Oui Non
e. La maintenance
Oui Non
13. Quel pourcentage du projet a pu être généré par Gremlins ? échelle sur 100%
0 60 100
Gain en production
14. Combien estimez-vous avoir gagné de temps d’étude pour : (en heures)
a. La répartition du contrôle/commande des appareils dans les automates
0 100
c. La programmation
0 100
15. Combien estimez-vous avoir gagné de temps en essai (optimisation du code) ? (en
heures)
0 100
Avis personnel
305
Annexes
Réponse n°3
Préface
1. Ressentiez-vous le besoin d'avoir un outil de productivité et de standardisation ?
Oui, Oui, Ne sais pas Non, pas Non, pas du
pleinement éventuellement vraiment tout
0 75 100
(Code inutilisable) (Code robuste, commenté, absence de code mort)
4. Quel a priori aviez-vous à propos de Gremlins ?
Très positif Positif Neutre Négatif Très négatif
Pour le moment
5. Quelles attentes aviez-vous en priorité de Gremlins ?
Qualité Productivité Homogénéité Ergonomie Fiabilité
Réduction du Réduction Optimisation Autre : …
Utilisabilité
nombre d’outils des erreurs de la charge
mentale
Y’a jamais d’erreurs, juste du code inutilisé.
Utilisation de Gremlins
6. Trouvez-vous l’interface ergonomique (détailler éventuellement en sous point) ?
a. Description PO
Très lisible Lisible Correcte Peu lisible Illisible
b. Architecture SCLA
Très lisible Lisible Correcte Peu lisible Illisible
c. Cahier de Recette
Très lisible Lisible Correcte Peu lisible Illisible
Mais est-il à jour ?
7. Avez-vous facilement pris en main Gremlins ?
Instantanément
Après quelques explications
Après quelques heures de manipulation
Après quelques jours de manipulation
Toujours pas autonome
306
Annexes
Qualité de la génération
9. Comment évalueriez-vous globalement la qualité du code produit par la solution
Gremlins ?
0 100
(Code inutilisable) (Code robuste, commenté, absence de code mort)
10. Les programmes générés sont-ils GAME en ce qui concerne :
a. La maintenabilité : Lisibilité
11. Estimez-vous que Gremlins permette d’apporter une qualité supplémentaire aux
programmes et documents produits ?
Tout à fait D’accord Neutre Pas d’accord Pas du tout
d’accord d’accord
307
Annexes
Oui Non
e. La maintenance
Oui Non
13. Quel pourcentage du projet a pu être généré par Gremlins ? échelle sur 100%
0 100
Gain en production
14. Combien estimez-vous avoir gagné de temps d’étude pour : (en heures)
a. La répartition du contrôle/commande des appareils dans les automates
0 100
c. La programmation
0 100
15. Combien estimez-vous avoir gagné de temps en essai (optimisation du code) ? (en
heures)
0 100
Avis personnel
308
Annexes
309
Annexes
Commande A
310
Annexes
Commande B
311
Annexes
Commande C
312
Annexes
313
RESUME
Mots-clés : Systèmes à Evénements Discrets, Commande sûre de fonctionnement,
Génération de code API, Modélisation de Domaine Spécifique, Système Homme-Machine.
Le projet de recherche présenté dans cette thèse a été réalisé avec la collaboration de la
Direction de l’Ingénierie SNCF et le CReSTIC de l’Université de Reims Champagne-Ardenne
(URCA). L’objectif de ce projet est de contribuer à l’amélioration des études de conception
du contrôle/commande des projets d’électrification menées par les chargés d’études. Ce projet
doit répondre à des objectifs humains, économiques et techniques exprimés par la SNCF,
notamment appliqués au domaine des Equipements d’Alimentation des Lignes Electrifiées
(EALE). Pour répondre à ces problématiques, une méthodologie pour les études
d’automatisation est proposée. Elle intègre deux axes de recherche. Le premier axe est la
génération automatique de livrables (codes, documents, schémas…). Celle-ci repose
nécessairement sur une standardisation et une modélisation du « métier ». L’approche MDD
(Model Driven Development) du génie logiciel et l’approche DSM (Domain Specific
Modeling), apporte des éléments de solution reposant sur l’utilisation de « templates
métiers ». Toutefois, il est fondamental de générer des livrables de qualité et du code API
(Automates Programmables Industriels) sûr de fonctionnement. Le second axe de recherche
s’intéresse à la commande sûre de fonctionnement. Trois approches de synthèse de la
commande (la Supervisory Control Theory (SCT), la synthèse algébrique, la commande par
contraintes logiques) permettant a priori de répondre à ces objectifs de sûreté sont présentées
et discutées. La commande par contraintes logiques présente l’avantage majeur de séparer la
sécurité (qui est vérifiée formellement hors ligne par model-checking) et le fonctionnel, et de
pouvoir être utilisée avec des programmes API existants, ne remettant pas ainsi en cause la
méthodologie de travail des chargés d’études.
ABSTRACT
Keywords: Discrete Event System, safety control, PLC code generation, Domain
Specific Modeling, Human-Machine Interface.
The research project presented in this thesis has been realized with the collaboration of the
Engineer Department of the SNCF and the CReSTIC of the University of Reims Champagne-
Ardenne. The goal of this project is to contribute to the improvement of the control studies of
the electrification projects realized by the design engineers. This project must meet human,
economic and technical aims expressed by the SNCF applied to the field of the Power Supply
Equipments of the Electrified Lines (EALE in french). To answer these problems, a
methodology for the automation studies is proposed. It integrates two research orientations
were studied. The first axis is the automatic generation the deliverables (codes, documents,
diagrams…). This axis is based on standardization and modeling of the “work”. MDD (Model
Driven Development) and DSM (Domain Specific Modeling) approaches, brings suggestions
for solution based on the use of “work templates”. However, it is fundamental to generate
quality deliverables and safe PLC (Programmable Logic Controller) code. The second
research orientation is interested in safe control. Three approaches of control synthesis
(Supervisory Control Theory (SCT), the algebraic synthesis, the control by logical
constraints) permitting a priori to reach these aims of safety are presented and discussed. The
major advantage of the control by logical constraints is to separate the safety (which is
checked formally off line by model-checking) and the functional parts. It can be used with
existing PLC programs, which doesn’t change thus the working methodology of the design
engineers.