22.07.2008, 14:55
Hi,
ich habe folgende Aufgabe:
Ich muss 28 Graphen parallel darstellen.
Daten-Aquise:
Input sind mehrere Signale welche ich mit ca. 1khz abtaste. Ich bekomme einen Array pro Signal und pro Loop (1khz) mit 200-1000 Datenpunkten (einzelne Werte), und pro Signal und pro Loop ein Time Stamp (ein numerischer Wert vom "Framecounter") welcher synchron zum ersten Wert im Array ist.
Anhand des Framecounters am Anfang des Arrays "A" kann ich errechnen ob Daten verloren gegangen sind bis Array "B" (verlorene Daten sollen auch im Graph dargestellt werden / jeder Wert entspricht einem Frame) und mehrere Graphen synchronisieren. Die Frame-Basis ist für alle Inputs gleich (halbe Millisekunde).
z.B.: Signal X gibt mir im ersten Loop ein Array mit 250 Werten. Der Framecounter "Time Stamp" ist für den ersten Wert im Array und gibt mir eine "0". D.h. ich erwarte beim nächsten Loop die 251 als Framecounter "Time Stamp". Sollte eine 300 kommen, weiß ich das 50 Werte verloren gegangen sind -> es wurden also 50 mal 0.5 Millsec nicht geloggt. (das müsste man im Graphen auch anzeigen)
Wave Data:
Ich addiere also die Arrays und füttere damit einen Graph Chart. Mit Insert into Array und Build Graph geht das auch ganz gut.
Wert in Y, "Time Stamp" in t0, und ein Delta von einer halben Millisekunde (0.005) in dt.
Ich bin aber nicht sicher ob das in diesem Fall die beste Lösung ist.
Buffer:
Nach X Werten im Array, fange ich an die Menge an Werten die "am Anfang" rein kommt, "hinten" zu löschen (mit Delete from Array).
Also eine primitive Art von FIFO Buffer, nur das ich direkt den Inhalt im Graph anzeige.
Jetzt die Probleme:
- Wie kann ich jetzt alle Graphen synchronisieren, so das optisch die Graphen korrekt und abhängig zueinander dargestellt werden?
(Die Graphen sollen praktisch die X Achsen anhand des Framecounters synchronisieren)
- Wie kann ich "fehlende Daten" darstellen? (am liebsten einfach eine statische "0" und Plot rot einfärben)
- Ich möchte meinen Buffer verbessern, im Augenblick "ruckelt" es im 1khz Takt. Soll ich nach der Aquise und dem ersten Buffer, noch einen Buffer zur flüssigen Anzeige machen? (Hab schon viel probiert aber das ganze gebuffer bremst LabVIEW unheimlich aus)
für jegliche Hilfe schon mal besten Dank!
Gruß
ich habe folgende Aufgabe:
Ich muss 28 Graphen parallel darstellen.
Daten-Aquise:
Input sind mehrere Signale welche ich mit ca. 1khz abtaste. Ich bekomme einen Array pro Signal und pro Loop (1khz) mit 200-1000 Datenpunkten (einzelne Werte), und pro Signal und pro Loop ein Time Stamp (ein numerischer Wert vom "Framecounter") welcher synchron zum ersten Wert im Array ist.
Anhand des Framecounters am Anfang des Arrays "A" kann ich errechnen ob Daten verloren gegangen sind bis Array "B" (verlorene Daten sollen auch im Graph dargestellt werden / jeder Wert entspricht einem Frame) und mehrere Graphen synchronisieren. Die Frame-Basis ist für alle Inputs gleich (halbe Millisekunde).
z.B.: Signal X gibt mir im ersten Loop ein Array mit 250 Werten. Der Framecounter "Time Stamp" ist für den ersten Wert im Array und gibt mir eine "0". D.h. ich erwarte beim nächsten Loop die 251 als Framecounter "Time Stamp". Sollte eine 300 kommen, weiß ich das 50 Werte verloren gegangen sind -> es wurden also 50 mal 0.5 Millsec nicht geloggt. (das müsste man im Graphen auch anzeigen)
Wave Data:
Ich addiere also die Arrays und füttere damit einen Graph Chart. Mit Insert into Array und Build Graph geht das auch ganz gut.
Wert in Y, "Time Stamp" in t0, und ein Delta von einer halben Millisekunde (0.005) in dt.
Ich bin aber nicht sicher ob das in diesem Fall die beste Lösung ist.
Buffer:
Nach X Werten im Array, fange ich an die Menge an Werten die "am Anfang" rein kommt, "hinten" zu löschen (mit Delete from Array).
Also eine primitive Art von FIFO Buffer, nur das ich direkt den Inhalt im Graph anzeige.
Jetzt die Probleme:
- Wie kann ich jetzt alle Graphen synchronisieren, so das optisch die Graphen korrekt und abhängig zueinander dargestellt werden?
(Die Graphen sollen praktisch die X Achsen anhand des Framecounters synchronisieren)
- Wie kann ich "fehlende Daten" darstellen? (am liebsten einfach eine statische "0" und Plot rot einfärben)
- Ich möchte meinen Buffer verbessern, im Augenblick "ruckelt" es im 1khz Takt. Soll ich nach der Aquise und dem ersten Buffer, noch einen Buffer zur flüssigen Anzeige machen? (Hab schon viel probiert aber das ganze gebuffer bremst LabVIEW unheimlich aus)
für jegliche Hilfe schon mal besten Dank!
Gruß