Programmer l'application de contrôle dans le projet
Déclarer les variables globales
Déclarez d'abord les variables que vous souhaitez utiliser dans l'application. Pour ce faire, mettez sous Application une liste de variables globales :
Sélectionnez le
Application
entrez et cliquez dans le menu contextuel. Modifier le nom par défautGVL
àGlob_Var
et cliquez Ajouter pour confirmer.Le
Glob_Var
l'objet est affiché ci-dessousApplication
. L'éditeur GVL s'ouvre à droite de l'arborescence des appareilsLorsque la vue textuelle s'ouvre, elle contient déjà les mots clés
VAR_GLOBAL
etEND_VAR
. Pour notre exemple, cliquez surbouton sur la barre latérale droite de l'éditeur pour activer la vue tabulaire.
Une ligne vide apparaît. Le curseur se trouve dans Nom colonne.
Sélectionnez la commande dans le menu contextuel Insérer.
Un champ de saisie s'ouvre. En même temps, la ligne affiche automatiquement le portée
VAR_GLOBAL
et le Type de donnéesBOOL
inscrit.Spécifiez
rTempActual
dans le Nom champ.Double-cliquez dans le champ de la colonne Type de données.
Maintenant, le champ peut être modifié et le
bouton s'affiche.
Cliquez sur
bouton, puis sélectionnez Assistant de saisie.
Le dialogue aide à la saisie s'ouvre.
Choisissez le type de données
REAL
et cliquez sur le bouton d'accord.Entrez une valeur numérique dans la colonne initialisation un, par exemple
8.0
.
Déclarez les variables suivantes de la même manière :
Nom | Type de données | Initialisation | commenter |
---|---|---|---|
|
|
| Température réelle |
|
|
| Régler la température |
|
|
| État de la porte |
|
|
| Temps de fonctionnement du compresseur après lequel un signal retentit |
|
|
| Temps depuis l'ouverture de la porte après lequel un signal retentit |
|
|
| Signal de commande |
|
|
| Signal de commande |
|
|
| Message d'état |
Créer le programme principal pour la régulation du refroidissement dans l'éditeur CFC
Vous allez maintenant décrire la fonction principale du programme d'application dans PLC_PRG
POU, qui est créé par défaut. Le compresseur est activé et se refroidit lorsque la température réelle est supérieure à la température réglée plus une hystérésis. Le compresseur s'arrête lorsque la température réelle est inférieure à la température réglée moins l'hystérésis
Pour décrire cette fonctionnalité dans le langage d'implémentation CFC, procédez comme suit :
Double-cliquez
PLC_PRG
dans l'arborescence des appareils.L'éditeur CFC s'ouvre dans le
PLC_PRG
onglet. L'éditeur de déclarations apparaît au-dessus de la zone de l'éditeur graphique sous forme de texte ou de tableau. Boîte à outils la vue est sur le côté droit.Dans le Boîte à outils afficher, sélectionnez Entrée élément et faites-le glisser vers l'éditeur CFC situé sous
PLC_PRG
onglet.L'entrée sans nom
???
a été inséré.Dans l'éditeur CFC, cliquez sur
???
à l'entrée, puis cliquez surpour ouvrir l'assistant de saisie. Dans le Variables catégorie, sélectionnez
rTempActual
variable ci-dessous . Voici comment référencer la variable globalerTempActual
ici.Le nom d'entrée est
Glob_Var.rTempActual
.Comme à l'étape 3, créez une autre entrée avec le nom de la variable globale
Glob_Var.rTempSet
.Créez une autre entrée, cliquez sur les trois points d'interrogation
???
et remplacez-le par le nomrHysteresis
.Comme il ne s'agit pas du nom d'une variable déjà connue, la boîte de dialogue apparaît déclarer une variable. Le nom est déjà inclus dans la boîte de dialogue.
Remplissez les champs de la boîte de dialogue déclarer une variable avec le Type de données
REAL
et le valeur d'initialisation1
en dehors. Cliquez sur le bouton d'accord.La variable
rHysteresis
apparaît dans l'éditeur de déclaration.Dans le Boîte à outils afficher, sélectionner Bloquer élément et faites-le glisser vers l'éditeur CFC situé sous PLC PRG onglet.
Le bloc apparaît dans l'éditeur CFC.
Remplacer
???
AvecADD
.Le bloc additionne toutes les entrées qui lui sont connectées.
Connectez l'entrée
Glob_Var.rTempSet
avec le bloc de constructionADD
. Pour ce faire, cliquez sur la broche de sortie de l'entrée et faites-la glisser vers la broche d'entrée supérieure du blocADD
.Connectez l'entrée de la même manière
rHysteresis
avec l'entrée inférieure du blocADD
.Les deux entrées
rHysteresis
etGlob_Var.rTempSet
sont maintenant deADD
ajoutée.Si vous souhaitez déplacer un élément dans l'éditeur, cliquez sur un emplacement libre de l'élément ou sur le cadre pour que l'élément soit sélectionné (cadre rouge, ombré rouge). Maintenez le bouton de la souris enfoncé et faites glisser l'élément jusqu'à la position souhaitée.
Placez un autre bloc de construction à droite du bloc de construction
ADD
au. Il devraitGlob_Var.rTempActual
avec la sommeGlob_Var.rTempSet
+rHysteresis
comparer. Donnez au bloc la fonctionGT
(Plus grand que).la
GT
bloc fonctionne comme suit :IF (oberer Eingang > unterer Eingang) THEN Ausgang := TRUE;
Connectez l'entrée
Glob_Var.rTempActual
avec l'entrée supérieure du blocGT
.Connecter la sortie du bloc
ADD
avec l'entrée inférieure du blocGT
.Utilisez maintenant l'élément de bloc pour créer un bloc fonctionnel à droite du
GT
POU qui démarre et arrête le compresseur en fonction des conditions d'entrée (Set — Reset). Spécifiez le nomSR
dans le???
champ. Appuyez sur la touche Entrée pour fermer le champ de saisie ouvert au-dessus du POU (SR_0
).Le dialogue déclarer une variable apparaît.
Déclarez la variable avec le nom
SR_0
et le type de donnéesSR
. Cliquez sur le bouton d'accord.Le bloc de construction
SR
de la bibliothèqueStandard
est instancié.SR
sert à définir laTHEN
à la sortie du bloc GT. Les entréesSET1
etRESET
apparaître.Connectez la connexion de sortie sur le côté droit du bloc
GT
avec l'entréeSET1
du bloc de constructionSR_0
.SR
peut être une variable booléenne deFALSE
auTRUE
et remettre à nouveau. Si la condition à l'entréeSET1
est vrai, la variable booléenne est activéeTRUE
ensemble. Répond à la conditionRESET
à , la variable est à nouveau réinitialisée. La variable booléenne (globale) est dans notre exempleGlob_Var.xCompressor
.Insérer un élément sortir et affectez-lui la variable globale
Glob_Var.xCompressor
à. Tracez une ligne de liaison entreGlob_Var.xCompressor
et connexion de sortieQ1
à partir deSR
.
Maintenant, vous spécifiez la condition dans laquelle le compresseur doit s'éteindre à nouveau, c'est-à-dire RESET
entrée du bloc SR TRUE
-Signal reçu. Pour ce faire, formulez la condition inverse comme ci-dessus. Utilisez les blocs de construction pour cela SUB
(Soustraire) et LT
(Moins que).
En fin de compte, le plan CFC suivant est créé :

Création d'un bloc de programme pour la gestion des signaux dans l'éditeur de schéma à contacts
Vous implémentez maintenant la gestion des signaux pour la sirène d'alarme et pour l'allumage et l'extinction de la lampe dans un autre module de programme. Le langage d'implémentation Ladder Diagram (LAD) convient pour cela.
Traitez les signaux suivants, chacun dans son propre réseau :
Lorsque le compresseur fonctionne trop longtemps parce que la température est trop élevée, un signal sonore continu retentit.
Si la porte est ouverte trop longtemps, un signal temporisé attire l'attention.
Tant que la porte est ouverte, la lumière est allumée.
Dans l'arborescence des appareils, cliquez avec le bouton droit sur
Application
objet et ajoutez un objet POU de type Programme avec le Échelle (LD2) langage de mise en œuvre.Nommez le programme comme
Signals
.Le
Signals
le programme est répertorié dans l'arborescence des appareils à côté dePLC_PRG
. L'éditeur de diagrammes en échelle s'ouvre dans leSignals
onglet. L'éditeur de déclarations apparaît dans la partie supérieure, le Boîte à outils vue vers la droite. Le diagramme en échelle contient un réseau vide.Créez un programme sur le réseau pour qu'un signal sonore retentisse lorsque le compresseur fonctionne trop longtemps sans atteindre la température spécifiée. Pour ce faire, insérez
TON
minuterie POU dans les prochaines étapes. Il commute un signal booléen enTRUE
après une durée spécifiée.Dans le Boîte à outils afficher, faites glisser le Bloquer élément et déposez-le dans le réseau vide jusqu'à une position d'insertion disponible.
Le bloc est affiché sous la forme d'une boîte avec des entrées et des sorties.
Double-cliquez sur les trois points d'interrogation (
???
) dans le bloc et cliquez sur lesymbole dans l'éditeur de lignes.
Le Assistant de saisie une boîte de dialogue s'ouvre.
Dans le Assistant de saisie boîte de dialogue, dans le Blocs fonctionnels standard catégorie, dans la Norme bibliothèque, sélectionnez
TON
Minuteur et cliquez OK.Maintenant, dans l'éditeur de ligne du bloc, qui affiche le nom du bloc de fonction
TON
, appuyez sur la touche Entrée.Le
TON
Le POU est affiché avec ses entrées et ses sorties.Pour supprimer le
EN
entrée et laENO
sortie, sélectionnez le bloc et cliquez sur le FR/ENO → FR dans le menu contextuel.Maintenant, le bloc n'a plus que le
IN
etPT
entrées et lesQ
etET
sorties.Double-cliquez sur les trois points d'interrogation [? ? ?] directement au-dessus du bloc, entrez
TON_0
comme nom de l'instance, puis appuyez sur la touche Entrée.Vous avez confirmé le nom de l'instance et la boîte de dialogue déclarer une variable s'ouvre.
Confirmez la boîte de dialogue avec d'accord.
Maintenant, inséré
TON
Le POU est instancié avec le nomTON_0
.Programmez le bloc pour qu'il soit activé dès que le compresseur démarre. Faites d'abord glisser le
Contact
élément d'échelle provenant du Boîte à outils vue devant leIN
entrée du bloc. Double-cliquez sur les trois points d'interrogation et cliquez sur l'icône dans l'éditeur de lignes (). Dans l'assistant de saisie, sélectionnez maintenant la variable globale déjà déclarée Compresseur et cliquez OK.
Le nom de la variable
Glob_Var.xCompressor
est affiché au-dessus du contact.Astuce
Lorsque vous commencez à taper un nom de variable à la position d'entrée, vous obtenez toujours automatiquement une liste de toutes les variables dont les noms commencent par les caractères que vous avez tapés et qui peuvent être utilisées à ce stade. Ce support est un défaut dans le CODESYS-Options de codage intelligentes.
Insérez le signal qui doit être activé. Pour ce faire, faites glisser Bobine à partir du Boîte à outils vue, Échelle catégorie, à la
Q
sortie duTON
bloquer. Spécifiez le nomGlob_Var.xSignal
pour la bobine.Définissez la période à partir de l'activation du POU
TON_0
jusqu'à ce que le signal retentisse. Cette définition s'effectue via la variableGlob_Var.timAlarmThreshold
, que vous insérez à cette fin en entréePT
deTON_0
. Pour ce faire, déplacez le pointeur de la souris vers l'extrémité gauche de la broche d'entréePT
. Cliquez sur la zone à bords fins qui s'affiche maintenant à gauche de la broche de saisie et spécifiez le nom de la variableAppuyez sur la touche Entrée.
Le Déclarer automatiquement une boîte de dialogue s'ouvre.
Cliquez OK pour confirmer la boîte de dialogue.
La variable nouvellement déclarée est affichée dans la partie déclaration.
Cliquez avec le bouton droit
TON
POU et cliquez Supprimer les épingles non utilisées dans le menu contextuel.La sortie inutilisée
ET
est retiré.Dans le deuxième réseau du KOP, vous programmez que le signal doit retentir cycliquement si la porte est ouverte trop longtemps.
Utilisez la souris pour faire glisser un Réseau élément du Boîte à outils vue vers le point d'insertion situé sous le Réseau 1.
Un réseau vide avec numéro 2 apparaît.
Comme dans le premier réseau, implémentez un
TON
POU pour une activation du signal contrôlée dans le temps. Cette fois, il est déclenché par la variable globaleGlob_Var.xDoorOpen
à l'entréeIN
. À l'entréePT
, ajoutez la variable globaleGlob_Var.timDoorOpenThreshold
.À partir du
Util
bibliothèque, ajoutez unBLINK
POU à la sortieQ
de laTON
POU sur ce réseau et instanciez-le avec le nomBlink_0
.Le
BLINK_0
POU synchronise le transfert du signalQ
et doncGlob_Var.xSignal
.Tout d'abord, faites glisser deux Contactez éléments du Boîte à outils vue sur
OUT
sortie du POU. Attribuer la variableTON_1.Q
au contact directement après la sortieQ
et la variable globaleGlob_Var.xDoorOpen
au deuxième contact.Ajouter un élément après les deux contacts Évier de cuisine et affectez-lui la variable globale
Glob_Var.xSignal
à.Déclarer la variable locale
timSignalTime : TIME := T#1S;
et ajouter cette variable aux entréesTIMELOW
etTIMEHIGH
un; le temps de cycle est donc de 1 seconde pour chaqueTRUE
et 1 seconde pourFALSE
.Cliquez avec le bouton droit
TON
POU et cliquez Supprimer les épingles non utilisées dans le menu contextuel.La sortie non utilisée
ET
est supprimé.Dans le troisième réseau, programmez pour que la lampe s'allume tant que la porte est ouverte. Ajoutez un réseau supplémentaire et un contact. Attribuer la variable
GlobVar.xDoorOpen
au contact.Le contact inséré mène directement à une bobine. Ajoutez une bobine à droite du contact et attribuez la variable globale
Glob_Var.xLamp
à la bobine.CODESYS traite successivement les réseaux d'un CONT. Pour vous assurer que seul le réseau 1 ou uniquement le réseau 2 est exécuté, ajoutez un saut vers le réseau 3 à la fin du réseau 1 :
When you hover the mouse pointer over the 3rd line in the top left-hand edge of the network, the information <insert jump here> is displayed. Double-click this position and enter DoorIsOpen: as the jump label in the line editor.
Sélectionnez le réseau 1. À partir du Boîte à outils vue, Schéma de l'échelle catégorie, faites glisser le Sauter élément à la position d'insertion marquée d'un triangle devant le
Glob_Var.xSignal
bobine.L'élément de saut apparaît. La cible de saut est toujours incluse
???
spécifié.Double-cliquez sur les trois points d'interrogation [? ? ?] et cliquez sur l'icône dans l'éditeur de ligne (
). Dans le Assistant de saisie boîte de dialogue, sélectionnez
DoorIsOpen
à partir des identificateurs d'étiquette possibles et cliquez sur OK pour confirmer.L'étiquette de saut vers le réseau 3 est implémentée.
Le programme LD ressemble maintenant à ceci :

Appel du programme « Signals » dans le programme principal
Dans notre exemple de programme, le programme principal PLC_PRG
le programme Signals
appel au traitement du signal.
Double-cliquez dans l'arborescence des appareils
PLC_PRG
.Le programme
PLC_PRG
s'ouvre dans le Bloc-notes.Dans le Boîte à outils afficher, faites glisser Bloquer élément destiné à l'éditeur de
PLC_PRG
.Double-cliquez sur les trois points d'interrogation [? ? ?] et cliquez sur
symbole dans l'éditeur de lignes. Dans le Assistant de saisie boîte de dialogue, dans le POU/Appels de programmes et de fonctions catégorie, sélectionnez
Signals
programme et cliquez OK pour confirmer.
Création d'un bloc de programme ST pour une simulation
Étant donné que l'application de cet exemple de projet n'est pas liée à de vrais capteurs et actionneurs, vous écrivez maintenant un programme pour simuler la montée et la chute de la température. Vous pouvez ensuite l'utiliser pour surveiller le fonctionnement de la commande du réfrigérateur en mode en ligne.
Vous créez le programme de simulation en texte structuré.
Le programme augmente la température jusqu'au programme principal PLC_PRG
détermine que la température réglée a été dépassée. Ensuite, le programme active le compresseur. Ensuite, le programme de simulation diminue la température jusqu'à ce que le programme principal désactive à nouveau le compresseur.
Dans l'arborescence des appareils, cliquez avec le bouton droit sur Demande objet et ajoutez un objet POU de type Programme avec le Texte structuré (ST) langage de mise en œuvre. Nommez le POU comme
Simulation
.Implémentez le code suivant dans l'éditeur ST :
Partie déclaration :
PROGRAM Simulation VAR TON_1: TON; //The temperature is decreased on a time delay, when the comepressor has been activated P_Cooling: TIME:=T#500MS; xReduceTemp: BOOL; //Signal for dereasing the temperature TON_2: TON; //The temperature is increased on a time delay P_Environment: TIME:=T#2S; //Delay time when the door is closed P_EnvironmentDoorOpen: TIME:=T#1S; //Delay time when the door is open xRaiseTemp: BOOL; //Signal for increasing the temperature timTemp: TIME; //Delay time iCounter: INT; END_VAR
Partie mise en œuvre :
iCounter := iCounter + 1; // No function, just for demonstration purposes. // After the compressor has been activated due to TempActual being too high, the temperature decreases. // The temperature is decremented by 0.1°C per cycle after a delay of P_Cooling IF Glob_VAR.xCompressor THEN TON_1(IN:= Glob_Var.xCompressor, PT:= P_Cooling, Q=>xReduceTemp); IF xReduceTemp THEN Glob_Var.rTempActual := Glob_Var.rTempActual-0.1; TON_1(IN:=FALSE); END_IF END_IF //If the door is open, the warming occurs faster; SEL selects P_EnvironmentDoorOpen timTemp:=SEL(Glob_Var.xDoorOpen, P_Environment, P_EnvironmentDoorOpen); //If the compressor is not in operation, then the cooling chamber becomes warmer. //The temperature is incremented by 0.1°C per cycle after a delay of tTemp TON_2(IN:= TRUE, PT:= timTemp, Q=>xRaiseTemp); IF xRaiseTemp THEN Glob_Var.rTempActual := Glob_Var.rTempActual + 0.1; TON_2(IN:=FALSE); END_IF
Astuce
L'utilisation d'une visualisation est recommandée pour une commande et une surveillance pratiques de l'ensemble du programme de commande. Dans l'exemple de projet terminé pour ce didacticiel, qui est créé avec le CODESYS-Installation standard (répertoire Projekte
) est fourni est un avec CODESYS Visualisation intégrée. Vous pouvez charger et démarrer ce projet sur le contrôleur pour le voir fonctionner avec la visualisation. Au démarrage, le Live_Visu
a commencé par une représentation du réfrigérateur, qui reflète le fonctionnement du programme de simulation sans que vous ayez à saisir quoi que ce soit. Cependant, vous pouvez ouvrir et fermer la porte en cliquant sur l'interrupteur marche/arrêt, et vous pouvez également régler la présélection de la température à l'aide de l'aiguille sur la commande rotative. Nous n'entrerons pas dans la création de la visualisation dans ce tutoriel. Un tutoriel correspondant dans le cadre de l'aide CODESYS La visualisation est prévue.
Définir les programmes à exécuter dans la configuration de la tâche
La configuration de la tâche par défaut contient l'appel du programme principal PLC_PRG
. Pour notre exemple de projet, vous devez encore appeler le programme Simulation
Ajouter.
Dans l'arborescence des appareils, faites glisser l'entrée
Simulation
avec la sourisMainTask
sous le configuration des tâches.Le programme
Simulation
est inséré dans la configuration de la tâche.Si vous souhaitez afficher la configuration de la tâche, double-cliquez sur l'entrée
MainTask
pour ouvrir le Bloc-notes.Dans le tableau de la partie inférieure de l'éditeur, vous pouvez voir les POU appelées par la tâche :
PLC_PRG
(renseigné par défaut) etSimulation
. Le type d'appel de la tâche est cyclique à des intervalles de 20 millisecondes. En mode connecté, la tâche traitera les deux blocs une fois par cycle.
Définition de "l'application active" pour la communication avec l'automate
Le nom de l'application Application
est dans la fenêtre équipement indiqué en gras. Cela signifie que cette application a été définie comme "l'application active". La communication avec le contrôleur se réfère alors à cette application.
S'il n'y a qu'une seule application dans un projet, elle devient automatiquement l'application active. Si votre application n'est pas encore active, activez-la comme suit :
Clic-droit
Application
et sélectionnez la commande dans le menu contextuel Définir l'application active.L'application Application sera dans la vue équipement maintenant affiché en gras.
Vérification du programme d'application pour les erreurs
Lors de la saisie du code, les instructions CODESYS Vous alerter immédiatement des erreurs de syntaxe avec des gribouillis rouges. Vous pouvez également voir les résultats de la vérification dans la fenêtre de message. Si nécessaire, ouvrez la fenêtre de message avec la commande . Les messages sont affectés à la catégorie de message précompilation affiché. Vous pouvez sélectionner un message et appuyer sur le bouton F4 sauter au code correspondant. D'autres vérifications du programme d'application sont effectuées lorsque l'application est chargée sur le contrôleur.
Vous ne pouvez charger une application sans erreur sur le contrôleur qu'ensuite.