Skip to main content

Implementa un'interfaccia

Implementa un'interfaccia

L'implementazione delle interfacce si basa sul concetto di programmazione orientata agli oggetti. È anche possibile utilizzare blocchi funzione diversi ma simili allo stesso modo tramite interfacce comuni.

Un blocco funzione che implementa un'interfaccia deve contenere tutti i metodi e le proprietà definiti in questa interfaccia (metodi di interfaccia e proprietà dell'interfaccia). Ciò significa: nome, input e output del rispettivo metodo o proprietà devono essere esattamente gli stessi.

Quando crei un nuovo modulo funzione che implementa un'interfaccia, aggiunge CODESYS inserisce automaticamente tutti i metodi e le proprietà di questa interfaccia sotto il nuovo modulo funzione nell'albero.

Importante

Dopodiché, se aggiungi più metodi all'interfaccia, aggiunge CODESYS questi metodi non vengono aggiunti automaticamente ai moduli funzione pertinenti. Per l'aggiornamento è necessario utilizzare esplicitamente il comando implementare interfacce scegliere.

Nel caso di blocchi funzione derivati, è necessario assicurarsi che i metodi o le proprietà che sono stati adottati per "ereditarietà" da un'interfaccia ricevano l'implementazione desiderata o vengano cancellati se si vuole utilizzare l'implementazione nella base. Riceverai corrispondenti messaggi di errore di traduzione o avvisi, provocati da attributi pragma inseriti automaticamente. Si prega di consultare la pagina della guida del comando implementare interfacce.

Importante

  • È necessario assegnare l'interfaccia di un blocco funzione a una variabile del tipo di interfaccia prima di poter richiamare un metodo tramite la variabile.

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

Una variabile del tipo di interfaccia è un riferimento a istanze di blocchi funzione. Tale variabile può fare riferimento a qualsiasi blocco funzione che implementa l'interfaccia. Se non è stata eseguita alcuna assegnazione alla variabile, la variabile contiene il valore in modalità online 0.

Esempio 30. esempi

l'interfaccia I1 contiene il metodo GetName.

METHOD GetName : STRING

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

FUNCTION_BLOCK A IMPLEMENTS I1
FUNCTION_BLOCK B IMPLEMENTS I1

Entrambi i moduli funzione devono quindi avere un metodo con il nome GetName e il tipo di reso STRING contenere. In caso contrario il compilatore segnala un errore.

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

Presupposto: il progetto attualmente aperto dispone di almeno un oggetto interfaccia.

  1. Selezionare Applicazione nell'albero dei dispositivi e selezionare il comando di menu Progetto → Aggiungi oggetto → POU.

    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. Scegliere modulo funzionale.

  4. Scegliere implementato e fare clic sul pulsante _cds_icon_input_assistent.png.

  5. Nell'helper per l'immissione, scegli dalla categoria interfacce l'interfaccia per esempio ITF1 e fare clic ok.

  6. Per aggiungere un'altra interfaccia, fare nuovamente clic _cds_icon_input_assistent.png e seleziona un'altra interfaccia.

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

  8. Scegli dall'elenco a discesa linguaggio di attuazione Per esempio Testo strutturato (ST) fuori.

  9. clicca su Aggiungere a.

    CODESYS aggiunge il blocco funzione POU_Ex nell'albero dei dispositivi e si apre l'editor. La prima riga dice:

    FUNCTION_BLOCK POU_Im IMPLEMENTS ITF1

    L'interfaccia, i suoi metodi e le sue proprietà sono ora inseriti nell'albero dei dispositivi sotto il blocco funzione ed è ora possibile inserire il codice del programma nella parte di implementazione dell'interfaccia e i suoi metodi.

Implementazione di un'interfaccia in un blocco funzione esistente

Presupposto: il progetto attualmente aperto dispone ad es. di un blocco funzionale POU_Im e almeno un oggetto interfaccia, per 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.