Les systèmes à évènements discrets SED Norme UML 2.5 (sept 2013) V2.0
Signaux logiques Variable binaire : Variable qui ne peut prendre que deux et seulement deux valeurs. (par convention 0 et1) Variable logique : Variable binaire qui peut prendre deux états associés au caractère vrai ou faux d’un événement. Ex : interrupteur ouvert ou fermé, tige vérin rentrée ou sortie,… Signaux logiques : Quantité physique qui représente une variable logique dans l'un ou l'autre de ses deux états possibles. Ex : signal électrique continu compris entre 0 et 0,6V pour 0
Systèmes logiques Vecteurs logiques : représentation de variables binaires en matrice colonne. Ex : 𝐸 = 1 0 Systèmes logiques : Ensemble de composants qui effectuent des fonctions sur des signaux logiques dans le but de stocker, communiquer ou de transformer de l'information. Il existe 2 grandes catégories de systèmes logiques : - systèmes combinatoires - systèmes séquentiels (appelés aussi systèmes à évènements discrets)
Système Combinatoire Un système logique, dont l'évolution future de la sortie ne dépend que des entrées qui lui sont appliquées, est un système combinatoire. 2 propositions définissent les relations entrées sortie d’un circuit logique combinatoire : - A un état du vecteur binaire d’entrée 𝐸 correspond un seul état du vecteur de sortie 𝑆 . - A un état du vecteur binaire de sortie 𝑆 peut correspondre plusieurs états du vecteur d’entrée 𝐸 . Voir cours sur les portes logiques et l’algèbre de Boole
Exemple : Création du câblage de la mise en service d’une machine électrique Cahier des charges : Le pupitre comporte : un bouton poussoir monostable nommé « réarmement » ; un bouton bistable à verrouillage d’arrêt d’urgence ; un voyant vert de mise en service.
Exemple : Création du câblage de la mise en service d’une machine électrique Cahier des charges : Le pupitre comporte : un bouton poussoir monostable nommé « réarmement » ; un bouton bistable à verrouillage d’arrêt d’urgence ; un voyant vert de mise en service. A la mise sous tension de la machine (interrupteur général non géré par notre étude), tout est éteint (conditions initiales de repos). Sur impulsion du bouton « réarmement », le voyant vert s’allume. Si on relâche le bouton ou si l’on appuie à nouveau, rien n’est modifié. Pour stopper la mise en service de la machine, il faut appuyer sur le bouton d’arrêt d’urgence. Tant que le bouton d’arrêt d’urgence reste enfoncé (1 logique), le voyant ne s’allume pas, la machine ne peut pas se mettre en tension.
Questions 1 : recenser les entrées/ sorties du système logique. 2 : écrire sous forme de table de vérité le cahier des charges. Ce système logique est-il combinatoire ? 3 : introduire une nouvelle entrée binaire x1 équivalent à « système mis sous tension » et réécrire la table de vérité. Le nouveau système logique est-il combinatoire ? 4 : quelle est la procédure pour réactiver la mise en service après un arrêt d’urgence ? 5 : écrire la ou les équations logiques de V (voyant) 6 : introduire une nouvelle sortie X1 correspondant à « METTRE sous tension ». Dessiner le câblage électrique correspondant en utilisant un contacteur x1 lié logiquement au relais X1.
Fonctionnement d’un relais La bobine 1 est alimentée, la partie métallique (ou aimant) est déplacée ; Une partie mécanique déplace 3 et ferme le circuit électrique de puissance. Borniers puissance Borniers commande
Fonctionnement d’un relais Voir simulation automgen
Relais Relais électromécanique Contacteurs associés
Système séquentiel (ou SED) combinatoire ‚ ƒ Système séquentiel X r S E Un système logique, dont l'évolution future de la sortie dépend à la fois des entrées qui lui sont appliquées et des évolutions passées, est un système séquentiel. Deux propositions permettent de définir les relations entrée-sortie d'un circuit logique séquentiel : - A un état du vecteur d'entrée 𝐸 peut correspond un ou plusieurs états du vecteur de sortie 𝑆 , - A un état du vecteur de sortie 𝑆 peut correspondre plusieurs états du vecteur d'entrée 𝐸 .
SED en SysML
Diagrammes de comportement en SysML Diagrammes des cas d’utilisation (uc): diagramme qui fixe la frontière d’étude du système, le (les) acteur(s) et le (les) service(s) rendu(s) par le système pour le (les) acteur(s). Ces diagrammes peuvent contenir des cas d’utilisations associés aux différents services attendus à différents moments de l’usage du système. Ces diagrammes peuvent aussi préciser les différentes phases de vie du système. Il n’y a ni évènements et ni chronologie dans ces diagrammes.
Capsuleuse de bocaux Voyant mise sous énergie Interrupteur général Pupitre
Diagrammes de comportement en SysML Exemple indexa
Boutons monostables avec voyant Pupitre INDEXA Boutons monostables avec voyant Voyant Bouton bistable coup de poing Boutons bistables Potentiomètre Boutons monostables
Diagrammes de comportement en SysML Diagrammes de séquences (sd): diagramme décrivant un scénario possible d’un cas d’utilisation. Ce scénario peut inclure aussi des gestions de problèmes ou de mise en route. On se limite aux messages et ordres entre l’acteur et le système (interactions) décrit séquentiellement.
Diagrammes de séquence Initialisation INDEXA Acteur (voir uc) Bloc (voir bdd) Ligne de vie Bande d’activation temps
Diagrammes de séquence (sd) Message aller synchrone Elément de communication unidirectionnel entre lignes de vie. La réception d’un message provoque un évènement chez le récepteur. L’émetteur est en attente d’une réponse. Message retour Message résultat direct d’un message aller synchrone. Message aller asynchrone Similaire au message aller synchrone mais l’émetteur n’attend pas de réponse du récepteur. Message réflexif Message bouclant sur une même ligne vie pour représenter un fonctionnement interne. 1 : message synchrone A B A B 2 : message asynchrone A B
Diagrammes de séquence (sd) On peut représenter des tests à l’aide de « fragments combinés ». Fragments combinés boucle Le contenu du cadre fonctionne en boucle jusqu’à la condition de garde. Fragments combinés optionnels Le contenu du cadre s’exécute si condition de garde vraie. Fragments combinés alternatifs Seul le fragment dont la condition est vraie s’exécutera. Le mot clé « else » peut être utilisé. loop [Condition de garde] opt [Condition de garde] alt [Condition de garde 1] [Condition de garde 2] On peut représenter des appels à d’autres diagrammes de séquence avec le cadre référence. Cadre référence Ce cadre représente de manière compacte un autre diagramme de séquence. ref Nom du diagramme appelé Remarque : il existe d’autres outils pour ces diagrammes. Ils seront décrits à l’occasion de TD.
Diagrammes de séquence (sd) INDEXA Décrit dans le diagramme de séquence initialisation. Décrire par le texte le diagramme de séquence précédent. A quoi correspond-il ?
Diagrammes de séquence (sd) Ecrire le diagramme de séquence de la phase d’initialisation. En suivant le texte suivant : Si pas de flacon en entrée et appuie sur le bouton Initialisation, alors rotation d’un tour du maneton (rotation d’un 1/4 de tour du plateau), Puis allumage voyant Machine prête.
Diagramme de séquence Ecrire le diagramme de séquence du domoticc
Synthèse diagramme de séquence Le diagramme de séquence permet de représenter les interactions (messages) entre le ou les acteurs et le système. On ne cherche pas à décrire le fonctionnement interne du système. Pour décrire finement le comportement interne séquentiel du système on peut utiliser : Les diagrammes d’activités Les diagrammes d’états
Définitions SysML Bloc : classification qui représente un ensemble d’objets partageant les mêmes spécificités.(classe en informatique). Il s’agit de la brique de base structurelle en SysML. Instance de bloc : élément de type définit à partir d’un bloc avec un comportement et un état. État : situation durant la vie du bloc pendant laquelle : Il satisfait une certaine condition ; Il exécute une certaine activité (et non une action) ; Il attend un certain évènement. Transition : décrit la réaction d’un bloc lorsqu'un évènement se produit. En général, une transition possède un évènement déclencheur, une condition de garde et parfois un effet. Condition (de garde) (condition guard) : expression booléenne qui est vraie lorsque l’évènement associé apparait (occurrence de l’évènement). Elle se note entre crochets. Evénement : Phénomène considéré comme localisé et instantané (discret), c’est-à-dire survenant en un point de l’espace et à un instant bien déterminé (appui sur un bouton). Occurrence : Apparition d’un évènement. Action : représente le comportement élémentaire. Elle ne peut pas être interrompue. (ex : affectation de variable, incrémentation compteur, envoi signal…). Elle est présente dans les diagrammes d’activités. Activité : représente le comportement complexe d’un bloc . Elle est décrite dans un diagramme d’activité qui contient les actions et leur séquencement. Elle modélise aussi le lien entre les flux (signaux, matière, énergie) et les actions. De plus, il est possible de renseigner sur les blocs réalisant les différentes actions. Elle peut être interrompue.
Définitions complémentaires Evénement : Phénomène considéré comme localisé et instantané (discret), c’est-à-dire survenant en un point de l’espace et à un instant bien déterminé (ex : appui sur un bouton). Action : représente un comportement élémentaire du système. Elle ne peut pas être interrompue. (ex : affectation de variable, incrémentation compteur, « envoi signal »…). Elles apparaissent dans les diagrammes d’activités et dans certains cas dans les diagrammes d’états. Activité : séquencement d’actions pouvant être décrit dans un diagramme d’activité. Elle peut être interrompue. Elles apparaissent dans les diagrammes d’états. État : situation durant la vie d’un bloc pendant laquelle : il satisfait une certaine condition ; il exécute une certaine activité ; il attend un certain évènement.
Définitions complémentaires L’apparition de l’évènement a est appelé front montant. (si booléen passage de 0 à 1). La disparition de l’évènement a est appelé front descendant. (si booléen passage de 1 à 0) a t Front montant de a noté a Front descendant de a noté a L’apparition d’un évènement (occurrence) est appelé déclencheur (trigger). Qualités d'un système de décision Attentif : réceptif à tout événement externe quel que soit l'instant où il se produit. Efficace : capable de traiter les conséquences de tout événement externe auquel il est réceptif. Déterminé : à circonstances identiques, comportement identique. Conséquence : Tous les déclencheurs sont asynchrones (distincts dans le temps). Le booléen (a . b) est donc toujours faux (nul) !
Diagramme d’états Diagramme d’états : C’est un graphe, où les nœuds (sommets) représentent les états du bloc et les arcs orientés les transitions : c’est un automate à nombre d’états finis (ou machine à états finis) Il permet de modéliser le comportement dynamique (« cycle de vie ») d’un bloc (ou instance de bloc) selon des scénarii définis au préalable. Il contient : un état initial un ensemble de déclencheurs un ensemble d’états un ensemble d’activités et/ou actions Des règles de comportement permettent de modéliser l’évolution d’état en état à partir d’occurrence (apparition) d’évènements.
Bloc ayant plusieurs états intéressants à décrire : Diagramme d’états Bloc ayant plusieurs états intéressants à décrire : état1 état 2 évènement 1 évènement 2 évènements : fronts montants activités activité 1 activité 2 En fonction des apparitions des évènements (occurrence) et de l’unique état actif du bloc, le diagramme d’états évolue : l’état courant devient inactif et un autre devient actif pouvant ainsi exécuter une activité. Remarque 1 : la description des activités se fait dans un diagramme d’activité (sorte d’organigramme de programmation). Remarque 2 : on verra qu’il est possible de quitter et d’activer le même état sur le même évènement.
Diagramme d’états Nom du diagramme : stm (state machine) : machine à nombre fini d’états ou automate fini. Pseudo état initial : l’automate fini démarre L’état2 est « désactivable » si à l’instant où l’évènement2 apparaît, la condition de garde [condition1] est vraie. Etat : Tant qu’il est actif, l’activité1 est exécutée. Transition Trigger : lorsque celui-ci apparaît alors l’état 1 est désactivé et l’état 2 est activé. Transition automatique : l’état2 est désactivé dès que l’activité2 est terminée. Lorsque l’état2 est activé, l’activité2 est exécutée une fois. Exemple générique de base Pseudo état final : l’automate fini s’arrête.
Evènements Un évènement est par nature instantané et est traité immédiatement. Il existe plusieurs types d’évènements : l’évènement de signal (signal event) : un signal asynchrone est arrivé (ex : appui sur un bouton); l’évènement de changement (change event) : une valeur interne au modèle a changé de telle sorte que la transition est franchie (« when N=10 ») (ex : compteur atteint) ; l’évènement temporel (time event) : Relatif : after(90s) passe à vrai 90s après l’entrée dans l’état courant. Absolu : at(11:00) passe à vrai (toutes les 11h) sur une base de temps absolue. when, after, at sont des mots clés.
Etats Un état est représenté par un rectangle aux coins arrondis. Un état possède un titre informant du nom de l’état du bloc (ex : Système sous tension). Ce titre est unique dans le diagramme. Il n’est pas possible d’incorporer des états prélevés de d’autres diagrammes sauf états sous-machine. Un état sans titre est un état anonyme. Chaque état possède 3 lignes optionnelles d’exécution : entry / activité1 => l’activité1 est exécutée en priorité au moment où l’état s’active; do / activité2 => l’activité2 s’exécute tant que l’état est actif après l’activité1 ; exit / activité3 => l’activité3 s’exécute lorsque l’état est désactivé en interrompant l’activité2 si elle est en cours d’exécution. Exceptionnellement, les activités associées à entry et exit ne peuvent pas être interrompues comme des actions.
Pseudo-Etats Un pseudo-état est un état anonyme qui ne contient aucune ligne d’exécution d’activité et qui possède un comportement spécifique. Pseudo-état initial Il s’agit d’un état activé au lancement de la machine à état. Le diagramme doit en posséder au moins un. Il n’a donc aucune transition entrante. Pseudo-état final Lorsque cet état est activé l’automate fini s’arrête. Il est optionnel. Il n’a donc aucune transition sortante.
évènement [condition de garde] / activité Transitions Transition : arc orienté qui relie deux états (source vers cible). La transition est franchie lorsque les conditions de franchissement associées sont vraies : Chaque terme est optionnel. La condition de garde est un booléen. Si l’événement apparaît (déclencheur) et si la condition de garde est vraie à ce moment alors la transition est franchissable : si l’état1 était actif alors il se désactive et l’état2 s’active. L’activité, si elle existe, est exécutée avant celles situées dans l’état2.(Je déconseille l’utilisation de cette fonctionnalité - machine de Mealy) Important : la condition de garde n’est prise en compte qu’au moment de l’occurrence de l’évènement. Si aucun évènement est écrit alors il est toujours vrai. Si aucune condition de garde est écrite alors elle est toujours vraie. Une transition qui ne contient aucune condition de franchissement est dite automatique. état2 état1 évènement [condition de garde] / activité
Transitions Transition réflexive : arc orienté qui relie le même état (source = cible). Cela permet d’exécuter à nouveau les activités associées à exit et à entry de nouveau. Si l’état9 est actif, il est sensé exécuter l’activité2 sauf si celle-ci c’est terminée d’elle-même. Si évènement1 apparait, l’état9 reste actif, mais l’activité3 est exécutée puis lorsqu’elle est terminée, l’activité1 se réalise et enfin de nouveau l’activité2. Rappel : les activités associées à entry et exit ne peuvent pas être interrompues à l’instar des actions.
Transitions internes Il est possible de placer des activités dans un état associées à un évènement et éventuellement une garde. Ces activités sont prioritaires sur l’activité associée à un do/ Lorsque l’état1 est actif, l’activité1 est exécutée. Dès que l’évènement4 apparaît avec la condition de garde test1 vraie, alors l’activité 1 est interrompue au détriment de l’activité3.(?)
Evénements référencés Il est possible de créer une liste de déclencheurs (triggers) de différents évènements pouvant apparaître lorsqu’un état est actif mais utiles dans une transition ou un autre état. Pour mettre en file d’attente ces déclencheurs il faut utiliser l’action mot clé /defer. A l’activation de la machine d’états, l’état2 est activé (via le pseudo-état initial et la transition automatique) ; Dès que l’occurrence de l’événement1 apparaît, on désactive l’état2 et on active l’état3. Les états 2 et 3 contiennent une action /defer associée à l’événement3 : si cet événement3 apparaît pendant que soit l’état2 soit l’état3 est actif, alors il est référencé (trigger pool) et en attente de consommation ! Par exemple si événement2 apparaît, l’état3 se désactive et l’état4 s’active, mais comme événement3 était référencé, alors on désactive l’état4 et on atteint le pseudo-état final. Si l’état4 contient des actions/activités associées à entry et/ou exit, elles sont exécutées (mais pas l’activité associée à do). Si événement3/defer n’était pas dans état3, alors l’événement3 serait perdu au cas ou il apparaît pendant l’activation de état2.
Exemple Ecrire le diagramme d’états de la mise sous tension du domoticc.
Etats composites Etat composite : état contenant un automate fini détaillant son fonctionnement séquentiel. L’activation de l’état composite entraîne l’activation du pseudo-état initial. (rond noir) La désactivation de l’état composite (ici évènement stop) entraîne la désactivation de l’état actif (ici état4 ou état5): l’état composite est donc hiérarchiquement supérieur à l’automate fini qu’il contient. Chaque sous-état peut aussi être un état composite et ainsi de suite… L’automate fini contenu est appelée région. Un état composite peut contenir des activités associées à entry, do et exit. entry et do sont traités avant l’activation du pseudo-état initial de la région, exit est traité au moment de la désactivation de l’état composite. Je déconseille d’utiliser ces fonctionnalités. Région
Sous machine à états Etat sous machine : état instance d’un automate fini (diagramme d’états). Le diagramme d’états d’un état sous machine est dessiné dans un autre diagramme d’état : une icône représentant 2 états + une transition permet de le signaler. Ces diagrammes sont équivalents à l’exemple de la page précédente.
Nom de l’état sous machine : diagramme2 Sous machine à états Etat sous machine 2 Il est possible d’utiliser la même machine à états dans d’autres états sous-machine : dans ce cas le nom devient Nom de l’état sous machine : diagramme2 On peut donc voir le diagramme2 comme « un sous programme ».
Transitions automatiques conseillées ici Sous machine à états Pseudo-états d’entrée et de sortie Lorsque plusieurs points d’entrée et/ou sortie sont utiles dans une sous machine, il faut placer des pseudo-états correspondants : Transitions automatiques conseillées ici Points de connexion C’est le nom (entrée1) du point de référence qui fait le lien avec le pseudo-état point d’entrée de la sous machine. Pseudo-état d’entrée Pseudo-état de sortie
Etats composites Etat orthogonal : état contenant plusieurs automates finis (régions) fonctionnant en parallèle. Région 1 Des droites en traits pointillés dans l’état créent des régions. Il est déconseillé de relier des états de deux régions distinctes (d’un même état composite) Région 2 Magicdraw impose des régions horizontales, mais la norme autorise aussi une écriture verticale.
Etats composites région1 région2 Transition automatique Mot clé in 3 cas indépendants possibles : Si stop devient vrai, l’état composite2 se désactive ; tous les états le composant se désactivent. Si des activités sont en exit, elles sont exécutées dans l’ordre inverse hiérarchique c’est-à-dire en premier celles des états des régions puis celle de l’état composite, puis l’état2 est activé. Si l’état8 devient actif, [in état8] devient vrai et donc l’état composite2 se désactive (et les activités exit des état8 et de l’état courant de la région 1 s’exécutent) puis l’état9 s’active. Si les activités de l’état7 et de l’état8 sont terminées, l’état composite2 se désactive et l’état composite:diagramme2 s’active (transition automatique).
Etats composites Pseudo états : divergence de flux (fork) et convergence (join) Permet de représenter graphiquement le parallélisme entre deux régions. Fork node Join node Dès l’apparition de événement2, les état4 et état6 sont désactivés. Les deux transitions automatiques sont franchies de manière synchrone.
Pseudo-Etats de choix Pseudo-état de choix Dès que l’événement1 apparaît, l’état3 est désactivé. Puis les autres termes des transitions sortantes du pseudo-état choix sont évalués. SysML/UML impose un choix exclusif entre les transitions pour obtenir un unique état actif par automate fini (ou par niveau hiérarchique), mais un automate fini peut contenir d’autres automates finis en parallèles (états orthogonaux). Il est donc conseillé de placer une condition de garde [else] pour ne pas bloquer l’évolution de l’automate fini. (on ne doit pas rester bloqué dans le pseudo-état de choix (losange)).
Pseudo-Etat de jonction Pseudo-état de jonction État7 actif si : état7=stop.(événement1.état3+événement2.état6) Stop doit être vrai au moment où état3 ou état6 se désactive.
Pseudo-Etats historiques Pseudo-état historique (shallow history) Cet état est associé à un état composite. Il permet de mémoriser l’état qui était actif au même niveau hiérarchique au moment où l’état composite a été désactivé. Lorsque ce pseudo-état devient actif, on reprend donc là où on en était dans l’état composite. Pseudo-état historique profond (deep history) Similaire au précédent, mais réactive les états qui étaient actifs quelque soit leur niveau hiérarchique. H H* Une région ne peut avoir qu’un seul pseudo-état initial et/ou historique à la fois. événement4 Lorsque stop devient vrai, l’état composite2 se désactive et l’automate fini mémorise l’état courant (par exemple l’état6). Après 5min d’activation de l’état2, l’état composite2 est à nouveau activé, mais par le biais du pseudo-état historique : c’est donc l’état6 (mémorisé) qui s’active.
Conseils diagrammes d’états D’autres outils en stm existent mais pas adaptés à SysML, Bien vérifier qu’un unique état est actif à la fois par machine d’état, Il faut éviter de placer des activités dans la ligne exit, Il faut éviter les transitions automatiques sauf pour certains pseudo états (join, fork et initial pseudostates), Il faut éviter l’utilisation des pseudo-états de choix et de jonction, Il faut éviter de placer des activités dans les étiquettes de transition (machine de Mealy), Normalement il n’y a jamais un très grand nombre d’états par automate, ne pas hésiter à utiliser les états composites, Les états des machines de production au niveau hiérarchique supérieur se limite à des états du type : système en attente, système en production, système en phase de réglage etc… Les diagrammes d’activité peuvent être utilisés pour détailler les séquences d’actions élémentaires… (voir cours d’informatique)
Les diagrammes d’activités