Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

First steps on codessys v2.3

Venom1984
2019-10-17
2019-10-18
  • Venom1984 - 2019-10-17

    Hello everyone,

    I am en HVAC engineer in France and i'm working for the first time on PLC.
    We have bought a WAGO 750-891 with a pt100 input module 750-463,
    and a dc 0-10v analog output.

    I've successfully created a program using CFC and it works as long as I am not declaring any varibales.
    Declaring digital input/output seems to work but declaring anlog input/output don't work.
    My variables are all boolean or real and I don't konw which type of variable to use, what kind of signal i'm really receiving from the i/o module (real, int, ohm, scaling?) how to store variable in the memory and what type of variable is.

    So if a kind hearted could take some time to explain this to me, It would be very helpfull.
    By the way, I'm not a native English speaker so excuse me if I've made mistakes.

    Thanks a lot.

     
  • JAPIB

    JAPIB - 2019-10-17

    Hello Venom1984,
    I'm french too, donc je continu en français

    Un petit tour de Google m'a permis de trouver ceci :
    https://www.wago.com/fr/syst%C3%A8mes-i ... /p/750-463
    où tu pourras récupérer la doc technique de la carte input module 750-463 (4-AI-RTD-30-C-150-C.pdf).

    Je n'ai pas eu le temps de tout lire, mais en général les entrées ana sot lues dans des mots de 16 bits (type INT), exemple de la page 29 de la doc.

    Bon courage.

     
  • Venom1984 - 2019-10-17

    Bonjour,

    Merci beaucoup. Donc il me suffit de mettre a l'échelle l'INT en fonction de la plage de la pt100.
    Et j'imagine que l'inverse est vrai pour les sorties analogiques 0-10V ?

    Par contre, comment stocker des variables REAL dans la mémoire de l'automate?.

    Merci infiniment.

     
  • JAPIB

    JAPIB - 2019-10-17

    Re bonjour,

    Un petit tour de Google plus tard, on trouve la doc de l'API, Controller-Modbus-TCP-G4-2ETH.pdf.

    Page 95 de cette doc, on trouve la zone mémoire interne, Flags.
    Avec CoDeSys une variable REAL est une variable de 32 bits.

    Petit rappel des principes de base de CoDeSys :
    2 possibilités pour nommer une variable :
    Créer une variable sans adresse mémoire spécifique (le système se débrouille pour la stocker dans une zone mémoire .
    exemples :
    Var1:BOOL;
    V&r2:INT;
    Var3:REAL;
    Il vaut mieux donner aux variables des noms plus parlants que var1, var2, ;;; bien sur

    Créer une variable avec une adresse mémoire mémoire spécifique :
    exemples avec des mémoires internes, même systèmes avec les I/O :
    Var1 AT %M0.0:BOOL;
    V&r2 AT %MW2:INT;
    Var3 At %MD20:REAL;

    Attention aussi au chevauchement des zones mémoires.
    Avec Codesys, les bits/octets/mots/mots doubles sont en réalité une seule zone mémoire.
    Page 95, par exemple, on voit que les bits %M11.0 à %M11.15, font partie du mot %MW11, et aussi du poids fort de %MD5.

    En espérant avoir été lisible

     
  • Venom1984 - 2019-10-17

    Bonsoir,

    Merci pour votre retour. Je fais beaucoup de recherche sur Google
    mais je ne fais jamais de recherche sur le manuel de contrôleur.

    J'ai une dernière question à vous poser. J'ai créer une variable structure
    comprenant une série de paramètre. J'arrive à appeler cette variable et
    et en mode simulation les valeurs par défaut fonctionne mais impossible de
    les forcer. Le but étant de pouvoir les intégrer à un IHM pour que l'utilisateur
    puisse modifier les valeurs selon les besoins du procèdes.

    Comment puis-je faire pour réaliser cela en language CFC.

    Merci pour votre précieuse aide et pour votre patience.

     
  • JAPIB

    JAPIB - 2019-10-17

    Bonsoir,
    Comment avez vous déclaré et utilisé cette structure ?
    Une copie d'écran m'aiderais à vous répondre.
    Concernant le forçage, est ce par programme ou par les commandes d'écriture/forçage des variables ?

    A bientôt

     
  • Venom1984 - 2019-10-18

    Bonjour,

    La fonction utilisée est une fonction métier FbPIDController dont une des
    variables s'appelle typConfigPIDController (variable structure). J'i déclarer une variable typConfigPIDController1
    de type typConfigPIDController et je souhaiterais pouvoir ecrire depuis un IHM dans chaque sous variable de la structure.

    Merci beaucoup

    IMG: structure wago.jpg

    FbPIDController.pdf [73.08 KiB]

     
  • JAPIB

    JAPIB - 2019-10-18

    Bonjour;

    Une idée :
    La variable " typConfigPIDController1" déclarée dans le programme "hvac" est une variable locale (puisque déclarée dans un module programme !).
    Les variables locales déclarées entre VAR et END_VAR ne peuvent être modifiées, par programme, que par le programme dans lequel elles sont déclarées
    Elles ne peuvent être que lues par un module extérieur à condition de les nommer avec le nom du module dans lequel elles sont déclarées, par exemple on peut lire :
    hvac.typConfigPIDController1.xDummy.


    Rappel : Dans un module programme on peut déclarer des variables de plusieurs types
    VAR_INPUT
    variables accessibles en écriture depuis l'extérieur
    END_VAR
    VAR
    variables accessibles en lecture de l'extérieur, mais en écriture que de l'intérieur
    END_VAR
    VAR_OUTPUT
    variables accessibles en lecture de l'extérieur
    END_VAR


    Si on veut pouvoir modifier ces variables de l'extérieur, il faut :
    - soit les déclarer en locale de type Entrée, c'est à dire entre VAR_INPUT et END_VAR. Et ensuite on y accède avec le nom du module programme.
    ceci peut être assez lourd à écrire et à relire, surtout si on à mis des noms très longs !!

    • soit les déclarer comme variables globales (Onglet "Ressources" - variables globales).
      A partir de là tous les modules programmes ont accès en lecture/écriture aux variables déclarées.
      cette solution paraît plus simple, ça évite de se "trimbaler" les noms de programmes.
      On peut créer plusieurs listes de variables globales pour mieux trier ses variables.

    Sinon on peut toujours forer une variable "à la main". Plusisurs doube clic font apparaître pour un BOOL, les différentes valeurs (TRUE, FALSE, rien) ou une boite de dialogue pour saisir une valeur numérique, puis ensuie dans le menu en Ligne on Ecrit les valeurs (modification temporaire) ou on Force les valeurs (forçage réel).
    on peut préparer plusieurs valeurs pour les modifier en même temps.

    A bientôt

    IMG: forcage var.jpg

     

Log in to post a comment.