Sinus a fréquence variable
Bonjour à tous,
Je cherche à générer un signal sinusoidale à fréquence variable à partir du FPGA d'un cRio, mais rien n'y fais, le vi "Sine Wave Generator" ne marche pas...
Quelqu'un connaitrait-il une alternantive à ce VI?
Cordialement,
Nathan
Résolu !
Accéder à la solution.
Ah mince j'avais oublier ce post ^^
Au final j'ai résolu mon probleme, je ne sais pas pourquoi ca ne marchait pas mais j'ai trouvé une alternative qui fonctionne à l'aide du VI Générateur de fonction élémentaire disponible dans la palette génération de waveform.
A bientot
Nathan
Similar Messages
-
Générateur de sinus à fréquence variable
Bonjour à tous,
Comme le titre l'indique, je cherche à mettre en oeuvre un générateur de tension sinusoidale à fréquence variable. J'ai actuellement réussi un créer une partie de mes attentes, c'est à dire que je génère bien une tension sinusoidale variant d'une fréquence F1 à une fréquence F2 dans un temps imparti. Cependant j'aimerai, une fois ma fréquence arrivée à ma valeur F2 décrémenter vers ma fréquence F1 . ( F1-F2-F1-F2 etc selon le nombre de cycle que je souhaite réaliser .)
Je vous joint le Vi que j'ai réalisé, Pour ma part je pense que c'est au niveau du bloc "chirp" que la modification doit-etre réalisée mais je après diverses tantatives je n'y arrive point..
Cordialement
Pièces jointes :
test avec DAQ assistant 2.vi 50 KB
Chirp.png 1320 KBBonjour Geoff54,
Merci d'avoir posté sur le forum NI.
Je ne suis pas sur d'avoir bien compris, votre signal est-il simplement un générateur sinusoïsale dont l'amplitude décrémente en gardant constant l'offset ou votre signal doit il avoir la même forme que celui dans le VI ci joint?
Pourriez vous éventuellement nous renvoyer votre projet (il manque une dépendance).
Cordialement.
P Denis
National Instruments
Pierre_D
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
LabVIEW Tour
Journées Techniques dans 10 villes en France, du 4 au 20 novembre 2014
Pièces jointes :
test.zip 12 KB -
Acquisition fréquence variable et basse fréquence
Bonjour,
Je suis débutant en LV et dois mesurer la vitesse de rotation d'un moteur qui ralenti. Pour cela, un capteur de vitesse
me délivre un signal traité par une carte électronique. Un signal carré est issu de cette carte
dont la fréquence est image de la vitesse de rotation du moteur (160 Hz => 1600 tr/min et 0 Hz => 0 tr/min).
La carte électronique apporte quelque fluctuation de fréquence, j'utilise donc deux compteur large gamme
pour mesurer la fréquence.
Mon problème est le suivant:
Mon objectif est d'avoir en "temps réel" ( juste une indication, pas de "vrai" temps réel)
sur ma face avant la vitesse de ralentissement de mon moteur. Cela fonctionne lorsque celui ci tourne
jusqu'à 150 tr/min environ (15 Hz) en dessous mon VI bloque et je viens même dépasser le time out fixé lors
de l'acquisition. Il faudrai au moins que j'observe le ralentissement jusqu'à 10 tr/min.
Si quelqu'un a une idée pour pallier ce problème.
Par avance merci pour votre aide
Vincent V.
Pièces jointes :
Ralentissement.vi 83 KBC'est toujours le même soucis quand on a (le grand plaisir) de rencontrer un débutant :
1) un Block Diagramme qui fait plusieurs écrans
2) des dizaines de variables locales partout, partout
3) ... bravo !!!! ... tu es passé a côté de la 3eme chose qui caractérise un débutant .... les structures séquences il n'y en a pas (ouf)
Pourquoi utiliser toutes ces variables locales ???
... alors que tu disposes sur le Diagramme de toutes les informations .
Pourquoi ne cables-tu pas directement sur le terminal correspondant ? (au llieu de RE-lire l'info via une variable locale)
Je ne vois aucune gestion de l'erreur sur ton Diagramme.
Tu as plusieurs noeuds de propriété "de réinitialisation" ... ces noeuds sont flottant !!!
Qui te dis que cette "réinitialisation" se fera en début d'exécution et pas à la fin ?
Avec labview, le séquencement du code se fait via le "flux de données" .... sans flux de données l'ordre d'exécution est inconnu.
Cabler les entrées/sorties d'erreur permet d'établir un flux de données.
La première chose :
réduire ton code à UN écran (au passage, aligne, fait "du propre")
supprime tes variables locales.
crée un flux de données pour tes noeuds de propriété. -
Lire une fréquence variable, parfois nulle
Bonjour,
Je voudrais lire une fréquence avec DAQmx, sur une carte PCI 6624 (compteurs).
J'arrive à le faire simplement avec le DAQ Express, mais le problème est que cette fréquence varie au cours du temps, et peut, dans certains cas, être nulle. Quand elle est nulle, j'ai une erreur comme quoi le timeout est dépassé.
Comment puis-je faire pour résoudre ce problème ? Avec les noeuds de propriété ?
Je voudrais pouvoir lire la fréquence en permanence, et savoir quand elle est nulle, sans avoir d'erreur...
Merci d'avance.Reliez le VI que j'avais posté ici à la sortie du cluster d'erreur de votre VI Express en définissant son entrée Erreur à annuler selon l'erreur en cas de fréquence nulle (-200474 si je ne m'abuse). Alternativement, le même résultat peut être obtenu en utilisant General Error Handler.vi en définissant ses entrées de la manière suivante :
exception action : cancel error on match
exception code : code de l'erreur à ignorer
La capture d'écran ci-dessous illuste les deux variantes :
Donnez-moi des nouvelles si le VI Express devait tout de même afficher une boîte de dialogue avec l'erreur et je vous indiquerai alors les opérations suivantes à réaliser.
Message Edité par JB le 04-07-2008 10:11 AM
Attachments:
Example_VI_BD2.png 4 KB -
Parallélisme FPGA - Génération / Echantillonnage
Bonjour à tous,
Je travail actuellement sur une application sensé générér un signal sinusoïdale à fréquence variable, qui sera alors envoyé dans un procédé de commande. Cette même application doit alors échantillonnée la sortie de ce procédé.
Les deux partie marche parfaitement séparement, mais une fois ensemble, je constate des sauts sur l'oscilloscope du sinus généré ainsi que sur l'échantillonnage...
J'ai essayer de jouer sur les fréquences d'échantillonnage, mais rien n'y fais...
Quelqu'un aurait une idée de où le probleme peut venir?
Cordialement,
Nathan
P.S.: Vous trouverez en piece jointes mes codes, c'est peut etre plus pratique pour dépanner
Résolu !
Accéder à la solution.
Pièces jointes :
Regul Num.zip 389 KBEn général c'est une jolie preuve par 3 selon la profondeur de la FIFO, la fréquence d'acquisition FPGA (ou génération), et le temps de cycle côté RT.
Exemple : si j'acquiers dans le FPGA 1 échantillon toutes les 10µS, et je l'envoie dans ma FIFO DMA, côté RT je dois faire en sorte de lire 1000 éléments toutes les 10ms (arbitrairement) (à condition d'avoir une FIFO FPGA suffisamment grande pour qu'elle envoie les données vers le controleur au fil de l'eau sans en perdre).
Dans la pratique, pour lire ces 1000 éléments, il y a plusieurs méthodes, l'essentiel est de ne pas perdre de données, de ne pas avoir un CPU à 100% et de ne pas laisser les FIFOs se remplir.
Une illustration complète dans le classique cRIO Dev Guide :
- http://www.ni.com/compactriodevguide/f/
La leçon 3 contient notamment un exemple.
--Eric
Eric M. - Application Engineering Specialist
Certified LabVIEW Architect
Certified LabWindows™/CVI Developer -
DAQmx : Synchronisation de deux compteurs
Bonjour,
Je commence à travailler avec DAQmx et je tombe sur un os. De multiples recherches un peu partout n'ayant pas résolu mon problème (pourtant simple), je me décide à envoyer un message sur ce forum.
J'ai un boîtier USB-6212 et je souhaite générer deux trains d'impulsions (en fait, une horloge et une impulsion de fréquence variable). L'impulsion a une durée égale à une demie période d'horloge et doit impérativement avoir son front montant alors que l'horloge est à son état bas.
Pour cela, je pensais utiliser les deux compteurs ctr0 et ctr1. J'arrive parfaitement à générer l'horloge et l'impulsion, mais seulement en mode de cadencement "Implicite (compteur)" et évidemment, elles ne sont pas synchronisées entre elles. Quand j'essaye de passer en mode "Horloge d'échantillonage", j'ai droit à deux erreurs selon le cas: l'une qui me dit que je n'ai pas le droit d'utiliser le mode "échantillons continus" et que je dois utiliser "point à point", et l'autre qui me dit que "point à point" n'est pas supporté.
Connaissez-vous un moyen de contourner le problème ?
Je joins mon vi (qui ne marche pas...).
Merci de votre aide et bonne soirée !
JB
Pièces jointes :
Essai_Synch.vi 29 KBBonjour et merci de ta réponse.
Je ne suis pas sûr de bien comprendre comment faire ce que tu dis. DAQmx a encore beaucoup de zones d'ombres pour moi...
Dans le vi joint, j'ai essayer de faire ce que tu dis. Il fonctionne, mais les deux pulses ne sont pas synchrones.
Est-ce que STP tu pourrais le regarder rapidement et me dire si c'est bien ce à quoi tu pensais ?
Merci beaucoup !
JB
Pièces jointes :
Essai_Sync_3.vi 25 KB -
Erreur de calcul amplitude FFT à f = 0Hz
Avec l'objet sousMesuresSpectrales [subSpectralMeasurements.vi] de la librairie LabView, sous LabVIEW7.1\vi.llb\express\express analysis\SpectralBlock.llb, je constate un problème de calcul sur la FFT pour fréquence = 0 Hz en amplitude.
Dans mon application, j'ai exporté ce VI express pour n'utiliser que certaines de ses fonctionnalités, en autres propriétés : "Paramètres du signal" pour afficher sa FFT.
Normalement, à la fréquence = 0Hz, l'amplitude max et efficace doivent être identiques et correspondre à la composante continue i.e DC value. Ce résultat n'est pas observé. J'observe le rapport racine de 2 habituel pour une valeur pic ou RMS à f = 0Hz.A présent , je réussis à mesurer mon accélération, obtenir le déplacement et ma vitesse ( pour tenir compte du gabari ) et je réalise un singnal sinusoidale de fréquence variable ! Dois-je utiliser la fonction PID pour mon asservissement ?
Je ne sais également pas comment tenir compte des points de cassures de mon "gabari" présent en pièce jointe auparavant ? Help -
Bonjour,
pour parametrer un compte mail, le choix pop/imap ne s'offre plus et le compte mail ainsi créé se fait automatiquement en imap.
Commet faire pour eviter que lorsque j'efface un message de mon iphone il soit effacé aussi du serveur ?
il n'y a plus d'option effacer du serveur : jamais comme sur les versions precedentes.
merci d'avance si qq a une solutionBonjour Florent_A,
Merci déja de t'interesser à mon sujet, pour répondre à ta question la tempo de 50 ms dans la boucle for n'a pas d'intéret particulier je l'ai supprimé, cependant le problème est toujours le même.
certe partie consiste à générer un tableau d'amplitude et de fréquence à partir des points de cassures définis auparavant.
Je résume :
1°) définition du profilé ( points de cassures principaux)
2°) Bloc Sweep sine ( construit un tableau pour générer les amplitude et fréquences intermédiaires entre ces points de cassures, plus le paramètre "fréquency line" est important plus le nombre de points générés sont conséquents)
Mon système est assez simple voici ma boucle de régulation :
Je réalise un asservissement, j'ai une génération d'un signal sinusoidale de fréquence variable et une mesure d'amplitude à l'aide d'un accéléromètre.
cordialement -
Bonjour,
J'ai changé d'ipod à Noel, et j'ai reçu comme cadeau le nouvel ipod nano 6è generation.
Il fonctionnait trés bien jusque hier quand il s'est mis à s'arrêter au bout de quelques secondes avec la mise en veille de l'écran!
Que faut-il faire pour que mon ipod fasse ce que j'en attends : lire de la musique en continu?
Merci de m'aider car je ne sais pas quoi faire!
J'ai déjà essayé les commandes de réglage de la veille, sans véritable succès!
J'ai réinstallé le logiciel sur itune, restauré puis synchronisé, aucune évolution...
Rien n'y fait, je suis bloqué avec cette panne!
D'avance, merci!A présent , je réussis à mesurer mon accélération, obtenir le déplacement et ma vitesse ( pour tenir compte du gabari ) et je réalise un singnal sinusoidale de fréquence variable ! Dois-je utiliser la fonction PID pour mon asservissement ?
Je ne sais également pas comment tenir compte des points de cassures de mon "gabari" présent en pièce jointe auparavant ? Help -
Bonjour,
je viens vers vous car je bloque sur une question d'échantillonage..
Je dispose d'un boitier NI USB 6211 ( 16 bit , 250 kS/s ) , j'utiliserai son entrée analogique et sa sortie analogique aux mêmes fréquences . La fréquence maximale que je serai amené à mesurée est de 15 Hz et au maximum 7500 Hz.
Mon entrée analogique récéptionne une accélération et ma sortie analogique génère une tension sinusoidale à fréquence variable.
Quelle formule concrète permet de définir le nombre d'échantillons à prélever ?
Cordialement
Résolu !
Accéder à la solution.Bonjour Geof,
Je principe est d'utiliser le théorème de Nyquist. Celui ci indique que pour retrouver être capable de récupérer la fréquence de ton signal, il faut échantillonner à une fréquence égale au minimum à deux fois la fréquence la plus élevée de ton signal.
>> Sampling Theorem
>> Bandwidth, Sample Rate, and Nyquist Theorem
Cela permet de récupérer la bonne fréquence/période de ton signal. Pour récupérer la bonne forme du signal, il faudra augmenter cette proportion. En principe, il est conseillé d'échantillonnée à une fréquence de 5 à 10 fois la fréquence max de ton signal.
Cela répond-il à ta question?
Bonne journée,
M-Junior -
salut les amis!
alors je voulais faire un teste toute simple, ce teste c'est comparer deux réel! et faire un test si la deuxieme valeur depasse la premiere un messgae s'affiche! et ceci en boucle puisque un des réel est variable!!
j'ai fait comme indique l'image ci-joint! et ca n'a pas marché!
des suggéstions? et merci
Pièces jointes :
test.PNG 7 KBoui, plus "propre" ... mais la propreté n'est pas la finalité de se passer des "locales".
Une variable locale est un "objet" qui se trouve "en dehors" du flux de données.
Tu ne maîtrises pas "le moment" où la valeur du Contrôle sera effectivement dupliquée dans sa variable locale correspondante.
La variable locale est-elle "à jour", ne l'est-elle pas ? ... tu ne peux avoir aucune certitude absolue à ce sujet.
La seule façon d'être certain, est d'encapsuler la variable locale dans une structure séquence, de façon à forcer cette locale a se trouver "dans" le flux.
Ici, le code est simple ... mais si tu lis et écris dans une locale à des endroits différents, vois depuis des process différents (boucles différentes),
là ... tu auras des soucis de " race condition ".
Labview est un langage qui est basé sur le "flux de données". Je suis contre tous les objets qui "brisent" ou "forcent" ce flux ... structure séquence, variable locale ...
Eventuellement, un cas ou les variables locales peuvent être utilisées (en écriture), est le cas de l'initialisation avant exécution.
et bien entendu ... dans une structure séquence et dans le flux. Jamais de "locale flotante".
Les locales sont des objets "exotiques", qu'il faut utiliser le moins possible et toujours avec beaucoup de réflexion. -
Bonjour,
Je doit réalisé sur LabVIEW un oscilloscope. Le signal à traiter est donné par un GBF, récupéré via une carte d'acquisition. Dans le programme, j'utilise un assistant DAQ (permet de régler les paramètres d'acquisition : le nombre d'échantillons, la fréquence d'échantillonnage...) dans une boucle while.
Cet assistant revoit une waveform et génère une courbe à chaque itération de la boucle while. Comme tout sur "bon ascilloscope", je cherche à y introduire une fonction qui permet de réduire le bruit du signal. Pour cela, j'aimerai faire un système pour moyenner le signal.
Est-il possible de stocker quelques itérations, en faire une moyenne et retourner cette moyenne dans un graph ?
Pour ne pas ralentir l'affichage (afficher une courbe à chaque itération et non toutes les 5 itérations si on moyenne sur 5 itérations), est-il possible de faire un stockage "glissant" ?
Si dessous une image de l'assistant :
Révélation (Surlignez pour lire)
J'espère avoir été assez clair.
SimonBonjour,
Je ne suis pas tous les jours devant mon PC... qui est en panne.
Si le problème consiste à "nettoyer" la réponse d'un système linéaire à une excitation sinus, alors c'est assez simple.
La réponse est normalement sinus et le bruit en haute fréquence, un filtre passe bas un pôle suffit parfois.
On peut le faire en ligne sur la boucle WHILE avec un registre à décalage et la relation:
y(n) = y(n-1) *(N-1)/N + x(n)/N
N est le nombre de moyennes,
n est l'indice de la donnée, x pour l'entrée et y pour la sortie du filtre
Il faut initialiser le registre par 0 par exemple. Le transitoire sera curieux, mais pour un sisgnal sinus par définition stationnaire, ce n'est pas un soucis
Il faut placer le filtre entre le bloc d'acquisition et le graphe...
Le filtre va introduire un déphasage, donc placer le même filtre pour tous les signaux si on veut les comparer dans le domaine des temps. Le retard est N/Fe...
Il faut évidemment respecter la règle de Shannon ( Fe > 2* F sinus) mais bien plus si on veut regarder le signal sur l'oscillo. Il faut prendre au moins le rapport 20 au lieu de 2
Par exemple :
Fc fréquence de coupure du filtre passe bas = 2 * F sinus
Fe fréquence d'échantillonnage = 20 * F sinus
N nombre de moyennes = Fe / Fc = 10 dans l'exemple..
Cela devrait répondre au problème.
Merci de me tenir au courant du résultat. Je n'ai pas en ce moment dde PC avec LV, pour tester -
Bonjour j ai un MBA et je souhaite liberer de la place sur SSD et j ai donc acquis un disque dur externe de 1T .
Quelle est la procedure a suivre pour deplacer la bibliotheque ITUNES et IPHOTOS sur le disque externe et y acceder
merci d vance
jmpA présent , je réussis à mesurer mon accélération, obtenir le déplacement et ma vitesse ( pour tenir compte du gabari ) et je réalise un singnal sinusoidale de fréquence variable ! Dois-je utiliser la fonction PID pour mon asservissement ?
Je ne sais également pas comment tenir compte des points de cassures de mon "gabari" présent en pièce jointe auparavant ? Help -
depuis 15 jours je n'arrives plus à utiliser la souris liée au Trackpad . Le curseur se déplace mais lors d'appui sur le carré celui -ci dysfonctionne et n'ouvre pas les applications ou bien avec retard
La souris externe USB fonctionne parfaitement
QSue dois je faire
J'ai procédé à un controle avec CD d'installation et remise à jour après réparation et réinstallation complète sans résultats
Est ce une panne électrique ou bien Logicielle ?A présent , je réussis à mesurer mon accélération, obtenir le déplacement et ma vitesse ( pour tenir compte du gabari ) et je réalise un singnal sinusoidale de fréquence variable ! Dois-je utiliser la fonction PID pour mon asservissement ?
Je ne sais également pas comment tenir compte des points de cassures de mon "gabari" présent en pièce jointe auparavant ? Help -
Fréquence maximal générée par sbrio-9631 et carte de sorties analogiques NI-9263
Bonjour,
Je suis relativement nouveau au concept de programmation LabView. Voici donc mon problème. J'essai de générer une onde sinus variable en fréquence de 100 à 500 kHz. Je suis partie d'un exemple fourni avec le kit d'évaluation SBRIO NI9631 que j'ai modifié selon mes besoins particuliers. La partie du FPGA fait appel à un générateur d'onde sinus dans une boucle. J'obtiens une belle forme sinusoïdal que j'envoie conjointement avec un autre signal dans une pile FIFO pour traitement ultérieur dans le HOST. Tout va bien jusque-là mais, lorsque ma demande (en periodes/tick) dépasse 10kHz, la fréquence actuelle commence à diminuer pour atteindre 0Hz pendant que la demande de fréquence est de +/-20kHz (mesure prise à l'aide d'un oscilloscope extérieur) et ainsi-de-suite pour toute la gamme de fréquence demandée sans jamais dépasser 10kHz. Est-ce la limitation du kit d'évaluation? Quelqu'un a une idée?
Pièces jointes :
AO_FPGA.jpg 257 KBBonjour,
Lorsque vous dépassez 10kHz, la génération sur AO0 et AO1 se passe bien ? (si vous mesurez à l'oscilloscope).
J'ai modifié votre code coté RT, car vous n'aviez pas spécifié de buffer pour les FIFOs DMA coté RT. De plus, il ne faut pas que vous preniez 1024 points à chaque tour de boucle, sinon la FIFO va être pleine.
Coté FPGA, j'ai modifié le remplissage de la FIFO DMA. Pouvez vous vérifier que vous n'avez pas de TimeOut ? Si vous avez un TimeOut, vous essayez d'écrire dans une FIFO pleine, et vous perdez des points.
Vous trouverez le code en pièce jointe. Dites moi si il y a du changement.
Cordialement,
PS: Je ne comprends pas à quoi sert le code pour attendre une IRQ coté RT, car vous ne générez pas d'IRQ.
Benoit S. - Field Sales Engineer
Certified LabVIEW Developer
Certified TestStand Developer
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
Été de LabVIEW 2014
12 présentations en ligne, du 30 juin au 18 juillet
Pièces jointes :
Filter and DC-RMS.zip 883 KB
Maybe you are looking for
-
Problem: slow connection. I have an iMac (2007) running on Mac OS X 10.6.8. I just had my internet speed increased from 1 to 3 Mbps but my connection slowed down considerably. Do I have to change any setting on the computer, and how?
-
Impact of real time cube on query performance and OLAP cache
Hi: We have actual and plan cubes both setup as real time cubes (only plan cube is being planned against, not actual cube) and both cubes are compressed once a day. We are planning on implementing BIA accelerator and have questions related to query p
-
Format of table displayed using h:panelGrid tag
Hi , I want to display a table using h:panelGrid as below Account Information - This is the caption for the table Account Name : bola Account Number: 12345 <h:panelGrid columns="2" cellspacing="0" styleClass="abc"> <f:facet
-
I have DSL broadband service with Verizon. This seems to be an 'odd' case. For one, I don't even know what is considered my phone number. On the bill I get a number: {edited for privacy}. When I call for support I get a stated number: {edited for pri
-
Where to store the logo?
Hi all! Our problem is to find a way to store our webdynpro login screen logo. The logo is a .gif file. In the customizing of the webdynpro login screen there is a field for putting in an URL to the logo. Is there a way to store the logo inside SAP a