Communication RS232 avec mini CORI-FLOW M1x Series

Forum traitant des automates industriels de marque Siemens.
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 »

@philou77,*
es que chez les teutons ya une requête équivalente à la requête OUT_IN_CHAR (Premium) pour envoyer une chaîne de caractères et recevoir une réponse

exemple sur PREMIUM
STRING_EMISSION:=':06030101213E80$N';

OUT_IN_CHAR(ADDR('0.1.0'),1,STRING_EMISSION, %MW0:4, STRING_RECEPTION);
Dernière modification par itasoft le 28 mai 2020, 18:15, modifié 4 fois.
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 »

Salut Itasoft !

en SETP 7

VAL_STRG (de valeur vers string)
Strg_TO_Char (de string vers array de char)

Le STRING étant différent de CHAR car en string, il y a le nombre de caractères dans la chaine il me semble...

Pour la com, c'est un poil moins simple que schneider.... je n'ai pas la réponse vu que j'en ai jamais fait...

Faut connaitre la ref exacte de son matériel siemens...
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 »

Salut à tous,

Pardon pour le temps de réponse, je bosse sur plusieurs projets à la fois avec divers degré d'urgence (la joie du bureau d'étude). Je n'ai plus trop le temps de faire des tests sur ce projet mais je peux fournir des infos supplémentaires sur le matos que j'utilise.

Pour la CPU, c'est un CPU 1510SP-1 PN et pour l'acquisition des trames RS232 un module CM PtP (ref: 6ES7 137-6AA00-0BA0)

Je n'ai pas pu essayé l'envoie en string ou en array of char. Je me méfie de cette méthode car si j'envoie en char ou string, la taille de la trame est bien plus grande et donc celle écrite dans la trame est fausse.
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 !

Je comprends pas trop là !
Que tu envoies des BYTES en Hexa ou un Array of CHAR c'est la même chose (un CHAR = un BYTE)

ET si tu configures bien le send et le receive (pour les caractères de début et fin de trame), tu devrais sans problème envoyer les trames et recevoir la réponse !

Regarde la dedans, ça peut t'aider :
http://support.automation.siemens.com/W ... n/59057093


Envoies déjà une trame 'statique' et assures toi de recevoir une réponse (correcte de préférence).
Ensuite tu n'auras plus qu'à placer ta valeur dans ta trame (d'une 'valeur' vers des CHAR, autant de char que de digits dans ta valeur !)

Pour répondre à Antoine,

si le Buffer est un string :
Ne sont envoyés QUE les caractères et pas les Bytes de maximum et longueur actuelle de la chaine de caractère.
Donc le buffer peut être une string sans soucis, ce serait le même résultat finalement qu'un array of Char.
Laisser le paramètre LENGTH à Zéro revient à dire que la longueur des datas à envoyer est la longueur du Buffer (ça simplifie les choses aussi)
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 »

Salut !

Pour être plus clair, je dois envoyer ":06030101213E80\r\n"
Si je décompose la trame en hexa, ça donne = : 06 03 01 01 21 3E 80 \r \n --->10 bytes
Si je la décompose en une chaîne de character = : 0 6 0 3 0 1 0 1 2 1 3 E 8 0 \r \n --->17 bytes
En sachant que le "06" dans la trame donne l'information sur la taille du message, en excluant le reste (caractère de fin, de début, d'adresse).
Si j'envoie une chaîne de character, je fausserai donc la taille de mon message.
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 »

J’ai bien compris mais en ascii tu envoies de l ´ascii donc des caractères !!!
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 »

Bon, j'envoie bien tout en hexa.
Le truc c'est que j'ai peut-être une réception mais elle ne se termine pas.
La boîte Receive_ptp me donne le code 7002 et dans la documentation, c'est une réception non-terminée.
Ça veut donc dire que j'ai bien un retour mais dont je n'arrive pas à voir la fin.

Le message = ':06030101213E80\r\n' (06 étant la taille du message sans byte de début/fin)
Ce que j'attend en retour = ':0403000005\r\n'

J'ai tenté de faire avec la détection de fin de trame avec '\r\n' = code 7002
Avec la longueur de champs, avec ou sans le décalage d'un byte (pour le byte de début), avec ou sans byte ne faisant pas partie de la longueur...
Image

Je ne comprend pas...
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 !
Réception non terminée, ça veut dire que ton buffer de réception n'est pas 'plein'.
Tu as donc reçu quelque chose mais pas 'tout' (par rapport à la configuration).
n'utilise pas la longueur du message dans le message
Pour le réception :
Pour le début réception :
tu dois avoir en caractère de début ":"
Pour la fin réception :
Utilises 'après réception d'une séquence de fin' (celle que tu as mise) !
D'après la doc
Avec 1 caractère de fin il faut renseigner le ligne 5
avec 2 caractères de fin, il faut renseigner les lignes 4 et 5.
tu peux utiliser 'don't care characters' pour les lignes 1,2 et 3 !

transfert ton projet à chaque changement, pour être sûr qu'il le prenne bien en compte !
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 »

J'ai vu que mes characters devaient être renseigné dans les lignes 4-5, cependant quand je le fait, j'ai une erreur à la compilation et au chargement, me disant que les ligne 1 à 3 ne sont pas renseignées. J'ai laissé 0 dedans, estimant que c'était le "don't care character".

Cependant, ça ne change rien. Je vais peut-être recontacter le fabricant pour m'assurer que les trames renvoyaient par le débitmètre se terminent bien par '\r\n'. Les données sont peut-être formatées autrement ou pas du tout...

Pour l'instant, c'est à croire qu'il n'y a pas de character de fin de trame.
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 »

J'ai changé la configuration pour que la réception se fasse sur n'importe quel character, ça n'a rien changé... Toujours 7002.
Est-ce que le statut 7002 est dépendant d'un début de lecture ? Serait-il possible que ce soit le statut par défaut tant qu'on attend une réception ?
Répondre