Aller au contenu

Premiers pas

Cette page construit pas à pas un diagramme d'état dans OMEdit : une lampe qui s'allume 2 s, s'éteint 1 s, et ainsi de suite.

1. Simuler un exemple

Ouvrir StateCharts.Examples.Sorting et le simuler. Le schéma est un diagramme d'état SysML : un point noir (pseudo-état initial), des états à compartiments (idle, heavy, light), un losange de choix, une cible (état final), et des flèches étiquetées déclencheur [garde] / effet.

Dans l'onglet Plotting, cocher idle.do, heavy.do, light.do et done.completed. La fenêtre Diagram (menu View → Windows) montre le schéma à l'instant choisi par le curseur de temps : l'état actif y est colorié en vert, et la flèche d'une transition passe au vert le temps de son effet.

Chronogramme de Sorting : poids de la pièce, arrivées, états idle, heavy, light et état final

2. Créer son propre modèle

  1. File → New → New Modelica Class, type model, nom Lamp.
  2. Depuis le navigateur de bibliothèques, glisser dans le schéma :
    • un StateCharts.Initial (le point noir) ;
    • deux StateCharts.State, renommés off et on ;
    • trois StateCharts.Transition, renommées init, switchOn et switchOff.

3. Relier états et transitions

Une transition est un petit bloc qu'on pose sur la flèche : son extrémité gauche (source) se relie à l'état de départ, son extrémité droite (target) à l'état d'arrivée ; la pointe de flèche montre le sens.

Un état a des ports sur ses quatre côtés (top, right, bottom, left) : une flèche peut partir ou arriver de n'importe quel côté, et plusieurs flèches peuvent partir d'un même état. OMEdit agrandit lui-même le tableau de ports du côté utilisé à chaque connexion.

  • Relier le point noir à init.source, puis init.target au côté gauche de off.
  • Relier le côté droit de off à switchOn.source, puis switchOn.target au côté gauche de on.
  • Pour revenir, retourner switchOff (clic droit → Flip Horizontal), relier le bas de on à switchOff.source et switchOff.target au bas de off.

4. Régler les transitions

Double-cliquer sur une transition :

  • Trigger : After, avec delay = 1 pour switchOn et delay = 2 pour switchOff. init garde Completion (pas de déclencheur).
  • Guard : rien à cocher ici.

L'étiquette se met à jour : after(1 s) / switchOn.

5. Utiliser les sorties booléennes

Chaque état a trois sorties à droite :

  • entry : impulsion de 0,1 s à chaque entrée dans l'état ;
  • do : vraie tant que l'état est actif ;
  • exit : impulsion de 0,1 s à chaque sortie.

Chaque transition a une sortie effect (en bas à droite) : impulsion de 0,1 s à chaque franchissement. La durée des impulsions se règle par pulseDuration.

Relier par exemple on.do à un Modelica.Blocks.Math.BooleanToReal : sa sortie vaut 1 quand la lampe est allumée. Simuler 10 s et tracer on.do, on.entry et switchOn.effect.

6. Une garde sur le modèle physique

Dans le groupe Guard, cocher useGuard et écrire la garde, par exemple sensor.T < 292.15 : la transition ne franchit que si la température est sous 19 °C. Voir l'exemple Thermostat dans Exemples, puis Les blocs pour tous les réglages.