Communication RS232 avec mini CORI-FLOW M1x Series

Forum traitant des automates industriels de marque Siemens.
kcnarf
Code son premier grafcet
Code son premier grafcet
Messages : 50
Inscription : 23 mai 2017, 17:07
Localisation : Rennes

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par kcnarf »

Excuse moi mais je ne comprends pas pourquoi tu te focalises sur la réception.
Personnellement j'essaiera une trame d'émission (écriture d'une consigne par ex.) et je regarderai dans l'appareil cible si la valeur a été écrite.
Tant que tu n'as pas cela, pas la peine d'aller plus loin...
En plus sur le bloc d'émission Siemens que tu utilises j'imagine que tu as un mot de status. Celui -ci devrait pouvoir te fournir des infos quand à ta trame d'envoi (absence destinataire etc...)
Franck
la théorie c'est quand on sait tout mais que rien ne marche. La pratique c'est quand tout fonctionne et qu'on ne sait pas pourquoi.
Zwall
Première mise en service
Première mise en service
Messages : 65
Inscription : 29 oct. 2018, 10:13

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par Zwall »

Bonjour Frank,

En effet, la boîte siemens fournit un message d'erreur quand l'automate en détecte une. Seulement, je pense qu'il s'agit d'erreur lié à l'écriture de la trame, mauvaise longueur, mauvais byte de fin de message etc... Or pour l'instant mon émission fonctionne bien mais pas ma réception, je ne reçois rien ou alors je n'arrive pas à le stocker dans ma DB_Read.
L'appareil n'a pas d'IHM ou de retour visuel/sonore sur le consigne envoyé. Je ne peux donc pas savoir si il a bien reçu ou non ma requête. N'ayant pas d'erreur à l'émission ça veut bien dire que le message arrive à bon port mais que le port ne répond pas ou répond un message que l'automate n'arrive pas à lire mais si c'était le cas, ne devrais-je pas avoir une erreur sur FB de réception ?

J'ai fait fabriqué par un collègue un sniffer RS232, j'espère que je verrais mieux ce qu'il se passe grâce à lui et corriger ce problème.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par philou77 »

Salut !

Ton protocole est bien ascii.

Tu sembles avoir reproduit l'exemple de la doc.
A un détail près !
Dans ta table, tes valeurs sont en hexa ! hors dans la doc ils écrivent bien :

Total String :06030101213E80\r\n

CE SONT DES CARACTERES ASCII ET NON HEXA QUE TU ENVOIES OU TU RECOIS !!
Le format STRING EST UNE CHAINE DE CARACTERES !
Par ex : 06 ASCII= #30 et #36 en hexa

https://www.bronkhorst.com/getmedia/77a ... erface.pdf
Page 20 !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Zwall
Première mise en service
Première mise en service
Messages : 65
Inscription : 29 oct. 2018, 10:13

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par Zwall »

Donc si je fais un array of caracters, je devrais pouvoir envoyer une chaîne ASCII qui sera vu comme une string ?
Je dois garder le formatage pour que l'automate sache ce que j'envoie et valide la trame.
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par itasoft »

Oui, j'écris normalement une valeur et le débitmètre me retourne qu'il a bien écrit la valeur.

mais il retourne la valeur du débit quand ?
Si c'est un débitmètre je présume que tu veux lire un débit ?
Automaticien privé (de tout)
itasoft@free.fr
Zwall
Première mise en service
Première mise en service
Messages : 65
Inscription : 29 oct. 2018, 10:13

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par Zwall »

Normalement, quand je lui envoie sa consigne de débit, il doit répondre qu'il l'a bien reçu.
Ensuite, pour voir le débit actuel il faut lui envoyer une requête pour l'interroger. Il n'émet pas en permanence.
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par itasoft »

Zwall a écrit : 28 mai 2020, 12:46 Normalement, quand je lui envoie sa consigne de débit, il doit répondre qu'il l'a bien reçu.
Ensuite, pour voir le débit actuel il faut lui envoyer une requête pour l'interroger. Il n'émet pas en permanence.
---------
OK en fait c'est pas un débitmètre bestial mais plutôt un régulateur de débit , c'est ça ?
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par philou77 »

tu te fais des noeuds au cerveau !

16#06 c'est de l'hexa

en code ASCII (1 BYTE = 1 CARACTERE)
0 = #30 'ça fait 1 Byte
6 = #36 'ça fait un Byte

Donc ton string ":06030101213E80\r\n" en hexa c'est
\r = CR = Carriage Return
\n = LF = Line Feed

HEXA -> CARACTERE
#3A -> :
#30 -> 0
#36 -> 6
#30 -> 0
#33 -> 3
#30 -> 0
#31 -> 1
#30 -> 0
#31 -> 1
#32 -> 2
#31 -> 1
#33 -> 3
#45 -> E
#38 -> 8
#30 -> 0
#0D -> CR
#0A -> LF


c'est pas tout à fait ce que tu as envoyé non ?
Quand à la réponse, tu la reçois aussi en ASCII !

Cela devrait être ":0403000005\r\n" soit
HEXA -> CARACTERE
#3A -> :
#30 -> 0
#34 -> 4
#30 -> 0
#33 -> 3
#30 -> 0
#30 -> 0
#30 -> 0
#30 -> 0
#30 -> 0
#35 -> 5
#0D -> CR
#0A -> LF
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Zwall
Première mise en service
Première mise en service
Messages : 65
Inscription : 29 oct. 2018, 10:13

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par Zwall »

En effet Ita, c'est pas un débitmètre banal, il fait toute la régulation avec le PID de pompe et de vanne intégré, une jolie bestiole mais plutôt chiante en RS232... En profibus aussi mais c'est un problème pour un autre jour ça !

La page d'exemple de la documentation.
Image

Si j'applique la méthode un character pour chaque morceaux d'hexa, ne vais-je pas doubler la taille de ma trame ? Un character faisant déjà 8 octets, si je me trompe pas.
Je pourrais transformer un array de character en une string et envoyé la string comme requête, collant à au début et à la fin les character de début et fin.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Communication RS232 avec mini CORI-FLOW M1x Series

Message par philou77 »

Un caractère c'est 8 Bits pas 8 Octets !

Dans la doc, ils disent

Total String : " :06030101213E80\r\n"

Ca ne va pas avec leur tableau...
Ils mélangent byte de donnée et trame en ascii

un caractère = un byte (donc 06 ne peux pas entrer dans un byte mais dans 2, la donnée 06 est convertie en 2 codes ASCII, le 0 et le 6 )

donc la "chaine de caractères" ":06030101213E80\r\n" fait en réalité 17 Bytes de long en hexa !!
Chaque caractère occupe un byte

alors soit tu envoies une chaine de caractères (un string quoi ! ) , soit que des CODES ASCII de caractères (ça revient au même)

dans ta trame, tu formateras ta donnée :
exemple :
#15AC (valeur en hexa) sera une fois convertie en code ascii #31 # 35 #41 #43 (soit les caractères 1, 5,A et C)

C'est ces valeurs (#31 # 35 #41 #43) que tu devra placer dans ta trame au bon endroit !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Répondre