Proprietà

Panoramica

Una proprietà in estensione allo standard IEC 61131-3 è disponibile come mezzo di programmazione orientata agli oggetti. Consiste di una coppia di metodi di accesso (Get, Set) che consentono di incapsulare un accesso in lettura o scrittura a variabili dichiarate all'interno di una POU o GVL in una chiamata di funzione, mantenendo la sintassi di un accesso di variabile.

Per inserire una proprietà come un oggetto sotto un nodo programma, blocco funzione, GVL o interfaccia, selezionare il nodo nella Struttura applicazioni, fare clic sul pulsante verde con il segno più ed eseguire il comando Proprietà. In alternativa, fare clic con il pulsante destro del mouse sul nodo ed eseguire il comando Aggiungi oggetto > Proprietà dal menu contestuale.

Nella finestra di dialogo Aggiungi proprietà, specificare il Nome, il Tipo restituito, il Linguaggio d'implementazione desiderato ed eventualmente un Modificatore di accesso.

I seguenti specificatori di accesso sono disponibili anche per i metodi:

  • PUBLIC

  • PRIVATE

  • PROTECTED

  • INTERNAL

  • ABSTRACT

NOTA: Le proprietà possono essere dichiarate anche nelle interfacce.

EcoStruxure Machine Expert facilita la programmazione orientata agli oggetti tramite eredità nei blocchi funzione: quando si esegue Aggiungi oggetto su un blocco funzione che eredita da un altro blocco funzione, gli elementi Azione, Metodo, Proprietà e Transizione usati nel blocco funzione di base vengono elencati per la selezione:

  • Gli elementi Azione, Metodo, Proprietà e Transizione con Modificatore di accesso = PUBBLICO, PROTETTO e INTERNO definiti nel blocco funzione di base sono disponibili per la selezione. È possibile adattare la definizione per l'oggetto ereditato. Nell'oggetto ereditato, lo stesso Modificatore di accesso viene assegnato agli elementi di origine.

  • Gli elementi Azione, Metodo, Proprietà e Transizione con Modificatore di accesso = PRIVATO non sono disponibili per la selezione in quanto l'accesso è limitato al blocco funzione di base.

Metodi di accesso Get e Set di una proprietà

Nella Struttura applicazioni, sotto l'oggetto proprietà, vengono inseriti automaticamente due metodi speciali, denominati metodi di accesso. Se la proprietà deve essere utilizzata solo per la scrittura o per la lettura, è possibile eliminarne uno. A un metodo di accesso, come a una proprietà (vedere il paragrafo precedente), è possibile assegnare un modificatore dell'accesso nella parte della dichiarazione, oppure mediante la finestra di dialogo Aggiungi oggetto, quando si aggiunge esplicitamente il metodo di accesso.

  • Il metodo di accesso Set viene chiamato quando si scrive la proprietà.

  • Il metodo di accesso Get viene chiamato quando si legge la proprietà.

Esempio:

Il blocco funzione FB1 ha una proprietà seconds che utilizza una variabile locale milli. Questa variabile è determinata dalle proprietà Get e Set:

Esempio di implementazione Get

seconds := milli / 1000; 

Esempio di implementazione Set

milli := seconds * 1000; 

È possibile scrivere la proprietà del blocco funzione (metodo Set), ad esempio tramite fbinst.seconds := 22;.

(fbinst è l'istanza di FB1).

È possibile leggere la proprietà del blocco funzione (metodo Get) ad esempio tramite testvar := fbinst.seconds;.

Nell'esempio seguente, la proprietà seconds viene assegnata al blocco funzione FB1:

Una proprietà può avere variabili locali aggiuntive ma non ingressi aggiuntivi né, a differenza di una funzione o un metodo, uscite aggiuntive.

NOTA: Quando si copia o si sposta un metodo o una proprietà da una POU a un'interfaccia, le implementazioni in essi contenute vengono automaticamente eliminate. Quando si esegue una copia o uno spostamento da un'interfaccia a una POE, viene richiesto di specificare il linguaggio di implementazione desiderato.

Monitoraggio di una proprietà

Una proprietà può essere monitorata in modalità online, tramite il monitoraggio interno alla linea o mediante un elenco di controllo. La condizione preliminare per il monitoraggio di una proprietà è l'aggiunta del pragma {attribute 'monitoring' := 'variable'} (vedere il capitolo Attribute Monitoring).