le 09-12-2017 04:23 AM
Résolu ! Accéder à la solution.
le 09-12-2017 03:38 PM
bonjour, je ne suis pas sûr de comprendre. Sauf erreur, il y a "-1" sur "l'ouverture" de la connexion TCP, donc l'établissement de la connexion TCP avec ton device. Il n'y a pas "-1" sur la lecture de la donnée. Si je regarde l'image de ton code, le code va boucler régulièrement sur la lecture de la valeur modbus.
Par contre, il n'y a pas de gestion de l'erreur dans ta boucle. Que va-t'il arriver si l'adresse IP est invalide? une erreur, mais tu rentres dans la boucle. Or l'arrêt est conditionné par F10 etF11.
Dans la même idée, si la connexion est établie, mais que le serveur "perd" la connexion, alors la fonction "read" retourne une erreur, qui n'est pas gérée. Par ailleurs, si erreur sur la lecture modbus, tu vas récupérer un tableau de "0" donc de False, dont tu détectes l'arrêt de ton système.
C'est une supposition, mais tu dois gérer l'erreur dans ton code. Quelques remarques
A suivre.. 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 09-13-2017 03:12 AM
bonjour et merci
effectivement , n'ayant aucune aide sur le "MB Ethernet Master Query.vi" , je n'avais pas câbler leur Timeout , mais je suppose qu'il faut également mettre "-1" pour avoir un temps infini.
Ce que je viens de faire
par contre , j'utilise ce vi une trentaine de fois dans mon code. Faut il gérer l'erreur pour chacun ?
ci joint un des endroit ou il est utilisé.
Ou puis je trouver un exemple de gestion d'erreur pour ce type de vi modbus?
Sachant que c'est un fichier exe généré par le builder qui tourne sur la machine grâce à un runtime Engine , comment puis je quitter l'executable par F10 , sans utiliser Exit?
Laurent
le 09-15-2017 04:04 AM
salut Laurent,
je suppose qu'il faut également mettre "-1" pour avoir un temps infini.
non je ne pense pas. Tu as une communication avec un serveur de données Modbus TCP. En classique, tu dois avoir une réponse en quelques centaines de millisecondes. Le timeout est par définition un temps supérieur au temps de réponse normal. Il doit permettre de ne pas bloquer le code, et permettre de gérer un problème d'absence de réponse. Donc 2000 ms voir 5000 ms me semble un temps "normal".
par contre , j'utilise ce vi une trentaine de fois dans mon code. Faut il gérer l'erreur pour chacun ?
Je vais te poser une question. Dans ma voiture j'ai 500 capteurs, j'ai 500 fonction de lecture, penses-tu que le calculateur doit gérer une erreur (de communication) avec les 500 fonctions de lecture? ou faut-il me satisfaire de déclencher un airbag car la fonction de lecture a une erreur, et retourne "valeur = 0" mais "erreur pas de communication"?
Je pense que tu vas être en accord avec moi : une valeur n'a pas de sens si il y a une erreur. Donc dans ton code, tu dois avoir un cas logiciel " que faire si pas erreur" et mode dégradé "si erreur".
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 09-15-2017 04:31 AM
Ou puis je trouver un exemple de gestion d'erreur pour ce type de vi modbus?
tu communiques avec un instrument en modbus TCP : personnellement, je commence à écrire un driver d'instrument. Fonctions de lecture des données avec décodage et gestion des erreurs. C'est ces fonctions que je vais par la suite utiliser dans mon programme. Je ne fais pas appel directement à l'API modbus puis décodage dans le main. Mais je fais un code plus modulaire, avec des sous-fonctions pour l'instrument (appeler driver d'instrument).
pour la gestion des erreurs, pas exemple tu peux regarder par là exemple de Gestion des erreurs sous LabVIEW
après j'utilise mon driver dans un "projet LabVIEW", ou Framework, que je choisis en fonction de mon besoin (design)
par exemple le QMH (Queue Driven Message Handler) ou modèle Gestionnaire de messages dans une file d'attente (GM...
je te conseille un tour vers cette présentation Architecture : Les modèles de projet sous LabVIEW, zoom sur le QDMH (ou QMH)
cela permet de répondre à ta question
Sachant que c'est un fichier exe généré par le builder qui tourne sur la machine grâce à un runtime Engine , comment puis je quitter l'executable par F10 , sans utiliser Exit?
Le but n'est pas de quitter sans faire "F10", mais ma remarque est de te signaler "avant de quitter LabVIEW, il faut fermer les références TCP, passer par une phase de fermeture logicielle". Un logiciel comment par une initialisation (setup), puis le code principal (Main), puis un arrêt propre (cleanup) Donc ne pas fermer brutalement, mais quitter ta boucle logicielle, et faire un cleanup.
Je pense que ton code peut fonctionner. Il ne manque pas beaucoup. Mais si tu vais un code plus important à faire, si tu devais le maintenir dans le temps, gérer des versions, si d'autres développeurs devaient intervenir, .... C'est le but de ma réponse, si tu veux aller plus loin, je pense qu'il manque quelques règles de développement. Par exemple gestion des erreurs, code modulaire, utilisation d'un Framework connu et approuvé, documentation
si tu cherches quelques idées, par exemple, au hasard.
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 09-20-2017 12:54 AM
Très utiles toutes ces explications .je vais essayer de les appliquer sur ce projet et sur les suivants.En tant qu'autodidacte , j'ai zappé quelques bases de programmation LV.
j'ai trouvé ce qui perturbait mon réseau d'e/s.une étape de séquence sur laquelle le programme attend une réponse opérateur , n'était pas traversée par le flux de données du réseau...
Merci pour l'aide
le 09-20-2017 04:04 AM
salut, bonne nouvelle. Afin d'aider des personnes qui trouveront le post par une recherche, tu peux le fermer, avec la réponse que tu juges adaptée à ton problème. Si tu veux il y a aussi la possibilité de mettre des compliments.
A+ et bonne suite
Luc
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 12-19-2017 09:41 AM
Bonjour
Je n'avais lancé Labview 2016 depuis quelques semaines , et à présent ,aucun de mes projets ne veulent s'ouvrir.
J'ai toujours ce message:
Dois je réinstaller Labview?
y a t il un risque de perte de license?
Merci
le 01-07-2018 11:21 AM
salut bonne année! tu devrais faire un nouveau post.
Pour ton problème, dans ajout suppression de programme (ou Panneau de configuration\Tous les Panneaux de configuration\Programmes et fonctionnalités) tu peux « réparer » LabVIEW.
Pour la licence, même si elle « saute » tu peux la réactiver sans problème.
A+ Luc
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