La versione 1.1 di EcoStruxure Machine Expert non supporta i controllori M258, LMC058 e LMC078.

Chiamata di un blocco funzione

Panoramica

I blocchi funzione sono chiamati mediante un'istanza del blocco funzione, che deve essere dichiarata localmente o globalmente. Per informazioni su come eseguire la dichiarazione, vedere il capitolo Istanza di blocco funzione.

Per accedere alla variabile del blocco funzione desiderato, utilizzare la seguente sintassi.

Sintassi

<nome istanza>.<nome variabile>

Considerazioni

oDall'esterno dell'istanza di un blocco funzione è possibile accedere solo alle variabili di ingresso e di uscita del blocco funzione, non alle sue variabili interne.

oL'accesso all'istanza di un blocco funzione è limitato alla POU in cui era stato dichiarato, a meno che non fosse stato dichiarato globalmente.

oAlla chiamata dell'istanza, ai parametri del blocco funzione è possibile assegnare i valori desiderati. Vedere il paragrafo seguente Assegnazione di parametri a una chiamata.

oLe variabili di ingresso/uscita (VAR_IN_OUT) di un blocco funzione vengono passate come puntatori.

oIn SFC, le chiamate ai blocchi funzione possono avvenire solo nei passi.

oIl nome dell'istanza di un blocco funzione può essere utilizzato come parametro di ingresso per una funzione o per un altro blocco funzione.

oTutti i valori di un blocco funzione sono mantenuti fino alla successiva elaborazione del blocco stesso. Pertanto, non tutte le chiamate al blocco funzione restituiscono gli stessi valori di uscita, anche se eseguite con argomenti identici.

NOTA: Se almeno una delle variabili del blocco funzione è una variabile rimanente, l'istanza totale viene memorizzata nell'area di mantenimento dei dati.

Esempi di accesso alle variabili dei blocchi funzione

Presupposto: il blocco funzione fb ha una variabile di ingresso in1 del tipo INT. Vedere qui la chiamata di questa variabile dal programma prog. Vedere la dichiarazione e l'implementazione in ST:

PROGRAM prog
VAR
inst1:fb;
END_VAR
inst1.in1:=22;   (* fb is called and input variable in1 gets assigned value 22 *)
inst1(); (* fb is called, this is needed for the following access on the output variable *)
res:=inst1.outl; (* output variable of fb is read *)

Esempio di chiamata di blocco funzione in FBD:

G-SE-0027206.1.gif-high.gif

 

 

Assegnazione dei parametri a una chiamata

Nei linguaggi testuali IL e ST, è possibile impostare i parametri di ingresso e/o di uscita immediatamente quando si chiama il blocco funzione. I valori possono essere assegnati ai parametri tra parentesi, dopo il nome dell'istanza del blocco funzione. Per i parametri di ingresso, questa assegnazione avviene con :=, come nell'inizializzazione delle variabili nella posizione di dichiarazione. Per i parametri di uscita, utilizzare =>.

Esempio di chiamata con assegnazioni

In questo esempio, un blocco funzione timer (istanza CMD_TMR) viene chiamato con assegnazioni per i parametri IN e PT. La variabile risultante Q viene assegnata alla variabile A. La variabile risultante è indirizzata con il nome dell'istanza del blocco funzione, un punto e il nome della variabile.

CMD_TMR(IN := %IX5, PT := 300);
A:=CMD_TMR.Q

Esempio di inserimento tramite Accesso facilitato con argomenti

Se l'istanza viene inserita tramite Accesso facilitato con l'opzione Con argomenti nella vista di implementazione di un POU ST o IL, viene visualizzata automaticamente secondo la sintassi mostrata nell'esempio seguente, con tutti i parametri, anche se l'assegnazione dei parametri non è indispensabile.

Nell'esempio citato sopra, la chiamata verrebbe visualizzata come segue.

CMD_TMR(in:=, pt:=, q=>)
-> fill in, e.g.: 
CMD_TMR(in:=bvar, pt:=t#200ms, q=>bres);