CODESYS - the IEC 61131-3 automation software

Welcome to the official CODESYS Forum by 3S-Smart Software Solutions GmbH | A member of the CODESYS Group
Deutsche Version English version russian version 
It is currently Sun Dec 08, 2019 3:36 am

All times are UTC+01:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
PostPosted: Thu Oct 17, 2019 10:03 am 
Offline

Joined: Tue Oct 15, 2019 6:43 pm
Posts: 4
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.

:)


Top
   
PostPosted: Thu Oct 17, 2019 10:22 am 
Offline
Frequent User
Frequent User

Joined: Sun Apr 15, 2007 1:18 am
Posts: 173
Hello Venom1984,
I'm french too, donc je continu en français :D

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


Top
   
PostPosted: Thu Oct 17, 2019 10:37 am 
Offline

Joined: Tue Oct 15, 2019 6:43 pm
Posts: 4
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.


Top
   
PostPosted: Thu Oct 17, 2019 6:00 pm 
Offline
Frequent User
Frequent User

Joined: Sun Apr 15, 2007 1:18 am
Posts: 173
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 :lol:

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. :shock:
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 :D


Top
   
PostPosted: Thu Oct 17, 2019 9:32 pm 
Offline

Joined: Tue Oct 15, 2019 6:43 pm
Posts: 4
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.


Top
   
PostPosted: Thu Oct 17, 2019 9:50 pm 
Offline
Frequent User
Frequent User

Joined: Sun Apr 15, 2007 1:18 am
Posts: 173
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 :D


Top
   
PostPosted: Fri Oct 18, 2019 9:43 am 
Offline

Joined: Tue Oct 15, 2019 6:43 pm
Posts: 4
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


You do not have the required permissions to view the files attached to this post.


Top
   
PostPosted: Fri Oct 18, 2019 10:36 am 
Offline
Frequent User
Frequent User

Joined: Sun Apr 15, 2007 1:18 am
Posts: 173
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 :oops: !!

- 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.
Attachment:
forcage var.jpg


A bientôt


You do not have the required permissions to view the files attached to this post.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 8 posts ] 

All times are UTC+01:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited