Skip to main content

Extension d'un bloc fonction

Général

L'extension d'un bloc fonction est basée sur le concept d'héritage dans la programmation orientée objet. A cet effet, un bloc fonction dérivé "étend" un bloc fonction de base et reçoit ainsi les propriétés du bloc fonction de base en plus de ses propres propriétés.

L'extension d'un bloc fonction signifie :

  • Le bloc fonction dérivé contient toutes les données et méthodes définies par le bloc fonction de base. Vous pouvez utiliser une instance du bloc fonction de base dans n'importe quel contexte dans lequel CODESYS attend un bloc fonction du type de bloc fonction de base.

  • Le module fonction dérivé peut écraser les méthodes que vous avez définies dans le module fonction de base. Cela signifie : Le bloc fonction dérivé peut définir une méthode avec le même nom, les mêmes entrées et sorties que celles définies par le bloc fonction de base.

    Astuce : Le support suivant est fourni pour cet écrasement des méthodes, actions, propriétés et transitions héritées du bloc de base. Si vous insérez une méthode, une action, etc. sous le bloc de construction dérivé, vous obtenez la boîte de dialogue ajouter un objet une combo avec une sélection des méthodes, actions, etc. utilisées dans le module de base et peut les accepter, pour ensuite les adapter en conséquence.

  • Le bloc fonction dérivé ne doit pas contenir de variable de bloc fonction portant le même nom que celui utilisé par le bloc fonction de base. Le compilateur signale cela comme une erreur.

    La seule exception : si vous utilisez une variable dans le bloc fonctionnel de base comme VAR_TEMP déclaré, le bloc fonction dérivé peut définir une variable portant le même nom. Dans ce cas, le bloc fonction dérivé ne peut plus accéder à la variable du bloc fonction de base.

  • Vous pouvez utiliser les variables et les méthodes du bloc fonction de base dans le cadre du bloc fonction dérivé en utilisant les SUPER- Pointeurs d'adresse directement.

Important

L'héritage multiple n'est pas autorisé.

Exception : un bloc fonction peut implémenter plusieurs interfaces et une interface peut étendre d'autres interfaces.

Extension d'un bloc fonctionnel de base avec un nouveau bloc fonctionnel

Condition : le projet actuellement ouvert possède un bloc fonctionnel de base, par exemple POU_1(FB), qui doit être complété par un nouveau module de fonction.

  1. Sélectionnez l'objet 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_Ex.

  3. Choisir module de fonction.

  4. Choisir Avancée et cliquez sur le bouton _cds_icon_input_assistent.png.

  5. Dans l'aide à la saisie, choisissez dans la catégorie blocs fonctionnels en dessous de Application le POU(FB) qui doit servir de bloc fonctionnel de base, par exemple POU_1 et cliquez d'accord.

  6. En option, vous pouvez en avoir un modificateur d'accès pour le nouveau bloc fonction à partir de la zone de liste déroulante.

  7. Choisissez dans la liste déroulante langage d'implémentation par example Texte structuré (ST) en dehors.

  8. 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_Ex EXTENDS POU_1

    Le bloc fonction POU_Ex étend le bloc fonctionnel de base POU_1.

Extension d'un bloc fonction de base avec un bloc fonction existant

Condition : le projet actuellement ouvert possède un bloc fonctionnel de base, par exemple POU_1(FB), et un autre bloc fonction, par exemple POU_Ex(FB). Le bloc fonction POU_Ex(FB) doit également avoir les propriétés du bloc fonctionnel de base. Cela signifie: POU_Ex(FB) cibler POU_1(FB) étendre.

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

    L'éditeur du bloc fonction s'ouvre.

  2. Développer l'entrée de ligne supérieure existante FUNCTION_BLOCK POU_Ex Avec EXTENDS POU_1.

    Le bloc fonction POU_Ex étend le bloc fonction de base POU_1.

Pour plus d'informations, voir : Implémenter une interface et Étendre une interface

Prise en charge des entrées lors de la génération de POU héritées

Lorsque vous faites de la programmation orientée objet et que vous utilisez l'héritage (EXTENDS mot-clé) des POU, vous pouvez obtenir de l'aide comme suit :

Lorsque vous insérez une action, une propriété, une méthode ou une transition sous un POU dérivé d'un POU de base, le Ajouter … la boîte de dialogue s'ouvre. Ensuite, le champ de saisie du nom s'étend jusqu'à une zone de liste. La zone de liste contient une sélection valide parmi les actions, propriétés, méthodes ou transitions disponibles dans la POU de base. Vous pouvez désormais, par exemple, accepter facilement une méthode de la POU de base, puis l'adapter à la fonction dérivée de la POU.

Méthodes et propriétés avec le modificateur d'accès PRIVATE ne sont pas répertoriés ici car ils ne sont pas non plus hérités. Méthodes et propriétés avec le modificateur d'accès PUBLIC obtient automatiquement un champ de modificateur d'accès vide lors de l'acceptation dans le POU dérivé, ce qui signifie la même chose sur le plan fonctionnel.

Pour plus d'informations, voir : Biens, Méthode, Transition, Action,

Exemple 29. Exemple
_cds_img_input_wizzard_for_blocks.png