Skip to main content

Implémenter une interface

Implémenter une interface

L'implémentation des interfaces est basée sur le concept de programmation orientée objet. Vous pouvez également utiliser des blocs fonctionnels différents mais similaires de la même manière via des interfaces communes.

Un bloc fonctionnel qui implémente une interface doit contenir toutes les méthodes et propriétés définies dans cette interface (méthodes d'interface et propriétés d'interface). Cela signifie : le nom, les entrées et les sorties de la méthode ou de la propriété respective doivent être exactement les mêmes.

Lorsque vous créez un nouveau module fonction qui implémente une interface, ajoute CODESYS entre automatiquement toutes les méthodes et propriétés de cette interface sous le nouveau module de fonction dans l'arborescence.

Important

Après cela, si vous ajoutez plus de méthodes à l'interface, ajoute CODESYS ces méthodes ne sont pas automatiquement ajoutées aux modules fonction concernés. Pour la mise à jour, vous devez explicitement utiliser la commande implémenter des interfaces choisir.

Dans le cas de blocs fonctionnels dérivés, vous devez vous assurer que les méthodes ou propriétés qui ont été adoptées par "héritage" d'une interface reçoivent l'implémentation souhaitée ou sont supprimées si l'implémentation dans la base doit être utilisée. Vous recevrez des messages d'erreur de traduction ou des avertissements correspondants, provoqués par des attributs de pragma insérés automatiquement. Veuillez consulter la page d'aide de la commande implémenter des interfaces.

Important

  • Vous devez affecter l'interface d'un bloc fonction à une variable du type d'une interface avant qu'une méthode puisse être appelée via la variable.

  • Une variable de type interface est toujours une référence de l'instance de bloc fonction affectée.

Une variable de type interface est une référence à des instances de blocs fonctionnels. Une telle variable peut faire référence à n'importe quel bloc fonctionnel qui implémente l'interface. Si aucune affectation n'a été faite à la variable, alors la variable contient la valeur en mode connecté 0.

Exemple 30. exemples

L'interface I1 contient la méthode GetName.

METHOD GetName : STRING

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

FUNCTION_BLOCK A IMPLEMENTS I1
FUNCTION_BLOCK B IMPLEMENTS I1

Les deux modules fonction doivent donc avoir une méthode avec le nom GetName et le type de retour STRING contenir. Sinon, le compilateur signale une erreur.

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

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

  1. sélectionner Application dans l'arborescence des appareils et sélectionnez la commande de menu Projet → Ajouter un objet → POU.

    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. Choisir bloc fonction.

  4. Choisir mis en œuvre et cliquez sur le bouton _cds_icon_input_assistent.png.

  5. Dans l'aide à la saisie, choisissez dans la catégorie interfaces l'interface par exemple ITF1 et cliquez d'accord.

  6. Pour ajouter une autre interface, cliquez à nouveau _cds_icon_input_assistent.png et sélectionnez une autre interface.

  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. Choisissez dans la liste déroulante langage d'implémentation par example Texte structuré (ST) en dehors.

  9. cliquer sur Ajouter à.

    CODESYS ajoute le bloc fonction POU_Ex dans l'arborescence des appareils et l'éditeur s'ouvre. La première ligne dit :

    FUNCTION_BLOCK POU_Im IMPLEMENTS ITF1

    L'interface et ses méthodes et propriétés sont maintenant insérées dans l'arborescence des appareils sous le bloc fonction et vous pouvez maintenant 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

Condition : le projet actuellement ouvert possède un bloc fonctionnel, par exemple POU_Im et au moins un objet d'interface, par 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.