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_ModuleBase
comme la bibliothèque.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 laAC.Module
bloc fonctionnel qui est défini dans leAC_ModuleBase
bibliothèque. LaAC.Module
Le 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é
MODULE
suivi 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 leRoom
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 leToplevel
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 estStandard_Task
dans cet exemple. Il est défini comme unMEDIUM
tâche et contient leCREATE_IF_MISSING
etUPDATE_IOS
drapeaux.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_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'imagesIP
dans le pool POU qui contient les icônes et les textes référencés.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 deToplevel
section. Comme tous les blocs fonctionnels qui représentent des modules, leSwitch
le bloc fonctionnel doit également s'étendreAC.modules
. De plus,Switch
met en œuvre leISwitch
interface que vous devez également créer. À son tour,ISwitch
l'interface s'étendAC.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 lexIn
variable d'entrée de laSwitch
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
ettTimer
comme entrées duSwitch
bloc fonctionnel, où vous définissez une valeur initiale de 500 ms pour letTimer
paramètre.Vous devez également étendre la liste de textes et le pool d'images afin d'afficher les descriptions.
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 pasISwitch
maisISwitchSimple
, qui s'étend égalementAC.IModule
.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 leLight
bloc fonctionnel etILight
interface.Pour insérer le
Light
module sous une pièce, vous devez ajouter leSlots
section à laLight
Déclaration de module. Dans cette section, vous déclarez une sous-section.Slot_Multi
, que vous appelezLights
et qui peut contenir les modules de typeILight
Le nombre de lumières qui doivent ou peuvent être ajoutées à une pièce est spécifié parCardinality
. Vous définissez également les variablesVariable
etVar_Count
et les lier à la déclaration du modulepLights(POINTER TO ILight)
etuiNumberOfLights (UINT)
. Cela garantit que seuls les modules dont les blocs fonctionnels implémentent leILight
l'interface peut être ajoutée à laLights
fente.Avec le
Light
module, vous définissez également un emplacement pour insérer un commutateur. Par conséquent, vous devez ajouter unSwitch
fente pour leLight
déclaration du module. Paramètres supplémentaires duLight
module sont la vitesse du variateurrSpeed
et la luminosité maximaleuiMaxValue
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.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 étendAC.Module
et met en œuvre les mesures existantesILight
interface. Les différences avec laLight
module sont les suivants : la sortie doit être de typeBOOL
et avoir le nomxSwitchedOn
. De plus, lerSpeed
le paramètre n'est pas requis.Mise en œuvre
Pour la mise en œuvre de la fonction pour le
Switch
module, utilisez leCallPrioMediumStart
méthode deAC.Module
et la remplacer par sa propre implémentation. Cette fonction est sélectionnée carRoom
le module de niveau supérieur déclare unMEDIUM
tâche. Cela signifie que leCallPrioMediumStart
méthode de laSwitch
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 variablexPush
est VRAI lorsque l'interrupteur est actionné brièvement. Pour les deux variablesxPushLong
etxPush
, les propriétés sont ajoutées dans les deuxSwitch
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 leCallPrioMediumStart
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.
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 leLights
emplacement, ajoutez-en unLight
et unLightSimple
À chacun d'entre eux, attribuez unSwitch
ou unSwitchSimple
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 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