[RESOLU] M221 chaine de caractères

Forum traitant des automates industriels de marque Schneider - Telemecanique
Avatar du membre
Allan
Code sa première boucle
Code sa première boucle
Messages : 19
Enregistré le : 16 nov. 2016, 19:28

[RESOLU] M221 chaine de caractères

Message par Allan »

Bonjour à tous ,

Je suis en train de mettre en service une liaison série ASCII d'un équipement de contrôle vers un contrôleur M221.
La liaison série entre l'équipement et le M221 fonctionne, cependant je reçois la trame ASCII dans 4 mots et je souhaiterai pouvoir les regrouper dans un seul mot afin de pouvoir les exploiter dans mon process. N'ayant jamais travaillé avec ce genre de trame, pouvez vous m'éclairer sur ce sujet

Merci
Modifié en dernier par Allan le 21 nov. 2016, 18:45, modifié 1 fois.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7803
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: M221 chaine de caractères

Message par itasoft »

slts,
c'est bien mais que esque tu reçois sur ces 4 mots exactement ?????????????
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
Allan
Code sa première boucle
Code sa première boucle
Messages : 19
Enregistré le : 16 nov. 2016, 19:28

Re: M221 chaine de caractères

Message par Allan »

La valeur que je souhaite pouvoir récupérer serais par exemple 1.1415
Elle se décompose ainsi dans la table d'animation en format d'affichage ASCII:
MW1 : 1.
MW2 : 14
MW3 : 1
MW4 : 5
Avatar du membre
JC87
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2230
Enregistré le : 20 oct. 2015, 13:00
Localisation : Nouvelle Aquitaine

Re: M221 chaine de caractères

Message par JC87 »

Bonjour,

Il faut récupérer les valeurs de poids faible et fort de chaque mots, convertir ces octets en flottant puis multiplier chaque chiffre par la puissance de 10 correspondante et additionner le tout. Du style : ma valeur en réel = mon premier chiffre en réel + mon deuxième chiffre en réel x 0.01 + mon troisième chiffre en réel x 0.001 etc. En Somachine basic ce doit être assez chiant a faire mais je pense que c'est possible.

JC
"On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
Avatar du membre
Allan
Code sa première boucle
Code sa première boucle
Messages : 19
Enregistré le : 16 nov. 2016, 19:28

Re: M221 chaine de caractères

Message par Allan »

Bonjour,

J'ai converti mes valeurs venant de la ligne série ACSII en flottant , pour une valeur de l'équpement 05.865 voici le résultat dans mes 4 mots flottant
MF 20 = 0,568
MF 22 = 0,568
MF 24 = 68
MF 26 = 5

De ce que je comprends
MF 20 contient la valeur 0
MF 22 contient la valeur 5
MF 24 contient la valeur 68 mais c'est l'octet de poids fort qui est lu en premier
MF 26 contient la valeur 5

Je ne vois pas comment m'y prendre pour tout recomposer, quelqu'un peut-il m'aider à comprendre et à voir plus clair dans tout ça ?

Merci
Avatar du membre
JC87
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2230
Enregistré le : 20 oct. 2015, 13:00
Localisation : Nouvelle Aquitaine

Re: M221 chaine de caractères

Message par JC87 »

Bonjour,

Il ne faut pas convertir directement les mots lus en flottants ça ne donnera rien d'exploitable, regarde l'aide en ligne de la fonction ascii_to_real dans Somachine basic tu va comprendre. En fait il faut d'abord récupérer les poids fort et faibles dans deux mots séparés. Une recopie brute peut faire l'affaire, tu recopie les bits de mots 0 à 7 puis 8 à 15 de ton mot lu dans les bits correspondants de deux mots différents et ensuite seulement tu fait la conversion des mots qui t’intéresse en real puis tu finit par l'addition. Regarde déjà les mots lus en format hexadécimal afin de voir quels octets sont significatifs.

JC
"On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
Avatar du membre
Allan
Code sa première boucle
Code sa première boucle
Messages : 19
Enregistré le : 16 nov. 2016, 19:28

Re: M221 chaine de caractères

Message par Allan »

Bonjour,

Après avoir analysé la valeur en hexadécimal de chaque mots , j'ai donc recopié les poids fort et faible qui m’intéressait de chaque mot dans 2 mots séparés, puis j'ai réalisé un décalage de ces bits afin d'avoir la bonne lecture, puis j'ai converti en réal et ensuite j'ai réalisé l'opération.

Grand merci à JC87 pour ton aide :D
ariana
Aguerri de l'automation
Aguerri de l'automation
Messages : 82
Enregistré le : 04 mai 2017, 09:58

Re: [RESOLU] M221 chaine de caractères

Message par ariana »

salut est ce que tu peux me faire un capture d'ecran pour voir le code de somachine et merciii
tristan29250
Apprend le binaire
Apprend le binaire
Messages : 1
Enregistré le : 06 févr. 2018, 16:29

Re: [RESOLU] M221 chaine de caractères

Message par tristan29250 »

Allan a écrit : 16 nov. 2016, 19:44 Bonjour à tous ,

Je suis en train de mettre en service une liaison série ASCII d'un équipement de contrôle vers un contrôleur M221.
La liaison série entre l'équipement et le M221 fonctionne, cependant je reçois la trame ASCII dans 4 mots et je souhaiterai pouvoir les regrouper dans un seul mot afin de pouvoir les exploiter dans mon process. N'ayant jamais travaillé avec ce genre de trame, pouvez vous m'éclairer sur ce sujet

Merci

Bonjour, pouvez vous m'expliquer comment (avec quelle fonction) avez vous récupérer votre trame ?
je possède un lecteur code barre sick (idm140-300s) rélié au SL1 de mon automate M221 et je souhaite récupérer une chaine de caractère.

merci
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7803
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [RESOLU] M221 chaine de caractères

Message par itasoft »

slts,
pour recevoir le code barre du lecteur il faut utiliser le bloc %SEND_RECV_MSG0 en mode réception
Après réception il faut relancer le bloc pour une prochaine réception
EXEMPLE:

cliquer dessus pour agrandir
codeBarre.JPG
Automaticien privé (de tout)
itasoft@free.fr
Répondre