[RESOLU] M221 chaine de caractères
[RESOLU] M221 chaine de caractères
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
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.
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: M221 chaine de caractères
slts,
c'est bien mais que esque tu reçois sur ces 4 mots exactement ?????????????
c'est bien mais que esque tu reçois sur ces 4 mots exactement ?????????????
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: M221 chaine de caractères
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
Elle se décompose ainsi dans la table d'animation en format d'affichage ASCII:
MW1 : 1.
MW2 : 14
MW3 : 1
MW4 : 5
- JC87
- Mi homme - Mi automate

- Messages : 2230
- Enregistré le : 20 oct. 2015, 13:00
- Localisation : Nouvelle Aquitaine
Re: M221 chaine de caractères
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
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..."
Re: M221 chaine de caractères
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
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
- JC87
- Mi homme - Mi automate

- Messages : 2230
- Enregistré le : 20 oct. 2015, 13:00
- Localisation : Nouvelle Aquitaine
Re: M221 chaine de caractères
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
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..."
Re: M221 chaine de caractères
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
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
Re: [RESOLU] M221 chaine de caractères
salut est ce que tu peux me faire un capture d'ecran pour voir le code de somachine et merciii
-
tristan29250
- Apprend le binaire

- Messages : 1
- Enregistré le : 06 févr. 2018, 16:29
Re: [RESOLU] M221 chaine de caractères
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
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: [RESOLU] M221 chaine de caractères
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
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
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr

