From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Problème de passage d'une chaine hexadécimal en nombre

Bonjour,

Je suis actuellement en stage et je dois faire communiquer un régulateur (d'un thermocouple de type K). Le régulateur utilise le protocole MODBUS RTU et j'utilise une liaison RS485. Je vous laisse en PJ le vi que j'utilise.

Je rencontre 2 problèmes:

-Le premier est un message d'erreur (qui n'en est pas un mais j'aimerai ne plus l'avoir à chaque fois que je lance une acquisition). C'est une Erreur 1073676294, on m'a déjà conseiller d'utiliser un VISA Flush mais cette solution de fonctionne pas. Donc si vous avez une idée je suis prenneur 😉

-Le deuxième problème est que le régulateur me renvoie un code du type 0203 024E FE48 64, j'utilise un sous ensemble de chaine pour sélectionner le 4EFE qui m'interesse. Seulement je voudrais ensuite traduire ce caractère hexadécimal en nombre pour ensuite récupérer la température de mon thermocouple. Ce que j'ai fait sur mon Vi ne fonctionne pas.

Aidez moi s'il vous plait !!!

Je vous remercie

0 Compliments
Message 1 sur 8
3 394 Visites

Bonjour,

 

2 soucis:

 

vous commencer l'extraction de la trame au troisieme caractere or  4EFE commence au 7eme et de longueur 4

 

ensuite il faudrait savoir si ce code est signé et si il renvoi un entier ou un flottant ...

 

Cdt

 

Tinnitus

 

CLAD / Labview 2011, Win Xp
------------------------------------------------------
Mission d'une semaine- à plusieurs mois laissez moi un MP...
RP et Midi-pyrénées .Km+++ si possibilité de télétravail

Kudos always accepted / Les petits clicks jaunes sont toujours appréciés
Don't forget to valid a good answer / pensez à valider une réponse correcte
0 Compliments
Message 2 sur 8
3 384 Visites

En fait le message que je récupère dans le buffer est de la forme 0203 024E FE48 64 . Par exemple 02, 03, 4E, FE, ... comptent pour un caractère. Le 0203 du début compte pour 2 caractères où le 02 est l'adresse de mon régulateur et 03 la fonction lecture. Le 02 qui suit est le nombre de bytes lu. Le 4EFE est l'information donnée par le régulateur et les deux derniers termes : 4864 sont le CRC16.

Le message que je lis dans le buffer est un suite de caractères donc je pensais que je pouvais directement la convertir en nombre. Je ne sais pas trop si ce post peut vous aidez, je suis débutant en Labview et je ne suis pas encore à l'aise avec touts les termes utilisés.

 

Je vais essayé de trouver des informations sur le type de message envoyé par le régulateur.

 

Merci

0 Compliments
Message 3 sur 8
3 367 Visites

Par exemple pour 4EFE je souhaiterais récupérer 20222.

0 Compliments
Message 4 sur 8
3 360 Visites

Bonjour,

C'est juste l'index et la longueur qu'il faut bien choisir. Attention, l'index commence à 0 et non à un.

Ci-joint un vi en 8.6.

Cordialement,

Simon D.
CLA | Certified LabVIEW Architect
CTA | Certified TestStand Architect
0 Compliments
Message 5 sur 8
3 353 Visites

Je suis désolé mais ça ne fonctionne pas !!! Je ne comprend pas pourquoi je trouve toujours 0 comme nombre. J'ai l'impression que c'est à cause de la nature du 4EFE que je récupère dans le buffer en sortie de mon sous ensemble de chaine. Peut être que c'est la structure du vi qui ne me permet pas de le faire ? (mon vi est en pièce jointe du premier message : 1.vi)

 

Merci

0 Compliments
Message 6 sur 8
3 326 Visites

bonsoir

 

d'après la doc quel est le format attendu ?

 

  4efe hex donne 20222  dec ...

 

 

Cdt

 

Tinnitus

 

CLAD / Labview 2011, Win Xp
------------------------------------------------------
Mission d'une semaine- à plusieurs mois laissez moi un MP...
RP et Midi-pyrénées .Km+++ si possibilité de télétravail

Kudos always accepted / Les petits clicks jaunes sont toujours appréciés
Don't forget to valid a good answer / pensez à valider une réponse correcte
0 Compliments
Message 7 sur 8
3 318 Visites

J'ai réussi !!! En fait, je donnais ma commande en hexadécimal (exemple : 0203 0040 0001) et le régulateur de mon thermocouple me renvoyait la température mesurée...

Sauf que cette température que je récupérais dans le buffer lu était en ASCII !!! Donc quand j'essayais de passer de chaîne hexa en décimal j'avais toujours 0.


Du coup il faut utiliser un adaptateur de type et tout marche comme il faut.

 

Merci de votre aide qui m'a mis sur la voie 😉

0 Compliments
Message 8 sur 8
3 306 Visites