Skip to main content

Implémenter une interface

La mise en œuvre des interfaces est basée sur le concept de programmation orientée objet. À l'aide d'interfaces partagées, vous pouvez implémenter des blocs de fonctions différents mais similaires de la même manière.

Un bloc fonctionnel qui implémente une interface doit implémenter son propre code pour toutes les méthodes et propriétés définies avec cette interface.

Lorsque vous définissez un nouveau bloc fonctionnel qui implémente une interface, les méthodes et propriétés de cette interface sont automatiquement insérées sous le nouveau bloc fonctionnel dans l'arborescence des objets. Cependant, pas tous les méthodes et les propriétés sont insérées, mais uniquement celles qui sont requises pour une compilation sans erreur.

Si vous ajoutez ultérieurement d'autres méthodes à une interface, ces méthodes sont pas automatiquement inclus dans la déclaration des blocs fonctionnels qui implémentent l'interface. Pour y mettre à jour l'implémentation, vous devez appeler le Interface d'implémentation commande. Pour modifier des méthodes individuelles, sélectionnez Ajouter un objetMéthode commande. La boîte de dialogue s'ouvre avec une liste de toutes les méthodes pouvant être remplacées. Pour une sélection, cliquez sur Nom boîte de liste.

Dans le cas de blocs fonctionnels dérivés, vous devez vous assurer que les méthodes ou propriétés héritées d'une interface via EXTENDS, sont correctement implémentés. Lorsqu'aucune implémentation personnalisée n'est fournie, le bloc fonctionnel utilise automatiquement l'implémentation de base du bloc fonctionnel supérieur ou d'un bloc fonctionnel associé

Pour plus d'informations, consultez les rubriques suivantes : Mettre à jour une interface, Méthode

Utilisation de variables d'interface

Important

Une instance de bloc fonctionnel avec une interface conforme au type doit être affectée à une variable définie comme type Interface. Vous ne pouvez appeler des méthodes via cette variable qu'après cela.

Une variable du type d'interface est toujours une référence à l'instance de bloc fonctionnel attribuée.

Exemple 29. Exemple

Une variable d'interface sert de référence à une instance de bloc fonctionnel. Il peut référencer n'importe quelle instance qui implémente cette interface. L'instance spécifique attribuée peut varier au moment de l'exécution. Jusqu'à la première affectation, la variable contient la valeur 0.

L'interface I1 contient la méthode GetName.

Les blocs fonctionnels A et B chacun implémente l'interface I1:

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

Les deux blocs de fonctions peuvent inclure une méthode nommée GetName et le type de retour STRING.

Une fonction contient la déclaration d'une variable de type interface I1.

FUNCTION DeliverName : STRING
VAR_INPUT
    l_i : I1;
END_VAR

Blocs fonctionnels que l'interface I1 mettre en œuvre, peut être affecté à cette variable d'entrée.

Exemples d'appels de fonction :

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

Appel de la méthode d'interface :

Dans ce cas, cela dépend du type réel de l_i de savoir si la demande A.GetName ou B.GetName appels.

DeliverName := l_i.GetName();


Implémentation d'une interface dans un nouveau module fonction

Exigence : le projet actuellement ouvert possède au moins un objet d'interface.

  1. Dans l'arborescence des appareils, sélectionnez Demande objet et cliquez sur ProjetAjouter un objetPOU commande de menu.

    Le dialogue Ajouter un POU s'ouvre.

  2. Entrez un nom pour le nouveau module de fonction dans le champ de saisie Nom de famille un, par exemple POU_Im.

  3. Sélectionnez le type Bloc fonctionnel.

  4. Cliquez sur Insère attribut et cliquez sur _cds_icon_input_assistent.png bouton.

  5. Dans l'assistant de saisie, sélectionnez Interfaces catégorie puis, par exemple, l'interface ITF1. Ensuite, cliquez sur OK.

  6. Si vous souhaitez insérer une autre interface, cliquez sur _cds_icon_input_assistent.png encore une fois. Sélectionnez ensuite l'interface souhaitée.

  7. En option, vous pouvez en avoir un modificateur d'accès pour le nouveau module de fonction dans la liste de sélection.

  8. Faites une sélection parmi les Langage d'implémentation zone de liste (exemple : Texte structuré (ST).

  9. cliquer sur Ajouter à.

    CODESYS ajoute le Pou_ex bloc de fonctions avec les interfaces vers l'arborescence des appareils et ouvre l'éditeur.

    La première ligne contient le texte :

    FUNCTION_BLOCK POU_Im IMPLEMENTS ITF1

    L'interface, ses méthodes et ses attributs sont désormais insérés dans l'arborescence des périphériques, sous le bloc fonctionnel. Vous pouvez désormais saisir le code du programme dans la partie implémentation de l'interface et de ses méthodes.

Implémentation d'une interface dans un bloc fonction existant

Exigence : le projet actuellement ouvert possède un bloc fonctionnel (exemple : Pou_im) et au moins un objet d'interface (exemple : ITF1).

  1. Double-cliquez sur le POU dans l'arborescence des appareils POU_Ex(FB).

    L'éditeur de la POU s'ouvre.

  2. Développer l'entrée de ligne supérieure existante FUNCTION_BLOCK POU_Im Avec IMPLEMENTS ITF1.

    Le bloc fonction POU_Im implémente l'interface ITF1.

Mettre à jour une interface

Si vous ajoutez ultérieurement d'autres méthodes et propriétés à une interface déjà définie, les blocs de fonction qui implémentent cette interface sont pas automatiquement étendue pour inclure les nouvelles méthodes. Vous devez mettre à jour manuellement les blocs de fonction qui devraient obtenir une implémentation d'interface.

Pour ce faire, sélectionnez Mettre en œuvre des interfaces commande pour insérer les nouveaux objets.

Pour plus d'informations, consultez les rubriques suivantes : Implémenter des interfaces

Méthodes primordiales

Dans des scénarios avec IMPLEMENTS (interfaces) et EXTENDS (héritage), les méthodes qui ont déjà été déclarées dans l'interface peuvent avoir besoin d'être réimplémentées dans des blocs fonctionnels dérivés afin de les adapter ou de les remplacer.

Pour modifier des méthodes individuelles, sélectionnez Ajouter un objetMéthode commande. La boîte de dialogue s'ouvre avec une liste de toutes les méthodes remplaçables afin que vous puissiez sélectionner la méthode souhaitée qui devrait avoir sa propre implémentation. Cela sera ajouté et vous pourrez compléter la mise en œuvre.

Pour plus d'informations, consultez les rubriques suivantes : Dialogue: Ajouter une méthode