LabVIEWForum.de - Synchronisation und Trigger in einem

LabVIEWForum.de

Normale Version: Synchronisation und Trigger in einem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo liebe LabVIEW-Experten,

ich bin absoluter LabVIEW-Neuling und scheitere gerade an einem relativ einfachen Problem.
Ich brauche ein output-Signal/Counter und habe einen schnellen, relativ regelmäßigen 400kHz-Input-Counter und einen "langsamen", unregelmäßigen 100kHz Input-Counter (Trigger).
Mittels an PCI-6602 angeschlossener Hardware soll wiederholt getriggert (ca. 20-100kHz, unregelmäßig) ein Einzel-Puls (Ausgabe-Counter) (ca. 1,5 µs high) ausgegeben werden, der synchron zu einem schnellen 400kHz-Takt sein soll.

Ich habe schon in den DAQmx-Beispiel-Programmen und einigen Foren-Beiträgen gesucht und mit Hilfe der dortigen ähnlichen Probleme bin ich auf drei Lösungsansätze gekommen, die alle nicht ganz richtig funktionieren.

1. Möglichkeit: Die einfachste Variante ist den langsameren, unregelmäßigen Puls als Arm-Start-Trigger zu verwenden und den schnelleren 400kHz Puls als Start-Trigger. Das funktioniert korrekt, aber nur einmal. Denn leider gibt es scheinbar keine Möglichkeit, den Arm-Start-Trigger auf wiederholt-triggerbar zu setzen.
Ich habe daher versucht, den Task in einer Schleife laufen zu lassen. Das funktiniert nur korrekt bis ca. 500Hz, ist also viel zu langsam. Gibt es irgendwie eine Möglichkeit, den Arm-Start-Trigger auf wiederholt-triggerbar zu setzen? Vielleicht auch unter C#? Habs damit nämlich auch versucht. Wenn das irgendwie ginge, wäre das die schönste Lösung.

2. Idee: Den schnellen Puls als Taktquelle für den Ausgabe Counter verwenden und den langsamen Puls als Wiederholt-triggernden Start-Trigger zu setzen. Das funktioniert ganz fantastisch, aber der Puls des Ausgabe-Counters muss dann mindestens zwei Takte der Taktquelle lang sein. Damit ist der Puls zu lang. Am besten wäre, wenn ich die Pulslänge völlig unabhängig von der Taktquelle einstellen könnte.
3. Ansatz: Das brachte mich auf die Idee, die "Timing-VI" zu verwenden. Aber anscheinend habe ich tortz Kontex- und normaler Hilfe nicht verstanden, was die macht. Ich habe meine VI angehängt und so wie die jetzt aussieht, ist es dem Task völlig egal, ob ein Signal an der Taktquelle der Timing-VI anliegt oder nicht.

Vielleicht kann mir ja hier jemand helfen. Falls es sich unter LabVIEW nicht lösen lässt, gerne auch unter C#.
Muss ich vielleicht einen Digital-Output anstelle eines Counters verwenden?
Gibt es noch andere Möglichkeiten, dass ein Trigger zunächst auf einen anderen wartet?

Ich verwende LV 2013 unter WinXP, habe aber als LV 10.0 abgespeichert, damit möglichst alle das öffnen können.
Vielen Dank schon mal
Fred
--
Ich hab' noch nicht so wirklich verstanden, was Du genau vorhast. Unsure
Die Länge des Threads hat mich ehrlich gesagt auch etwas erschlagen, obwohl es so ausführlich und übersichtlich eigentlich wünschenswert ist. Blush
Kannst Du die Frage nochmal präziser stellen, oder bist Du mit Deinem Problem schon weitergekommen?

Gruß Markus
Hallo Markus,
vielen Dank für deine Antwort. Ich habe die letzten Tage vieles ausprobiert, aber bin einer Lösung nicht näher gekommen.

Mein Vorhaben in Kurzform:
Ich habe zwei Eingänge A und B mit verschiedenen Rechteckssignalen
Ich möchte einen kurzen Puls C ausgeben, dessen high-Dauer der User einstellen kann. Dabei möchte ich erreichen, dass jeder einzelne C-Puls synchron zum Takt von A ist und wiederholt von B getrtiggert wird.

Neuer Lösungsversuch:
Mein neuster Versuch basiert auf dem "Digital Pattern Filter". Aber LV sagt mir, dass meine NI PCI-6602 Karte diesen Filter nicht unterstüzt. Stimmt das? (Wozu hat die Karte dann 32 digitale Eingänge?Blink) Muss ich die Karte dafür erst konfigurieren?
Also, falls jemand weiß, wie ich rausfinden kann ob die 6602 digital pattern kann, oder sonst Ideen hat, wäre das super.

Beste Grüße
Fred
--
Hallo Fred,

Zitat:Aber LV sagt mir, dass meine NI PCI-6602 Karte diesen Filter nicht unterstüzt. Stimmt das?
LabVIEW hat immer recht! Big Grin

Der DAQmx-Treiber "weiß" eigentlich sehr genau, welche Karte welches Feature unterstützt…


Zitat:Wozu hat die Karte dann 32 digitale Eingänge?
Damit man 32 DIOs zur Verfügung hat. Diese allerdings nur per Software-Timing und damit sehr in den Möglichkeiten limitiert. Steht alles in den Specs

Tipp:
Im Allgemeinen hat es sich bewährt, sich bei Hardware-Fragen von NI beraten zu lassen und nicht einfach selbst "irgendeine" Karte zu nehmen…
Hallo,
vielen Dank für deine Antwort. Die Hardware war natürlich schon vorher da und sollte nun für diesen neuen Zweck verwendet werden. In den Specks hatte ich auch schon mal gschaut, aber da steht ja hauptsächlich, dass das Gerät super viel kann, aber nicht explizit, was es nicht kann. Und irgendwie war ich davon ausgegangen, dass PCI-6602 den "digital pattern trigger" können sollte, aber da lag ich wohl falsch.

Eine Idee hätte ich noch: Gibt es eine Möglichkeit, als output-Signal direkt mein Input-Signal zu verwenden, es aber nur dann auszugeben, wenn ein Trigger kommt oder wärend ein Trigger auf "high" ist?

Danke
Fred
--
Hallo Fred,

evtl. besteht die Möglichkeit, für die CTR auch Start-Trigger vorzugeben.
Allerdings bezweifel ich das, da die DIOs eben nur softwaregetaktet sind. Außerdem wird in den Specs auch keine Trigger-Eigenschaft erwähnt (abgesehen von RTSI und PXI). Und hier habe ich kein DAQmx installiert, kann also auch keine Hardware simulieren…

Zitat:da steht ja hauptsächlich, dass das Gerät super viel kann
Dann hast du vielleicht andere Specs gelesen als ich! Smile
Hast du schon mal bei NI angerufen und dich zu deinem Problem beraten lassen? Die sollten ihre Hardware und deren Möglichkeiten doch am besten kennen…
(30.01.2014 09:49 )GerdW schrieb: [ -> ]
Zitat:da steht ja hauptsächlich, dass das Gerät super viel kann
Dann hast du vielleicht andere Specs gelesen als ich! Smile
Hast du schon mal bei NI angerufen und dich zu deinem Problem beraten lassen? Die sollten ihre Hardware und deren Möglichkeiten doch am besten kennen…
Ich hatte tatsächlich hauptsächlich im Handbuch gelesen, welches irgendwie nicht sehr aufschlussreich ist. Aber du hast Recht, in den Spezifikationen steht tatsächlich, dass "Bitmuster-I/O" im Funktionensumfang nicht enthalten ist. Und darunter fällt vermutlich auch der "digital pattern filter/trigger". Kontakt zu NI habe ich auch aufgenommen, der zuständige Berater wollte sich das mal angucken...


(30.01.2014 09:49 )GerdW schrieb: [ -> ]Hallo Fred,

evtl. besteht die Möglichkeit, für die CTR auch Start-Trigger vorzugeben.
Allerdings bezweifel ich das, da die DIOs eben nur softwaregetaktet sind. Außerdem wird in den Specs auch keine Trigger-Eigenschaft erwähnt (abgesehen von RTSI und PXI). Und hier habe ich kein DAQmx installiert, kann also auch keine Hardware simulieren…
Für den Counter lässt sich definitiv ein digitaler Start-Trigger einrichten. Aber wenn ich gleichzeitig ein externes Signal als Counter-Ausgabe verwenden möchte, dann kann ich nur eine "rate" einstellen, die auf dem Takt der Quelle beruht und maximal 1/4 der Original-Frequenz hat. Ich kann nicht den Original Takt direkt als Counter ausgeben, ich weiß zumindest nicht wie.
Vermutlich müsste ich "DO" statt "CO" verwende. Aber auch da weiß ich nicht wie ich das Input Signal auf den Digital Output schreibe.

Beste Grüße
Fred
--
Nun, da der NI-Berater das Problem nicht ganz verstanden hat, habe ich die In- und Output-Signale nochmal grafisch dargestellt.
Vielleicht hilft das ja...
Hallo Fred,

das sieht aus, als wenn man den Hauptteil der Arbeit mit ein paar TTL-ICs (oder auch gern CMOS) erledigen könnte: Output := LASER AND FF(TRIGGER)…

Dann brauchst du dich nur noch um das Trigger-Signal selbst kümmern!
Hallo Gerd,
vielen Dank für deine Antwort.
Es ist eine Weile her, dass ich mich mit ICs und co. beschäftigt habe, daher hatte ich bisher vermieden, in diese Richtung zu überlegen.
Aber du hast Recht, das (grüne) Trigger-Signal soll sich genau wie ein flip-flop verhalten. Das Problem ist dann aber noch das Laser-Signal. Dieses dürfte nur bei steigender Flanke triggern und nicht grundsätzlich im high-Zustand. Ansonsten bekomme ich in meinem grafischen Beispiel für den zweiten und dritten grünen Trigger je zwei statt je einem output-Signal, oder nciht? Ein einfaches AND-Gate funktioniert also nicht.
Kennt jemand ein Schaltelement, welches um zu schalten auf einem Kanal "high" anliegen haben muss und auf dem anderen einen Wechsel von 0 auf 1 erwartet?

Beste Grüße
Fred
--
Seiten: 1 2
Referenz-URLs