le 10-18-2016 07:53 AM
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
Résolu ! Accéder à la solution.
le 10-18-2016 03:12 PM
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
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
le 10-19-2016 01:30 AM
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
le 10-19-2016 03:07 AM
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.
le 10-19-2016 04:36 AM
Salut , l'erreur 56 est une erreur de timeout.
http://digital.ni.com/public.nsf/allkb/D90C4F99C1EF3F6A86256E4A0080A120
le 10-19-2016 05:12 AM
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....
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
le 10-19-2016 05:16 AM
Ton code me semble jsute,
pour info,
ou Le protocole modbus série avec NI LabVIEW (même si pas pour ton exemple)
A+
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
le 10-19-2016 07:58 AM
- 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?
le 10-20-2016 08:59 AM
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
le 10-20-2016 10:44 AM
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?
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