le 09-26-2017 09:10 AM
Bonjour à tous,
Je suis actuellement confronté à un problème, je souhaite lire en simultané deux entrées analogiques sur mon boitier d'acquisition configurées en tension. J'ai trouvé des topics similaires mais ne répondant pas à ma problématique.
Ma première voie lit un signal de commande entre 2 et 12V (j'ai créé au préalable une échelle personnalisée pour pouvoir décaler mes niveaux de tension). C'est un signal PWM à une fréquence de 1kHz, je souhaitais faire une acquisition de 100 points à une fréquence de 100kHz mais je suis limité à 50kHz lorsque je lis une seconde voie analogique.
Ma seconde voie est un signal sinusoïdale -1V / 1V qui est le reflet d'un sinus 230V. Je n'ai pas besoin d'autant de point que pour le précédent, je souhaiterai réaliser une acquisition de 10 points à une fréquence de 1kHz
Vous pouvez voir les deux courbes sur l'image ci-dessus.
Mon champ PWM d'une fréquence de 1kHz à dans un premier temps une tension max de 9V. A la suite d'une commande, cette tension max chute à 6V. Mon système détecte ce changement d'état et ferme un contacteur générer un sinus 230V.
Pour réaliser cette tâche, je procède ainsi:
- J'initialise mes variables
- Je configure la taille de mon buffer; je démarre un chronomètre qui calcule le temps écoulé; et je pilote une sortie numérique pour faire varier mon champ PWM
- Je fais une acquisition de mon entrée analogique "PWM droit" pendant 10sec et j'insère les éléments dans un tableau; puis je pilote à nouveau ma sortie numérique pour faire varier mon PWM
Ce processus fonctionne pour une voie "PWM droit", je souhaite alors intégrer ma voie "L1 droit". Avez-vous une idée de comment je pourrai faire ?
Mon objectif est de comparer en fonction des valeurs de mes deux tableaux le temps écoulé entre deux instants (PWM droit = 6V et L1 droit différent de 0)
Merci par avance et j'espère avoir été suffisamment précis dans mes explications
Gabriel Leroy
11-10-2017 09:52 AM - modifié 11-10-2017 09:54 AM
Bonjour,
J'ai d'abord quelques remarques concernant votre code :
- ça ne sert à rien d'utiliser le buffer pour cette acquisition car quand vous configurez la fréquence, qui est de 1kHz dans le cas de votre application, le buffer est configuré automatiquement.
- N'utilisez pas d'indicateur pour écrire. Les commandes 9V 6V etc doivent être en "commande" et pas en "indicateur"
- Il est conseillé d'utiliser une machine à état plutôt que des structures séquences.
- Il est aussi conseillé de faire la gestion d'erreur.
- Il serait plus facile pour vous d'utiliser des voies physiques (à l'entré de "DAQmx - Créer une voie") que de créer plusieurs tâches.
Vous pouvez vous référer à l'exemple en pièce jointe pour faire l'acquisition de deux Analog Inputs avec une seule tâche, que vous adapterez à votre application.
Cordialement,