Discussions au sujet de NI LabVIEW

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

erreur -1073807254 - erreur de "parité" communication série

Résolu !
Accéder à la solution

Bonjour à toutes et à tous,

 

j'avais déja publié un post à ce sujet mais je n'avais pas données assez d'infos d'un coup, et il s'est malheureusement perdu dans le décombre des posts.. Je vous remet donc le problème que j'ai rencontré avec la communication de mes balances de manière plus détaillée. Je dois en fait piloter 2 balances sartorius relativement anciennes via du RS232 (chacune des 2 balances a son propre câble RS232 qui la pilote).

 

J'ai donc décomposer mon programme de cette manière : 

- réalisation de 2 sous-VI : l'un pour tarer mes 2 balances (celui a l'air de fonctionner pour le mieux), l'autre pour tracer le graphe en direct des 2 courbes et l'enregistrement des donnée (c'est celui là qui a l'air de bug)

- rappel de mes 2 sous vi dans mon vi principal (je vous joins tous les VIs en PJ)

 

Et alors, lorsque je lance le vi principal, tout se passe correctement durant les premiers instants mais très vite une popup s'affiche m'indiquant une erreur de parité dans la com RS232. Je peux alors fermer cette popup et le programme continue de s'éxecuter quelques secondes (tout en fonctionnant bien, i.e : l'enregistrement se passe normalement et il continue à bien me tracer mes deux courbes) mais au bout d'un moment cette même popup réapparait.. je peux, comme auparavant, la fermer et le prog continue à s'éxecuter mais ce qui m'intéresserait c'est tout simplement résoudre le problème qui se cache derrière :]

 

Merci par avance à ceux qui prendront le temps de lire le message et d'essayer d'y répondre!

Cordialement,

 

Canister31

 

 

Tout télécharger
0 Compliments
Message 1 sur 48
3 739 Visites

et sans oublier le vi principal faisant appel aux autres sous-vi

 

0 Compliments
Message 2 sur 48
3 738 Visites

Bonjour,

Es tu sur de la configuration de ta liaison série ?

-Vitesse

-Bit de stop

-Parité

-Contrôle de flux.

 

Mets une temporisation de 100 ms derrière l'ouverture du VISA, afin de laisser le temps au système de se configurer.


Travailles tu dans un environnement bruité ? (pollution electro magnétique,...), quel longueur font tes cables de communication ? Sont ils dans un bon état ?

 

Si tu cycles des requêtes de manière manuel avec MAX, as tu aussi ce problème de parité ?

“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
0 Compliments
Message 3 sur 48
3 734 Visites

Bonjour Michael,

- oui, je suis absolument sûr des paramètres de communications que j'ai mis; les tests sous MAX sont concluants, les 2 balances me répondents parfaitement (la tare, la récup de la donnée etc..)

- j'avais déjà mis la tempo de 100 ms après l'ouverture de VISA et également une tempo après le write pour que mes petites balances aient le tmps de lire "l'ordre" que je lui envois (je vous renvois mon sous vi de graphe&save pour être sur que vous ayez le bon!)

- je ne pense pas que l'environnement sois extremement bruité, la longueur de mes câbles doit être au maximum de 3/4 m pour chacun d'entre eux, quant à leur état je ne pense pas que cela joue (puisque les commandes sous MAX sont parfaitement lues et comprises)

- je n'ai jamais cycler de requete sous MAX, en revanche lorsque je fais pleins de "Query" d'affilé, je n'ai aucun problème, la balance me répond pour chaque clik

 

question à part : l'architecture de mon sous-vi  de graphe&save me dérange légèrement car à chaque  entrée de ma boucle while je redéfinis toujours justement mon port VISA (y a-t-il par exemple la possibilité d'ouvrir une fois le port en dehors de ma boucle while par exemple sans pour autant à avoir à changer toute l'archi du vi?)

 

edit : avec le sous vi c'est mieux 

0 Compliments
Message 4 sur 48
3 723 Visites

Par ailleurs, j'ai à présent une erreur de "cadrage", je vous joins un screen :

 

0 Compliments
Message 5 sur 48
3 722 Visites

Humm forcément ca part très mal si tu passes ton temps à fermer/ouvrir le handle de connexion, c'est la meilleure méthode pour foutre la grouille dans les buffers, ce qui pourrait expliquer tes erreurs.

j'ai modifié en rapide ton programme, essaye de voir avec cette version, et tiens nous informer des résultats.

“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
0 Compliments
Message 6 sur 48
3 716 Visites

Salut Michael,

 

tout d'abord, merci beaucoup pour essayer de débloquer ma situation, c'est très aimable de ta part!

 

bon pas de changement par contre avec ton programme modifié, voir j'ai l'impression que ça a empiré la situation (même si le code est effectivement beaucoup plus propre comme cela!), dans le sens où cette erreur de "parité", une fois fermée, revient beaucoup vite que précedemment (comme l'impression que ça revient une fois/boucle , soit environ toutes les secondes).. l'erreur de cadrage semble néanmoins avoir disparue elle!

 

Il y a quelque chose qui m'échappe : lors que j'éxécute le sous-vi de save&graphe en continue, aucune erreur n'est a déploré (bon, rien n'est tracé etc puique toutes les variables sont reliées à des noeuds de prop) alors que quand je fais une simple éxécution de mon main, c'est là que ça déconne..

 

edit: en fait je viens de remarquer que j'ai deux erreurs de partié par boucle, en effet lorque l'erreur apparait j'appuis sur "echap" pour l'enlever et une autre fenetre d'erreur apparait aussitôt apparait, un nouvel echap et cette fois ci je peux attendre une demi seconde avant qu'une nouvelle fenetre d'erreur apparaisse (elles  apparaissent 2 par 2 en gros)..

 

0 Compliments
Message 7 sur 48
3 698 Visites

Bonjour,

Ce changement de comportement est tout à fait normal, par rapport aux modifications que j'ai apporté.

 

En fait, une fois que ton erreur apparait, je ne l'efface pas, donc celle-ci se propage par le registre à décalage d'une itération sur l'autre. Tu les vois apparaitre 2 par 2 car tu as deux liens VISA ;), tu as donc une erreur de parité pour chaque session VISA, ce comportement irait dans le sens d'une mauvaise configuration de tes ports.

Refais le test avec MAX, et vérifie bien que tu configures tes liaisons de la même manière. Tes balances ont bien deux cables dissociés ? Fait le test déjà avec une seule, et après rajouter la deuxième.

“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
0 Compliments
Message 8 sur 48
3 693 Visites

Oui, j'ai bien compris tout cela mais je réitère mes propos : je ne pense pas que cela vienne d'un problème de configuration des ports car d'une part j'arrive à envoyer toutes les commandes que je souhaite sous MAX et les balances me répondent parfaitement, sans aucun problème, même en envoyant pleins de commandes à la fois & d'autre part, et chose la pluse importante, le sous vi de tare s'éxécute parfaitement : les balances se tarent toutes les  deux sans broncher et sans aucun pb alors que je viens de vérifier, j'ai mis éxactement les memes config des 2 sessions VISA pour les deux sous-vi, c'est pour ça que je sèche...

 

Par contre Michael, le problème pourrait-il venir du faire que j'ouvre/ferme la config dans mon sous vi de tare mais je la rouvre une nouvelle fois (et referme  la fin) cette même config. Ne dois-je pas, par exemple, laisser ouvertes la config open entre les deux sous vi? ou alors des constantes de temps de ma boucle while ou du wait une fois la commande envoyée? 

0 Compliments
Message 9 sur 48
3 689 Visites

Idéalement dans le cadre de programme pilotant des instruments, je conseillerais d'ouvrir et de fermer les ports un minimum de fois, ainsi tu évites de corrompre tes buffers, ainsi.


Tu peux faire un premier test en ajoutant un vidange des buffers après la connexion pour voir si cela modifie le comportement, et si ce n'es pas trop lourd, modifie ton projet pour ouvrir qu'une seule fois le port, en propageant ton handle de connexion soit par fil soit par variable globale.

“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
0 Compliments
Message 10 sur 48
3 684 Visites