Communication RS232 avec mini CORI-FLOW M1x Series
-
- Code son premier grafcet
- Messages : 50
- Inscription : 23 mai 2017, 17:07
- Localisation : Rennes
Re: Communication RS232 avec mini CORI-FLOW M1x Series
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
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.
Re: Communication RS232 avec mini CORI-FLOW M1x Series
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.
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.
-
- 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
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 !
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 !
Re: Communication RS232 avec mini CORI-FLOW M1x Series
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.
Je dois garder le formatage pour que l'automate sache ce que j'envoie et valide la trame.
- itasoft
- Mi homme - Mi automate
- Messages : 7037
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Communication RS232 avec mini CORI-FLOW M1x Series
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 ?
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
itasoft@free.fr
Re: Communication RS232 avec mini CORI-FLOW M1x Series
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.
Ensuite, pour voir le débit actuel il faut lui envoyer une requête pour l'interroger. Il n'émet pas en permanence.
- itasoft
- Mi homme - Mi automate
- Messages : 7037
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Communication RS232 avec mini CORI-FLOW M1x Series
---------
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
itasoft@free.fr
-
- 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
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
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 !
Re: Communication RS232 avec mini CORI-FLOW M1x Series
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.
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.
La page d'exemple de la documentation.
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.
-
- 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
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 !
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 !