Skip to main content

Implementa un'interfaccia

L'implementazione delle interfacce si basa sul concetto di programmazione orientata agli oggetti. Utilizzando interfacce condivise, è possibile implementare blocchi funzione diversi ma simili in modo analogo.

Un blocco funzione che implementa un'interfaccia deve implementare il proprio codice per tutti i metodi e le proprietà definiti con questa interfaccia.

Quando si definisce un nuovo blocco funzione che implementa un'interfaccia, i metodi e le proprietà di questa interfaccia vengono inseriti automaticamente sotto il nuovo blocco funzione nell'albero degli oggetti. Tuttavia, non tutti vengono inseriti metodi e proprietà, ma solo quelli necessari per una compilazione senza errori.

Se aggiungi altri metodi a un'interfaccia in un secondo momento, questi metodi sono non automaticamente incluso nella dichiarazione dei blocchi funzionali che implementano l'interfaccia. Per aggiornarne l'implementazione, è necessario chiamare Interfaccia di implementazione comando. Per sovrascrivere i singoli metodi, selezionare Aggiungi oggettoMetodo comando. La finestra di dialogo si apre con un elenco di tutti i metodi sostituibili. Per una selezione, fate clic su Nome casella di riepilogo.

Nel caso di blocchi funzione derivati, è necessario assicurarsi che i metodi o le proprietà, ereditati da un'interfaccia tramite EXTENDS, sono implementati correttamente. Quando non viene fornita alcuna implementazione personalizzata, il blocco funzione utilizza automaticamente l'implementazione di base del blocco funzione sovraordinato o correlato

Per ulteriori informazioni, vedere quanto segue: Aggiornamento di un'interfaccia, Metodo

Utilizzo delle variabili di interfaccia

Importante

Un'istanza del blocco funzione con un'interfaccia conforme al tipo deve essere assegnata a una variabile definita come tipo Interfaccia. È possibile chiamare i metodi tramite questa variabile solo dopo.

Una variabile del tipo di interfaccia è sempre un riferimento all'istanza del blocco funzione assegnata.

Esempio 29. Esempio

Una variabile di interfaccia funge da riferimento a un'istanza del blocco funzione. Può fare riferimento a qualsiasi istanza che implementa questa interfaccia. L'istanza specifica assegnata può variare in fase di esecuzione. Fino alla prima assegnazione, la variabile contiene il 0.

l'interfaccia I1 contiene il metodo GetName.

I blocchi funzione A e B ciascuno implementa l'interfaccia I1:

METHOD GetName : STRING
FUNCTION_BLOCK A IMPLEMENTS I1
FUNCTION_BLOCK B IMPLEMENTS I1

Entrambi i blocchi funzione possono includere un metodo denominato GetName e il tipo di ritorno STRING.

Una funzione contiene la dichiarazione di una variabile del tipo interfaccia I1.

FUNCTION DeliverName : STRING
VAR_INPUT
    l_i : I1;
END_VAR

Blocchi funzione che l'interfaccia I1 attrezzo, può essere assegnato a questa variabile di input.

Esempi di chiamate di funzione:

DeliverName(l_i := A_instance); // call with instance of type A
DeliverName(l_i := B_instance); // call with instance of type B

Chiamando il metodo di interfaccia:

In questo caso dipende dal tipo effettivo di l_i da se l'applicazione A.GetName o B.GetName chiamate.

DeliverName := l_i.GetName();


Implementazione di un'interfaccia in un nuovo modulo funzione

Requisito: il progetto attualmente aperto ha almeno un oggetto di interfaccia.

  1. Nell'albero dei dispositivi, seleziona Applicazione oggetto e fai clic su progettoAggiungi oggettoPOU comando di menu.

    Il dialogo Aggiungi POU si apre.

  2. Immettere un nome per il nuovo modulo funzione nel campo di immissione Cognome uno, per esempio POU_Im.

  3. Seleziona la tipologia Blocco funzionale.

  4. Fai clic su Implementa attributo e fai clic su _cds_icon_input_assistent.png pulsante.

  5. In Input Assistant, seleziona Interfacce categoria e quindi, ad esempio, l'interfaccia ITF1. Dopodiché, fai clic OK.

  6. Se desideri inserire un'altra interfaccia, fai clic su _cds_icon_input_assistent.png di nuovo. Quindi, seleziona l'interfaccia desiderata.

  7. Opzionalmente puoi averne uno modificatore di accesso per il nuovo modulo funzione dall'elenco di selezione.

  8. Effettua una selezione tra Lingua di implementazione casella di riepilogo (esempio: Testo strutturato (ST).

  9. clicca su Aggiungere a.

    CODESYS aggiunge il Pou_ex blocco funzionale con le interfacce per l'albero dei dispositivi e apre l'editor.

    La prima riga contiene il testo:

    FUNCTION_BLOCK POU_Im IMPLEMENTS ITF1

    L'interfaccia e i relativi metodi e proprietà sono ora inseriti nell'albero dei dispositivi sotto il blocco funzione. È ora possibile immettere il codice del programma nella parte di implementazione dell'interfaccia e i relativi metodi.

Implementazione di un'interfaccia in un blocco funzione esistente

Requisito: il progetto attualmente aperto ha un blocco funzionale (esempio: Pou_im) e almeno un oggetto di interfaccia (esempio: ITF1).

  1. Fare doppio clic sulla POU nella struttura dei dispositivi POU_Ex(FB).

    Si apre l'editor della POU.

  2. Espandi la voce della riga superiore esistente FUNCTION_BLOCK POU_Im Con IMPLEMENTS ITF1.

    Il blocco funzione POU_Im implementa l'interfaccia ITF1.

Aggiornamento di un'interfaccia

Se si aggiungono altri metodi e proprietà a un'interfaccia già definita in un secondo momento, i blocchi funzione che implementano questa interfaccia sono non automaticamente esteso per includere i nuovi metodi. È necessario aggiornare manualmente i blocchi funzione che dovrebbero ottenere un'implementazione dell'interfaccia.

Per fare ciò, seleziona Implementa le interfacce comando per inserire i nuovi oggetti.

Per ulteriori informazioni, vedere quanto segue: Implementare interfacce

Metodi di sovrascrittura

In scenari con IMPLEMENTS (interfacce) e EXTENDS (ereditarietà), i metodi che sono già stati dichiarati nell'interfaccia potrebbero dover essere reimplementati in blocchi funzione derivati per adattarli o sovrascriverli.

Per sovrascrivere i singoli metodi, seleziona Aggiungi oggettoMetodo comando. La finestra di dialogo si apre con un elenco di tutti i metodi sostituibili in modo da poter selezionare il metodo desiderato che dovrebbe avere una propria implementazione. Questo verrà aggiunto e potrai integrare l'implementazione

Per ulteriori informazioni, vedere quanto segue: Dialogo: Aggiungi metodo