Discussions au sujet de NI LabVIEW

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

Carte Relais (USB -X440) - soucis COM RS232

Bonjour à tous,

J'ai un soucis avec ma carte relais USB-X440 (lien de la DOC). J'utilise le protocole de communication qui est donné dans la doc.

J'ai réalisé ensuite un simple VI pour contrôler l'ensemble des fonctionnalités de cette carte mais hélas j'ai des soucis.

Mon programme fonctionne bien en pas pas (Highlight Execution). La carte retourne bien les valeurs et active ou non les relais (indicateur LED). Néanmoins dés que mon programme est en récursive, je n'obtiens plus la lecture des entrées et l'activation des relais fonctionne par intermittence. Je m'explique, lorsque j’envoie la commande ON sur un relais, il s'allume et s'éteindra après quelques tour de loop et se rallumera de manière intempestive sans que je n'ai donné d'ordre contraire ...

Le VI est en pièce-jointe.

 

Je pense que j'ai dû faire des erreurs mais je ne les vois pas si quelqu'un peut m'aider, merci !

Merci d'avance pour votre aide,

GdB

0 Compliments
Message 1 sur 14
3 645 Visites
Salut !

Un conseil : ne crée pas ta connexion pour la fermer à chaque tour de boucle, mets ces étapes à l'extérieur.

Pour ta question en général, je n'ai pas regardé en détail ton VI mais peut être que tu réalises tes lectures/écritures trop vite ?
CLAMaxime -- Kudos are a great way to say thank you
0 Compliments
Message 2 sur 14
3 614 Visites

En effet ! Je met un close à chaque loop ... c'est pas génial j'avais oublié puis le Visa configure aussi ....

J'ai modifié et sorti de la boucle WHILE néanmoins même soucis (en Write quand j'active les relais ils s'éteignent tout seul). J'ai essayé avec un Timing plus lent mais idem.

Quand je le lance en normal et lecture j'ai cela :  (uniquement le Input 1 qui affiche la valeur de Input 2 ... )

StrangeBehavior_1.PNG

En Highlight execution, noté la valeur envoyée à Input 1 "E2> 0 E3 >0 *"

StrangeBehavior.PNG

 

0 Compliments
Message 3 sur 14
3 613 Visites

Avec l'utilisation des vi Flush I/O buffer et des noeuds Bytes at Port c'est pratiquement impossible de savoir ce qui se passe. Je n'ai jamais utilisé la fonction Flush I/O Buffer et n'utilise que très rarement dans des situations très spécifiques le noeud Bytes at Port.

 

Sur l'image on voit E2> 0 E3 >0 * à l'input 1 mais seulement E2> 0 est affiché dans l'indicateur ce qui semble indiquer qu'il y a un caractère \n (newline) entre E2> 0 et E3> 0. Par défaut la fonction VISA Configure Serial Port utilise le caractère de terminaison \n.

 

Voici ce que j'essaierais: Enlever tous les VISA Flush I/O Buffer et les noeuds Bytes at Port et relier une constante (par exemble 16) à l'entrée byte count des fonctions VISA Read.

 

Ben64

0 Compliments
Message 4 sur 14
3 592 Visites

J'avais utilisé le nœud 'Bytes at Port' car j'avais remarqué qu'il me renvoyait toujours l'erreur  ERR (-1073807339) :

StrangeBehavior_2.PNG

En fixant, le nombre exacte de Bytes attendu, je n'avais plus le problème et avec 'Byte at Port' le nombre était directement adapté car en digital je n'ai que 4 Bytes à afficher alors qu'en Analogique 7.

J'ai fait les modifs (supp les Flush et le Bytes at Port) mais je me retrouve avec l'erreur cité avant. Je n'obtiens que le Input 1 : E1>0000 puis l'erreur.

0 Compliments
Message 5 sur 14
3 588 Visites

C'est une erreur de timeout. Si tu mets ton indicateurs en mode '\' Codes Display tu peux nous montrer ce que tu reçois exactement?

 

C'est étrange que tu recoives E1>0000 ce qui correspond au mode analogique (note que cette fois-ci tu reçois bien E1 et non pas E2) alors que tu recevais E2> 0 ce qui correspond au mode digital!! Quel type de réponse t'attends tu a recevoir?

 

Ben64

0 Compliments
Message 6 sur 14
3 579 Visites

J'ai mis 4 bytes pour chaque Read (pour éviter le Timeout) mais j'ai oublié de changer le mode avant que je fasse les screen. J'ai testé après et j'ai 'E1>0000\r'  donc les '\r' après chaque interrogation.Tu remarqueras que les données transmises se décalent à travers les indicateurs. Au bout d'un moment une erreur apparait et uniquement Input 1 affiche quelque chose puis finalement que des caractères incompréhensibles ... Je dois déco et reconnecter pour retrouver les valeurs du début.

 

StrangeBehavior_4.PNGStrangeBehavior_5.PNGStrangeBehavior_6.PNGStrangeBehavior_7.PNG

 

StrangeBehavior_8.PNGStrangeBehavior_9.PNG

 

En effet !! j'ai pas compris sur ce coup là ... D'après la doc si j’envoie E1 et que E1 était paramétré en Analogique -> E1>0000 (0000 : 0volt / 1024 : 10volt) pour le mode Num c'est E>0 ou 1 donnant directement l'état binaire.

 

0 Compliments
Message 7 sur 14
3 574 Visites

Change le caractère de terminaison pour 13 (\r) ce qui correspond à un retour de chariot. Tu pourras ensuite remettre le byte count à 16.

 

changer term caract.png

Ben64

0 Compliments
Message 8 sur 14
3 566 Visites

J'ai changé et au début c'était parfait !

Tout était en place mais dès que j'ai fait qq modifications (Input 2 et 3 en Digital) j'ai eu ce décalage là qui augmente en fonction du nbr de modifs :

StrangeBehavior_10.PNG

Puis, erreur et çà constant :

StrangeBehavior_11.PNG

En déconnectant et relançant (sans modifs) : 

StrangeBehavior_12.PNG

0 Compliments
Message 9 sur 14
3 561 Visites

Essais de mettre un petit délais après avoir changé de configuration avant de lire l'état des relais.

 

Benoit

0 Compliments
Message 10 sur 14
3 558 Visites