01-09-2017 03:58 AM - modifié 01-09-2017 03:58 AM
Bonjour à tous,
Je reviens une nouvelle fois avec un nouveau problème. J'essaye actuellement de communiquer avec un débitmètre Brooks sous le S-protocole, apparemment synonyme au HART en RS485. Apès 3 mois de galère, je réussis enfin à établir quelque chose. On trouve des drivers de cet instrument mais rien ne fonctionnait. J'ai fini par éclaté les VIs du driver en les mondifiant à ma sauce d'après les quelques connaissances que j'ai pu acquérir ces 3 mois.
Après avoir fait un code à ma sauce, j'arrive enfin à avoir une réponse, j'utilise énormément l'animation pour pouvoir identifier les problèmes. Ce matin, surprise, je réussi enfin à avoir une réponse, et à plus ou moins la traduire.
Cependant, lorsque je n'utilise plus l'animation, et donc une éxécution rapide du diagramme, mon VISA Write n'envoie plus aucun octet. J'ai d'abord cru que la commande mettant trop de temps à arriver par rapport au port COM par exemple, j'ai donc retardé la donnée, mais rien y fait. J'ai ensuite mi des indicateurs juste avant le VISA et j'ai remarqué que toutes les données (port COM, commande, cluster d'erreur) s'écrivaient bel et bien, le port sort aussi bel et bien du VISA.
J'ai essayé de retardé un peu toutes les données, avant, après, de 200ms à 2000ms, mais j'ai toujours aucun octet qui sort de mon VISA. Mais dès que j'active l'animation, tout va bien.
Auriez-vous une idée d'où cela pourrait venir?
Merci de votre aide.
Cordialement,
Résolu ! Accéder à la solution.
le 01-09-2017 04:29 AM
Oui, tu as mal positionné ta temporisation.
Tu dois mettre tes 200 ms entre le visa "Write" et le noeud de propriété "Byte at port" 😉
Bonne journée,
Michael
01-09-2017 04:42 AM - modifié 01-09-2017 04:42 AM
Ca marche parfaitement, merci beaucoup encore une fois, il semblerait que j'ai encore beaucoup de chose à apprendre rien que la logique du code.
Je ne clore pas tout de suite ce poste, j'aurais peut-être quelques questions pour traduire mes réponses (ou mes ordres).
le 01-09-2017 05:37 AM
Pour faire simple, lors de l'exécution du visa "write", tu envois la commande à ton équipement.
De manière générale, celui-ci mais environ 50ms à la traiter, et à y répondre, il faut donc que tu patientes un peu avant de chercher à relire sa réponse.
Le noeud de propriété "bytes at port" t'indiques la quantité de données présentes dans le buffer mémoire à un instant "T" , et disponible en récupération avec le Vi "visa Read", la temporisation est donc là pour laisser le temps à ton buffer de se remplir.
La difficulté par la suite en fonction des appareils est de trouver le compromis entre la réactivité de ton programme, et la vitesse de travail de ton équipement.
Bon courage pour la suite.
Michael