Vincent GOURCUFF, Olivier De SMET, Jean-Marc FAURE Détermination de l’équivalence comportementale d’algorithmes de contrôle - commande Vincent GOURCUFF, Olivier De SMET, Jean-Marc FAURE
Plan de la présentation Introduction Contexte Problématique industrielle Approche proposée Equivalence comportementale Principes Verrous scientifiques Modélisation d’algorithmes de commande Objectif Règles de modélisation Synchronisation des modèles Exemple Conclusions Résultats Apports et perspectives
Contexte Site de contrôle Centrale thermique Raffinerie Introduction Contexte Centrale thermique Site de contrôle Raffinerie Quelques chiffres 16534 lignes de code C 1857 sorties 5094 entrées Turbine électrique
Problématique industrielle Introduction Problématique industrielle CONTROCAD : Outil industriel de développement d’algorithme de commande. programmation du fonctionnement en FBD ou SFC [IEC 61131-3]. Génération automatique de programme exécutable spécifique au matériel. Utilisateur (cahier des charges) CONTROCAD Entrées Sorties Contrôleur industriel Processus à contrôler
Problématique industrielle (2) Introduction Problématique industrielle (2) Utilisateur (cahier des charges) Objectif industriel : Certification SIL 3 (norme sécurité fonctionnelle IEC 61508) Objectif scientifique : Déterminer si, quelles que soient les évolutions des entrées, les algorithmes émettent les mêmes sorties. Équivalence comportementale Objectif du papier : Développer une méthode pour les langages intermédiaires LEA et C avec : Variables booléennes; Prise en compte du temps. FBD SFC LEA C Exécutable CONTROCAD Équivalence comportementale ? Contrôleur industriel
Equivalence comportementale Approche proposée Equivalence comportementale Approche existante [Riv04] : Certification de la compilation pour le contrôle - commande aéronautique, par translation d’invariant. Vérifie le comportement interne des programmes exécutés non – cycliquement. Notre cas : Exécution cyclique du programme sur des contrôleurs industriels. Seule étape intéressante à vérifier : l’émission des sorties. Programme de commande (LEA) Moniteur BOO e1 = s1 IF s1 THEN BOO 0 = s2 lecture des Entrées Traitement programme émission des Sorties Initialisation émission des Sorties
Principes Approche proposée Modèle global Langage industriel Langage du model-checker Programme LEA Moniteur du LEA Programme C Moniteur du C BOO e1 = s1 IF s1 THEN BOO 0 = s2 E T S I E T S I s1 = e1; IF {s1} { s2 = 0; } Équivalence ? Modèle du programme LEA Équations récurrentes Modèle du programme C Équations récurrentes Modèle global Critère d’équivalence comportementale MODEL CHECKER (NuSMV [CCG+02]) Comportement équivalent ou non Diagnostic en cas d’incohérence
Critère d’équivalence comportementale Approche proposée Critère d’équivalence comportementale Propriété En fin de cycle du moniteur, les sorties ont toujours la même valeur dans chaque modèle de programme LEA et C. Condition : synchronisation des modèles dans le modèle global. Propriété en logique temporelle CTL AG(S1_LEA = S1_C) s1_LEA Modèle général s2_LEA e1 s1_C s2_C
Verrous scientifiques Approche proposée Verrous scientifiques Modéliser efficacement les programmes industriels de grande taille dans le langage du model-checker NuSMV. Synchroniser les modèles de programme dans un modèle global pour vérifier leur équivalence comportementale. Optimiser le modèle obtenu.
Modélisation d’algorithme de commande Objectif Ne s’intéresser qu’à l’état des sorties en fin de cycle du contrôleur : Réécriture en système d’équations récurrentes, avec : Variables booléennes ; Structures conditionnelles ; Prise en compte du temps ; Gestion des multiples affectations. 1 pas de calcul du model-checker = 1 cycle du contrôleur. Existant : [Ros03], [RdSLC+00] : modélisation fine des langages, non adaptée aux grands programmes. [Moo94], [Car05] : premières approches utilisant les équations récurrentes, mais restreintes en possibilités.
Principes s1 e1 s2 + Moniteur du LEA Modélisation d’algorithme de commande Principes BOO e1 = s1 (I1) IF s1 THEN (I2) BOO 0 = s2 e1 s1 s2 Programme LEA E T S I + Moniteur du LEA Moniteur e1 s1 s2 E I1 I2 S t
Règles de modélisation Modélisation d’algorithme de commande Règles de modélisation E T S I Programme LEA e1 s1 s2 + Moniteur du LEA Programme LEA BOO e1 = s1 IF s1 THEN BOO 0 = s2 Modèle en équations récurrentes next(e1):= {0,1}; next(s1):= next(e1); next(s2):= case next (s1) : 1; ! next(s1) : s2; esac; Affectation conditionnelle des variables Affectation systématique des variables
Abstraction du temps physique de façon logique Modélisation d’algorithme de commande Abstraction du temps physique de façon logique Exemple [RS00] : TON [IEC61131-3] : Temporisation à retard d’enclenchement. Indéterminisme entre active et enclenché doit être commun aux DEUX modèles Variable "time" supplémentaire d’entrée caractérisant cette indéterminisme In == 1 In == 1 In Q TON Inactive In = 0 Q = 0 Active In = 1 Q = 0 In == 0 In == 0 Enclenchée In = 1 Q = 1 In == 1 s1= f (Q,...) time Q TON In = f (e1,...) e1 s2= f (Q,...)
Principes Modèle global : Synchronisation des modèles Contient le modèle de chaque programme LEA et C. Indéterminisme commun : Entrées communes. Indéterminisme commun de l’abstraction logique du temps. Initialisation identique : Pour toutes les sorties s du programme, init(s_LEA) = init(s_C) init(s1_LEA) = init(s1_C) init(s2_LEA) = init(s2_C) time Modèle programme LEA s1 s1_LEA e1 s2 Modèle général time s2_LEA e1 time Modèle programme C s1 s1_C e1 s2 s2_C
Modèle du programme LEA Synchronisation des modèles Exemple Modèle du programme LEA next(e1):= {0,1} next(s1):= next(e1) next(s2):= case next(s1) : 1; !next(s1) : s2; esac; Modèle du programme C next(e1):= {0,1} next(s1):= next(e1) next(s2):= s2 | next(s1) | next(e1) Init(s1_LEA)= Init(s1_C) Init(s2_LEA)= Init(s2_C) next(e1):= {0,1} next(s1_LEA):= next(e1) next(s1_C):= next(e1) next(s2_LEA):= case next(s1_LEA) : 1; ! next(s1_LEA) : s2_LEA; esac; next(s2_C):= s2_C | next(s1_c) | next(e1) Propriétés à vérifier : AG(s1_LEA = s1_C) AG(s2_LEA = s2_C)
Résultats Application industrielle : centrale thermique Conclusions 175 programmes soit : 16534 lignes de code C; 11763 lignes de code LEA. 1857 sorties booléennes. 5094 entrées booléennes. Modèle sans optimisation Modèle avec optimisation Nombre de variables de sortie 1857 Nombre de variables mémorisées 636 Temps total de vérification sur Pentium 2.6 GHz 49.7 s 11.52 s États atteignables Min : 1048830 Max : 7.922820061e+028 Min : 1048580 Max : 7.922820059e+028 Temps de traduction automatique 1 min
Apports et perspectives Conclusions Apports et perspectives Apports : traduction de langages industriels en langage model-checker (NuSMV). détermination de l’équivalence comportementale entre deux programmes. optimisation des modèles par réduction du nombre de variables mémorisées. application industrielle : traitement de cas. Travaux en cours : vérification des variables entières et réelles. abstraction automatique de blocs fonctionnels. application aux autres langages de la chaîne de développement du logiciel.