le 07-23-2018 08:54 AM
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
le 07-24-2018 03:23 AM
07-24-2018 03:44 AM - modifié 07-24-2018 03:46 AM
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 ... )
En Highlight execution, noté la valeur envoyée à Input 1 "E2> 0 E3 >0 *"
le 07-24-2018 08:29 AM
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
le 07-24-2018 08:46 AM
J'avais utilisé le nœud 'Bytes at Port' car j'avais remarqué qu'il me renvoyait toujours l'erreur ERR (-1073807339) :
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.
le 07-24-2018 08:58 AM
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
07-24-2018 09:41 AM - modifié 07-24-2018 09:42 AM
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.
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.
le 07-24-2018 09:54 AM
le 07-24-2018 10:20 AM
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 :
Puis, erreur et çà constant :
En déconnectant et relançant (sans modifs) :
le 07-24-2018 10:29 AM