Wenn die Zeiteinheit klein genug wählbar wäre, wäre eine skalierbare Zeiteinheit ideal. Typischerweise wären Abtasteten von 10-100ms ausreichend mit der Information wie viele Photonen / Pulse in diesem Zeitabschnitt detektiert/ausgegeben wurden.
Hallo Adeaphon,
leider enthält dein VI immer noch nicht die vorgeschlagenen Änderungen:
[
attachment=49151]
Wann immer du InitArray mit Size=0 aufrufst, kannst du erstens eine Array-Konstante anlegen und zweitens ist der Einsatzfall verfehlt. Besser wäre hier das Anlegen eines Arrays in der nötigen Größe und nachfolgend Eintragen von Werten mittels ReplaceArraySubset…
Guten Morgen GerdW,
entschuldige, da habe ich gestern eine alte Version hochgeladen.
Ich habe deine Vorschläge umgesetzt und gerade die erste Messung mit der Dunkelmessrate gemacht und die Schleife läuft wirklich wesentlich schneller. Vielen Dank!
Hier ist die aktuelle Version: [
attachment=49158]
Ich habe auch die Korrelation umgestellt, da diese von den histogrammierten Daten erstellt werden muss und nicht von den gesamten Messdaten.
Die Photodiode hat auch ein Gate In und kann darüber wohl direkt von LabVIEW angesteuert werden,
jetzt versuche ich eine Ansteuerung einzubauen, damit man der Diode direkt eine feste Messzeit geben kann. Um mit dem drücken eines Schalters im Frontpanel eine eingestellte Messzeit zu messen.
Wobei ich dazu auch erst klären muss, wie ich das Gate In Kabel von der Diode an das NI USB-6210 anschließe...
Leider kann man Beiträge nur bis 30 Minuten nach der Erstellung bearbeiten, deswegen ein Doppelpost.
Eventuell ist die Gating in-Funktion der Diode doch unnötig.
Gibt es eine Möglichkeit die aufsummierte Messzeit als Stop-Funktion zu nehmen? Mir würde es reichen, wenn im Frontpanel eine Einstellmöglichkeit wäre, in der ich die Sekunden eintrage und das Programm stop sobald bei der Schleife im Array "Gesamte Messung" die eingestellte Messzeit erreicht wurde. Ist das möglich?
Hallo GerdW,
so ähnlich denke ich mir das gerade auch.
Ich habe eine min-max-Funktion bei der Datenlinie "Gesamte Messung" eingefügt, welches mit schon die Messzeit liefert am Ausgang des "max-Value"
Und diesen muss ich nun mit einem Stop-Kriterium an die Loop Condition verbinden damit die Schleife stoppt sobald die gewünschte Messzeit erreicht ist.
Ich habe es nun über ein "Oder" und ein "kleiner-oder gleich" gelöst als Stopanweisung
[
attachment=49159]
So läuft es nun recht genau im Millisekundenbereich. Das sollte von der Genauigkeit reichen. Vielen Dank GerdW für deine Hilfe!
Durch die ganzen Veränderungen muss ich mich nun erneut der Autokorrelation widmen, denn diese werden nun von den Werten einer Histogrammierung über die gesamte Messzeit erstellt um einen Intensitätsverlauf korrelieren zu können.
Gerade habe ich eine Messung mit einem Fluoreszenzfarbstoff gemacht um zu schauen wie das Programm läuft.
Die Messung ging laut Aufaddierung der Schleife wie gewünscht 10 Sekunden und das Histogramm hat er auch erstellt. Zur Kontrolle habe ich mir in Igor ein Korrelation erstellt und diese sieht auch schon wie gewünscht aus:
[
attachment=49166]
Während der 10s wurden laut Histogramm etwas mehr als 600.000 Photonen gemessen. Die Darstellung der Messzeit lief aber nicht mehr in Echtzeit ab. Der Graph zeichnete sich langsamer aus.
Kann ich mir aber sicher sein das die ausgewerteten Daten die Daten von 10 Sekunden Messung sind? Hängen die anderen Zeit noch in einem Zwischenspeicher aber werden nur nicht mehr verwertet da die 10s Messzeit erreicht sind? Es geht mir darum das LabVIEW keine Werte verschluckt oder auslässt weil die Daten schneller reinkommen als die Schleife aufaddieren kann.
Hallo Adaephon,
Zitat:Während der 10s wurden laut Histogramm etwas mehr als 600.000 Photonen gemessen. Die Darstellung der Messzeit lief aber nicht mehr in Echtzeit ab. Der Graph zeichnete sich langsamer aus.
Nun ja, das Zeichnen von 600k Punkten in einen Graphen dauert schon etwas. Wobei es fraglich ist, wie man die 600k Punkte auf einem 400px breiten Graph überhaupt vernünftig erkennen will…
Ich hatte es oben schon mal erwähnt: mit dem Producer-Consumer-Schema kann man DAQ und (zeitaufwendige) Datenverarbeitung entkoppeln!
Die Darstellung der gesamten Messung war ursprünglich nur zur Kalibrierung des Strahlengangs gedacht und ausgeführt worden. Für spätere Messung muss die nicht mehr dargestellt werden. Da reicht dann das Histogramm über den letzten Zeitabschnitt und die Korrelation über die die gesamte Messung.
Aktuell waren ca. 60.000 Photonen pro Sekunde gemessen, eine komplette Messung geht später über 10-20min, mitunter auch gern mal eine Stunde. Die entsprechende Datensätze kann man sich also vorstellen.
Ich werde mal eine Messung ohne die graphische Darstellung der gesamten Messung machen, dann sollte es ja besser laufen.
Eine Datenaufnahme und spätere Verarbeitung wäre eher ungeeignet wenn dies möglich wäre. Es sollte schon live das Histogramm und die Korrelation gemacht werden.
Ich glaube das Problem mit dem Lag der Berechnung habe ich gelöst. Es scheint eine falsche Einstellung im DAQ Assistant gewesen zu sein. Mit Continuouse Sample als Acquisition Mode und je 1k Sample to Read und 1k Hz als Rate läuft es nun in Echtzeit.
[
attachment=49173]
GerdW,
meintest du mit der Waveform Autocorrealtion die eigene VI? Diese
TSA Auto-Correlation Function VI ? Weil bei dieser Autocorrelation wird direkt eine Darstellung gegen das Tau, also die Zeitverschiebung angeboten.
Leider ist in der LabVIEW Version hier das Advanced Signal Processing Toolkit nicht installiert.