Skip to main content

Macchina a stati semplici

Una semplice macchina a stati è costituita da stati, transizioni che controllano la transizione di stato e azioni o metodi. Ciò consente di progettare e implementare il comportamento di macchine finite.

Creazione di un'applicazione con un diagramma di stato

  1. Crea un nuovo progetto con il Progetto standard modello. Per PLC_PRG in, seleziona il Carta di stato UML linguaggio di attuazione.

    Il progetto è creato.

  2. Nella struttura del dispositivo, selezionare l'applicazione e fare clic Aggiungi oggetto → POU nel menu contestuale.

  3. Crea un blocco funzione denominato FB_Simple_Machine nel Carta di stato UML (SC) linguaggio di attuazione.

    _uml_img_sc_simple_device_tree.png
  4. Istanziare il blocco funzione nel programma PLC_PRG e implementare il richiamo dell'istanza del blocco funzione.

    PROGRAM PLC_PRG
    VAR
        fb_Simple_Machine_A : FB_Simple_Machine;
    END_VAR
    fb_Simple_Machine_A();
  5. Salva il progetto come SimpleMachine.project.

Progettare la logica di flusso come diagramma di stato

Esempio di requisiti sulla macchina:

  • La macchina è nello stato Idle dopo la fase di inizializzazione.

  • Quando si verificano eventi, la macchina passa allo stato DoIt.

  • Quando tutte le azioni e i metodi sono stati elaborati, viene attivato l'evento di completamento e la macchina torna allo stato inattivo.

  • La macchina può essere commutata dallo stato di riposo allo stato Exit e poi allo stato finale.

In questo caso, il design della macchina è il seguente.

_uml_img_sc_simple_machine_design.png

Il progetto non contiene ancora alcuna condizione di guardia che controlli la logica del flusso. Inoltre, non vengono ancora richiamate azioni o metodi, quindi la macchina non è ancora operativa.

Nella struttura dei dispositivi, fare doppio clic sul blocco funzione FB_Simple_Machine per aprire l'editor e creare il diagramma sopra illustrato.

Dichiarazione di variabili per condizioni di guardia

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

L'input dell'utente è mappato su variabili booleane che di solito sono impostate esternamente da un utente tramite un'interfaccia utente. Quando si assegna la variabile come condizione di guardia nel diagramma di stato, la logica di flusso diventa commutabile. Le variabili agiscono come variabili di controllo.

_uml_img_sc_simple_machine_control.png

Aggiunta di metodi e azioni

Quando hai implementato la logica di flusso come diagramma di stato, aggiungi funzionalità agli stati e alle transizioni. In tal modo, estendi gli stati con ENTRY, DO, e EXIT azioni o metodi. Puoi anche aggiungere un'azione o un metodo a una transizione, che viene quindi chiamata una volta alla transizione di stato.

È possibile aggiungere azioni a uno stato selezionando una delle opzioni _uml_icon_sc_action_entry.png, _uml_icon_sc_action_do.png, o _uml_icon_sc_action_exit.png simboli. È possibile fare clic su _uml_icon_sc_transition_action.png simbolo per aggiungere azioni a una transizione.

_uml_img_sc_simple_machine_function.png

Se assegni un'azione alle transizioni, puoi progettare una logica simile che differisce solo leggermente nel comportamento temporale.

_uml_img_sc_simple_machine_function_as_well.png

Nel Dispositivi vista, è possibile tracciare l'assegnazione di azioni e metodi. Le azioni e i metodi sono stati creati nel ST linguaggio di attuazione.

_uml_img_sc_simple_machine_devices.png