Communication balance en RS232 vers M221
Re: Communication balance en RS232 vers M221
Bonjour et merci,
J'ai bien compris que l'on recevait 8 caractères sur quatre mots.
Chaque mot reçoit deux caractères Ascii. En hexadécimal cela donne quatre caractères, ces quatre caractères mis en binaire forment un mots de 16 octets, en affectant à chaque octets de valeur 1 sa valeur décimale (2 puissance 0) pour le premier octet, (2 puissance 1) pour le deuxième octet, (2 puissance 3) pour le troisième octet et ainsi de suite puis on fait la somme pour obtenir la donnée affectée au mot.
Après vérification, le chiffre 11 en Ascii donne 3131 en hexadécimal et 00110001-00110001 en binaire. La donnée sera 1+16=32=256=4096=8192 = 12593. C'est OK.
Il reste à travailler sur les mots pour reformer le chiffre de la mesure complète.
Merci à itasoft pour ton aide.
am.
J'ai bien compris que l'on recevait 8 caractères sur quatre mots.
Chaque mot reçoit deux caractères Ascii. En hexadécimal cela donne quatre caractères, ces quatre caractères mis en binaire forment un mots de 16 octets, en affectant à chaque octets de valeur 1 sa valeur décimale (2 puissance 0) pour le premier octet, (2 puissance 1) pour le deuxième octet, (2 puissance 3) pour le troisième octet et ainsi de suite puis on fait la somme pour obtenir la donnée affectée au mot.
Après vérification, le chiffre 11 en Ascii donne 3131 en hexadécimal et 00110001-00110001 en binaire. La donnée sera 1+16=32=256=4096=8192 = 12593. C'est OK.
Il reste à travailler sur les mots pour reformer le chiffre de la mesure complète.
Merci à itasoft pour ton aide.
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,
rien compris, si tu reçois des caractères ASCII il faut juste faire le ASCII_TO_INT ???
rien compris, si tu reçois des caractères ASCII il faut juste faire le ASCII_TO_INT ???
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Communication balance en RS232 vers M221
Bonjour,
Je ne reçoit pas des caractères ASCII, je reçois des mots en binaires.
J'envoie des caractères ASCII de la balance mais je réceptionne des mots en binaires sur l'automate.
Exemple : mot %MW104 = 12848
Il est peut être possible de recevoir des mots en ASCII mais je ne sais pas comment faire.
Cordialement.
am
Je ne reçoit pas des caractères ASCII, je reçois des mots en binaires.
J'envoie des caractères ASCII de la balance mais je réceptionne des mots en binaires sur l'automate.
Exemple : mot %MW104 = 12848
Il est peut être possible de recevoir des mots en ASCII mais je ne sais pas comment faire.
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,
12848 c'est de l'ascii = "02"
12848 c'est de l'ascii = "02"
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Communication balance en RS232 vers M221
Bonjour,
J'ai réalisé la fonction ASCII_TO_INT cela fonctionne, merci. Le seul problème, c'est que le résultat dans chaque mot est inversé.
Je m'explique, premier exemple : la balance affiche 3 456g nous recevons dans le mot %MW101 : 65 (normalement 56) et dans le mot %MW102 : 43 (normalement 34).
Si on compile c'est deux mots notre résultat et 4 365.
Second exemple : la balance affiche 54 783 nous recevons dans le mot %MW101 : 38 (normalement 83) et dans le mot %MW102 : 74 (normalement 47) et dans le mot %MW103 : 5.
Si on compile c'est trois mots notre résultat et 57 438.
Avez-vous une solution pour inverser les chiffres réels dans le %MW101 et %MW102 et %MW103 pour avoir un résultat en cohérence avec la balance.
Merci d'avance pour votre réponse.
AugusteV
J'ai réalisé la fonction ASCII_TO_INT cela fonctionne, merci. Le seul problème, c'est que le résultat dans chaque mot est inversé.
Je m'explique, premier exemple : la balance affiche 3 456g nous recevons dans le mot %MW101 : 65 (normalement 56) et dans le mot %MW102 : 43 (normalement 34).
Si on compile c'est deux mots notre résultat et 4 365.
Second exemple : la balance affiche 54 783 nous recevons dans le mot %MW101 : 38 (normalement 83) et dans le mot %MW102 : 74 (normalement 47) et dans le mot %MW103 : 5.
Si on compile c'est trois mots notre résultat et 57 438.
Avez-vous une solution pour inverser les chiffres réels dans le %MW101 et %MW102 et %MW103 pour avoir un résultat en cohérence avec la balance.
Merci d'avance pour votre réponse.
AugusteV
- 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,
chercher "Décalage circulaire" ROL dans l'aide en ligne
chercher "Décalage circulaire" ROL dans l'aide en ligne
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Communication balance en RS232 vers M221
Bonjour,
Voilà nous avons terminé.
A partir de la valeur récupéré sur l'automate, nous avons fait des masques en hexadécimal avec la fonction AND et des translations (rotations) de 8 bits avec des fonctions SHR afin de récupérer dans des mots différents les unitès, les dizaines, les centaines, les milliers, les dix mille.
%MW120 := %MW104 AND 16#000F mot unité
%MW121 := %MW104 AND 16#0F00
%MW122 := SHR (%MW121,8) mot centaine
et ainsi de suite avec les autres mots.
Dans un second temps, nous avons reconstitué la mesure en faisant des additions.
poids = mot unité x1 + mot dizaine x10 + mot centaine X 100 + mot millier x 1000 + mot dix mille x 10000.
Merci pour vos conseils.
AM.
Voilà nous avons terminé.
A partir de la valeur récupéré sur l'automate, nous avons fait des masques en hexadécimal avec la fonction AND et des translations (rotations) de 8 bits avec des fonctions SHR afin de récupérer dans des mots différents les unitès, les dizaines, les centaines, les milliers, les dix mille.
%MW120 := %MW104 AND 16#000F mot unité
%MW121 := %MW104 AND 16#0F00
%MW122 := SHR (%MW121,8) mot centaine
et ainsi de suite avec les autres mots.
Dans un second temps, nous avons reconstitué la mesure en faisant des additions.
poids = mot unité x1 + mot dizaine x10 + mot centaine X 100 + mot millier x 1000 + mot dix mille x 10000.
Merci pour vos conseils.
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,
c'est la méthode empirique,
peux tu me donner tous les mots de la table de réception avec leur valeurs en Hexa
c'est la méthode empirique,
peux tu me donner tous les mots de la table de réception avec leur valeurs en Hexa
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Communication balance en RS232 vers M221
Bonjour j'ai le même problème, voici les mots
je suis preneur d'une solution
Merci
Merci

