Aller au contenu

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 : Thermostat démarre à 15 °C, entre dans off puis passe aussitôt dans on, à t = 0.
  • Complétion et after gardés. En SysML strict, l'événement de complétion ou after n'est évalué qu'une fois ; ici, la transition franchit dès que la garde devient vraie ensuite. Pour un comportement d'événement strict, utiliser When.
  • Impulsions de durée finie. entry, exit et effect durent pulseDuration (0,1 s par défaut) pour être visibles sur les courbes ; pulseDuration = 0 les rend instantanées.
  • Non encore disponibles : voir Limites.