Correspondances SysML¶
Cette page fait la correspondance entre les notions des diagrammes d'état SysML et les blocs de StateCharts.
Correspondances¶
| SysML | StateCharts |
|---|---|
| Diagramme stm (cadre) | modèle qui hérite de Chart, avec ses entrées / sorties |
| Pseudo-état initial ● | Initial relié au premier état par une Transition |
| État | State |
entry / comportement |
sortie booléenne entry (impulsion) |
do / activité |
sortie booléenne do (vraie tant que l'état est actif) |
exit / comportement |
sortie booléenne exit (impulsion) |
Transition déclencheur [garde] / effet |
Transition, sortie booléenne effect |
| Événement signal | trigger = Signal, entrée signal (front montant) |
Événement temporel after(t) |
trigger = After, delay = t |
Événement de changement when(c) |
trigger = When, change = c |
| Transition de complétion | trigger = Completion |
| Pseudo-état de choix ◇ | Choice |
| État final ◉ | FinalState |
| — | paramètre priority de la transition (ordre entre transitions franchissables au même instant) |
Utiliser les sorties booléennes¶
Les comportements et les effets ne sont pas du code exécuté par le diagramme : ce sont des signaux booléens que le reste du modèle utilise.
Piloter un actionneur : relier do (ou effect) à l'entrée booléenne d'un bloc — BooleanToReal, un interrupteur, une vanne…
Compter, mémoriser : une clause when sur une impulsion, dans le modèle qui contient le diagramme :
Integer cycles(start = 0, fixed = true);
algorithm
when red.entry then // entry / cycles++
cycles := cycles + 1;
end when;
when goGreen.effect then // / goGreen : effet de la transition
...
end when;
Une valeur par état : un bloc Actions.SetInteger ou SetReal relié aux sorties do.
Particularités de l'exécution¶
- Temps continu. Le diagramme n'est pas exécuté à pas fixe : une transition franchit à l'instant exact de son événement, que le solveur localise (franchissement de seuil d'une température, fin d'un
after, front d'un signal). - Enchaînement au même instant. Si l'état atteint a une transition sortante déjà franchissable (complétion avec garde vraie), elle franchit aussi, au même instant : c'est ainsi qu'on traverse un
Choice. Exemple :Thermostatdémarre à 15 °C, entre dansoffpuis passe aussitôt danson, à t = 0. - Complétion et
aftergardés. En SysML strict, l'événement de complétion ouaftern'est évalué qu'une fois ; ici, la transition franchit dès que la garde devient vraie ensuite. Pour un comportement d'événement strict, utiliserWhen. - Impulsions de durée finie.
entry,exiteteffectdurentpulseDuration(0,1 s par défaut) pour être visibles sur les courbes ;pulseDuration = 0les rend instantanées. - Non encore disponibles : voir Limites.