Datenübergabe aus stacked sequence - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Datenübergabe aus stacked sequence (/Thread-Datenuebergabe-aus-stacked-sequence) |
Datenübergabe aus stacked sequence - derdaniel - 31.08.2010 16:18 Hallo Leute, bei meiner Messwerterfassung habe ich folgendes Problem: Ein FIFO-Speicher wird in einer stacked sequence alle 100ms ausgelesen. Der Inhalt des FIFOs ist bereits ein fertiges Histogramm welches permanent weiter mit Daten von einem ADC gefüllt wird. Auf dieses Verhalten habe ich keinen Einfluss, muss also die Daten so nehmen, wie sie kommen. Mich interessiert jetzt die Ereignissrate. Das heisst, ich will wissen, wieviele Ereignisse sind von einem Auslesen zum nächsten Auslesen in Summe hinzukommen. Meine Idee war, ein shift register zu nutzen und das aktuell ausgelesene Histogramm vom vorangegangenen zu subtrahieren und durch eine Zeitkonstante zu dividieren. Das Problem ist aber, dass ich das aktuelle Histogramm zwar an das shift register uebergebe, aber der shift und die Rechenoperation nicht ausgefuehrt werden. (siehe Anhang - sorry, dass das so durcheinander aussieht, aber ich muss es erstmal zum Laufen kriegen, bevor ich es schoen machen kann). Meine Frage lautet daher, wie kriege ich den shift und die Rechenoperation zum Laufen? Wenn ich in der While-Schleife den Operator auf False setze, geht garnichts mehr Danke fuer eure Tipps, Gruss, Daniel PS: Ich arbeite mit LV2009 Datenübergabe aus stacked sequence - GerdW - 31.08.2010 16:35 Hallo Daniel, wie wäre es, wenn du erstmal soviele lokale Variablen wie möglich durch direkte Drahtverbindungen ersetzt? Dies reduziert die hier gegebene Gefahr von RaceConditions erheblich... Datenübergabe aus stacked sequence - derdaniel - 31.08.2010 19:33 Hallo Gerd, danke für den Tipp. Ich hab mal alles was so geht direkt verdrahtet. Leider stellt sich dadurch aber keine Verbesserung der Lage ein. Die Frage, die sich mir stellt, lässt sich eigentlich darauf reduzieren, ob sich die While-Schleife nach der Abarbeitung der Stacked Sequence gesteuert starten lässt. Will heissen: FIFO-Wert an While-Schleife übergeben, FIFO minus Shift-Array (beim ersten mal mit '0' initialisiert) und das Ergebnis dann für die nächste Runde im Register ablegen. Das Ergebnis wird dann ausserhalb der Schleife durch die Zeit dividiert und ergibt mir die Zählrate. Danach soll die Stacked Sequenz wieder ausgeführt werden. Eigentlich ganz einfach, ich kriegs nur nicht hin :wacko:Ich bin mir z.B. nicht klar darüber, wie ich die Abbruchbedingung der While-Schleife setzen muss, dass sie nur einmal ausgeführt wird - oder ist es vllt. besser, hier eine For-Loop einzusetzen? Mit freundlichem Gruß, Daniel (ist übrigens die erste größere Sache, die ich mit LV mache) Datenübergabe aus stacked sequence - GerdW - 31.08.2010 19:57 Hallo Daniel, ohne lokale Variablen geht doch die Datenfluß-Steuerung (und damit das "danach") einfach per Draht - also den FIFO per Draht an das SR weiterreichen! (Und mal die neueste Version anhängen...) Datenübergabe aus stacked sequence - derdaniel - 01.09.2010 15:00 Hallo Gerd, ich hab jetzt alles probiert, komme aber mit meinem Problem nicht weiter. Das direkte Verdrahten hat auch keine Verbesserung gebracht. Das Shift-Register wird irgendwie nicht richtig ausgefuehrt - bzw. ich mach was falsch, erkenne es nur nicht. Der FIFO-Happen kommt ordentlich an und in der ersten Runde werden die Null-Werte aus dem frisch initialisierten Shift-Array abgezogen (was okay so ist). Dann sollte das Ergebnis im Register abgelegt werden und dort auf den naechsten FIFO-Wert warten um vom neuen FIFO-Wert abgezogen zu werden und so weiter und so fort. Fuehre ich nun das SR einmal aus (N=1), wird im SR nichts abgelegt (es stehen weiterhin die Nullen aus der Initialisierung drin), fuehre ich die Runde zweimal aus (N=2), landet der unveraenderte FIFO-Wert (weil FIFO minus 0=FIFO) im SR. (...2h probieren und debugging...) Das Problem ist jetzt, dass bei jedem Neuaufruf der Schleife (und das passiert jedes mal, wenn die Stacked Sequence abgelaufen ist), das Shift-Array neu initialisiert wird. Ich glaube, dass das das Hauptproblem ist. Ich dachte, dass diese Initialisierung nur einmalig, ausgefuehrt wird. Aber so wird mir jedesmal der SR-Inhalt ueberschrieben. Bin fuer Tipps dankbar. Gruss, Daniel Datenübergabe aus stacked sequence - GerdW - 01.09.2010 16:39 Hallo daniel, und nun? Datenübergabe aus stacked sequence - derdaniel - 02.09.2010 12:36 Hallo Gerd, es funktioniert!!! Ich musste noch ne kleine Anpassung in der Verdrahtung vornehmen, aber nun funktionierts so, wie ich es brauche! Mit dem loop-back habe ich es nicht probiert, da ich bisher damit nicht gearbeitet habe. Bin mir nur nicht ganz schluessig, warum das mit dem Shift-Register nicht auch ging - die beiden sollten ja prinzipiell das Gleiche machen. Aber das werde ich spaeter mal ergruenden Vielen Dank nochmal und Gruss, Daniel |