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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
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.
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.
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
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.
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
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
FbPIDController.pdf [73.08 KiB]
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 !!
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