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é.
Travaux préparatoires
Créer un nouveau CODESYS projet du Projet standard avec Application Composer modèle. Sélectionnez
AC_ModuleBasecomme la bibliothèque.
Le module de niveau supérieur
RoomAjoutez 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 laAC.Modulebloc fonctionnel qui est défini dans leAC_ModuleBasebibliothèque. LaAC.ModuleLe bloc fonctionnel fournit déjà de nombreuses méthodes et propriétés qui n'ont pas besoin d'être écrasées.
La déclaration commence par le mot-clé
MODULEsuivi du nom du module et du mot-clé supplémentaireIMPLEMENTED_BY, ainsi que par le bloc fonctionnel qui implémente le module. Plus précisément, ce bloc fonctionnel est leRoombloc fonctionnel qui vient d'être créé. Dans la plupart des cas,MetaDatala 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
Roommodule est le module de niveau supérieur dans notre exemple, vous déclarez leToplevelSection 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.Toplevelsection. Cette tâche estStandard_Taskdans cet exemple. Il est défini comme unMEDIUMtâche et contient leCREATE_IF_MISSINGetUPDATE_IOSdrapeaux.
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, etIcon_32Les 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.TLet un pool d'imagesIPdans le pool POU qui contient les icônes et les textes référencés.Sous-module :
SwitchCréez une déclaration de module et un bloc de fonction correspondant nommé
SwitchCe module n'est pas un module de niveau supérieur et ne nécessite donc pas deToplevelsection. Comme tous les blocs fonctionnels qui représentent des modules, leSwitchle bloc fonctionnel doit également s'étendreAC.modules. De plus,Switchmet en œuvre leISwitchinterface que vous devez également créer. À son tour,ISwitchl'interface s'étendAC.IModulemais 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
IOsection, en utilisant lexInvariable d'entrée de laSwitchbloc 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.tTimerActive 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.tTimeren tant que paramètre du module (Parameterssection). De cette façon, vous pouvez facilement régler l'heure ultérieurement lors de l'utilisation des modules.Vous définissez les variables
xInettTimercomme entrées duSwitchbloc fonctionnel, où vous définissez une valeur initiale de 500 ms pour letTimerparamètre.
Vous devez également étendre la liste de textes et le pool d'images afin d'afficher les descriptions.
Sous-module :
SwitchSimpleLe 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
tTimerLes variables ne sont pas obligatoires. De plus, vous n'implémentez pasISwitchmaisISwitchSimple, qui s'étend égalementAC.IModule.
Sous-module :
LightComme précédemment pour les interrupteurs, pour la lumière, vous devez également créer une déclaration de module
Lightavec leLightbloc fonctionnel etILightinterface.Pour insérer le
Lightmodule sous une pièce, vous devez ajouter leSlotssection à laLightDéclaration de module. Dans cette section, vous déclarez une sous-section.Slot_Multi, que vous appelezLightset qui peut contenir les modules de typeILightLe nombre de lumières qui doivent ou peuvent être ajoutées à une pièce est spécifié parCardinality. Vous définissez également les variablesVariableetVar_Countet les lier à la déclaration du modulepLights(POINTER TO ILight)etuiNumberOfLights (UINT). Cela garantit que seuls les modules dont les blocs fonctionnels implémentent leILightl'interface peut être ajoutée à laLightsfente.
Avec le
Lightmodule, vous définissez également un emplacement pour insérer un commutateur. Par conséquent, vous devez ajouter unSwitchfente pour leLightdéclaration du module. Paramètres supplémentaires duLightmodule sont la vitesse du variateurrSpeedet la luminosité maximaleuiMaxValueEnfin, 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.Lightbloc fonctionnel.
Sous-module :
LightSimpleLe 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
LightSimplebloc fonctionnel qui étendAC.Moduleet met en œuvre les mesures existantesILightinterface. Les différences avec laLightmodule sont les suivants : la sortie doit être de typeBOOLet avoir le nomxSwitchedOn. De plus, lerSpeedle paramètre n'est pas requis.
Mise en œuvre
Pour la mise en œuvre de la fonction pour le
Switchmodule, utilisez leCallPrioMediumStartméthode deAC.Moduleet la remplacer par sa propre implémentation. Cette fonction est sélectionnée carRoomle module de niveau supérieur déclare unMEDIUMtâche. Cela signifie que leCallPrioMediumStartméthode de laSwitchLe 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 variablexPushest VRAI lorsque l'interrupteur est actionné brièvement. Pour les deux variablesxPushLongetxPush, les propriétés sont ajoutées dans les deuxSwitchbloc fonctionnel et l'interface afin qu'ils puissent être utilisés à partir du bloc fonctionnel d'éclairage parent.Aussi le
Lightle bloc fonctionnel remplace leCallPrioMediumStartMé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érSpeedest 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.
Ingénierie
Vous créez l'arborescence du module dans le Modules vue. Pour ce faire, ajoutez d'abord le
Roommodule de niveau supérieur à l'arborescence des modules après l'importation des modules. Dans leLightsemplacement, ajoutez-en unLightet unLightSimpleÀ chacun d'entre eux, attribuez unSwitchou unSwitchSimpleVous 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 Compositeur → Cré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.

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
 TÉLÉCHARGER Projets