[M221] Communication RS232 / Peson

Forum traitant des automates industriels de marque Schneider - Telemecanique
Avatar du membre
Bruce33
Dieu du process
Dieu du process
Messages : 932
Enregistré le : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: [M221] Communication RS232 / Peson

Message 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.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [M221] Communication RS232 / Peson

Message 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
Modifié en dernier par itasoft le 16 oct. 2022, 03:12, modifié 8 fois.
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
Bruce33
Dieu du process
Dieu du process
Messages : 932
Enregistré le : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: [M221] Communication RS232 / Peson

Message 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.
Fred4547
Première mise en service
Première mise en service
Messages : 51
Enregistré le : 16 janv. 2022, 16:11

Re: [M221] Communication RS232 / Peson

Message 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
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1579
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: [M221] Communication RS232 / Peson

Message 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.
Fred4547
Première mise en service
Première mise en service
Messages : 51
Enregistré le : 16 janv. 2022, 16:11

Re: [M221] Communication RS232 / Peson

Message 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:
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [M221] Communication RS232 / Peson

Message 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
Automaticien privé (de tout)
itasoft@free.fr
Fred4547
Première mise en service
Première mise en service
Messages : 51
Enregistré le : 16 janv. 2022, 16:11

Re: [M221] Communication RS232 / Peson

Message 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
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1579
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: [M221] Communication RS232 / Peson

Message par MiGaNuTs »

Il faut commencer par vérifier si le 2E est toujours au même endroit dans ta trame.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [M221] Communication RS232 / Peson

Message 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
Automaticien privé (de tout)
itasoft@free.fr
Répondre