Beruflich Dokumente
Kultur Dokumente
Je tiens à remercier tout particulièrement Daniel WEIL et Eric VATIN pour leur
encadrement, leur disponibilité et pour l’ensemble des conseils avisés.
Je tiens également à remercier Phillipe AUDFRAY le PDG de ATHYS de m’avoir donné
l’occasion de découvrir son entreprise et Franck Combet BLANC le chef du projet pour ses
conseils précieux et sa bonne humeur.
Je remercie également les autres membres de l’entreprise pour leur accueil chaleureux et leur
sympathie.
INTRODUCTION : ................................................................................................................ 4
CONCLUSION : ................................................................................................................... 30
BIBLIOGRAPHIE : ............................................................................................................. 31
Jalal BENALLAL Juin 2003
3
Conception d'un outil de configuration multi-automates
I. Introduction :
Le marché de la production d’objets est devenu une cible favorite des nouveaux concepteurs
de logiciels de pilotage et d’aide au pilotage des systèmes de production et cela devant le
grand progrès que connaît l’automatisation de ces systèmes.
ATHYS jeune entreprise, filiale du groupe DASSAULT SYSTEM propose une suite
logicielle, nommée CellControl, d’aide à la conception des ateliers de production et de leur
programmation. CellControl est proposé comme complément du logiciel de CAO 3D
robotique IGRIP de DELMIA.
ATHYS développe aussi un deuxième produit, c‘est un nouveau langage, nommé SFC+,
destiné à la spécification du comportement des systèmes automatisés. C’est un langage
proche au Grafcet et basé sur la sémantique du langage synchrone ‘Esterel’.
L'objectif de ce travail est de modéliser de manière plus précise le comportement d' une
cellule automatisée voir d' une ligne de production en décrivant son comportement avec le
langage SFC+ et en modélisant la répartition des programmes sur plusieurs automates
(programmation multi-automates). Il faudra tenir compte de la communication entre les
ressources (échange de messages sur un réseau) et des temps de propagation entre les
ressources de calculs ainsi qu'
entre les devices et les automates.
Dans un premier temps, j’ai fait un état de l’art sur les systèmes réactifs, les langages
synchrones, la norme IEC 61 131-3 utilisée vastement dans l’industrie manufacturier, et les
études déjà réalisées dans le domaine de la répartition des programmes: cette partie
correspond à la partie Recherche.
Puis j’ai développé un prototype qui met en pratique la méthode de répartition pour laquelle
j’ai opté. A la fin de ce rapport j’ai mis le point sur l’avancement global du travail, les
validations de certaines parties et les évolutions futures.
• Fournir des outils logiciels beaucoup plus performants, offrant notamment un haut
niveau de spécification et de sûreté : le langage SFC+.
II.2.2 Le produit CellControl
CellControl est un atelier logiciel fondé sur deux grands axes stratégiques :
• Pouvoir générer et simuler le contrôle des applications en s’appuyant sur les logiciels que
fournit DELMIA ‘IGRIP’ pour la conception et la simulation 3D de l’atelier.
• Fournir des outils logiciels beaucoup plus performants, offrant notamment un haut niveau
de spécification et de sûreté : le langage Estérel.
Les fonctionnalités qu’apportent ces produits permettraient de déterminer, dès la conception
de l’atelier, deux informations majeures de l’usine :
o Le comportement temporel de l’atelier (comment les machines communiquent
entre elles ? Quels sont les flux des pièces ?).
o Le temps de cycle de l’atelier (alors que les concepteurs n’ont actuellement que
la connaissance à l’avance des temps de cycle de chaque machine prise
séparément).
Les logiciels mis en place dans CellControl sont :
• Control-Design : c’est un logiciel proposé en option du logiciel 3D de DELMIA, nommé
IGRIP. Il permet de spécifier au moment de la conception de l’atelier en 3D quel sera le
comportement dans le temps de l’atelier ou mode opératoire et le temps de cycle de l’atelier.
• CellControl-PostProcesseur : option du produit précédent qui permet de traduire le code
produit par Control-Design en programme compatible avec des Automates programmables.
• Control-Monitor : c’est un logiciel, également fourni en option au logiciel IGRIP
compatible avec Control-Design. Il permet de valider un programme PLC en connectant via
OPC ses entrées/sorties sur une cellule IGRIP simulant la cellule robotique physique.
L'ensemble de ces logiciels constitue un atelier de développement de logiciels de pilotage de
chaînes automatisées.
Le tableau suivant (tableau 1) montre l’architecture des logiciels. Elle est décomposée en 8
composants :
Nom des
Nom de code Description
composants
Listing des différents outils d’une cellule
i-Control-Base IC_BASE
IGRIP.
Création du comportement d’une cellule et
i-Control-Design IC_DESIGN
simulation en utilisant Esterel.
Création du comportement d’une cellule et
simulation en utilisant des outils logiciels
i-Control-Monitor IC_MONITOR
pour PLC via OPC, ou autre système de
communication.
Simulation du comportement logique et
i-Control-Flow IC_FLOW
temporel d’une cellule IGRIP avec Esterel.
Jalal BENALLAL Juin 2003
6
Conception d'un outil de configuration multi-automates
Indus. PC/
RTOS PLC
synchrone ‘ESTEREL’ et les langages définit dans la norme IEC 61131-3 utilisé dans
l’industrie manufacturier pour la description du comportement discret des automates
industriels. Puis par la suite, nous verrons différents méthodes et outils de gérer la répartition
et les communications entre systèmes réactifs, pour exposer à la fin notre propre besoin et la
méthode pour laquelle on a opté pour la mise en pratique.
III.2 Systèmes réactifs et systèmes temps réels :
III.2.1 systèmes réactifs :
Dans un sens large, le terme de système réactif peut être utilisé pour décrire tout système de
traitement de l’information ou système informatisé répondant continuellement à des stimulis
externes. Au contraire d’un système transformationnel (figure 1.1,a) qui accepte des données
en entrée et fournit des résultats en sortie, un système réactif (figure 1.1,b) réagit
continuellement et instantanément à des événements ou stimulis, qu’ils soient internes ou
externes [Har 88].
En d’autres termes, un système réactif est conduit par les événements, son comportement
dépend de ces derniers et de l’ordre avec lequel ces événements surviennent.
L’introduction de contraintes de temps inhérentes à l’application, c.à.d. aux processus à
contrôler, en spécifiant des délais avec lesquels seront fournies les réponses aux stimulis,
permet d’introduire la notion de système temps réel.
III.2.2 Systèmes temps réel :
Un système est dit temps réel s’il est capable de respecter de contraintes temporelles, en
d’autres termes, s’il est capable d’effectuer un traitement, d’élaborer une information qui ait
encore un sens relativement aux processus que le système est sensé contrôler. Cette définition
n’est pas complète ni d’ailleurs unique ; [Bro 84] donne une définition plus rigoureuse : une
application temps réel constitue un système de traitement de l’information ayant pour but de
commander un environnement imposé, en respectant les contraintes de temps et de débit
(temps de réponse à un stimulus, taux de perte d’information toléré par entrée) qui sont
imposées à ses interfaces avec cet environnement.
On considère usuellement deux grandes catégories d’applications temps réel :
• Applications temps réel à contraintes strictes (temps réel dur) : lorsque le non respect des
spécifications temporelles est assimilable à une panne temporelle pouvant entraîner des
dommages au système ;
• Applications temps réel à contraintes relatives, dans le cas contraire.
Les dommages au système, provoqué par le non respect des contraintes temps réel, peut
comporter des risques majeurs d’accidents. C’est notamment le cas, dans plusieurs domaines
d’applications comme :
Réacteurs chimiques ou nucléaires
Systèmes de transport
Domaine médical
Robotique et machine outils à commande numérique
Gestion, production et distribution d’énergie
Systèmes de télécommunications
Etc…
D’ailleurs tous ces applications ont en commun les caractéristiques suivantes [Gaf96]:
Contrainte temporelles fortes : les systèmes temps réel possèdent souvent des temps
d’exécution ou de réaction impératifs, il est même fréquent que les dépassements temporels
soient purement interdits dans certaines de ces applications.
Prévisibilité et sûreté : en fonctionnement normale, toutes les évolutions (ou leurs
conséquences) doivent être prévisibles. De tel systèmes sont qualifiés de déterministe.
Fiabilité : le risque de panne doit être le plus faible possible.
Robustesse : lorsque l’environnement n’est plus celui prévu ou que l’un des organes
tombe en panne, le système global doit être capable de prendre un mode de
fonctionnement dégradé sécurisé.
Parallélisme et répartition : le processus à commander est souvent constitué de
plusieurs tâches concurrentes. Ceci impose la mise en place de mécanismes de
synchronisation et d’ordonnancement spécifiques aux contraintes temps réel.
Hiérarchie : par soucis de simplification, il est courant de définir un système de
contrôle comme chef d’orchestre de sous-systèmes dont chacun ne gère qu’une partie
de l’application. A leur tour, ces sous-systèmes peuvent se décomposer en des systèmes
plus élémentaires (en particulier dans les systèmes flexibles).
La programmation des systèmes réactifs conciliant un parallélisme logique nécessite une
approche synchrone de programmation (facilitant une description modulaire) avec une
exécution déterministe. Principalement développée en France, cette approche connaît un
succès certain dans l’industrie (avionique, transports, énergie, CAO de circuits). Située à la
frontière de l’informatique et de l’automatique, elle satisfait bien les besoins critiques de ces
systèmes. Dans la partie suivante, on détaillera plus cette approche et nous mettrons en
lumière les principaux modèles synchrones de représentation des systèmes de commande.
III.3 Les modèles synchrones de représentation des systèmes de
commande:
III.3.1 L’approche synchrone :
Spécialement destinée à la programmation des systèmes réactifs temps-réel [BB 91].
L’approche synchrone facilite la tâche du programmeur en lui donnant des primitives idéales
de concurrence et de communication : la réaction à un événement d’entrée est supposée
instantanée, ce qui rend les sorties strictement synchrones avec les entrées.
En pratique, le synchronisme est l’hypothèse que l’application réagit assez rapidement pour
appréhender ses entrées dans un ordre correct et produire toutes ses sorties avant la réaction
suivante.
D’après N. Richard [RIC 2000], le développement d’une application temps-réel réactive doit
être un processus rigoureux, nécessitant des outils adaptés, en particulier des langages pour la
spécification et des outils fiables pour la vérification automatique ; et selon H. Boufaïed
[BOU 98], les solutions traditionnelles n’apportant pas de solution satisfaisante à la
programmation de systèmes réactifs temps-réel, il a été proposé de développer des langages
dédiés plutôt que d’adapter des langages existants. Cela devait permettre de prendre
directement en compte les spécificités de ces systèmes à un haut niveau d’abstraction, en
particulier le déterminisme et le contrôle fin des processus réactifs, malgré la complexité des
comportements décrits. Le modèle synchrone a alors été introduit et de nombreux langages
sont maintenant basés sur cette approche.
Une certaine révolution est apparue avec l’arrivée des langages synchrones comme
ESTEREL, LUSTRE ou SIGNAL. Ils ont en effet permis de définir des sémantiques de
comportements rigoureuses et assurent au niveau implantation que le code généré sur la
machine cible aura rigoureusement le même comportement que le modèle de départ [BGP
93]. Pourtant malgré leurs progrès, les langages synchrones ne font pas encore partie de la
culture industrielle.
S’intéressant plus particulièrement aux systèmes réactifs dans le domaine manufacturier,
nous avons choisi d’exposer le principal langage synchrones ‘ESTEREL’ et les principaux
langages de la norme IEC 61131-3 largement utilisée pour la description des comportements
discrets dans l’industrie manufacturier.
Expression de signaux : Il est possible d’utiliser les opérateurs booléens not, and et
or dans une expression testant la présence de signaux. L’exemple suivant émet le signal O1 si
les signaux I1 et I2 sont présents simultanément ou si le signal I3 est absent.
Hiérarchie entre les modules : Nous pouvons alors considérer une hiérarchie entre
les modules : un module qui en instancie un autre peut être appelé module-père et un module
instancié est un module-fils. L’instanciation d’un module correspond à la recopie exacte du
corps de ce module, et à l’ajout des déclarations de son interface à celles de l’interface du
module-père. La substitution ne se limite pas à la correspondance entre signaux : elle
s’applique à tout ce qui peut être déclaré dans une interface de module, c’est-à-dire aux
types, aux constantes, aux fonctions et aux procédures. Cela permet en particulier de définir
des modules génériques, paramétrés lors de l’instanciation.
III.3.2.4 Compilation d’un programme ESTEREL :
Le compilateur ESTEREL produit entre autres un fichier C, représentant un automate à états
finis ou un circuit booléen. Ce fichier contient en particulier une fonction d’activation et une
fonction de positionnement pour chaque signal d’entrée. L’utilisateur doit fournir une
fonction de positionnement pour chaque signal de sortie, dans un fichier C séparé.
L’exécution d’une réaction est obtenue en appelant d’abord la fonction de positionnement de
chaque signal d’entrée présent, puis la fonction d’activation. L’émission d’un signal en sortie
provoque l’appel de la fonction correspondante, définie par l’utilisateur. L’exemple de la
figure 10, inspiré d’un exemple de [HAI 2000], montre la correspondance entre un module
ESTEREL (fichier M.strl) et les interfaces des fonctions C utilisées, présentes dans les
fichiers M.c (généré par le compilateur) et M_outputs.c (fourni par l’utilisateur).
III.3.2.5 Conclusion :
ESTEREL est un langage synchrone de nature impérative, adapté à la description de
systèmes temps-réel critiques ; il est par exemple utilisé chez DASSAULT-AVIATION pour
concevoir des systèmes avioniques. Ce langage permet de définir un système réactif sous la
forme d’un module, constitué de composantes parallèles communiquant par diffusion
instantanée de signaux. La description du comportement d’un module est réalisée à l’aide
d’instructions réactives explicites, comme la pause ou l’attente retardée d’un signal.
ESTEREL offre une remarquable puissance d’expression, tout en garantissant le
déterminisme du système décrit. En pratique, ce langage nécessite la mise en œuvre d’une
machine d’exécution, réalisant l’interface entre le système synchrone et son environnement
asynchrone. Des outils de vérification formelle sont disponibles, permettant de concevoir et
de valider des comportements complexes s’exécutant en parallèle. L’architecture d’un
système réactif décrit en ESTEREL est statique, ce qui permet de garantir la validité du
système pendant toute la durée de son exécution.
a b
x
c
a
>= 1
&
c x
Les signaux d’entrée et de sortie sont l’interface du programme synchrone. Tout signal
d’entrée possède une méthode de connexion prenant comme argument un signal de sortie ;
cette méthode permet de déclarer explicitement des connexions point-à-point
unidirectionnelles entre objets synchrones. Des mécanismes de vérification assurent qu’un
signal d’entrée est bien connecté à un signal de sortie du même type.
La communication entre les objets synchrones et les autres objets du langage se fait au
travers d’une interface permettant de traduire les signaux synchrones en événements
asynchrones et vice-versa.
III.6 Conclusion :
Le réseau d’éléments synchrones fournit une solution plus dynamique de description de
systèmes réactifs. Des objets encapsulant des modules synchrones sont interconnectés pour
former des réseaux d’objets synchrones. Plusieurs objets synchrones peuvent être connectés à
une même entrée d’un autre objet synchrone. Les objets et les connexions peuvent être
ajoutés et retirés du réseau à tout moment de l’exécution du système, et les connexions
peuvent être modifiées. La communication asynchrone est possible avec les objets non
synchrones du système, constituant l’environnement du réseau d’objets synchrones. Les
réseaux de processus réactifs constituent également une solution dynamique et déterministe,
connectant par des canaux FIFO des processus s’exécutant en parallèle.
IV. Développement :
IV.1 Spécifications :
Le but du projet est de modéliser de manière plus précise le comportement d’une cellule, et
cela en modélisant la répartition des automates sur plusieurs ressources de calcul.
La principale tâche consiste à faire communiquer plusieurs programmes SFC+. La
communication se fera avec le modèle TCP/IP.
Le travail sera validé par la réalisation de la commande réparties d’un ou de plusieurs
modules d’entrées/sorties déportées.
On peut modéliser la structure de la commande dans la figure suivante (figure 15).
En effet, la commande de la cellule robotisée est répartie sur plusieurs automates, ces
derniers peuvent communiquer des signaux entre eux, envoyer des commandes aux
actionneurs (ici se sont les sorties des modules d’IO déportés) et recevoir les informations
des capteurs (les entrées des modules IO déportés).
Le travail consiste donc à réaliser une maquette d' un noyau d' exécution générique pour
permettre l'
exécution d’un programme SFC sur chaque automate, gérer les communications
au sein du réseau, et réaliser le mapping entre les signaux des différents automates. L’entité
automate sera mise plus en détail dans la section suivante. Ce travail s'
inscrit dans le cadre du
projet de R&D d’ATHYS.
Jalal BENALLAL Juin 2003
20
Conception d'un outil de configuration multi-automates
Les bornes d’entrées digitales de ce module (figure 19) permettent de raccorder au réseau des
capteurs et des contacts secs, la séparation galvanique bus de terrain/bornes est assurée par
des optocoupleurs, est aussi composé de 8 entrées et de 8 sorties numériques.
Automate 2 Automate 1
MPLC_Prg_Sfc MPLC_Prg_Sfc
MPLC_Kernel MPLC_Kernel
MPLC_Mappin MPLC_Mappin
MIOD1 MIOD2
L’entité Automate est caractérisé par une adresse IP et un numéro de port de communication,
l’adresse IP peut ne pas être unique (pour avoir la possibilité de faire tourner deux
programmes automates sur la même machine), mais le numéro de port est unique pour
chaque automate. Chaque composant automate est constituée de 5 sous-composants :
• MPLC_Prg_Sfc : ce composant reçoit le fichier sfc qui contient le corps du
programme à exécuter par l’automate et communique les informations nécessaires au noyau
(MPLC_Kernel).
• MPLC_Kernel : ce composant constitue le noyau de l’application, c’est lui qui teste
les entrées reçues par le module MPLC_mapping et génère les sorties correspondantes.
• MPLC_Mapping : ce module gère tout ce qui est résolution d’adresse
d’acheminement et mapping des entrées/sorties du programme.
• COS_THREAD : ce module donne les fonctions nécessaires qui permettent de
communiquer avec les autres entités Automates, c’est à dire la réception et l’envoie de
signaux de communications.
• MBLC : le composant MBCL représente le pilote (driver) du module d’Entrées/Sorties
Déportées (IOD). Il permet la connexion, et la communication avec les modules
d’Entrées/Sorties.
Nous allons détailler à la suite les fonctions de chaque composant et son rôle dans la chaîne.
IV.3.2 Le composant MPCL_PRG_SFC
Chaque entité Automate contient un seul fichier SFC+ qui gère le comportement interne de
l’automate, ce fichier est compilé en langage C par le compilateur Camstrl.
Prg_Sfc.c
PtrFctSfc.cpp
compilation Programme
PtrFctInp.c SFC
MplcPrgSfc.dll
PtrFctOut.c
Le composant MPLC_PRG_SFC (figure 22), reçoit le fichier SFC+, et génère une Dll
(librairie dynamique), cette librairie contient les fonctions nécessaire à MPLC_Kernel pour
exécuter le programme compilé avec Camstrl.
Les différentes fonctions de ce composant sont :
• Generate_Interface_Prog() : cette fonction utilise la librairie dynamique camstrl.dll
pour générer l’interface de notre programme sfc, cette interface contient les informations
concernant les entrées et les sorites du programme, comme leurs types et noms.
• Generate_File_Fct_Reac(): cette fonction génère un fichier C++ qui contient un
pointeur sur la fonction principale du programme. Ce pointeur est utilisé par MPLC_Kernel
pour l’exécution pas à pas.
• Generate_Ptr_Fct_Input(): cette fonction génère un fichier C++ qui contient des
pointeurs sur les fonctions d’entrées qui doivent être lancées si l’entrée associée est activée
• Generate_Fct_Output(): cette fonction génère un fichier C++ contenant entre autres
un pointeur sur fonction qui retourne la liste des sorties et leurs valeurs générées pour
l’instant présent.
• Generate_Library : cette fonction compile le fichiers précédents et génère la librairie
dynamique MplcPrgSfc.dll qui va être utilisée par MPLC_Kernel.
reçoivent des signaux de l’extérieur (signaux de communication des autres Automates ou des
entrées physiques des modules d’entrées/sorties actionnées par des actionneurs).
• Step Execution : Exécution d’un pas de l’automate. Le programme généré par Camstrl
est exécuté. Les sorties sont mises à jours.
• Write Outputs : Envoie des sorties activées et leurs valeurs vers les modules
COS_THREAD et MBLC.
Step Execution
Write outputs
Coupleur Ethernet
Méthodes implémentées :
4 fonctions sont de types externes, donc utilisables par d’autres programmes :
XCMBCL_Open : permet d’ouvrir une connexion TCP avec le module d’ESD.
XCMBCL_Close : permet de fermer la connexion TCP.
XCMBCL_Communicate : permet de lire et écrire sur les Entrées/Sorties lorsque une
connexion est ouverte. Cette fonction reçoit entre autre, en paramètre le code d’une fonction
à exécuter parmi celle listée ci-dessous et l’adresse de l’entrée ou de la sortie sélectionnée.
5 autres fonctions sont propres à la librairie et sont appelées par les fonctions citées
précédemment :
XCMBCL_Send est appelée lorsque on envoie une requête au module d’ESD.
XCMBCL_Rec est utilisée pour recevoir la réponse à cette requête.
XCMBCL_Build_TCP_segment permet de construire la trame Modbus/TCP à envoyer
au module, selon le modèle décrit ci-dessous :
Bibliographie :