Communication RS232 avec mini CORI-FLOW M1x Series
Communication RS232 avec mini CORI-FLOW M1x Series
Bonjour à tous,
Voila mon soucis, je dois dialoguer en RS232 un débitmètre bronkhorst mini CORI-FLOW M1x serie depuis un ET 200SP.
Tout le monde faisant sa sauce niveau protocole avec le RS232, le débitmètre a le sien avec un format de trame bien particulier.
Un trame se présente sous la forme Start character | length | Node | Process | End
Mon soucis se trouve avec le character de départ et de fin, en effet selon le protocole du débitmètre, le début doit être un ':' et la fin '\r\n'
Pour faire une trame, j'ai construit une structure qui commence par un char et se termine par 2 char, les bytes au milieu en hexa pour le message.
Après des tests avec un hyperterminal, j'ai pu voir que le débitmètre ne répondait qu'en recevant que des characters en début et fin de trame, leur valeur hexa n'étaient pas accepté et ma requête passait à l'as.
J'ai donc construit la structure qu'il faut sauf... Que le character $N ne semble pas exister alors que $R oui...
Le problème en question
Mes questions sont, est-ce que je peux m'y prendre autrement ? Ou carrément est-ce que l'un d'entre vous à déjà travailler sur le même matériel et peut m'aider ?
Voila mon soucis, je dois dialoguer en RS232 un débitmètre bronkhorst mini CORI-FLOW M1x serie depuis un ET 200SP.
Tout le monde faisant sa sauce niveau protocole avec le RS232, le débitmètre a le sien avec un format de trame bien particulier.
Un trame se présente sous la forme Start character | length | Node | Process | End
Mon soucis se trouve avec le character de départ et de fin, en effet selon le protocole du débitmètre, le début doit être un ':' et la fin '\r\n'
Pour faire une trame, j'ai construit une structure qui commence par un char et se termine par 2 char, les bytes au milieu en hexa pour le message.
Après des tests avec un hyperterminal, j'ai pu voir que le débitmètre ne répondait qu'en recevant que des characters en début et fin de trame, leur valeur hexa n'étaient pas accepté et ma requête passait à l'as.
J'ai donc construit la structure qu'il faut sauf... Que le character $N ne semble pas exister alors que $R oui...
Le problème en question
Mes questions sont, est-ce que je peux m'y prendre autrement ? Ou carrément est-ce que l'un d'entre vous à déjà travailler sur le même matériel et peut m'aider ?
Re: Communication RS232 avec mini CORI-FLOW M1x Series
Salut,
A la place de '$N', essaye '$L' ou '$0A'.
Sinon un caractère a un code ascii et peut se transcrire en byte ...
pourquoi ne pas tout mettre en byte pour la trame ?
ou tout en ascii, soit une STRING ?
c'est bizarre que ton protocole mélange les 2 formats ...
hyperterminal te montre bien de l'ascii ?
@+
A la place de '$N', essaye '$L' ou '$0A'.
Sinon un caractère a un code ascii et peut se transcrire en byte ...
pourquoi ne pas tout mettre en byte pour la trame ?
ou tout en ascii, soit une STRING ?
c'est bizarre que ton protocole mélange les 2 formats ...
hyperterminal te montre bien de l'ascii ?
@+
Re: Communication RS232 avec mini CORI-FLOW M1x Series
Et bien l'hyperterminal me renvoyait = ":06227..." il n'affichait pas les \r\n mais retourner à la ligne.
Une partie du problème a été résolue, je n'ai plus l'erreur à l'envoie me disant qu'il ne voyait pas les character de fin ! Cependant... Je reçois quelque chose de mon débitmètre,il reçoit mais ne semble pas reconnaître la fin de trame...
Je configure mes trames de A à Z lors de l'envoie, comment puis-je configurer la réception de la même manière ?
A première vue, elle utiliserait le même protocole.
Une partie du problème a été résolue, je n'ai plus l'erreur à l'envoie me disant qu'il ne voyait pas les character de fin ! Cependant... Je reçois quelque chose de mon débitmètre,il reçoit mais ne semble pas reconnaître la fin de trame...
Je configure mes trames de A à Z lors de l'envoie, comment puis-je configurer la réception de la même manière ?
A première vue, elle utiliserait le même protocole.
-
- Code son premier grafcet
- Messages : 50
- Inscription : 23 mai 2017, 17:07
- Localisation : Rennes
Re: Communication RS232 avec mini CORI-FLOW M1x Series
Bonjour,
j'ai regardé un peu la doc de ton matériel. Ils donnent les valeurs Hexa des caractères de début et fin de trame. As tu essayé cela ?
J'imagine que tu as respecté les paramètres du port Com : 38400 bauds/pas de parité/8 bits data/1 bit de stop
Franck
j'ai regardé un peu la doc de ton matériel. Ils donnent les valeurs Hexa des caractères de début et fin de trame. As tu essayé cela ?
J'imagine que tu as respecté les paramètres du port Com : 38400 bauds/pas de parité/8 bits data/1 bit de stop
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
J'ai bien vu cette info dans la doc et justement c'est ça que je trouve étrange car j'ai configuré les détections de début de trame et de fin avec ces caractères en Hexa.
L'info part correctement mais je n'ai pas de retour ou j'ai un retour qui ne finit pas et reste en attente mais ça me surprend qu'il n'y est pas un timeout.
J'ai fait ce que tu as dit Steph, j'ai changé le caractère de fin pour un '$L' et ça semble fonctionné. Je n'ai plus l'erreur comme quoi il ne voyait pas de caractère de fin à ma trame... Ce qui me fait penser que ma requête est bonne, de même que la configuration d'envoie... Et la configuration de réception est la même alors pourquoi ça coince ?
Je dois me replonger dans la doc pour le pilotage manuel du débitmètre, peut-être un paramètre interne est mal configurer...
L'info part correctement mais je n'ai pas de retour ou j'ai un retour qui ne finit pas et reste en attente mais ça me surprend qu'il n'y est pas un timeout.
J'ai fait ce que tu as dit Steph, j'ai changé le caractère de fin pour un '$L' et ça semble fonctionné. Je n'ai plus l'erreur comme quoi il ne voyait pas de caractère de fin à ma trame... Ce qui me fait penser que ma requête est bonne, de même que la configuration d'envoie... Et la configuration de réception est la même alors pourquoi ça coince ?
Je dois me replonger dans la doc pour le pilotage manuel du débitmètre, peut-être un paramètre interne est mal configurer...
- 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
Slts,
Connais pas le matos « teutons » ceci dit,
Si le débitmètre réponds après interrogation il faut une requête du type « Ecriture suivi d’une lecture » avec un TimeOut ou avoir configuré un caractère de fin de la réception.
Connais pas le matos « teutons » ceci dit,
Si le débitmètre réponds après interrogation il faut une requête du type « Ecriture suivi d’une lecture » avec un TimeOut ou avoir configuré un caractère de fin de la réception.
Dernière modification par itasoft le 27 mai 2020, 12:32, modifié 1 fois.
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Communication RS232 avec mini CORI-FLOW M1x Series
Salut,
Oui, j'écris normalement une valeur et le débitmètre me retourne qu'il a bien écrit la valeur.
J'ai ajouté un TimeOut sur la réponse, ça m'implémente mon compteur de réponse mais je ne reçois pas de données. Mon buffer est vide.
Tous les paramètres que j'ai configuré. Je suis à court d'idée et j'attends d'avoir un sniffeur RS232 pour savoir si le débitmètre reçoit la requête... Parce que si il ne reçoit pas la requête c'est pas surprenant que je n'ai pas de réponse...
Sauf que la requête, c'est la même que celle qu'on envoyait depuis un hyper-terminal pour tester le fonctionnement de l'engin...
Je suis un peu perdu je dois dire...
Oui, j'écris normalement une valeur et le débitmètre me retourne qu'il a bien écrit la valeur.
J'ai ajouté un TimeOut sur la réponse, ça m'implémente mon compteur de réponse mais je ne reçois pas de données. Mon buffer est vide.
Tous les paramètres que j'ai configuré. Je suis à court d'idée et j'attends d'avoir un sniffeur RS232 pour savoir si le débitmètre reçoit la requête... Parce que si il ne reçoit pas la requête c'est pas surprenant que je n'ai pas de réponse...
Sauf que la requête, c'est la même que celle qu'on envoyait depuis un hyper-terminal pour tester le fonctionnement de l'engin...
Je suis un peu perdu je dois dire...
- 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
Slts,
Connais pas le matos « teutons » ceci dit,
Si le débitmètre réponds après interrogation il faut une requête du type « Ecriture suivi d’une lecture » avec un TimeOut ou avoir configuré un caractère de fin de la réception.
Connais pas le matos « teutons » ceci dit,
Si le débitmètre réponds après interrogation il faut une requête du type « Ecriture suivi d’une lecture » avec un TimeOut ou avoir configuré un caractère de fin de la réception.
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Communication RS232 avec mini CORI-FLOW M1x Series
Je suis pas un spécialiste en Siemens non plus, encore moins en instrumentation.
Mais ça me paraît logique que si j'ai vraiment aucun retour que ce soit avec TimeOut ou des caractères de fin, ça veut dire que le débitmètre ne reçoit rien ou alors que je le capte pas...
Mais ça me paraît logique que si j'ai vraiment aucun retour que ce soit avec TimeOut ou des caractères de fin, ça veut dire que le débitmètre ne reçoit rien ou alors que je le capte pas...
- 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
slts,
il faut une requête "teutonne" équivalente à la requête OUT_IN_CHAR (Unity)
il faut une requête "teutonne" équivalente à la requête OUT_IN_CHAR (Unity)
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr