Variabili implicite - Flag SFC
Ogni passo SFC e ogni azione IEC fornisce variabili generate implicitamente per il controllo dello stato dei passi e delle azioni IEC durante il runtime. È inoltre possibile definire variabili per il monitoraggio e il controllo dell'esecuzione di un diagramma SFC (timeout, reset, modalità suggerimento). Queste variabili possono inoltre essere generate implicitamente dall'oggetto SFC.
Fondamentalmente, per ogni passo e ogni azione IEC viene generata una variabile implicita. Si tratta di un'istanza di struttura, che ha il nome dell'elemento, ad esempio step1 per il passo denominato step1. Nelle proprietà dell'elemento è possibile definire se per il flag in questione la definizione del simbolo verrà esportata nella configurazione simboli e in che modo il simbolo potrà essere accessibile nel controller.
I tipi di dati per queste variabili implicite sono definiti nella libreria IecSFC.library. Questa libreria verrà inclusa automaticamente nel progetto, non appena si aggiunge un oggetto SFC.
Stato dei passi e delle azioni e tempo del passo
Fondamentalmente, per ogni passo e ogni azione IEC viene creata una variabile con struttura implicita del tipo SFCStepType o SFCActionType. I componenti della struttura (flag) descrivono lo stato del passo o dell'azione o il tempo elaborato di un passo attivo.
La sintassi della dichiarazione delle variabili eseguite implicitamente è:
<nomepasso>: SFCStepType;
oppure
_<nomeazione>:SFCActionType;
NOTA: Le variabili implicite per le azioni IEC sono precedute da un carattere di sottolineatura.
Sono disponibili i seguenti flag booleani per gli stati di passi e azioni:
Flag booleani per i passi:
Flag booleano |
Descrizione |
---|---|
<nomepasso>.x |
mostra lo stato di attivazione corrente |
<nomepasso>._x |
mostra lo stato di attivazione del ciclo successivo |
Se <nomepasso>.x = TRUE, il passo verrà eseguito nel ciclo corrente.
Se <nomepasso>._x = TRUE e <nomepasso>.x = FALSE, il passo verrà eseguito nel ciclo successivo. Ciò significa che <nomepasso>._x è copiato in <nomepasso>.x all'inizio di un ciclo.
Flag booleani per le azioni:
Flag booleano |
Descrizione |
---|---|
_<nomeazione>.x |
è TRUE se l'azione viene eseguita |
_<nomeazione>._x |
è TRUE se l'azione è attiva |
Generazione dei simboli
Nelle proprietà dell'elemento di un passo o di un'azione è possibile decidere se la definizione di un simbolo deve essere aggiunta alla configurazione di di simboli eventualmente creata e scaricata per il flag del nome del passo o dell'azione. A questo scopo, creare una voce per il diritto di accesso desiderato nella colonna Simbolo della vista delle proprietà dell'elemento.
NOTA: Se si utilizza il flag booleano <nomepasso>.x per forzare un determinato valore di stato per un passo (per impostare un passo come attivo), tenere presente che questo comportamento causerà stati non controllati all'interno dell'SFC.
|
FUNZIONAMENTO ANOMALO DELL'APPARECCHIATURA |
Non utilizzare un flag booleano <nomepasso>.x per forzare un valore di stato per impostare un passo attivo. |
Il mancato rispetto di queste istruzioni può provocare morte, gravi infortuni o danni alle apparecchiature. |
Tempo nelle variabili TIME:
Il flag t fornisce l'intervallo di tempo corrente trascorso da quando il passo è stato attivato. Ciò riguarda solo i passi, indipendentemente dal fatto che vi sia un tempo minimo configurato negli attributi del passo oppure no (vedere sotto SFCError).
Per i passi:
<nomepasso>.t (<nomepasso>._t non può essere utilizzato per scopi esterni)
Per le azioni:
Le variabili di tempo implicite non sono utilizzate.
Controllo dell'esecuzione SFC (timeout, reset, modalità suggerimento)
Per controllare il funzionamento in SFC, è possibile utilizzare alcune variabili disponibili implicitamente, chiamate anche flag SFC (vedere la tabella seguente). Ad esempio, sono utili per indicare il superamento del tempo o per attivare la modalità suggerimento per le transizioni di commutazione.
Per poter accedere a questi flag è necessario dichiararli e attivarli. A questo scopo, utilizzare Impostazioni SFC, una finestra di sottodialogo della finestra di dialogo Proprietà dell'oggetto.
La dichiarazione manuale, com'era necessaria in SoMachine / SoMachine Motion V3.1, serve ora solo per abilitare l'accesso in scrittura da un'altra POU. Vedere il paragrafo Accesso ai flag.
In questo caso, tenere presente quanto segue:
Se si dichiara il flag globalmente, bisogna disattivare l'opzione Dichiarare nella finestra di dialogo Impostazioni SFC. Altrimenti, si crea un flag locale dichiarato implicitamente, che verrebbe utilizzato anziché quello globale. Considerare che le impostazioni SFC di un POU SFC inizialmente sono determinate dalle definizioni impostate nella finestra di dialogo Opzioni > SFC.
La dichiarazione di una variabile flag eseguita solo tramite la finestra di dialogo Impostazioni SFC sarà visibile solo nella vista online del POU SFC.
È possibile utilizzare le seguenti variabili implicite (flag). A questo scopo, occorre dichiararle e attivarle nella finestra di dialogo Impostazioni SFC.
Variabile |
Tipo |
Descrizione |
---|---|---|
SFCInit |
BOOL |
Se questa variabile diventa TRUE, il grafico della funzione sequenziale viene nuovamente impostato sul passo iniziale. Tutti i passi e le azioni e gli altri flag SFC vengono reimpostati (inizializzazione). Il passo iniziale resta attivo, ma non viene eseguito finché la variabile è TRUE. Impostare nuovamente SFCInit su FALSE per tornare alla normale elaborazione. |
SFCReset |
BOOL |
Questa variabile si comporta in modo simile a SFCInit. A differenza di questa, tuttavia, dopo l'inizializzazione del passo iniziale si verifica un'ulteriore elaborazione. In questo caso, quindi, la reimpostazione su FALSE del flag SFCReset può avvenire nel passo iniziale. |
SFCError |
BOOL |
Appena si verifica un timeout in uno dei passi SFC, questa variabile diventa TRUE. Precondizione: SFCEnableLimit deve essere TRUE. Tenere presente che eventuali ulteriori timeout non possono essere registrati prima della reimpostazione di SFCError. È necessario definire SFCError se si intende utilizzare gli altri flag di controllo del tempo (SFCErrorStep, SFCErrorPOU, SFCQuitError). |
SFCEnableLimit |
BOOL |
Utilizzare questa variabile per l'attivazione (TRUE) e la disattivazione (FALSE) esplicite del controllo del tempo dei passi tramite SFCError. Ciò significa che se questa variabile viene dichiarata e attivata, (Impostazioni SFC) è necessario impostarla su TRUE per far funzionare SFCError. Altrimenti, gli eventuali timeout dei passi non verranno registrati. Può essere utile impiegarla durante l'avvio o nel funzionamento manuale. Se la variabile non è definita, SFCError funziona automaticamente. Precondizione: SFCError deve essere definito. |
SFCErrorStep |
STRING |
Questa variabile memorizza il nome di un passo in cui è stato registrato un timeout da SFCError.timeout. Precondizione: SFCError deve essere definito. |
SFCErrorPOU |
STRING |
Questa variabile memorizza il nome della POU SFC in cui si è verificato un timeout. Precondizione: SFCError deve essere definito. |
SFCQuitError |
BOOL |
Se questa variabile è TRUE, l'esecuzione del diagramma SFC viene interrotta e la variabile SFCError viene reimpostata. Appena la variabile viene reimpostata su FALSE, vengono reimpostati anche tutti gli stati di tempo correnti dei passi attivi. Precondizione: SFCError deve essere definito. |
SFCPause |
BOOL |
Se questa variabile è TRUE, l'esecuzione del diagramma SFC viene interrotta. |
SFCTrans |
BOOL |
Questa variabile diventa TRUE non appena si verifica una transizione. |
SFCCurrentStep |
STRING |
Questa variabile memorizza il nome del passo attivo, indipendentemente dal monitoraggio del tempo. In caso di sequenze simultanee, viene registrato il nome del passo esterno destro. |
SFCTipSFCTipMode |
BOOL |
Queste variabili permettono di utilizzare la modalità inch nel diagramma corrente. Quando si attiva questa modalità con SFCTipMode=TRUE, è possibile solo saltare al passo successivo impostando SFCTip=TRUE (fronte di salita). Se SFCTipMode è impostata su FALSE, è possibile saltare le transizioni. |
La figura seguente fornisce un esempio di alcuni flag di errore rilevati da SFC nella modalità online dell'editor.
Un timeout è stato rilevato al passo s1 nella POU dell'oggetto SFC dal flag SFCError.
Per abilitare l'accesso ai flag per il controllo dell'esecuzione SFC (timeout, reset, modalità suggerimento), dichiarare e attivare le variabili dei flag come descritto sopra (Controllo dell'esecuzione SFC).
Sintassi per l'accesso da un'azione o da una transizione nella POU SFC:
<nomepasso>.<flag>
oppure
_<nomeazione>.<flag>
Esempi:
status:=step1._x;
checkerror:=SFCerror;
Sintassi per l'accesso da un'altra POU:
<SFC POU>.<nomepasso>.<flag>
oppure
<POU SFC>._<nomeazione>.<flag>
Esempi:
status:=SFC_prog.step1._x;
checkerror:=SFC_prog.SFCerror;
In caso di accesso in scrittura da un'altra POU, tenere presente quanto segue:
oLa variabile implicita deve anche essere dichiarata esplicitamente come variabile VAR_INPUT della POU SFC
oo deve essere dichiarata globalmente in un GVL (elenco di variabili globali).
Esempio: dichiarazione locale
PROGRAM SFC_prog
VAR_INPUT
SFCinit:BOOL;
END_VAR
Esempio: dichiarazione globale in un GVL
VAR_GLOBAL
SFCinit:BOOL;
END_VAR
Accesso al flag in PLC_PRG:
PROGRAM PLC_PRG
VAR
setinit: BOOL;
END_VAR
SFC_prog.SFCinit:=setinit; //Write access to SFCinit in SFC_prog