LabVIEWForum.de
cRIO und DAQmx Synchronisation oder Trigger? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: cRIO und DAQmx Synchronisation oder Trigger? (/Thread-cRIO-und-DAQmx-Synchronisation-oder-Trigger)



cRIO und DAQmx Synchronisation oder Trigger? - gibsonuser - 20.08.2015 21:38

mein Messaufbau besteht aus einer NI PCI 6251 Karte inklusiver einer zugehörigen BNC 2120 Schnittstelle und einem cRIO 9076 mit 2 x NI 9222 Analogmodulen.
Mit dem DAQmx Gerät erzeuge ich ein Ultraschall Sinus Impuls, den ich in ein Ultraschallsender einspeise.
An dem cRIO befinden sich an den 8 Analogen Eingängen 8 Ultraschallsensoren, die den erzeugten Sinus messen.

Da ich die Zeitdifferenz vom gesendeten und empfangenen Signal messe und mir kleinere Schwankungen aufgefallen sind, habe ich mir die Frage gestellt (40 µS, obwohl ich am Versuchsaufbau nichts verändert habe), ob ich die beiden Geräte synchronisieren muss ? Ich will sicher gehen, dass zunächst das DAQmx Gerät startet und dann der cRIO (oder beide gleichzeitig), dabei MUSS der Zeitabstand zwischen Start DAQmx und Start cRIO bei jedem Durchlauf immer gleich bleiben!. Meine erste Idee war einen Trigger vom DAQmx zu senden und diesen dann mit dem cRIO aufzunehmen aber ich habe leider kein Digitalmodul für den cRIO. Der BNC besitzt PFI 6 einen Analog Output für den Trigger. Gibt es eine andere Möglichkeit nach dem Ausführen des Impuls, den cRIO in einer definierten (sehr kurzen) Zeit zu starten (am besten ohne Zusatzgeräte zu kaufen)?

Wäre über jede erdenkliche Hilfe froh!
Falls gewünscht kann ich auch mein Programm einbinden.
DANKE!Construction


RE: cRIO und DAQmx Synchronisation oder Trigger? - GerdW - 20.08.2015 22:06

Hallo Gibson,

die genaueste Möglichkeit, die beiden Geräte zu synchronisieren, besteht in einer Leitung zwischen den beiden: die PCI-Karte gibt einen Triggerimpuls aus, das cRIO (bzw. dessen FPGA) reagiert darauf.
Da du bisher keinen digitalen Eingang zur Verfügung hast, musst du dir einen kaufen: es gibt da einige Digitalmodule…
Einige können recht hohe Sampleraten!

Zitat:Gibt es eine andere Möglichkeit nach dem Ausführen des Impuls, den cRIO in einer definierten (sehr kurzen) Zeit zu starten (am besten ohne Zusatzgeräte zu kaufen)?
- du opferst einen der Analogeingänge und nutzt diesen dann zum Einlesen des Triggersignals: die Zeitverzögerung hängt hier von der möglichen Samplerate für das Modul ab!
- du nutzt eine Netzwerkverbindung zwischen PC und cRIO: die Zeitverzögerung hängt hier von Latenzen und von Aktivitäten deines (Windows-)OS ab und dürfte deutlich größer sein als nur 40µs

Zusammengefasst: Hardwaretriggerung ist das schnellste/genaueste - und du musst dafür etwas bezahlen. Softwaretriggerung ist "billig" - und hat seine Schwächen…


RE: cRIO und DAQmx Synchronisation oder Trigger? - gibsonuser - 20.08.2015 22:26

Erstmal vielen Danke Gerd für deine schnelle Antwort,
ok dann werde ich einen Analogeingang wohl opfern müssen...
Das heißt also ich werde in meinem Programm ein Trigger im DAQmx implementieren müssen, bei dem der Kanal PFI 6 angesprochen wird.
Ich gehe mal davon aus dass der Eingangstrigger im Target (FPGA) implementiert werden muss?
Gibt es Beispiele oder Paper bei dem ich Morgen früh ansetzen kann?
Gruß


RE: cRIO und DAQmx Synchronisation oder Trigger? - GerdW - 21.08.2015 05:33

Hallo Gibson,

ich würde die Triggerauswertung im FPGA programmieren...

Du kannst dafür einen extra Triggerpuls in DAQmx generieren oder einfach das AO-Signal im cRIO ebenfalls einlesen und auswerten!

Wenn man schon derart genau Zeiten messen will, sollte man alles in einem Gerät erledigen, also entweder nur im PC oder nur im cRIO. Dein Ansatz, ohne weitere/bessere Hardware gleich genau zu werden, ersetzt die Hardwarekosten nur durch erhöhte Arbeitszeitkosten. Meine Meinung dazu...


RE: cRIO und DAQmx Synchronisation oder Trigger? - gibsonuser - 21.08.2015 16:53

Hallo,
ich habe mir ein paar weitere Gedanken gemacht und habe nun auch eine weitere Idee:
ich würde gerne Wissen, ob diese Idee auch klappen kann.
Zunächst einmal habe ich ein Analogkanal geopfert. Den Sinus-Burst/Impuls, den ich erzeuge, wollte ich dabei als Trigger benutzen.
Geht der Sinus über ein vorher definiertes bestimmtes Level, dann fängt die Messung an.
Im Internet habe ich ein Paper gefunden wie Trigger im FPGA zu programmieren sind:
http://www.ni.com/white-paper/2993/de/ dieses bezieht sich auf die R-Serie deswegen bin ich mir unsicher, ob das ganze auch bei meiner verwendeten Hardware funktionieren kann.
Im Anhang habe ich nun ein Bild von meinem FPGA Code beigefügt.
Kann ich das so machen?


RE: cRIO und DAQmx Synchronisation oder Trigger? - gibsonuser - 23.08.2015 16:51

keiner?


RE: cRIO und DAQmx Synchronisation oder Trigger? - GerdW - 23.08.2015 17:25

Hallo Gibson,

der Trigger besteht im Bild nur darin, einen eingelesenen Analogwert mit einem Level zu vergleichen. Was daran sollte bei dir nicht funktionieren?

Zitat:keiner?
Du fragst Freitag Abend und wunderst dich, dass andere ihr Wochenende genießen? Wink


RE: cRIO und DAQmx Synchronisation oder Trigger? - gibsonuser - 24.08.2015 10:15

Hallo,
sorry für das drängen... Das Wochenende muss natürlich genossen werden Big Grin
Beim kompilieren des FPGA kriege ich immer wieder gegen Ende den Fehler "A timing error occurred."
Mit einem anderen Laptop klappt das draufspielen aber da kann ich die PCI Karte nicht reinmachen und somit das Programm nicht testen.
Google spuckt leider auch nicht brauchbares aus.

Ein leeres VI kann ich dagegen kompilieren und draufspielen.


RE: cRIO und DAQmx Synchronisation oder Trigger? - cb - 27.08.2015 06:42

ich würde das cRIO weglassen und AO und AI nur über die M-Serien Messkarte realisieren. Mit dem DAQmx-Treiber hat man sehr umfangreiche Möglichkeiten eine Erfassung in Abhängigkeit von einem anderen Task (z.B. AO) direkt auf der Messkarte ("in Hardware") zu triggern, genauer wird man es mMn nicht hin bekommen ...

Auf der Karte könntes du z.B. den AI-Task mit dem "AO-Start-Trigger" verknüpfen, so dass die Erfassung unmittelbar mit der Analog-Ausgabe startet. Den "Pre-Trigger"-Zeitraum definiert man dann dadurch dass man von der analogen Erfassung eine bestimmte Anzahl Samples "wegschmeißt". Wenn der AI-Task z.B. mit 1 MHz läuft und du einen Vorlauf von 50 µs brauchst, schmeisst du die ersten 50 Samples weg usw ...

Mit dem Versuch eine Lösung Verteilt zwischen einer Messkarte und einem cRIO zu entwickeln legst du dir mMn nur selbst Steine in den Weg ...

viele Grüße
cb