Skip to main content

Exemple : Premiers pas

Produit: CODESYS Application Composer

Cet exemple montre comment commencer à créer et à utiliser des modules pour le CODESYS Application Composer Pour cela, vous créerez une pièce avec des lumières et des interrupteurs.

Description

Dans cet exemple, un court scénario d'automatisation de bâtiment est mis en œuvre : équiper une pièce de lumières et d'interrupteurs correspondants. Ces interrupteurs peuvent également servir de variateurs. Par conséquent, les lumières doivent également prendre en charge différents niveaux de luminosité.

  1. Travaux préparatoires

    Créer un nouveau CODESYS projet du Projet standard avec Application Composer modèle. Sélectionnez AC_ModuleBase comme la bibliothèque.

    _ex_ac_img_first_steps1.png
  2. Le module de niveau supérieur Room

    Ajoutez une nouvelle déclaration de module au pool de POU du projet. Attribuez-lui un nom. Room à la déclaration du module et au bloc fonctionnel associé. Le bloc fonctionnel doit également étendre la AC.Module bloc fonctionnel qui est défini dans le AC_ModuleBase bibliothèque. La AC.Module Le bloc fonctionnel fournit déjà de nombreuses méthodes et propriétés qui n'ont pas besoin d'être écrasées.

    _ex_ac_img_first_steps2.png

    La déclaration commence par le mot-clé MODULE suivi du nom du module et du mot-clé supplémentaire IMPLEMENTED_BY, ainsi que par le bloc fonctionnel qui implémente le module. Plus précisément, ce bloc fonctionnel est le Room bloc fonctionnel qui vient d'être créé. Dans la plupart des cas, MetaData la section est maintenant déclarée.

    Pour des informations détaillées sur tous les paramètres et sections, voir : Éditeur de modules.

    Parce que le Room module est le module de niveau supérieur dans notre exemple, vous déclarez le Toplevel Section suivante. Dans cette section, vous définissez un nom pour la liste de variables globales contenant le nom d'instance du bloc fonctionnel de niveau supérieur après sa génération. Ensuite, vous devez définir au moins une tâche supplémentaire dans la liste. Toplevel section. Cette tâche est Standard_Task dans cet exemple. Il est défini comme un MEDIUM tâche et contient le CREATE_IF_MISSING et UPDATE_IOS drapeaux.

    _ex_ac_img_first_steps3.png

    Toutes les icônes et chaînes qui sont utilisées comme espaces réservés pour les descriptions et les icônes (Desc, Icon_16, et Icon_32 Les paramètres doivent être référencés dans les listes de textes et les pools d'images. Pour cette raison, vous créez une liste de textes correspondante. TL et un pool d'images IP dans le pool POU qui contient les icônes et les textes référencés.

  3. Sous-module : Switch

    Créez une déclaration de module et un bloc de fonction correspondant nommé Switch Ce module n'est pas un module de niveau supérieur et ne nécessite donc pas de Toplevel section. Comme tous les blocs fonctionnels qui représentent des modules, le Switch le bloc fonctionnel doit également s'étendre AC.modules. De plus, Switch met en œuvre le ISwitch interface que vous devez également créer. À son tour, ISwitch l'interface s'étend AC.IModule mais n'y ajoute aucune nouvelle méthode ou propriété.

    De plus, l'interrupteur nécessite un signal d'entrée pour reconnaître lorsqu'il est enfoncé. Ce signal est déclaré dans le IO section, en utilisant le xIn variable d'entrée de la Switch bloc fonctionnel. De plus, un temps de référence est nécessaire pour distinguer les deux fonctions de l'interrupteur : appuyer sur l'interrupteur pendant la durée indiquée. tTimer Active la fonction de variation d'intensité lumineuse ; une pression brève allume ou éteint la lumière. Vous définissez la variable d'entrée. tTimer en tant que paramètre du module (Parameters section). De cette façon, vous pouvez facilement régler l'heure ultérieurement lors de l'utilisation des modules.

    Vous définissez les variables xIn et tTimer comme entrées du Switch bloc fonctionnel, où vous définissez une valeur initiale de 500 ms pour le tTimer paramètre.

    _ex_ac_img_first_steps4.png

    Vous devez également étendre la liste de textes et le pool d'images afin d'afficher les descriptions.

  4. Sous-module : SwitchSimple

    Le deuxième module de commutation que vous créez est un commutateur simple à deux états : activé et désactivé. Pour ce faire, vous devez créer une déclaration de module et un bloc fonctionnel qui ne diffèrent du commutateur existant que sur les points suivants : le paramètre et le tTimer Les variables ne sont pas obligatoires. De plus, vous n'implémentez pas ISwitch mais ISwitchSimple, qui s'étend également AC.IModule.

    _ex_ac_img_first_steps5.png
  5. Sous-module : Light

    Comme précédemment pour les interrupteurs, pour la lumière, vous devez également créer une déclaration de module Light avec le Light bloc fonctionnel et ILight interface.

    Pour insérer le Light module sous une pièce, vous devez ajouter le Slots section à la Light Déclaration de module. Dans cette section, vous déclarez une sous-section. Slot_Multi, que vous appelez Lights et qui peut contenir les modules de type ILight Le nombre de lumières qui doivent ou peuvent être ajoutées à une pièce est spécifié par Cardinality. Vous définissez également les variables Variable et Var_Count et les lier à la déclaration du module pLights(POINTER TO ILight) et uiNumberOfLights (UINT). Cela garantit que seuls les modules dont les blocs fonctionnels implémentent le ILight l'interface peut être ajoutée à la Lights fente.

    _ex_ac_img_first_steps6.png

    Avec le Light module, vous définissez également un emplacement pour insérer un commutateur. Par conséquent, vous devez ajouter un Switch fente pour le Light déclaration du module. Paramètres supplémentaires du Light module sont la vitesse du variateur rSpeed et la luminosité maximale uiMaxValue Enfin, vous devez définir une sortie représentant la luminosité de la lumière. Vous devez ajouter tous les paramètres, emplacements et sorties, ainsi que les variables correspondantes. Light bloc fonctionnel.

    _ex_ac_img_first_steps7.png
  6. Sous-module : LightSimple

    Le dernier module que vous créez est une lumière simplifiée fonctionnant avec un interrupteur simple. Pour cela, vous avez besoin d'une déclaration de module et d'un LightSimple bloc fonctionnel qui étend AC.Module et met en œuvre les mesures existantes ILight interface. Les différences avec la Light module sont les suivants : la sortie doit être de type BOOL et avoir le nom xSwitchedOn. De plus, le rSpeed le paramètre n'est pas requis.

    _ex_ac_img_first_steps8.png
  7. Mise en œuvre

    Pour la mise en œuvre de la fonction pour le Switch module, utilisez le CallPrioMediumStart méthode de AC.Module et la remplacer par sa propre implémentation. Cette fonction est sélectionnée car Room le module de niveau supérieur déclare un MEDIUM tâche. Cela signifie que le CallPrioMediumStart méthode de la Switch Le bloc fonctionnel est automatiquement appelé à chaque cycle de la tâche. Cependant, la principale fonction de l'interrupteur est de différencier l'allumage/extinction de la variation d'intensité lumineuse. Après avoir appuyé sur l'interrupteur, une minuterie démarre avec une durée prédéfinie par l'utilisateur. Une fois la minuterie écoulée et l'interrupteur toujours enfoncé, la fonction de variation d'intensité lumineuse est appliquée, représentée par la variable. xPushLong. La variable xPush est VRAI lorsque l'interrupteur est actionné brièvement. Pour les deux variables xPushLong et xPush, les propriétés sont ajoutées dans les deux Switch bloc fonctionnel et l'interface afin qu'ils puissent être utilisés à partir du bloc fonctionnel d'éclairage parent.

    Aussi le Light le bloc fonctionnel remplace le CallPrioMediumStart Méthode. Selon la valeur des variables d'entrée respectives, la lumière est soit atténuée, soit simplement allumée/éteinte. Pour le variateur, la valeur de vitesse du paramètre déclaré rSpeed est utilisé. Une fois la valeur de gradation maximale ou minimale atteinte, la gradation s'arrête. Si la lumière est atténuée et que l'interrupteur est enfoncé, la lumière s'allume.

    Vous pouvez voir une implémentation possible dans l'exemple de projet.

  8. Ingénierie

    Vous créez l'arborescence du module dans le Modules vue. Pour ce faire, ajoutez d'abord le Room module de niveau supérieur à l'arborescence des modules après l'importation des modules. Dans le Lights emplacement, ajoutez-en un Light et un LightSimple À chacun d'entre eux, attribuez un Switch ou un SwitchSimple Vous pouvez ensuite définir les paramètres et les E/S des instances du module. À des fins de test, il est conseillé de lier les entrées et sorties à des variables d'une liste de variables globales.

    Enfin, utilisez le CompositeurCréer Commande pour créer le projet. Après le téléchargement sur un appareil, vous pouvez tester l'exemple comme vous le souhaitez. Vous pouvez également modifier la disposition de la pièce sans avoir à modifier le code ni les modules. Vous pouvez également modifier les valeurs des paramètres d'instance du module et vérifier leurs effets. Les valeurs des paramètres peuvent être modifiées en ligne et hors ligne.

    _ex_ac_img_first_steps9.png

Configuration système requise et restrictions

Système de programmation

CODESYS Development System (version 3.5.17.0 ou supérieure)

Système d'exécution

CODESYS Control Win (version 3.5.17.0)

Composants complémentaires

CODESYS Application Composer

Avis

_example_icon.png TÉLÉCHARGER Projets