[M221] Communication RS232 / Peson
- Bruce33
- Dieu du process

- Messages : 932
- Enregistré le : 28 oct. 2015, 06:54
- Localisation : Pas-de-Calais
Re: [M221] Communication RS232 / Peson
Pour télécharger la documentation technique il faut donner le numéro de série sur le site http://www.diniargeo.fr/download.aspx.
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: [M221] Communication RS232 / Peson
slts,
si la valeur est fixe (8 digits) avec des "0" ou des espaces à gauche on peut la convertir directement avec ASCII_TO_FLOAT(%MWx)
exemple:
Trame reçue dans la table de réception %MW0:16 US,GS,000015.3,kg convertir la zone du poids en un REAL
%MF20 := ASCII_TO_FLOAT(%MW3);
----Test-sur--M221---
%MW0:16:="US,GS,000015.3,kg";
%MF20 := ASCII_TO_FLOAT(%MW3);
%MF20=15.3
si la valeur est fixe (8 digits) avec des "0" ou des espaces à gauche on peut la convertir directement avec ASCII_TO_FLOAT(%MWx)
exemple:
Trame reçue dans la table de réception %MW0:16 US,GS,000015.3,kg convertir la zone du poids en un REAL
%MF20 := ASCII_TO_FLOAT(%MW3);
----Test-sur--M221---
%MW0:16:="US,GS,000015.3,kg";
%MF20 := ASCII_TO_FLOAT(%MW3);
%MF20=15.3
Modifié en dernier par itasoft le 16 oct. 2022, 03:12, modifié 8 fois.
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
- Bruce33
- Dieu du process

- Messages : 932
- Enregistré le : 28 oct. 2015, 06:54
- Localisation : Pas-de-Calais
Re: [M221] Communication RS232 / Peson
Il y a un document TECH_MAN_ENG_DFW_SERIAL-PROTOCOL_21.03.pdf qui semble répondre aux questions si vous arrivez à le télécharger...
Sauf pour la programmation du M221 bien entendu.
Sauf pour la programmation du M221 bien entendu.
Re: [M221] Communication RS232 / Peson
Bonjour,
Suite à vos explication je viens enfin de communiquer avec mon capteur.
Longueur de trame : 18
Caractère de début : U (85)
1er caractère de fin : CR (13)
2ème caractère de fin : LF (10)
Dans ma table d'animation je reçois les résultats suivant :
%MW0 = 21292 reste fixe
%MW1 = 18259 reste fixe
%MW2 = 11296 reste fixe
%MW3 = 8224 reste fixe
%MW4 = 8237 varie
%MW5 = 13358 varie
%MW6 = 12332 varie
%MW7 = 27495 reste fixe
J'ai essayé la formule suivante %MW22 := ASCII_TO_INT(%MW5) mais sans succès la valeur reste à 0
Suite à vos explication je viens enfin de communiquer avec mon capteur.
Longueur de trame : 18
Caractère de début : U (85)
1er caractère de fin : CR (13)
2ème caractère de fin : LF (10)
Dans ma table d'animation je reçois les résultats suivant :
%MW0 = 21292 reste fixe
%MW1 = 18259 reste fixe
%MW2 = 11296 reste fixe
%MW3 = 8224 reste fixe
%MW4 = 8237 varie
%MW5 = 13358 varie
%MW6 = 12332 varie
%MW7 = 27495 reste fixe
J'ai essayé la formule suivante %MW22 := ASCII_TO_INT(%MW5) mais sans succès la valeur reste à 0
-
MiGaNuTs
- Mi homme - Mi automate

- Messages : 1579
- Enregistré le : 12 nov. 2015, 21:02
- Localisation : 45 - Loiret
- Contact :
Re: [M221] Communication RS232 / Peson
Bonjour,
quand tu veux visualiser des %MW qui contiennent du texte, il faut les afficher en hexa,sinon c'est impossible de savoir ce qu'il y'a dedans.
(Le mieux c'est de les afficher directement an ascii mais tous les automates ne savent pas faire).
Chaque %MW contient 2 caractères. Quand tu as le code hexa il suffit de t'imprimer la table ascii et tu les retrouve facilement.

Il faut aussi vérifier que quelque soit le poids mesuré la trame fait la même longueur et espérer qu'il te mets toujours la virgule au même endroit, sinon tu va bien galérer.
Si ta virgule est toujours au même endroit c'est long, mais c'est pas bien compliqué.
Tu "coupe" chaque %MW qui contient des valeurs en deux %MW qui ne contiennent qu'un seul des 2 caractères.
tu trouve le signe (2B ou 2D), tu "ignore" le . (2E), ou mieux, tu vérifie qu'il est au bon endroit.
Si t'a pas le signe ni le point ni la virgule c'est que ta trame a mal été réceptionnée. -> défaut de com', et ignorer le poids décodé).
Tu remplace chaque valeur qui n'est pas un chiffre par un zéro (code hexa du zéro c'est 30. donc tout ce qui n'est pas compris entre 30 et 39 devient un 30)
Et après c'est juste des additions, chaque %MW correspondant toujours au même poids (lol ! Respect a ceux qui ont capté le calembour)
L'exercice est BEAUCOUP plus facile avec un automate qui sait manipuler les chaines de caractère.
quand tu veux visualiser des %MW qui contiennent du texte, il faut les afficher en hexa,sinon c'est impossible de savoir ce qu'il y'a dedans.
(Le mieux c'est de les afficher directement an ascii mais tous les automates ne savent pas faire).
Chaque %MW contient 2 caractères. Quand tu as le code hexa il suffit de t'imprimer la table ascii et tu les retrouve facilement.

Déjà a vue de nez la bascule a la bonne idée de t'envoyer les caractères dans le bon ordre.Fred4547 a écrit : ↑16 oct. 2022, 10:19 %MW0 = 21292 -> 532C -> S,
%MW1 = 18259 reste fixe ->4753 -> FS
%MW2 = 11296 reste fixe ->2C1C ->, code bizzare
%MW3 = 8224 reste fixe ->2020 ->Espace Espace
%MW4 = 8237 varie -> 202D ->Espace -
%MW5 = 13358 varie -> 342E->4.
%MW6 = 12332 varie -> 302C -> 0,
%MW7 = 27495 reste fixe ->6B67 ->kg
Il faut aussi vérifier que quelque soit le poids mesuré la trame fait la même longueur et espérer qu'il te mets toujours la virgule au même endroit, sinon tu va bien galérer.
Si ta virgule est toujours au même endroit c'est long, mais c'est pas bien compliqué.
Tu "coupe" chaque %MW qui contient des valeurs en deux %MW qui ne contiennent qu'un seul des 2 caractères.
Code : Tout sélectionner
%MW100:=%MW3/256
%MW101:=%MW3&&255
%MW102:=%MW4/256
%MW103:=%MW4&&255
%MW104:=%MW5/256
%MW105:=%MW5&&255
%MW106:=%MW6/256
%MW107:=%MW6&&255
Code : Tout sélectionner
désolé j'ai la flemme
Code : Tout sélectionner
if %MW107 <> $67 or %MW105 <>$2C then set Defaut
Code : Tout sélectionner
for i=0 to 7
if %MW100[i]>$39 or %MW100[i]<$30 then %MW100[i] := $30
next
Code : Tout sélectionner
for i=0 to 7
if %MW100[i]:= %MW100[i] - $30
next
poids := %MW106
poids := poids + %MW104*10
poids := poids + %MW103*100
poids := poids + %MW102*1000
poids := poids + %MW101*10000
poids := poids + %MW100*100000
Re: [M221] Communication RS232 / Peson
Bonjour,
Bon j'ai fait quelques essais en bidouillant.
Avec un poids affiché sur le peson de 5,0kg
%MF46 := ASCII_TO_FLOAT(%MW3) %MF46 = 0,5
%MF48 := ASCII_TO_FLOAT(%MW4) %MF48 = 0,5
%MF50 := ASCII_TO_FLOAT(%MW5) %MW50 = 0,5
Avec un poids affiché sur le peson de 17,5kg
%MF46 := ASCII_TO_FLOAT(%MW3) %MF46 = 1
%MF48 := ASCII_TO_FLOAT(%MW4) %MF48 = 1
%MF50 := ASCII_TO_FLOAT(%MW5) %MW50 = 0,7
Avec un poids affiché sur le peson de 71,0kg
%MF46 := ASCII_TO_FLOAT(%MW3) %MF46 = 7
%MF48 := ASCII_TO_FLOAT(%MW4) %MF48 = 7
%MF50 := ASCII_TO_FLOAT(%MW5) %MW50 = 0,1

Bon j'ai fait quelques essais en bidouillant.
Avec un poids affiché sur le peson de 5,0kg
%MF46 := ASCII_TO_FLOAT(%MW3) %MF46 = 0,5
%MF48 := ASCII_TO_FLOAT(%MW4) %MF48 = 0,5
%MF50 := ASCII_TO_FLOAT(%MW5) %MW50 = 0,5
Avec un poids affiché sur le peson de 17,5kg
%MF46 := ASCII_TO_FLOAT(%MW3) %MF46 = 1
%MF48 := ASCII_TO_FLOAT(%MW4) %MF48 = 1
%MF50 := ASCII_TO_FLOAT(%MW5) %MW50 = 0,7
Avec un poids affiché sur le peson de 71,0kg
%MF46 := ASCII_TO_FLOAT(%MW3) %MF46 = 7
%MF48 := ASCII_TO_FLOAT(%MW4) %MF48 = 7
%MF50 := ASCII_TO_FLOAT(%MW5) %MW50 = 0,1
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: [M221] Communication RS232 / Peson
tester inversion poids forts/poids faibles
Avec un poids affiché sur le peson de 5,0kg
%MW3:=ROL(%MW3,8);
%MW4:=ROL(%MW4,8);
%MW5:=ROL(%MW5,8);
%MW6:=ROL(%MW6,8);
%MF46 := ASCII_TO_FLOAT(%MW3) %MF46 = 5.0
Avec un poids affiché sur le peson de 5,0kg
%MW3:=ROL(%MW3,8);
%MW4:=ROL(%MW4,8);
%MW5:=ROL(%MW5,8);
%MW6:=ROL(%MW6,8);
%MF46 := ASCII_TO_FLOAT(%MW3) %MF46 = 5.0
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: [M221] Communication RS232 / Peson
Merci itasoft cela fonctionne mais
Pour un poids de 33,5 kg sur l'afficheur du peson
J'ai 33,5 dans MF46 mais ce n'est pas stable un coup j'ai 3 et après c'est 33,5
Pour un poids de 33,5 kg sur l'afficheur du peson
J'ai 33,5 dans MF46 mais ce n'est pas stable un coup j'ai 3 et après c'est 33,5
-
MiGaNuTs
- Mi homme - Mi automate

- Messages : 1579
- Enregistré le : 12 nov. 2015, 21:02
- Localisation : 45 - Loiret
- Contact :
Re: [M221] Communication RS232 / Peson
Il faut commencer par vérifier si le 2E est toujours au même endroit dans ta trame.
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: [M221] Communication RS232 / Peson
%MW13:=ROL(%MW3,8);
%MW14:=ROL(%MW4,8);
%MW15:=ROL(%MW5,8);
%MW16:=ROL(%MW6,8);
%MF46 := ASCII_TO_FLOAT(%MW13) %MF46 = 5.0
%MW14:=ROL(%MW4,8);
%MW15:=ROL(%MW5,8);
%MW16:=ROL(%MW6,8);
%MF46 := ASCII_TO_FLOAT(%MW13) %MF46 = 5.0
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
