Qualificatori per le azioni in SFC
I qualificatori si assegnano alle azioni IEC associate a un passo. Il qualificatore definisce il comportamento di esecuzione della rispettiva azione: in che modo, quando e per quanto tempo viene eseguita.
I qualificatori vengono elaborati dal blocco funzione SFCActionControl nella libreria IecSfc.library. La libreria viene integrata automaticamente nel progetto non appena CODESYS SFC è stato installato.
Per ulteriori informazioni, vedere: Programmazione in SFC
| Non memorizzato | L'azione è attiva finché è attivo il passo. |
| Reset prioritario | L'azione eseguita con |
| Impostato (memorizzato) | L'azione viene eseguita non appena il passo diventa attivo. L'esecuzione dell'azione continua anche dopo la disattivazione del passo, finché non viene resettata. |
| Limitato nel tempo | L'azione viene eseguita non appena il passo diventa attivo. L'azione viene eseguita finché il passo non viene disattivato o finché non è trascorso l'intervallo di tempo specificato. |
| Ritardato nel tempo | L'azione viene eseguita dopo che il passo è diventato attivo, se il tempo di ritardo specificato è trascorso e il passo è ancora attivo. L'azione viene eseguita finché il passo non viene disattivato. |
| Impulso | L'azione viene eseguita esattamente due volte: una volta quando il passo diventa attivo e la seconda volta quando il passo viene disattivato. |
| Memorizzato e ritardato nel tempo | L'esecuzione dell'azione inizia solo quando, dopo l'attivazione del passo, è trascorso il tempo di ritardo specificato. L'azione viene eseguita finché non viene resettata. |
| Ritardato e memorizzato | L'esecuzione dell'azione inizia solo quando, dopo l'attivazione del passo, è trascorso il tempo di ritardo specificato e il passo è ancora attivo. L'azione viene eseguita finché non viene resettata. |
| Memorizzato e limitato nel tempo | L'azione viene eseguita non appena il passo diventa attivo. Viene eseguita finché non è trascorso il tempo specificato o finché non viene resettata. |
Nota
Un'azione con il qualificatore S, SD, DS o SL continua a essere eseguita dopo che il passo è diventato inattivo.
Per i qualificatori S, SD e DS, l'azione termina solo con una chiamata di reset della stessa azione con il qualificatore R. Questo tipo di chiamata è necessario affinché l'azione termini.
Per il qualificatore SL, l'azione termina automaticamente non appena è trascorso il tempo specificato oppure anticipatamente con una chiamata con R.
I tempi per i qualificatori L, D, SD, DS e SL devono essere specificati nel formato di una costante TIME.
Per ulteriori informazioni sull'applicazione dei qualificatori, vedere Esempi di qualificatori.
Suggerimento
Quando un'azione IEC viene disattivata, viene eseguita ancora una volta. Ciò significa che CODESYS esegue questo tipo di azione almeno due volte. Ciò vale anche per le azioni con il qualificatore P.
Esempi di qualificatori
Questa sezione contiene esempi di utilizzo dei qualificatori.
Esempio: ventilazione dei fumi in un impianto di ventilazione
Il qualificatore di un'azione determina quando l'azione inizia e per quanto tempo viene eseguita. L'esempio mostra lo stesso processo in tre implementazioni del diagramma funzionale sequenziale (SFC). Le implementazioni si differenziano per l'utilizzo dei qualificatori.
Situazione iniziale: un impianto di ventilazione utilizza un sensore di fumo per monitorare l'aria. Quando il sensore rileva del fumo, il controllore attiva immediatamente la ventilazione dei fumi.
POU con un qualificatore N

Il POU contiene la sequenza più semplice. Quando il sensore di fumo rileva del fumo, il passo con l'azione Ventilate diventa attivo. Il passo richiama l'azione con il qualificatore N. La ventilazione dei fumi funziona finché il sensore rileva del fumo.
Creare un POU in SFC e modificarne il nome in
Simple_N. Per ulteriori informazioni, vedere: Creazione di un POU in SFCNella parte dichiarazione del POU creato, creare le seguenti variabili booleane:
PROGRAM Simple_N VAR bSmokeDetected: BOOL; bVent: BOOL; END_VARModificare la transizione del passo iniziale: fare clic sulla transizione e utilizzare l'Assistente di input
per assegnare la variabile bSmokeDetected.Dopo la transizione del passo iniziale, aggiungere un passo denominato
SmokeInSystem.Modificare la transizione del passo
SmokeInSystem: fare clic sulla transizione e utilizzare l'Assistente di input
per assegnare la variabile bSmokeDetected. AggiungereNOT:NOT bSmokeDetectedNell'albero dei dispositivi, fare clic con il pulsante destro del mouse sul POU appena creato
Simple_Ne selezionare il comando Aggiungi oggetto → Azione.... Assegnare il nomeVentilatee impostare l'opzione Testo strutturato (ST) per il linguaggio di implementazione.Inserirvi il codice seguente:
// The alternation simulates the running ventilator. bvent := NOT bvent;
Fare clic sul passo
SmokeInSysteme utilizzare il comando SFC → Inserire un'associazione di azioni per aggiungere un'associazione di azioni.All'azione associata viene ora assegnato il qualificatore N.
Fare clic nel campo destro dell'associazione e utilizzare l'Assistente di input
per selezionare l'azione Ventilate.È stata configurata una semplice ventilazione dei fumi.
POU con due qualificatori N

Problema: nell'impianto rimane una quantità residua di fumo. La ventilazione dei fumi deve quindi funzionare 5 secondi più a lungo.
Il POU gestisce il tempo di post-funzionamento mediante un passo aggiuntivo. Quando il sensore di fumo rileva del fumo, il passo con l'azione Ventilate diventa attivo. Il passo richiama l'azione con il qualificatore N.
Quando il sensore non rileva più fumo, il controllore passa al passo NoSmokeMore. La ventilazione dei fumi continua a funzionare. La transizione che segue il passo valuta la variabile implicita del passo con la condizione NoSmokeMore.t > t#5s. Questa variabile contiene il tempo per cui il passo è stato attivo.
Dopo 5 secondi la condizione è soddisfatta e il passo diventa inattivo. In questo modo termina anche l'esecuzione dell'azione Ventilate.
Creare un POU in SFC e modificarne il nome in
Advanced_N_N. Per ulteriori informazioni, vedere: Creazione di un POU in SFCNella parte dichiarazione del POU creato, creare le seguenti variabili booleane:
PROGRAM Advanced_N_N VAR bSmokeDetected: BOOL; bVent: BOOL; END_VARModificare la transizione del passo iniziale: fare clic sulla transizione e utilizzare l'Assistente di input
per assegnare la variabile bSmokeDetected.Dopo la transizione del passo iniziale, aggiungere un passo denominato
SmokeInSystem.Modificare la transizione del passo
SmokeInSystem: fare clic sulla transizione e assegnare la variabilebSmokeDetectedtramite l'Assistente di input
. Aggiungere NOT:NOT bSmokeDetectedNell'albero dei dispositivi, fare clic con il pulsante destro del mouse sul POU appena creato
Advanced_N_Ne selezionare il comando Aggiungi oggetto → Azione.... Assegnare il nomeVentilatee impostare l'opzione Testo strutturato (ST) per il linguaggio di implementazione.Inserirvi il codice seguente:
bvent := NOT bvent;
Fare clic sul passo
SmokeInSysteme inserire l'associazione di azioni tramite il menu SFC → Inserire un'associazione di azioni.All'azione associata viene ora assegnato il qualificatore N.
Fare clic nel campo destro dell'associazione e utilizzare l'Assistente di input
per selezionare l'azione Ventilate.Aggiungere un passo denominato
NoSmokeMoredopo la transizione del passoSmokeInSysteme aggiungere una transizione con la condizioneNoSmokeMore.t > t#5s.Fare clic sul passo
NoSmokeMoree utilizzare il comando SFC → Inserire un'associazione di azioni per aggiungere un'associazione di azioni.All'azione associata viene ora assegnato il qualificatore N.
Fare clic nel campo destro dell'associazione e utilizzare l'Assistente di input
per selezionare l'azione Ventilate.La ventilazione dei fumi si arresta dopo
5secondi.
POU con i qualificatori S e R

Problema: nell'impianto rimane una quantità residua di fumo. La ventilazione dei fumi deve quindi funzionare 5 secondi più a lungo.
Anche in questo caso, il controllore attiva immediatamente la ventilazione dei fumi. Il passo SmokeInSystem richiama l'azione Ventilate con il qualificatore S. Durante il passo NoSmokeMore, tuttavia, la ventilazione dei fumi continua a funzionare, perché l'azione è memorizzata con il qualificatore S e termina solo con R.
Il POU risolve il tempo di post-funzionamento con un passo aggiuntivo NoSmokeMore. Dopo 5 secondi la condizione è soddisfatta e il passo diventa inattivo.
Il passo aggiuntivo After_5sec richiama l'azione Ventilate con il qualificatore R. Il passo resetta l'azione e arresta quindi la ventilazione dei fumi dopo 5 secondi.
Creare un POU in SFC e modificarne il nome in
Advanced_S_R. Per ulteriori informazioni, vedere: Creazione di un POU in SFCNella parte dichiarazione del POU creato, creare le seguenti variabili booleane:
PROGRAM Advanced_S_R VAR bSmokeDetected: BOOL; bVent: BOOL; END_VARModificare la transizione del passo iniziale: fare clic sulla transizione e utilizzare l'Assistente di input
per assegnare la variabile bSmokeDetected.Dopo la transizione del passo iniziale, aggiungere un passo denominato
SmokeInSystem.Modificare la transizione del passo
SmokeInSystem: fare clic sulla transizione e assegnare la variabilebSmokeDetectedtramite l'Assistente di input
. Aggiungere NOT:NOT bSmokeDetectedNell'albero dei dispositivi, fare clic con il pulsante destro del mouse sul POU appena creato
Advanced_S_Re selezionare il comando Aggiungi oggetto → Azione.... Assegnare il nomeVentilatee impostare l'opzione Testo strutturato (ST) per il linguaggio di implementazione.Inserirvi il codice seguente:
bvent := NOT bvent;
Fare clic sul passo
SmokeInSysteme inserire l'associazione di azioni tramite il menu SFC → Inserire un'associazione di azioni.Fare clic nel campo sinistro dell'associazione e utilizzare l'Assistente di input
per selezionare il qualificatore S.Fare clic nel campo destro dell'associazione e utilizzare l'Assistente di input
per selezionare l'azione Ventilate.È stata configurata una semplice ventilazione dei fumi.
5 secondiAggiungere un passo denominato
NoSmokeMoredopo la transizione del passoSmokeInSysteme aggiungere una transizione con la condizioneNoSmokeMore.t > t#5s.Aggiungere un altro passo denominato
After_5secdopo la transizione del passoNoSmokeMoree aggiungere una transizione con la condizioneTRUE.Fare clic sul passo
After_5sece utilizzare il comando SFC → Inserire un'associazione di azioni per aggiungere un'associazione di azioni.Fare clic nel campo sinistro dell'associazione e utilizzare l'Assistente di input
per selezionare il qualificatore R.Fare clic nel campo destro dell'associazione e utilizzare l'Assistente di input
per selezionare l'azione Ventilate.La ventilazione dei fumi si arresta.