LabVIEWForum.de - Darstellung über verschiedene Zeiträume

LabVIEWForum.de

Normale Version: Darstellung über verschiedene Zeiträume
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo erstmal, da dies mein erster post ist, entschuldige ich mich schon einmal, falls ich unwissender Weise gegen irgendeine Regel verstoße. Also es handelt sich um folgende Problemstellung:

Ich rufe über VISA Read in einer While-Schleife jede 100ms einen Messwert an einem Sensor ab. Diese Messwerte sollen über den Zeitraum der letzten 10 Sekunden und über den Zeitraum der kompletten Messung dargestellt werden. Dabei soll die X-Achse in den vergangenen Minuten, seit Messungsstart dargestellt werden.

Frage 1: Ich weiß, durch Windows ist der Genauigkeit der Einhaltung der 100ms Grenzen gesetzt, aber wäre das die bevorzugte Messwertaufnahme?
Gibt es bessere Methoden?

Frage 2: Wie füge ich dem Signal einen Zeitstempel hinzu, damit der Graph die X-Achse in vergangenen Minuten anzeigt und in einem seperaten Graph die letzten 10 Sekunden?


Vielen Dank schon einmal für die Hilfe!
Hallo phoenix,

wenn deine Daten (einigermaße) zeitlich äquidistant sind, solltest du sie in einem Waveform ablegen. Das dann einfach auf einem Graph darstellen und die X-Achse als Zeit formatieren...

Für deine zwei Zeiträume: lege dir zwei Waveforms unterschiedlicher Länge an und stelle diese in 2 Graphen dar.

Zitat:Ich rufe über VISA Read in einer While-Schleife jede 100ms einen Messwert an einem Sensor ab. ... aber wäre das die bevorzugte Messwertaufnahme?
Wie willst du sonst von einer seriellen (?) Schnittstelle Daten abfragen? Du musst nur sicherstellen, dass der Empfangsbuffer nicht vollläuft (d.h. du schnell genug abfragst) und dass dein Messgerät überhaupt so schnell arbeiten kann...
(29.07.2013 21:48 )phoenix6434 schrieb: [ -> ]Frage 1: Ich weiß, durch Windows ist der Genauigkeit der Einhaltung der 100ms Grenzen gesetzt, aber wäre das die bevorzugte Messwertaufnahme?
Gibt es bessere Methoden?
Läßt sich nicht beantworten, wenn man nichts über den Sensor weiß.
Es gibt prinzipiell über Visa diese 2 Arten der Kommunikation - allerdings kann man sich das meist nicht selbt aussuchen:
1. Master - Slave Kommunikation (das ist offensichtlich bei Dir der Fall)
Man sendet an das Gerät (den Sensor) ein Kommando, der Sensor antwortet.
2. Der Sensor sendet autark und kontinuierlich die Daten mit einer vorgegebenen Rate (Die man konfigurieren kann oder auch nicht)

Bei Methode 1 gibt es eine gewisse Unsicherheit in der Rate, weil Windows nicht deterministisch arbeitet. Diese liegt aber im Bereich von 1 ms, bei Messwerterfassung alle 100 ms fällt das also überhaupt nicht auf und ich würde darüber keinen Gedanken verschwenden
Vielen Dank schon mal für die Antworten, die mir sehr geholfen haben. Ich habe zu folgendem Punkt, noch eine kleine Frage.

(30.07.2013 08:45 )GerdW schrieb: [ -> ]wenn deine Daten (einigermaße) zeitlich äquidistant sind, solltest du sie in einem Waveform ablegen. Das dann einfach auf einem Graph darstellen und die X-Achse als Zeit formatieren...

Für deine zwei Zeiträume: lege dir zwei Waveforms unterschiedlicher Länge an und stelle diese in 2 Graphen dar.

Wie erstelle ich 2 Waveforms unterschiedlicher länge bzw. wie erstelle ich ein Waveform ohne Array? Pro Schleifendurchlauf rufe ich einen Wert ab. Kann man, ähnlich bei einem Array, dem Waveform immer einen Wert hinzufügen?
Hallo phoenix,

Zitat:wie erstelle ich ein Waveform ohne Array? Pro Schleifendurchlauf rufe ich einen Wert ab.
Wenn du kein Array hast, dann musst du dir wohl eines basteln!

Sammel deine Werte in einem Schieberegister, dann hast du ein Array zur Verfügung...
(31.07.2013 09:20 )GerdW schrieb: [ -> ]Sammel deine Werte in einem Schieberegister, dann hast du ein Array zur Verfügung...

Das verstehe ich schon. Was ich nicht verstehe ist: Ich rufe pro Schleifendurchlauf einen Wert ab und will gleichzeitig die Werte in einem Diagramm darstellen. Wenn ich ein Array in einem Schieberegister erzeuge, dieses in ein Waveform umwandel, sehe ich die Messwerte doch nur am Schluss der Aufnahme, wenn die Schleife abgearbeitet ist. Gibt es eine Möglichkeit kontinuierlich ein Waveform zu erweitern?
(31.07.2013 09:27 )phoenix6434 schrieb: [ -> ]Gibt es eine Möglichkeit kontinuierlich ein Waveform zu erweitern?
Ja, die gibt es schon, die Funktion heißt "an Signalverlauf anhängen". Wenn Du aber für die Darstellung das Signalverlaufsdiagramm verwendest, dann brauchst Du das nicht, das Diagramm hat einen internen Ringpuffer und tut das für Dich. Einfach den neuen Punkt, verpackt als Waveform mit nur 1 Punkt, an das Diagramm schicken:
Vielen Dank. Könnte ich den "Waveform-Stream" dann irgendwie abspeichern?
(31.07.2013 10:15 )phoenix6434 schrieb: [ -> ]Könnte ich den "Waveform-Stream" dann irgendwie abspeichern?
Ja schon, nur sind die einzeln abgespeicherten Werte ja nicht äquidistant, das was im Sinalverlaufsdiagramm gespeichert ist entpricht mehr einer XY-Darstellung. Das kann man zurücklesen, und wenn die Zeitabstände gleich sind, könnte man in einem zweiten Schritt aus den XY-Punkten auch eine Waveform basteln.
So würde es gehen (Ohne den zweiten Schritt):
[attachment=45705]
(Die Beschriftungen rückgelesene Werte und Zeiten müssen natürlich vertauscht werden)
Vielen Dank für die schnelle Antwort! Werde alles mal ausprobieren.
Referenz-URLs