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.
2. Créer son propre modèle¶
- File → New → New Modelica Class, type
model, nomLamp. - Depuis le navigateur de bibliothèques, glisser dans le schéma :
- un
StateCharts.Initial(le point noir) ; - deux
StateCharts.State, renommésoffeton; - trois
StateCharts.Transition, renomméesinit,switchOnetswitchOff.
- un
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, puisinit.targetau côté gauche deoff. - Relier le côté droit de
offàswitchOn.source, puisswitchOn.targetau côté gauche deon. - Pour revenir, retourner
switchOff(clic droit → Flip Horizontal), relier le bas deonàswitchOff.sourceetswitchOff.targetau bas deoff.
4. Régler les transitions¶
Double-cliquer sur une transition :
- Trigger :
After, avecdelay = 1pourswitchOnetdelay = 2pourswitchOff.initgardeCompletion(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.