Communication balance en RS232 vers M221
Communication balance en RS232 vers M221
Bonjour,
Je dois connecter une balance Sartorius industrielle qui suit le poids du remplissage d'un carton avec un automate M221.
La balance sort un message en ASCII sur 16 carctères.
Sur les 16 carctères, seul 7 caractères sont utiles mais si je récupère chaque caractère sur un mot après je peux gérer.
Mon problème est la récupèration des 16 mots correspondant aux 16 caractères.
En ladder, nous avons essayer la commande "EXCH1 %MW150:16" afin de récupérer les 16 caractères sur les 16 mots de %MW150 à %MW165 mais ce n'est pas sufisant.
Quelqu'un peut il m'aider dans la procédure à suivre.
Cordialement.
Je dois connecter une balance Sartorius industrielle qui suit le poids du remplissage d'un carton avec un automate M221.
La balance sort un message en ASCII sur 16 carctères.
Sur les 16 carctères, seul 7 caractères sont utiles mais si je récupère chaque caractère sur un mot après je peux gérer.
Mon problème est la récupèration des 16 mots correspondant aux 16 caractères.
En ladder, nous avons essayer la commande "EXCH1 %MW150:16" afin de récupérer les 16 caractères sur les 16 mots de %MW150 à %MW165 mais ce n'est pas sufisant.
Quelqu'un peut il m'aider dans la procédure à suivre.
Cordialement.
- Bernardo59
- Mi homme - Mi automate

- Messages : 1054
- Enregistré le : 20 oct. 2015, 05:48
- Localisation : Nimes
- Contact :
Re: Communication balance en RS232 vers M221
Salut,
Un caractère = 8 octet.
Un caractère = 8 octet.
Re: Communication balance en RS232 vers M221
Bonjour,
OK, chaque caractère est sur 8 octets ou sur deux caractères si je le met en hexadécimale.
Mon soucis n'est pas là. Actuellement, je n'arrive pas à récupérer le code Ascii sur mon automate.
Je peux récupérer le code en Ascii ou en hexadécimale, ceci n'est pas un soucis.
J'ai branché la balance sur un ordinateur, je reçois le code Ascii sur l'ordinateur.
exemple : _ +_ *_ *_ *_ *_ 2_ 3_ 5_ 4_ 1_ *_ g_ *_ *_CR_ LF_
Rq : "_" séparation des caractères.
* correspond à des espaces (blanc).
Pour ma part, je dois récupérer principalement les caractères 23541 correspondant au poids effectif sur la balance à un moment t.
Ce poids évolue tout au long du remplissage et nous utilisons la valeur pour notre cycle automatisé.
Cordialement.
AM.
OK, chaque caractère est sur 8 octets ou sur deux caractères si je le met en hexadécimale.
Mon soucis n'est pas là. Actuellement, je n'arrive pas à récupérer le code Ascii sur mon automate.
Je peux récupérer le code en Ascii ou en hexadécimale, ceci n'est pas un soucis.
J'ai branché la balance sur un ordinateur, je reçois le code Ascii sur l'ordinateur.
exemple : _ +_ *_ *_ *_ *_ 2_ 3_ 5_ 4_ 1_ *_ g_ *_ *_CR_ LF_
Rq : "_" séparation des caractères.
* correspond à des espaces (blanc).
Pour ma part, je dois récupérer principalement les caractères 23541 correspondant au poids effectif sur la balance à un moment t.
Ce poids évolue tout au long du remplissage et nous utilisons la valeur pour notre cycle automatisé.
Cordialement.
AM.
- Bernardo59
- Mi homme - Mi automate

- Messages : 1054
- Enregistré le : 20 oct. 2015, 05:48
- Localisation : Nimes
- Contact :
Re: Communication balance en RS232 vers M221
Salut,
As-tu verifié la vitesse, la parité de la carte ???
Tu as quoi comme code erreur sur le mot systeme %SW63 ?
Lequel des bits %S103 et %S104 est à UN ?
Peux tu nous donner une capteur d'ecran de ton programme ?
As-tu verifié la vitesse, la parité de la carte ???
Tu as quoi comme code erreur sur le mot systeme %SW63 ?
Lequel des bits %S103 et %S104 est à UN ?
Peux tu nous donner une capteur d'ecran de ton programme ?
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Communication balance en RS232 vers M221
slts,
sur la conf du port série il faut indiquer les conditions d’arrêt (longueur de la trame soit 16)
sur la conf du port série il faut indiquer les conditions d’arrêt (longueur de la trame soit 16)
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Communication balance en RS232 vers M221
Bonjour,
Nous avons programmé sur l'automate la fonction "%SEND_RECV_MSG0"
Nous désirons entrer nos codes ASCII sur des mots. Actuellement, nous récupérons des chiffres de 4 ou 5 caractères dans des mots de %MW100 à %MW107.
Nous essayons de trouver une logique dans ces chiffres mais il serait plus facile de connaitre le type de conversion que fait le M221.
Cordialement.
AM.
Nous avons programmé sur l'automate la fonction "%SEND_RECV_MSG0"
Nous désirons entrer nos codes ASCII sur des mots. Actuellement, nous récupérons des chiffres de 4 ou 5 caractères dans des mots de %MW100 à %MW107.
Nous essayons de trouver une logique dans ces chiffres mais il serait plus facile de connaitre le type de conversion que fait le M221.
Cordialement.
AM.
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Communication balance en RS232 vers M221
slts,
pour récupérer la valeur du poids ya bien ASCII_TO_INT mais c'est limité à 32768 , si la valeur à récupérer est >32768 ,
il faut faire un traitement pour le faire en 2 fois avec rangement dans un mot double %MD
pour récupérer la valeur du poids ya bien ASCII_TO_INT mais c'est limité à 32768 , si la valeur à récupérer est >32768 ,
il faut faire un traitement pour le faire en 2 fois avec rangement dans un mot double %MD
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Communication balance en RS232 vers M221
Bonjour,
Nous avons fait différentes pesées pour trouver la logique des mots obtenus.
Le stockage se fait sur des mots de %MW100 à %MW107.
Le mot %MW104 correspond au unité et aux dizaines. La donnée 8224 correspond à un caractère vide, la donnée 8240 correspond au caractère zéro (8224=16), la donnée 8241 correspond au caractère un '8240=1) et ainsi de suite pour les unités. la donnée 12592 correspond aux caractères un-zéro, la donnée 12848 correspond aux caractères deux-un (12592+256) et ainsi de suite pour les dizaines.
Le mot %MW103 correspond aux centaines et aux milliers avec la même logique.
Le mot %MW102 correspond aux dizaines de milliers avec la même logique.
A partir de ceci, je peux retrouver la valeur de pesée mais ne peut on pas avoir directement la trame en hexadécimal?
Ci-joint tableau de relevés pour information.
Cordialement.
am.
Nous avons fait différentes pesées pour trouver la logique des mots obtenus.
Le stockage se fait sur des mots de %MW100 à %MW107.
Le mot %MW104 correspond au unité et aux dizaines. La donnée 8224 correspond à un caractère vide, la donnée 8240 correspond au caractère zéro (8224=16), la donnée 8241 correspond au caractère un '8240=1) et ainsi de suite pour les unités. la donnée 12592 correspond aux caractères un-zéro, la donnée 12848 correspond aux caractères deux-un (12592+256) et ainsi de suite pour les dizaines.
Le mot %MW103 correspond aux centaines et aux milliers avec la même logique.
Le mot %MW102 correspond aux dizaines de milliers avec la même logique.
A partir de ceci, je peux retrouver la valeur de pesée mais ne peut on pas avoir directement la trame en hexadécimal?
Ci-joint tableau de relevés pour information.
Cordialement.
am.
Re: Communication balance en RS232 vers M221
Bonjour,
Merci,
Lundi j'essaierai ta solution.
Cela doit marcher car j'ai deux caractères par mot et mon mot maxi est 14649.
Cordialement.
am.
Merci,
Lundi j'essaierai ta solution.
Cela doit marcher car j'ai deux caractères par mot et mon mot maxi est 14649.
Cordialement.
am.
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Communication balance en RS232 vers M221
slts,
Exemple :
%MW0 = « 00 »
%MW1 = « 10 »
%MW2 = « 64 »
%MW3 = « 95 »
Réception de la valeur 00014659 en ASCII sur 8 octets soit 4 mots %MW0 à %MW3
(*programme*)
%MW10 :=16#3030 (* Écrêtage à 00 999 999 *)
%MW11 :=%MW1 AND 16#3130 (* Écrêtage à 00 019 999 *)
%MW12 :=%MW2
%MW13 :=%MW3
résultat de la Conversion (%MW14=14659)
%MW14 :=ASCII_TO_INT(%MW10)
Exemple :
%MW0 = « 00 »
%MW1 = « 10 »
%MW2 = « 64 »
%MW3 = « 95 »
Réception de la valeur 00014659 en ASCII sur 8 octets soit 4 mots %MW0 à %MW3
(*programme*)
%MW10 :=16#3030 (* Écrêtage à 00 999 999 *)
%MW11 :=%MW1 AND 16#3130 (* Écrêtage à 00 019 999 *)
%MW12 :=%MW2
%MW13 :=%MW3
résultat de la Conversion (%MW14=14659)
%MW14 :=ASCII_TO_INT(%MW10)
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
