28.07.2009, 19:55
Beitrag #1
|
Daniel234
LVF-Grünschnabel
Beiträge: 26
Registriert seit: May 2009
8.6
2008
de
84389
Deutschland
|
Pretrigger bei analoger und digitaler Erfassung
Hallo zusammen,
ich möchte gleichzeitig analoge und digitale Signale aufzeichnen und die Messung mit einem Reference Trigger starten. Dann möchte ich mir die Werte vor und nach dem Trigger anschauen.
Benutze LabVIEW 8.6 und PXI 6254.
Ich habe folgendes Problem:
Nachdem der Trigger ausgelöst hat sind die beiden Graphen nicht synchron, das heißt die X-achsen stimmen zeitlich nicht überein.
Wenn ich das ganze ohne Trigger laufen lasse, funktioniert es.
Hab auch mal mein VI angehängt.
syndigitalanalogtrigger.vi (Größe: 31,92 KB / Downloads: 300)
Gruß Daniel
|
|
|
29.07.2009, 08:06
Beitrag #2
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Pretrigger bei analoger und digitaler Erfassung
Hallo,
ich vermute mal ein wenig, aber ich denke, meine Vermutung stimmt:
Der Ablauf im Pretrigger-VI ist folgendermaßen:
1. Du definierst beide Tasks (AI & DI).
2. Du definierst, dass der DI-Task mit der "Sampleclock" vom AI-Task laufen soll.
3. Du startest den DI-Task, der jetzt auf die Sampleclock vom AI-Task wartet.
4. Du startest den AI-Task im Pretrigger-Modus.
5. Und jetzt kommen wir zu deinem Denkfehler und meiner Vermutung: Mit Start des AI-Task wird der AI-Sampletakt gestartet. Dies muss so sein! Schließlich muss der AI-Task ab diesem Zeitpunkt Daten aufnehmen und puffern, denn woher soll die DAQ-Karte "wissen", wann der Trigger kommt. Erst wenn der Trigger kommt, werden diese gepufferten Daten endgültig der DAQmx-Read dem Enduser zur Verfügung gestellt. Da aber der AI-Sampletakt schon lief, hat natürlich der DI-Task ab Start des AI-Task (und nicht ab Start des Pretriggers) seine Daten aufgezeichnet und ist schon längst fertig.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
29.07.2009, 09:26
Beitrag #3
|
Daniel234
LVF-Grünschnabel
Beiträge: 26
Registriert seit: May 2009
8.6
2008
de
84389
Deutschland
|
Pretrigger bei analoger und digitaler Erfassung
Hallo,
gibt es eine Möglichkeit den DI-Task mit dem AI-Task zusammen mit dem Pretriggersignal starten zu lassen?
Kann man das Pretriggersignal aus dem Trigger-VI irgendwie verwenden?
Gruß Daniel
|
|
|
29.07.2009, 13:10
Beitrag #5
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Pretrigger bei analoger und digitaler Erfassung
' schrieb:Hallo,
gibt es eine Möglichkeit den DI-Task mit dem AI-Task zusammen mit dem Pretriggersignal starten zu lassen?
Kann man das Pretriggersignal aus dem Trigger-VI irgendwie verwenden?
Gruß Daniel
Da die Zuordnung der Beispiele im NI-Examplefinder zu den Hardwarefähigkeiten einer NI-DAQ-Karte sehr gut ist, sieht es für mich nicht so aus, als ob du einen Digital-In bei der 6254 triggern kannst.
Möglicher (theoretischer, da nicht getester) Workaround: Du bleibst bei deinem Bsp. syndigitalanalogtrigger.vi, die Digital-In-Erfassung stellst du aber auf kontinuierlich um, die Daten sammelst du auf. Abbruch dieser DI-Erfassung, wenn Analog-In fertig ist.
Jetzt suchst du dir aus den erfassten DI-Daten die zur Analog-In passenden Werte heraus, schließlich hast du alle Werte seit Start des Analog-In-Tasks.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
29.07.2009, 17:50
(Dieser Beitrag wurde zuletzt bearbeitet: 29.07.2009 17:51 von Daniel234.)
Beitrag #6
|
Daniel234
LVF-Grünschnabel
Beiträge: 26
Registriert seit: May 2009
8.6
2008
de
84389
Deutschland
|
Pretrigger bei analoger und digitaler Erfassung
Das mit der kontinuierlichen Erfassung des DI kann ich leider nicht machen, da die Messung über Wochen andauern kann bis der Trigger auslöst.
Gibt es sonst keine Möglichkeit über die Software die digitale Erfassung mit dem Trigger der analogen Erfassung zu starten?
Gruß Daniel
|
|
|
29.07.2009, 19:28
Beitrag #7
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Pretrigger bei analoger und digitaler Erfassung
' schrieb:Das mit der kontinuierlichen Erfassung des DI kann ich leider nicht machen, da die Messung über Wochen andauern kann bis der Trigger auslöst.
Ui, Wochen, bis der Trigger auslöst..., und was macht das Programm währenddessen?;)Egal.
OK, noch mal meine Idee etwas ausbauen: Wieviele Messwerte vor Auslösung des Triggers und wieviele Messwerte nach Auslösung des Triggers nimmst du auf? Denn das ist die maximale Größe einen Puffers, die du für eine kontinuierliche DI-Erfassung vorsehen müsstest. D.h., du musst dir eigentlich nicht alle DI-Daten merken, sondern immer nur die Puffergröße. Ob so was viel Rechenzeit beansprucht, müsste man mal ausprobieren, wobei das sicher auch von der Sample-Rate abhängt (was sind da typische Werte).
' schrieb:Gibt es sonst keine Möglichkeit über die Software die digitale Erfassung mit dem Trigger der analogen Erfassung zu starten?
Ich habe erst mal keine Idee. Das Problem ist dein "Pretrigger"-Modus: Du willst ja auch einige Daten vor Auslösen des Triggers haben. Aber an die kommst du NUR dran, wenn sowohl Analog-In als auch Digital-In (zumindest im Hintergrund) immer laufen und Daten aufnehmen. Denn wie soll man sonst an Werte vor Auslösen des Triggersignals kommen? Zeitreisen in die Vergangenheit sind nach Einstein nicht möglich.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
30.07.2009, 18:45
Beitrag #8
|
Daniel234
LVF-Grünschnabel
Beiträge: 26
Registriert seit: May 2009
8.6
2008
de
84389
Deutschland
|
Pretrigger bei analoger und digitaler Erfassung
Zitat:Ui, Wochen, bis der Trigger auslöst..., und was macht das Programm währenddessen? Egal.
Wie meinst du das? Ich dachte das Programm läuft im Hintergrund und wenn der Trigger auslöst startet die eigentliche Messung.
Zitat:OK, noch mal meine Idee etwas ausbauen: Wieviele Messwerte vor Auslösung des Triggers und wieviele Messwerte nach Auslösung des Triggers nimmst du auf? Denn das ist die maximale Größe einen Puffers, die du für eine kontinuierliche DI-Erfassung vorsehen müsstest. D.h., du musst dir eigentlich nicht alle DI-Daten merken, sondern immer nur die Puffergröße. Ob so was viel Rechenzeit beansprucht, müsste man mal ausprobieren, wobei das sicher auch von der Sample-Rate abhängt (was sind da typische Werte).
Ich nehme 500 Samples vor und 500 Samples nach Auslösung des Triggers auf. Typische Samplerate ist 10-50 kHz.
An das Problem mit der Rechenzeit habe ich gar nicht gedacht! Ich habe mir Sorgen um die Fesplattenkapazität gemacht. Wenn ich mehrere Tage kontinuierlich messe kommen da doch einige GB an Daten zustande?
Zitat:Ich habe erst mal keine Idee. Das Problem ist dein "Pretrigger"-Modus: Du willst ja auch einige Daten vor Auslösen des Triggers haben. Aber an die kommst du NUR dran, wenn sowohl Analog-In als auch Digital-In (zumindest im Hintergrund) immer laufen und Daten aufnehmen. Denn wie soll man sonst an Werte vor Auslösen des Triggersignals kommen? Zeitreisen in die Vergangenheit sind nach Einstein nicht möglich.
Mal angenommen ich lasse Analog-In und Digital-In immer laufen und Daten aufnehmen. Gibt es eine Möglichkeit nicht alle Daten des Digital-In zu speichern sondern z.B. ein paar Puffergrößen vor dem Trigger und ein paar Puffergrößen nach dem Trigger? Wie kann man dem Digital-In nach Auslösen des Triggers mitteilen das die Messung beendet ist?
Gruß Daniel
|
|
|
30.07.2009, 20:03
(Dieser Beitrag wurde zuletzt bearbeitet: 30.07.2009 20:04 von rolfk.)
Beitrag #9
|
rolfk
LVF-Guru
Beiträge: 2.306
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
Pretrigger bei analoger und digitaler Erfassung
' schrieb:Wie meinst du das? Ich dachte das Programm läuft im Hintergrund und wenn der Trigger auslöst startet die eigentliche Messung.
Ich nehme 500 Samples vor und 500 Samples nach Auslösung des Triggers auf. Typische Samplerate ist 10-50 kHz.
Das ist eine gute Idee!
Zitat:An das Problem mit der Rechenzeit habe ich gar nicht gedacht! Ich habe mir Sorgen um die Fesplattenkapazität gemacht. Wenn ich mehrere Tage kontinuierlich messe kommen da doch einige GB an Daten zustande?
Aber wer sagt denn dass Du alles auf die HD schreibst? Das machst Du eben nicht!
Zitat:Mal angenommen ich lasse Analog-In und Digital-In immer laufen und Daten aufnehmen. Gibt es eine Möglichkeit nicht alle Daten des Digital-In zu speichern sondern z.B. ein paar Puffergrößen vor dem Trigger und ein paar Puffergrößen nach dem Trigger?
LabVIEW ist eine vollumfängliche Programmiersprache. Da gibts grundsätzlich nichts was man nicht programmieren kann. Was Du einfach machen musst ist eine kontinuierliche Datenerfassung wo Analog und Digital synchronisiert sind. Dann liest Du jeweils beide Tasks regelmässig in einer Loop ein und schreibst die Daten in einen Buffer (Schieberegister) und untersuchst den analogen Eingang nach der Triggerkondition. Wenn der Trigger auftritt dann schreibst Du die vorigen Daten aus dem Buffer und die aktuellen Daten auf die Disk und machst eventuel noch einen oder mehrere weitere Loopdurchläufe wo Du alles zur Disk schreibst und danach verlässt Du die Loop und machst ein Task Stop und Task Clear sowohl auf der analogen als auch digitalen Task.
Zitat:Wie kann man dem Digital-In nach Auslösen des Triggers mitteilen das die Messung beendet ist?
Mit Task Stop (und ordnungshalber Task Clear) wie open erwähnt.
Rolf Kalbermatter
|
|
|
31.07.2009, 10:00
|
Daniel234
LVF-Grünschnabel
Beiträge: 26
Registriert seit: May 2009
8.6
2008
de
84389
Deutschland
|
Pretrigger bei analoger und digitaler Erfassung
Zitat:LabVIEW ist eine vollumfängliche Programmiersprache. Da gibts grundsätzlich nichts was man nicht programmieren kann. Was Du einfach machen musst ist eine kontinuierliche Datenerfassung wo Analog und Digital synchronisiert sind. Dann liest Du jeweils beide Tasks regelmässig in einer Loop ein und schreibst die Daten in einen Buffer (Schieberegister) und untersuchst den analogen Eingang nach der Triggerkondition. Wenn der Trigger auftritt dann schreibst Du die vorigen Daten aus dem Buffer und die aktuellen Daten auf die Disk und machst eventuel noch einen oder mehrere weitere Loopdurchläufe wo Du alles zur Disk schreibst und danach verlässt Du die Loop und machst ein Task Stop und Task Clear sowohl auf der analogen als auch digitalen Task.
Das sind ein paar sehr gute Ideen.
1. Problem: Ich weiß aber nicht wie ich die Daten aus dem Puffer auf die HD speichere die vor dem Trigger vorhanden sind? Ich habe nur die aktuellen Daten ab dem Trigger gespeichert. Denn die Messung beginnt ja erst wenn der Trigger auslöst.
2. Problem: Bei der digitalen Erfassung gehen bei der Speicherung die Zeitinformationen verloren. Bei der analogen Erfassung sind die Zeitinformationen noch vorhanden.
syndigitalanalogtriggerTDMSkontinuierlich.vi (Größe: 44,05 KB / Downloads: 299)
LabVIEW 8.6
Gruß Daniel
|
|
|
| |