LabVIEWForum.de - digitale Ausgänge mit internem Counter triggern

LabVIEWForum.de

Normale Version: digitale Ausgänge mit internem Counter triggern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe LabVIEW User,

ich befasse mich seit knapp 2 Wochen mit der Thematik DAQmx. Nachdem ich mich nun mit dem Tutorial auf der NI-Seite und mit allen Beispielen zum Thema Erzeugen digitaler Signale und Impulse befasst habe, stellen sich mir nun immer noch einige Fragen.

Mein Projekt besteht aus einer NI-PCI 6229, die in einem Echtzeitrechner verbaut ist. An der Karte sind die Trigger einer LED, einem Ventil und einer Sony Kamera an digitalen Ausgängen angeschlossen.

Folgendes soll nun ablaufen:
Die Steuerbox des Ventils wird getriggert und setzt einen Tropfen frei. Dieser soll durch belichten mit der LED per Kamera im Flug aufgenommen werden(Einzeltropfenaufnahme). Später sollen mehrere Einzeltropfen aufgenommen und die Bilder in LabVIEW ausgewertet werden. Um mehrere Aufnahmen per Knopfdruck machen zu können, will ich im Programm eine Timed Loop verwenden.

Zu meinen Fragen:
1. Ich kann am Counterausgang ein Signal mit einstellbarer Low und High Time erzeugen. Dieses wollte ich als Referenzsignal im
Programm zur Triggerung der 3 Ausgänge benutzen. Ist dies möglich oder muss ich auf andere interne Signalquellen zurück
greifen?
2. Ich kann bei der Triggerquelle eine Art "interne Clock" des Boards einstellen. Wie sieht dieses Signal aus? Welche Freuquenz hat
es?
3. Die Trigger von LED und Kamera sollen gegenüber dem Trigger des Ventils variabel verschiebar sein. Falls ich das
Referenzsignal aus 1. verwenden kann, gibt es eine Möglchkeit die Low bzw. High innerhalb der While Loop im nachhein zu
verändern/anzupassen (Der Task ist dann ja schon gestartet)?

So das wärs erstmal. Ich hoffe ich habe alles verständlich erklärt und ihr könnt mich ein wenig erleuchtenWald

gruß bexley
1. Das sollte möglich sein, aber am besten probierst Du es mal aus. Ansonsten kannst Du ja auch einfach eine Spannung über einen analogen Ausgang entsprechend lange ausgeben.

2. In den Spezifikationen (hier) steht, dass da 2 interne Clocks verbaut sind (10 MHz und 100 kHz). Ich gehe mal davon aus, dass das Rechtecksignale sind (wie der Synch-Ausgang bei einem Generator).

3. Ja das sollte auch möglich sein. Ein Bsp. wie Du zur Laufzeit Signale ändern kannst (zumindest für analoge Signale), ist das Bsp. "Cont Gen Voltage Wfm-Int Clk-Non Regeneration.vi" im Example Finder unter "Hardware Input and Output" -> "DAQmx" -> "Analog Generation" -> "Voltage".

Ich hoffe, ich habe Deine Fragen richtig verstanden. Unsure

Gruß Markus
Vielen Dank Markus für deine schnelle und ausführliche Antwort.

Ich werde mich nächste Woche gleich nach meinem Umzug mit dem Thema zur Laufzeitveränderung von Signalen machen. Wenn ich mit dem Ergebnis zufrieden bin, stell ich das VI online, damit hier eventuelle grobe Programmierfehler aufgedeckt werden können.

Gruß bexley
Hi Leute,

so ich hab mich jetzt geschlagene 4 Wochen mit der Digitalkarte und DAQmx befasst. Leider funktioniert es immer noch nicht so wie ich will.
In den Bildern sind mal die Verläufe von "Einfachblitz" und "Doppelblitz" dargestellt.

Der Programmablauf im "Einfachblitz" läuft ohne Fehler.

Der Programmablauf mit dem "Doppelblitz" verursacht beim Konfigurieren des Impuls_LED - Tasks bei der DAQ-Funktion "Task starten" den Fehler, dass die Ressource schon verwendet wird (siehe Bild).
Ich kann den Fehler nicht nachvollziehen, weil alle laufenden Task vorher gelöscht werden und anschließend neukonfiguriert, so dass es eigentlich keine
vorhandene Ressource geben sollte?

Ich hoffe ihr könnt mir da ein wenig auf die Sprünge helfen

gruß Bexley

[attachment=25088]
[attachment=25089]
[attachment=25090]
Lv86_img[attachment=25091]
2 Task, auf demselben Counter und mit demselben Namen:
[attachment=25103]
Und du wunderst dich, dass du "Resource belegt" bekommst?

Gruß, Jens
' schrieb:2 Task, auf demselben Counter und mit demselben Namen:
Und du wunderst dich, dass du "Resource belegt" bekommst?
Rolleyes
Oh Mann. So ist das, wenn man nur vorhandenen Code kopiert und anschließend vergißt ihn anzupassen. Danke für den Hinweis Jens.
Das Problem ist aber weit tiefgreifender als nur die Anpassung des zweiten Counter Tasks.

Problembeschreibung:
Scheinbar alle DAQ-Boards verwenden bei einer endlichen Pulsfolge 2 Counter. Das liegt wohl an der grundsätzlichen Programmierung des DAQmx-Treibers. Der erste Counter erzeugt eine kontinuierliche Pulsfolge und der zweite Counter dient als sogenanntes Gate.
d.h. wenn Counter 2 auf High ist, wird die Pulsfolge von Counter 1 ausgegeben. Wenn er Low ist, wird sie nicht ausgegeben.
Siehe dazu folgenden Link von NI (Ich hoffe ich darf den hier posten ohne Ärger zu bekommen):
http://digital.ni.com/public.nsf/websearch...25?OpenDocument

Problemlösung:
Man muss ein externes Signal als Gate verwenden, um den zweiten Counter weiterhin verwenden zu können. Siehe Link von NI:
http://digital.ni.com/public.nsf/allkb/4A9...2A?OpenDocument
Das klappt soweit auch ganz gut, wenn man den entsprechenden Counter auf kontinuierlich stellt.

Mein neues Problem ist nun die Pulsbreite des Gatesignal festzulegen bzw. die kontinierliche Impulsfolge so zu definieren, dass ich nur 2 Impulse ausgebe. Die Impulsbreite des Gatesignals in 4 Teile zu spalten funktioniert nicht. Siehe Bild "Impulssignal real". Wenn ich nun aber von den 4 gleichen Teilen abweiche, fängt mein Impulssignal während des Gates an zu wandern.

Einfachste Lösung wäre das Impulssignal zu invertieren. Kann man das per LabVIEW realisieren oder gibt es doch ne Möglichkeit die Signale entsprechend zu manipulieren?

Ich steh da momentan mal wieder aufm Schlauch. Für eure Hilfe wär ich sehr dankbar.

Gruß Bexley

[attachment=25107]
Referenz-URLs