L'uso delle interfacce è uno degli strumenti della programmazione a oggetti. Una POU di interfaccia definisce un insieme di metodi e proprietà senza un'implementazione. Un'interfaccia può essere descritta come l'involucro vuoto di un blocco funzione e, per poter essere realizzata nelle istanze di quest'ultimo, deve essere implementata nella dichiarazione del blocco funzione. Un blocco funzione può implementare una o più interfacce.
Lo stesso metodo può essere realizzato con parametri identici ma codice di implementazione diverso, da parte di blocchi funzione differenti. Un'interfaccia, quindi, può essere utilizzata o richiamata in qualsiasi POU senza bisogno che questa identifichi il particolare blocco funzione interessato.
Un' interfaccia IFT
viene inserita sotto un'applicazione. Contiene 2 metodi Method1
e Method2
. Né l'interfaccia né i metodi contengono codice implementativo. Solo la dichiarazione dei metodi deve essere completata con le dichiarazioni delle variabili desiderate:
Interfaccia con due metodi:
È possibile inserire uno o più blocchi funzione, implementando l'interfaccia ITF
definita sopra.
Creazione di un blocco funzione che implementa un'interfaccia
Quando il blocco funzione POU
viene aggiunto alla , i metodi Method1
e Method2
vengono automaticamente inseriti sotto, come definito da ITF
. Qui, potranno essere completati con codice implementativo specifico del blocco funzione.
Uso dell'interfaccia nella definizione del blocco funzione
Un'interfaccia può estendere altre interfacce utilizzando EXTENDS
(vedere l'esempio seguente Esempio di estensione di un'interfaccia) nella relativa definizione.
Un'interfaccia può anche definire una proprietà d'interfaccia, costituita dai due metodi di accesso Get
e/o Set
. Per ulteriori informazioni sulle proprietà, consultare il capitolo Proprietà. La proprietà di un'interfaccia, come i metodi eventualmente inclusi, è semplicemente un prototipo, nel senso che non include codice implementativo. Come i metodi, viene aggiunta automaticamente al blocco funzione che implementa l'interfaccia, dove può essere completata con codice di programmazione specifico.
Tenere presente quanto segue:
Non è consentito dichiarare variabili in un'interfaccia. Un'interfaccia non ha un corpo (parte di implementazione) né azioni. Nell'interfaccia viene definita solo una raccolta di metodi, che possono avere solo variabili di ingresso, di uscita e di I/O.
Le variabili dichiarate con il tipo di un'interfaccia sono considerate riferimenti.
A un blocco funzione che implementa un'interfaccia devono essere assegnati metodi e proprietà con il nome esattamente uguale a quello utilizzato nell'interfaccia. Devono contenere ingressi, uscite e I/O con nomi esattamente identici.
Per aggiungere un'interfaccia a un'applicazione, selezionare il nodo
nella , fare clic sul pulsante verde con il segno più e selezionare . In alternativa, eseguire il comando . Se si seleziona il nodo prima di eseguire il comando, la nuova interfaccia è disponibile per tutte le applicazioni.Nella finestra di dialogo estensione di un'altra interfaccia.
immettere un nome per la nuova interfaccia (<nome interfaccia>). Eventualmente, è possibile attivare l'opzione se si desidera che l'interfaccia corrente sia un'
Se ITF1
estende ITF_base
, tutti i metodi descritti da ITF_base
saranno automaticamente disponibili in ITF1
.
Estensione di un'interfaccia
Fare clic su
per confermare le impostazioni. Si apre la vista dell'editor per la nuova interfaccia.Sintassi
INTERFACE <nome interfaccia>
Per un'interfaccia che ne estende un'altra:
INTERFACE <nome interfaccia> EXTENDS <nome interfaccia base>
Esempio
INTERFACE interface1 EXTENDS interface_base
Per completare la definizione dell'interfaccia, aggiungere la raccolta di metodi desiderati. Per questo scopo, selezionare il nodo interfaccia nella
ed eseguire il comando . Viene visualizzata la finestra di dialogo , per la definizione di un metodo da includere nell'interfaccia. In alternativa, selezionare il nodo dell'interfaccia nella , fare clic sul pulsante verde con il segno blu e selezionare . Aggiungere tutti i metodi desiderati, tenendo presente che possono avere solo variabili di ingresso, variabili di uscita e variabili di I/O, ma non il corpo (parte di implementazione).