Discussions au sujet de NI LabVIEW

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

Time_out

Bonjour,

J'ai un programme qui fonctionne pendant plusieurs années et lors d'une nouvelle implémentation d'un capteur, je rencontre une erreur suivante :      
GSXR100038_0-1746448979225.png

J'ai identifié où se trouve l'erreur, c'est à ce niveau de la lecture et esclave prend trop de temps pour répondre et il génère un timeout. J'ai un exemple fourni avec le driver pour récupérer les datas via le Modbus (que vous trouverez en ci-joint : nimodbus121\nimodbus121\71\vi.lib\NI Modbus.llb\MB Serial Example Master.vi).  

 

GSXR100038_1-1746449065118.png

Je me demande quelle est la différence entre le timeout en A et en B

GSXR100038_2-1746449238250.png

C'est un  programme qui a fonctionné pendant plusieurs semaines et 3 ans après il ne fonctionne plus, et pourquoi le timeout ? Merci de votre aide pour les pistes de recherches. 

 

PJ : nimodbus121.zip

0 Compliments
Message 1 sur 10
217 Visites

L'erreur est-elle systématique? L'erreur 6101 vient du vi MB Serial Receive, dépendamment du mode utilisé ASCII ou RTU le vi attend de lire l'adresse du slave (RTU) ou le caractère 0d58 (:) (ascii) avant de continuer. Ce serait la chose à vérifier, sot dans le code ou dans la configuration du capteur.

 

 

Ben

0 Compliments
Message 2 sur 10
204 Visites

@ben64  a écrit :

L'erreur est-elle systématique?

Oui c'est systématiquement au même endroit, et pourtant cette partie fonctionne pendant des années. 

L'erreur 6101 vient du vi MB Serial Receive, dépendamment du mode utilisé ASCII ou RTU le vi attend de lire l'adresse du slave (RTU) ou le caractère 0d58 (:) (ascii) avant de continuer.

Je travaille en mode RTU (c'est plus rapide et optimisé). 

Ce serait la chose à vérifier, sot dans le code ou dans la configuration du capteur.

ça ne peut pas être dans le code puisque cela a fonctionné pendant des années (je le répète encore) ! Le capteur se connecte via des afficheurs WEST et la configuration est correcte.

Ben


Je pense que les étudiants ont installé un autre driver Modbus et probablement qu'il y a un conflit, dans le fichier zip il y a un lien 'readme.html' et il préconise de dé-installer les drivers anciens.   

GSXR100038_0-1746453790541.png

Donc je me demande, si LabVIEW accepte 2 drivers Modbus. Il y avait aussi des mises à jour de l'anti-virus mais j'ai les tous désactiver et mettre hors connexion réseau pour qu'il fasse des updates.    

0 Compliments
Message 3 sur 10
199 Visites

S'il est recommandé de désinstaller les drivers avant d'installer les nouveaux je pense que c'est la chose à essayer avant tout. 

 

Ben

0 Compliments
Message 4 sur 10
194 Visites

@ben64  a écrit :

S'il est recommandé de désinstaller les drivers avant d'installer les nouveaux je pense que c'est la chose à essayer avant tout. 

 

Ben


Oui mais cela ne dépend pas de moi, le premier développement fonctionne bien et ils ont voulu rajouter un autre capteur de pression Keller, et ils ont choisi la méthode la plus simple c'est à dire utiliser un utilitaire tout fait chez Keller, et ce utilitaire nécessite d'installer les drivers de Keller en Modbus aussi. Donc, je suis reparti à 0 c'est à dire déinstaller tous les drivers de Keller et repartir comme au départ (il y a plusieurs années). Pour l'instant la manip est occupée donc je ne peux pas effectuer des essais pour l'instant. 

 

Je voulais juste avoir des conseils dans un premier temps, donc effectivement peut-être que c'est le Driver Keller (en Modbus) qui vient perturber le fonctionnement initial ? J'attends quand le PC est libre pour effectuer des essais. Mais il y avait aussi des anti-virus qui bloquaient les '.exe'. Je laisse ce Topic ouvert pour l'instant en attendant d'effectuer les essais (sans les Drivers de keller) pour voir.          

0 Compliments
Message 5 sur 10
191 Visites

 

Le Timeout B c'est le polling (la cadence de la lecture des entrées, s'il n'arrive pas d'autres événements). De manière générale, le timeout d'une boucle événement c'est simplement que le case "timeout" sera exécuté si aucun événement n'arrime pendant le temps timeout.

 

Le timeout A, celui qui vraisemblablement te cause problème, c'est le timeout de réponse sur le port seriel. Si l'appareil ne répond pas dans le temps imparti (donc le timeout), une erreur timeout se produit.

0 Compliments
Message 6 sur 10
145 Visites

@Walker34  a écrit :

 

Le timeout A, celui qui vraisemblablement te cause problème, c'est le timeout de réponse sur le port seriel. Si l'appareil ne répond pas dans le temps imparti (donc le timeout), une erreur timeout se produit.


 C'est exact mais il dépend aussi de la configuration du PORT série    


GSXR100038_0-1747661772917.png

Dans cette exemple au delà de 10 ms, on sortirait du PORT série quand même

GSXR100038_1-1747661886966.png

Calculons approximativement le temps nécessaires pour une lecture de 4 entrées, avec 9600 bauds. En mode RTU pour un octet (1 bits de start+8 bits (data) + 1 bits de parité +1 bits de stop =11 bits). Soit environ 1.1 ms avec un coefficient de sécurité x3.5 = 1.1 x3.5 = 4 ms. Et dans l'exemple c'est 100 ms soit 25 fois supérieur, j'ai largement de lire 4 donnés. Et par ailleurs, je n'ai pas tout à fait pris cet exemple fournit dans la bibliothèque du constructeur mais je me suis adapté et cela a fonctionné pendant 3 ans et maintenant cela ne fonctionne plus, je pense qu'il y a autre chose.

La plateforme est toujours en cours d'utilisation et je ne peux pas effectuer les essais mais je parierai plutôt sur qqchose de l'extérieur (an anti-virus, ou quelque chose d'autres qui scanne le programme ou '.exe' dans les dlls fournies par le constructeurs lors de l'installation) qui ralentisse le process ce qui fait que cela génère un timeout.            

 

0 Compliments
Message 7 sur 10
106 Visites

Si ton timeout sur le port sériel est de 100ms, et que qu'une erreur timeout apparaît, cela veut dire qu'il n'y a pas eu de réponse pendant 100ms. Effectivement, je suis d'accord avec toi que 100ms c'est largement suffisant.

 

Cela veut certainement dire que tu n'as pas de communication du tout. Le port COM est utilisable par VISA (l'erreur serait autre sinon), mais il n'y a pas de réponse.

 

A mon avis c'est typiquement une erreur que tu pourrais avoir si ton câble RS232 est débranché.

0 Compliments
Message 8 sur 10
103 Visites

Dans le vi MB Serial Init.vi le paramètre Stop Bits est hardcodé à la valeur 1.0. Tu pourrais vérifier si cette valeur correspond à celle qui est définie pour le port série dans MAX. 

 

Ben

0 Compliments
Message 9 sur 10
81 Visites

@ben64  a écrit :

Dans le vi MB Serial Init.vi le paramètre Stop Bits est hardcodé à la valeur 1.0. Tu pourrais vérifier si cette valeur correspond à celle qui est définie pour le port série dans MAX. 

 

Ben


C'est exact, je suis allé dans le gestionnaire périphérique du PORT et c'est bien le cas :

GSXR100038_0-1747752440469.png

Il y a juste la vitesse que je modifie en fonction de l'utilisation, il n'y a aucune raison de changement de ce bits. Avant l’immobilisation de la manip, le programme fonctionne mais uniquement 10 heures, ce n'est pas suffisant pour observer le phénomène. Si le PORT est mal configuré, ça se voit tout de suite, on n'a pas besoin d'attendre jusqu'à 10 heures.         

0 Compliments
Message 10 sur 10
78 Visites