Skip to main content

Flag SFC

I flag SFC sono variabili create implicitamente con nomi predefiniti che forniscono funzioni per il controllo e la diagnosi dei diagrammi SFC. Questi flag consentono di attivare le transizioni in modo mirato.

Ad esempio

  • Rilevamento di timeout

  • Reset delle catene di passi

  • Attivazione della modalità a impulsi

Per accedere a queste variabili, i flag corrispondenti devono essere dichiarati e abilitati.

Nome

Tipo di dati

Descrizione

SFCInit

BOOL

TRUE: riporta la sequenza al passo iniziale. Vengono resettati anche gli altri flag SFC (inizializzazione). Finché la variabile è TRUE, il passo iniziale rimane impostato (attivo), ma non viene eseguito. Il POU viene elaborato normalmente solo dopo aver reimpostato SFCInit su FALSE.

SFCReset

BOOL

Si comporta in modo simile a SFCInit

Al contrario, dopo l'inizializzazione il passo iniziale continua a essere eseguito. Ad esempio, nel passo iniziale è possibile reimpostare immediatamente il flag SFCReset su FALSE.

SFCError

BOOL

Diventa TRUE quando si è verificato un timeout in un diagramma SFC.

Se nel programma si verifica un altro timeout dopo il primo, questo viene rilevato solo se la variabile SFCError è stata precedentemente resettata. In caso contrario, il flag rimane impostato e gli ulteriori timeout non vengono registrati.

La dichiarazione di SFCError è necessaria affinché funzionino le altre variabili flag per il monitoraggio dei tempi: SFCErrorStep, SFCErrorPOU, SFCQuitError

SFCEnableLimit

BOOL

Serve per l'attivazione (TRUE) e la disattivazione (FALSE) mirate del controllo dei timeout nei passi da parte di SFCError

Se si dichiara e si attiva questa variabile (impostazioni SFC), è necessario anche impostarla su TRUE affinché SFCError funzioni; in caso contrario, gli eventuali timeout vengono ignorati. Ciò può essere utile, ad esempio, durante la messa in servizio o il funzionamento manuale. Se non si dichiara la variabile, SFCError funziona automaticamente.

Il presupposto è la dichiarazione di SFCError.

SFCErrorStep

STRING

Memorizza il nome del passo che ha causato un timeout registrato da SFCError

Il nome viene mantenuto finché l'errore del passo registrato non viene resettato mediante SFCQuitError (FALSE -> TRUE).

Il presupposto è la dichiarazione di SFCError.

SFCErrorPOU

STRING

In caso di timeout, memorizza il nome del POU in cui si è verificato un timeout registrato da SFCError. Il nome viene memorizzato finché il timeout non viene resettato mediante SFCQuitError.

Il presupposto è la dichiarazione di SFCError.

SFCQuitError

BOOL

Finché questa variabile booleana è TRUE, l'elaborazione del diagramma SFC è sospesa. Un eventuale timeout, memorizzato nella variabile SFCError, viene resettato in tale occasione. Se si reimposta la variabile su FALSE, tutti i tempi precedenti nei passi attivi vengono resettati.

Il presupposto è la dichiarazione di SFCError.

SFCPause

BOOL

Finché questa variabile è TRUE, l'elaborazione del diagramma SFC è sospesa.

SFCTrans

BOOL

Diventa TRUE quando una transizione commuta.

SFCCurrentStep

STRING

Visualizza il nome del passo attualmente attivo, indipendentemente dal controllo del tempo

Nel caso di una diramazione parallela, viene sempre memorizzato il nome del passo della diramazione più a destra.

SFCTip

SFCTipMode

BOOL

TRUE: attiva la modalità a impulsi del POU SFC

Quando si abilita la modalità a impulsi impostando SFCTipMode := TRUE, è possibile passare al passo successivo solo impostando SFCTip su TRUE. Finché si imposta SFCTipMode su FALSE, è possibile passare al passo successivo anche tramite le transizioni.

SFCErrorAnalyzation

Contiene una stringa di tutte le variabili che contribuiscono al valore complessivo TRUE di SFCError (timeout in un passo)

Affinché ciò funzioni, SFCError deve essere abilitato.

A tale scopo, SFCErrorAnalyzation utilizza implicitamente la funzione del POU AnalyzeExpression della libreria Analyzation.

Per informazioni sulla configurazione avanzata dell'analisi, vedere anche: SFC

SFCErrorAnalyzationTable

Contiene una tabella delle variabili che contribuiscono al valore complessivo TRUE di SFCError (timeout in un passo)

Affinché ciò funzioni, SFCError deve essere abilitato.

A tale scopo, SFCErrorAnalyzationTable utilizza implicitamente la funzione del POU AnalyzeExpressionTable della libreria Analyzation.

Per informazioni sulla configurazione avanzata dell'analisi, vedere anche: SFC

Generazione implicita dei flag SFC

I flag SFC vengono dichiarati automaticamente se è stata abilitata l'opzione corrispondente. È possibile impostare questa opzione nella finestra di dialogo delle proprietà Impostazioni SFC per i singoli POU oppure nella finestra di dialogo delle impostazioni del progetto SFC per tutti i POU SFC del progetto.

Suggerimento

Le impostazioni SFC dei flag SFC dei singoli POU sono efficaci solo se non è stata abilitata l'opzione Utilizzare le preimpostazioni. Se questa opzione è abilitata, si applicano le impostazioni definite nelle impostazioni del progetto.

Suggerimento

I flag SFC dichiarati nella finestra di dialogo delle impostazioni SFC sono visibili solo nella vista online del POU SFC.

Suggerimento

In Proprietà degli elementi SFC è possibile definire se per un flag deve essere esportata una definizione di simbolo nella configurazione dei simboli.

Generazione esplicita dei flag SFC

Una dichiarazione manuale, come era necessaria in precedenza in CoDeSys V2.3, è ancora necessaria solo se occorre un accesso in scrittura ai flag da un altro POU. A tale proposito, tenere presente quanto segue:

Importante

Se i flag sono stati dichiarati in una lista di variabili globali, è necessario disattivare l'impostazione Dichiarare nella finestra di dialogo delle impostazioni SFC. In caso contrario, viene creato implicitamente anche un flag SFC locale. Questo flag viene quindi utilizzato al posto della variabile globale.

Esempio di applicazione per SFCError

Esempio 1. Esempio

È stato creato un POU SFC denominato sfc1 che contiene un passo s1. Nelle proprietà del passo sono stati definiti limiti di tempo.

Se la durata di attività del passo s1 supera il limite definito nelle sue proprietà temporali, viene impostato il flag SFCError. L'applicazione può valutare questo flag per reagire al timeout.

Per consentire questo accesso, è necessario abilitare e dichiarare il flag nelle impostazioni SFC. Se lo si dichiara soltanto, il flag SFC viene visualizzato nella parte dichiarazione della vista online di sfc1, ma non funziona.

_cds_img_sfc_sfc_flags.png

Ora è possibile indirizzare il flag SFC all'interno del POU, ad esempio in un'azione (2), oppure dall'esterno del POU (1).

_cds_img_sfc_sfcerror_example.png

Vista online del POU SFC sfc1:

_cds_img_sfc_sfcerror_example_online.png

SFCError diventa TRUE non appena si verifica un timeout all'interno di sfc1.

Per analizzare la causa di un timeout è possibile utilizzare i flag SFCErrorAnalyzation e SFCErrorAnalyzationTable della libreria Analyzation. Questi flag consentono di identificare i singoli componenti dell'espressione che contribuiscono al fatto che SFCError assuma il valore TRUE.



Accesso ai flag

Sintassi per l'accesso

All'interno del POU, il flag si assegna direttamente: <variable name> := <sfc flag>

Esempio 2. Esempio
checkerror := SFCError;


Da un altro POU con nome: <variable name> := <pou name>.<sfc flag>

Esempio 3. Esempio:
checkerror := SFC_prog.SFCError;


Se è necessario l'accesso in scrittura da un altro POU, occorre anche dichiarare esplicitamente il flag SFC come variabile VAR_INPUT nel POU SFC o globalmente in una GVL.

Esempio 4. Esempio

Dichiarazione locale

PROGRAM SFC_prog
VAR_INPUT
    SFCInit : BOOL;
END_VAR

Oppure dichiarazione globale in una lista di variabili globali

VAR_GLOBAL
    SFCInit : BOOL;
END_VAR
PROGRAM PLC_PRG
VAR
    SetInit : BOOL;
END_VAR
SFC_prog.SFCInit := SetInit;  //Write access to SFCInit in SFC_prog