Skip to main content

Machine à états simple

Une machine à états simple se compose d'états, de transitions qui contrôlent la transition d'état et d'actions ou de méthodes. Cela vous permet de concevoir et de mettre en œuvre le comportement de machines finies.

Créer une application avec un statechart

  1. Créer un nouveau projet avec le Projet standard modèle. Pour PLC_PRG dans, sélectionnez le Diagramme d'état UML langage d'implémentation.

    Le projet est créé.

  2. Dans l'arborescence des appareils, sélectionnez l'application et cliquez sur Ajouter un objet → POU dans le menu contextuel.

  3. Créer un bloc fonction nommé FB_Simple_Machine dans le Organigramme UML (SC) langage d'implémentation.

    _uml_img_sc_simple_device_tree.png
  4. Instancier le bloc fonction dans le programme PLC_PRG et mettre en œuvre l'appel de l'instance de bloc fonction.

    PROGRAM PLC_PRG
    VAR
        fb_Simple_Machine_A : FB_Simple_Machine;
    END_VAR
    fb_Simple_Machine_A();
  5. Enregistrez le projet sous SimpleMachine.project.

Concevoir la logique de flux comme un diagramme d'états

Exemple d'exigences sur la machine :

  • La machine est dans l'état Idle après la phase d'initialisation.

  • Lorsque des événements se produisent, la machine passe à l'état DoIt.

  • Lorsque toutes les actions et méthodes ont été traitées, l'événement d'achèvement est déclenché et la machine revient à l'état inactif.

  • La machine peut être commutée de l'état inactif à l'état Exit puis à l'état final.

Dans ce cas, la conception de la machine est la suivante.

_uml_img_sc_simple_machine_design.png

La conception ne contient pas encore de conditions de garde qui contrôlent la logique de flux. De plus, aucune action ou méthode n'est encore appelée, de sorte que la machine est toujours inopérante.

Dans l'arborescence des appareils, double-cliquez sur le bloc fonction FB_Simple_Machine pour ouvrir l'éditeur et créer le diagramme illustré ci-dessus.

Déclaration de variables pour les conditions de garde

PROGRAM FB_Simple_Machine
VAR
    bInitDone : BOOL := FALSE;
    bShutDown : BOOL := FALSE;
    bDoSomething : BOOL := FALSE;
    bDoFinished : BOOL := FALSE;
END_VAR

Les entrées utilisateur sont mappées sur des variables booléennes qui sont généralement définies en externe par un utilisateur via une interface utilisateur. Lorsque vous affectez la variable comme condition de garde dans le diagramme d'états-transitions, la logique de flux devient commutable. Les variables agissent comme des variables de contrôle.

_uml_img_sc_simple_machine_control.png

Ajout de méthodes et d'actions

Lorsque vous avez implémenté la logique de flux sous la forme d'un diagramme d'états, vous ajoutez des fonctionnalités aux états et aux transitions. Ce faisant, vous étendez les états avec ENTRY, DO, et EXIT actions ou méthodes. Vous pouvez également ajouter une action ou une méthode à une transition, qui est ensuite appelée une fois lors de la transition d'état.

Vous pouvez ajouter des actions à un état en sélectionnant l'un des _uml_icon_sc_action_entry.png, _uml_icon_sc_action_do.png, ou _uml_icon_sc_action_exit.png symboles. Vous pouvez cliquer sur le _uml_icon_sc_transition_action.png symbole pour ajouter des actions à une transition.

_uml_img_sc_simple_machine_function.png

Si vous affectez une action aux transitions, vous pouvez concevoir une logique similaire qui ne diffère que légèrement dans le comportement temporel.

_uml_img_sc_simple_machine_function_as_well.png

Dans le Dispositifs vue, vous pouvez tracer l'affectation des actions et des méthodes. Les actions et les méthodes ont été créées dans le ST langage d'implémentation.

_uml_img_sc_simple_machine_devices.png