Skip to main content

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 :

  1. Sélectionnez le Application entrez et cliquez Ajouter un objet → Liste globale des variables dans le menu contextuel. Modifier le nom par défaut GVL à Glob_Var et cliquez Ajouter pour confirmer.

    Le _cds_icon_gvl.png Glob_Var l'objet est affiché ci-dessous _cds_icon_application.png Application. L'éditeur GVL s'ouvre à droite de l'arborescence des appareils

  2. Lorsque la vue textuelle s'ouvre, elle contient déjà les mots clés VAR_GLOBAL et END_VAR. Pour notre exemple, cliquez sur _cds_img_button_decl_editor_tabular.png bouton 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.

  3. 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éeVAR_GLOBAL et le Type de donnéesBOOL inscrit.

  4. Spécifiez rTempActual dans le Nom champ.

  5. Double-cliquez dans le champ de la colonne Type de données.

    Maintenant, le champ peut être modifié et le cds_icon_open_input_asisstant.png bouton s'affiche.

  6. Cliquez sur cds_icon_open_input_asisstant.png bouton, puis sélectionnez Assistant de saisie.

    Le dialogue aide à la saisie s'ouvre.

  7. Choisissez le type de données REAL et cliquez sur le bouton d'accord.

  8. 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

rTempActual

REAL

8.0

Température réelle

rTempSet

REAL

8.0

Régler la température

xDoorOpen

BOOL

FALSE

État de la porte

timAlarmThreshold

TIME

T#30S

Temps de fonctionnement du compresseur après lequel un signal retentit

timDoorOpenThreshold

TIME

T#10S

Temps depuis l'ouverture de la porte après lequel un signal retentit

xCompressor

BOOL

FALSE

Signal de commande

xSignal

BOOL

FALSE

Signal de commande

xLamp

BOOL

FALSE

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 :

  1. 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.

  2. 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é.

  3. Dans l'éditeur CFC, cliquez sur ??? à l'entrée, puis cliquez sur _cds_icon_input_assistent.png pour ouvrir l'assistant de saisie. Dans le Variables catégorie, sélectionnez rTempActual variable ci-dessous Candidature → Glob_Var. Voici comment référencer la variable globale rTempActual ici.

    Le nom d'entrée est Glob_Var.rTempActual.

  4. Comme à l'étape 3, créez une autre entrée avec le nom de la variable globale Glob_Var.rTempSet.

  5. Créez une autre entrée, cliquez sur les trois points d'interrogation ??? et remplacez-le par le nom rHysteresis.

    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.

  6. Remplissez les champs de la boîte de dialogue déclarer une variable avec le Type de donnéesREAL et le valeur d'initialisation1 en dehors. Cliquez sur le bouton d'accord.

    La variable rHysteresis apparaît dans l'éditeur de déclaration.

  7. 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.

  8. Remplacer ??? Avec ADD.

    Le bloc additionne toutes les entrées qui lui sont connectées.

  9. Connectez l'entrée Glob_Var.rTempSet avec le bloc de construction ADD. 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 bloc ADD.

  10. Connectez l'entrée de la même manière rHysteresis avec l'entrée inférieure du bloc ADD.

    Les deux entrées rHysteresis et Glob_Var.rTempSet sont maintenant de ADD ajoutée.

  11. 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.

  12. Placez un autre bloc de construction à droite du bloc de construction ADD au. Il devrait Glob_Var.rTempActual avec la somme Glob_Var.rTempSet + rHysteresis comparer. Donnez au bloc la fonction GT (Plus grand que).

    la GTbloc fonctionne comme suit : IF (oberer Eingang > unterer Eingang) THEN Ausgang := TRUE;

  13. Connectez l'entrée Glob_Var.rTempActual avec l'entrée supérieure du bloc GT.

  14. Connecter la sortie du bloc ADD avec l'entrée inférieure du bloc GT.

  15. 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 nom SR 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.

  16. Déclarez la variable avec le nom SR_0 et le type de données SR. Cliquez sur le bouton d'accord.

    Le bloc de construction SR de la bibliothèque Standard est instancié. SR sert à définir la THEN à la sortie du bloc GT. Les entrées SET1 et RESET apparaître.

  17. Connectez la connexion de sortie sur le côté droit du bloc GT avec l'entrée SET1 du bloc de construction SR_0.

    SR peut être une variable booléenne de FALSE au TRUE et remettre à nouveau. Si la condition à l'entrée SET1 est vrai, la variable booléenne est activée TRUE ensemble. Répond à la condition RESET à , la variable est à nouveau réinitialisée. La variable booléenne (globale) est dans notre exemple Glob_Var.xCompressor.

  18. Insérer un élément sortir et affectez-lui la variable globale Glob_Var.xCompressor à. Tracez une ligne de liaison entre Glob_Var.xCompressor et connexion de sortie Q1 à partir de SR.

Maintenant, vous spécifiez la condition dans laquelle le compresseur doit s'éteindre à nouveau, c'est-à-dire RESETentré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éé :

_cds_img_tutorial_refrigerator_plcprg_cfc_diagram.png

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.

  1. 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é de PLC_PRG. L'éditeur de diagrammes en échelle s'ouvre dans le Signals 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.

  2. 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 en TRUE après une durée spécifiée.

  3. 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.

  4. Double-cliquez sur les trois points d'interrogation (???) dans le bloc et cliquez sur le _ld_icon_input_assistant.png symbole dans l'éditeur de lignes.

    Le Assistant de saisie une boîte de dialogue s'ouvre.

  5. 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.

  6. 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.

  7. Pour supprimer le EN entrée et la ENO sortie, sélectionnez le bloc et cliquez sur le FR/ENOFR dans le menu contextuel.

    Maintenant, le bloc n'a plus que le IN et PT entrées et les Q et ET sorties.

  8. 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.

  9. Confirmez la boîte de dialogue avec d'accord.

    Maintenant, inséré TON Le POU est instancié avec le nom TON_0.

  10. 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 le IN entrée du bloc. Double-cliquez sur les trois points d'interrogation et cliquez sur l'icône dans l'éditeur de lignes (_ld_icon_input_assistant.png). 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.

  11. 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 du TON bloquer. Spécifiez le nom Glob_Var.xSignal pour la bobine.

  12. 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 variable Glob_Var.timAlarmThreshold, que vous insérez à cette fin en entrée PT de TON_0. Pour ce faire, déplacez le pointeur de la souris vers l'extrémité gauche de la broche d'entrée PT. Cliquez sur la zone à bords fins qui s'affiche maintenant à gauche de la broche de saisie et spécifiez le nom de la variable

  13. Appuyez sur la touche Entrée.

    Le Déclarer automatiquement une boîte de dialogue s'ouvre.

  14. Cliquez OK pour confirmer la boîte de dialogue.

    La variable nouvellement déclarée est affichée dans la partie déclaration.

  15. 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é.

  16. 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.

  17. 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 globale Glob_Var.xDoorOpen à l'entrée IN. À l'entrée PT, ajoutez la variable globale Glob_Var.timDoorOpenThreshold.

  18. À partir du Util bibliothèque, ajoutez un BLINK POU à la sortie Q de la TON POU sur ce réseau et instanciez-le avec le nom Blink_0.

  19. Le BLINK_0 POU synchronise le transfert du signal Q et donc Glob_Var.xSignal.

    Tout d'abord, faites glisser deux Contactez éléments du Boîte à outils vue sur OUT sortie du POU. Attribuer la variable TON_1.Q au contact directement après la sortie Q et la variable globale Glob_Var.xDoorOpen au deuxième contact.

  20. Ajouter un élément après les deux contacts Évier de cuisine et affectez-lui la variable globale Glob_Var.xSignal à.

  21. Déclarer la variable locale timSignalTime : TIME := T#1S; et ajouter cette variable aux entrées TIMELOW et TIMEHIGH un; le temps de cycle est donc de 1 seconde pour chaque TRUE et 1 seconde pour FALSE.

  22. 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é.

  23. 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.

  24. 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.

  25. 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é.

  26. Double-cliquez sur les trois points d'interrogation [? ? ?] et cliquez sur l'icône dans l'éditeur de ligne (_ld_icon_input_assistant.png). 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 :

_cds_img_first_cds_program_ld_signals.png

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.

  1. Double-cliquez dans l'arborescence des appareils PLC_PRG.

    Le programme PLC_PRG s'ouvre dans le Bloc-notes.

  2. Dans le Boîte à outils afficher, faites glisser Bloquer élément destiné à l'éditeur de PLC_PRG.

  3. Double-cliquez sur les trois points d'interrogation [? ? ?] et cliquez sur _ld_icon_input_assistant.png 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.

  1. 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.

  2. 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.

  1. Dans l'arborescence des appareils, faites glisser l'entrée Simulation avec la souris MainTask sous le configuration des tâches.

    Le programme Simulation est inséré dans la configuration de la tâche.

  2. Si vous souhaitez afficher la configuration de la tâche, double-cliquez sur l'entrée MainTaskpour 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) et Simulation. 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 Affichage → Messages. 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.