Grafici SFC
Introduzione
A partire dagli anni '60 nel campo dei controlli si sviluppa la teoria sugli automi a stati finiti che permette una definizione e un'analisi rigorosa dei problemi di controllo sequenziale.
L'utilizzo della teoria è alquanto difficile e per tale motivo nel 1975 nasce il Grafcert, uno strumento grafico per la modellazione di controlli sequenziali.
Nel successivo decennio Grafcert viene standardizzato dall'IEC (Comitato Elettrotecnico Internazionale) con il nome di SFC (Sequential Functional Chart) e a partire dagli anni '90 viene inserito nello standard IEC 61131-3 come linguaggio di programmazione dei PLC.
Alla fine degli anni '90 il W3C (World Wide Web Consortium) definisce lo standard UML (Unified Modeling Language) che formalizza il concetto di diagramma degli stati. L'UML non è altro che una generalizzazione del Sequential Functional Chart (SFC).
Il linguaggio SFC
Un diagramma SFC è un metodo grafico per rappresentare un sistema di controllo sequenziale usando una sequenza stati e transizioni. Ogni stato è caratterizzato da svolgere un comando o un'azione.
Uno stato che può essere avviato (in esecuzione) o interrotto (inattivo).
Il controllo sequenziale passa da uno stato all'altro attraverso una transizione condizionale (che può essere vera o falsa) solo quando questa è vera.
Quando una transizione viene attivata lo stato precedente viene interrotto e viene avviato lo stato successivo
Gli elementi dell'SFC sono lo stato (in inglese step), le transizioni (transition), i salti (jump), la scelta o divergenza (alternative branch) e il parallelismo (parallel branch).
Esistono due tipi di stato: lo stato iniziale e gli stati (normali).
Nel diagramma SFC lo stato iniziale è contrassegnato da doppie linee lungo i suoi margini. Una sequenza inizia sempre dallo stato iniziale. Può esistere un solo stato iniziale per ogni sezione di controllo sequenziale.
Uno stato diventa avviato quando la transizione precedente è stata soddisfatta e diventa interrotto quando la transizione successiva è stata soddisfatta.
La transizione è associata ad una condizione che è espressa sotto forma di una funzione logica, ovvero tramite una espressione booleana che può essere vera o falsa. Il valore di una condizione cambia in seguito ad un evento. Quando una condizione diventa vera:
- Lo stato (gli stati se sono in parallelo) precedente è disattivato
- Lo stato successivo (gli stati successivi se in parallelo) è attivato
- La transizione tra i due stati non è più considerata
- Si passa a considerare la transizione (o le transizioni se sono in parallelo) successiva al nuovo stato
Il salto consente al programma di continuare da un'altra posizione. Può essere utilizzato in due modi: salto di sequenza (sequence jump) o loop di sequenza (sequenza loop). Una restrizione importante per il blocco di salto è che non sono consentiti salti all'interno o all'esterno di un'area di sequenza parallela. L'utilizzo dei salti in un controllo sequenziale o in un programma è deprecato.
Una scelta o divergenza consente la programmazione condizionale dei rami nel flusso della struttura SFC. Si può attivare un solo ramo alla volta (divergenza mutuamente esclusiva). Tutti i rami alternativi di una scelta devono essere riuniti in un unico ramo usando la convergenza. In altre parole la convergenza è la terminazione di una divergenza.
Il parallelismo consente di suddividere l'elaborazione in due o più sequenze. È consentita una transizione comune direttamente sopra i rami posti in parallelo. Le sequenze in parallelo sono elaborate indipendentemente l'una dall'altra.
La struttura di collegamento duale al parallelismo è la sincronizzazione. Essa è caratterizzata da essere costituita da una transizione con più stati a monte. La transizione immediatamente successiva ad una sincronizzazione viene
abilitata solo quando tutti gli stati a monte vengono attivati.
Fonti:
http://www.diag.uniroma1.it/deluca/automation/Automazione_SequentialFunctionalChart_Parte1.pdf
https://www.sciencedirect.com/topics/computer-science/sequential-function-chart