Page 2 sur 3

Re: [M221] Communication RS232 / Peson

Posté : 15 oct. 2022, 20:27
par Bruce33
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.

Re: [M221] Communication RS232 / Peson

Posté : 15 oct. 2022, 20:31
par itasoft
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

Re: [M221] Communication RS232 / Peson

Posté : 15 oct. 2022, 20:33
par Bruce33
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.

Re: [M221] Communication RS232 / Peson

Posté : 16 oct. 2022, 10:19
par Fred4547
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

Re: [M221] Communication RS232 / Peson

Posté : 16 oct. 2022, 12:03
par MiGaNuTs
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.

Image
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
Déjà a vue de nez la bascule a la bonne idée de t'envoyer les caractères dans le bon ordre.
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
tu trouve le signe (2B ou 2D), tu "ignore" le . (2E), ou mieux, tu vérifie qu'il est au bon endroit.

Code : Tout sélectionner

désolé j'ai la flemme
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é).

Code : Tout sélectionner

if %MW107 <> $67 or %MW105 <>$2C then set Defaut
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)

Code : Tout sélectionner

for i=0 to 7
	if %MW100[i]>$39 or %MW100[i]<$30 then %MW100[i] := $30
next
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)

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
L'exercice est BEAUCOUP plus facile avec un automate qui sait manipuler les chaines de caractère.

Re: [M221] Communication RS232 / Peson

Posté : 16 oct. 2022, 14:10
par Fred4547
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

:roll:

Re: [M221] Communication RS232 / Peson

Posté : 16 oct. 2022, 15:10
par itasoft
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

Re: [M221] Communication RS232 / Peson

Posté : 16 oct. 2022, 17:15
par Fred4547
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

Re: [M221] Communication RS232 / Peson

Posté : 16 oct. 2022, 18:16
par MiGaNuTs
Il faut commencer par vérifier si le 2E est toujours au même endroit dans ta trame.

Re: [M221] Communication RS232 / Peson

Posté : 16 oct. 2022, 18:38
par itasoft
%MW13:=ROL(%MW3,8);
%MW14:=ROL(%MW4,8);
%MW15:=ROL(%MW5,8);
%MW16:=ROL(%MW6,8);

%MF46 := ASCII_TO_FLOAT(%MW13) %MF46 = 5.0