Discussions au sujet de NI LabVIEW

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

Problème communication modbus TCP

Résolu !
Accéder à la solution

Bonjour à tous,

 

J'essaye en ce moment de faire communiquer un Gefran GF_Looper avec LabVIEW en Modbus TCP.

Le problème étant que je ne reçois aucune donnée de la part de celui ci, alors que le fabricant m'a assuré au téléphone que le fonctionnement était natif et simple...

 

Je me permets donc de venir vers vous pour obtenir un petit coup de main.

 

Quelques infos qui peuvent servir :

- Je travaille sous Windows 7

- J'arrive à ping le GF_Looper

- Il est détécté avec NI MAX

- Ma configuration adresse IP est correct (Je dialogue sans soucis sur ce même réseau local avec d'autres instruments)

- Mon part feu est coupé

- J'ai en ma possession la table Ethernet Modbus TCP correspondante (L'adresse d'une des variable que je souhaite lire est la 10000)

 

Je vous met en piece jointe mon petit VI ainsi que le ping et la detection NI MAX.

 

Je vous remercie d'avance.

Nico

Tout télécharger
0 Compliments
Message 1 sur 25
5 370 Visites

salut

lorsque tu écris


Le problème étant que je ne reçois aucune donnée

 


.

tu as quoi? un code d'erreur? aucune donnée des 0?

sinon ton code me semble valide, même si je ne vois pas la valeur de "starting adress" (10 000 de longueur 1?)

 

tu devrais mettre un cluster de gestion d'erreur, afin de visualiser si erreur.

+A

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 2 sur 25
5 347 Visites

Salut,


Je n'ai pas de code erreur, uniquement des 0.

En effet la valeur de "Starting adress" est 10 000 de longueur 1.

 

Je vais ajouter le cluster de gestion d'erreur pour voir.

 

Merci pour ton aide et je te tiens informé.

 

Bye

Nico

 

0 Compliments
Message 3 sur 25
5 338 Visites

Finalement, lors de l'animation de l'exécution, j'ai une erreur qui apparait.
L'erreur 56.
Bizarement elle n'apparait pas dans le cluster de gestion d'erreur... Celle-ci doit disparaitre lors de la fermture de la connexion TCP.

Sais tu à quoi elle correspond?

Merci,

Nico.

0 Compliments
Message 4 sur 25
5 327 Visites

Salut , l'erreur 56 est une erreur de timeout.

http://digital.ni.com/public.nsf/allkb/D90C4F99C1EF3F6A86256E4A0080A120

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 5 sur 25
5 320 Visites

Salut,

1) le code d'erreur 56 : LabVIEW:  The network operation exceeded the user-specified or system time limit.

donc le serveur modbus TCP ne répond pas à ta demande.

 

2) tu peux mettre un cluster d'erreur dans la boucle, faire un clic droit "expliquer erreur"

 

3) Je n'ai pas le code (librairie modbus NI en OOP) pour vérifier si "close Modbus TCP Ref" rentre avec erreur alors elle disparait, mais je suis très étonné, et cela n'est pas le comportement voulu.



Bizarement elle n'apparait pas dans le cluster de gestion d'erreur... Celle-ci doit disparaitre lors de la fermture de la connexion TCP.


4) dans ta boucle de lecture modbus, tu as un registre à décalage sur l'erreur, donc si une erreur survient, alors elle sera permanente, et donc fatale. Ajoute une condition d'arrêt de la boucle : Si Stop Ou Si Erreur (suffit de mettre un OR et de cabler directement le boolean Stop Ou le cluster Erreur)

 

5) Pour info ton appareil communique bien en Modbus TCP, port 502, sans rien d'autre? pas d'ID à spécifier (rare mais certains devices veulent un ID comme en RS232, exemple 254), pas de Gateway? Je suis étonné de voir ton appareil dans MAX sous les connections TCP, car c'est un TCP INSTR, et si je ne dis pas de bétisse c'est celui pour faire du TCP mais via la couche VISA (pas avec les VIs TCP, mais avec les VI VISA)

 

Bref à suivre....

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 6 sur 25
5 318 Visites

Ton code me semble jsute,

pour info,

Tuto Modbus TCP avec LabVIEW

ou Le protocole modbus série avec NI LabVIEW (même si pas pour ton exemple)

A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 7 sur 25
5 316 Visites

- J'ai supprimé le registre à décallage pour le remplacer par un tunnel. Cela m'évite de garder l'erreur et de ne pas en sortir. J'ai tout de même mit en condition de sortie de la boucle while l'éxistance d'une erreur.

 

- J'ai également augmenté la valeur du TimeOut mais aucun changement. Erreur 56...

 

 

5) Pour info ton appareil communique bien en Modbus TCP, port 502, sans rien d'autre? pas d'ID à spécifier (rare mais certains devices veulent un ID comme en RS232, exemple 254), pas de Gateway? Je suis étonné de voir ton appareil dans MAX sous les connections TCP, car c'est un TCP INSTR, et si je ne dis pas de bétisse c'est celui pour faire du TCP mais via la couche VISA (pas avec les VIs TCP, mais avec les VI VISA)

- Je ne pense pas qu’il ait besoin d’autre chose. Si je dois en rentrer un, ou dois-je le faire ? Cela vaut surement la peine d’essayer. Je peux éventuellement rentrer un Gateway mais pareil, ou cela se rentre-t-il ?

 

- Je pensais également essayer avec VISA vu qu’il est reconnu avec MAX, mais je ne vois pas ce que je vais écrire comme donnée pour avoir en retour la variable que je souhaite… De plus le GEFRAN GF_Looper ne supporte pas le SCPI (au contraire des aux instruments que j’ai à piloter et que je pilote déja...)

 

A la base je devais faire la communication en Ethernet IP, mais j'avais également des soucis où j'obtenais des données dont je ne connaissais pas la signification. En effet normalement, en utilisant le protocle CIP, on doit rentrer un Service code, une classe, une instance et un attribut pour obtenir ce que l'on veut. Mais je n'ai jamais pu rentrer de Service code (Pas d'entrée existante dans le VI de la librairie Ethernet/IP de NI) Ces soucis m'ont amené vers le modbus TCP en souhaitant plus de réussite, mais ce n'est pas forcement le cas j'ai l'impression.

 

 

Bref merci pour ton aide.

PS : Souhaites tu que j'attache le VI?

0 Compliments
Message 8 sur 25
5 308 Visites

Je me permet d'ajouter en précision le code erreur 56 que j'ai.
J'ai bien compris que c'est une erreur de TimeOut et que mon instrument ne repond pas lors de la sollicitation de celui...

 

Merci encore pour l'aide.

A plus,

Nico

Code erreur 56 labview.JPG

0 Compliments
Message 9 sur 25
5 268 Visites

salut, as-tu la documentation modbus de l'instrument? est-elle téléchargeable sur un site ?

faut-il activer le serveur modbus dans l'instrument?

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 10 sur 25
5 262 Visites