Hi... nach langen Rumprobieren muss ich mich jetzt wohl an euch wenden:
Über Visa-VIs erfasse ich die Daten aus einem Sensor. Die letztendliche Ausgabe erfollgt als normale numerische Ausgabe. Jedoch flattern die Werte nicht in konstanten Zeitabständen ein (von 53 bis 48 Werte pro Sekunde). Die normale Darstellung im Signalverlaufsdiagramm gefällt mit schon ganz gut. Jedoch ist die Zeit-Achse total ungenau. Ich hab schon alles mögliche ausprobiert! Mit Faktorisierung der X-Achse (was meinen Wünschen schon ganz nahe kommt, aber bei einer Messzeit von über 50 Sekunden wird das Ergebnis schon zu ungenau), Signalverlaufserstellung u.s.w.
Ich hab mal ein Beispiel angehangen... dies zeigt in etwa den schematischen Aufbau meines VIs. Nun will ich einfach nur, dass die Zeit-Achse die verstrichene Zeit in Sekunden angibt!
Vielen dank für eure Hilfe (... die Suchfunktion hat mir nicht wirklich weitergeholfen)
[
attachment=13799]
' schrieb:Ich hab mal ein Beispiel angehangen... dies zeigt in etwa den schematischen Aufbau meines VIs. Nun will ich einfach nur, dass die Zeit-Achse die verstrichene Zeit in Sekunden angibt!
Bezogen auf ads angehängte VI kann ich nur raten:
1.
Nimm anstelle von "ms Warten" (absolut warten) das VI "Metronom" (bis zum nächsten Raster warten). Der Metronom ist deswegen besser, weil hier die Darstellungszeiten im Graph automatisch berücksichtigt werden! Mit "ms Warten" ist ein Schleifendurchgang nämlich ms + Barbeitungszeit Schleife lang.
2.
Beschalte vom VI "verstrichene Zeit" den Eingang "Zurücksetzen" mit "Schleifenzähler I = 0".
Ob dir diese beiden Punkte bei deinem tatsächlichen problem helfen, bezweifle ich.
Bedenke aber: Wenn du eine Zeitabfrage per While-Schleife mit Metronom machst, musst du immer daran denken, dass die While-Schleife nur ungefähr in einem gewünschten Raster läuft.
Wenn du eine Waveform (<= guckst die Hilfe. Waveforms haben ein konstantes Zeitraster) an die Graphik anhängst (anstelle z.B. eines 1D-DBL-Arrays), würde wohl auch in deinem Falle die Zeit immer genau stimmen.
Hier beispiel, wie man die richtige Zeit in das Diagramm hineinbringt. Es muß aber noch daran gearbeitet werden, z.B wenn die Zeit bei Null beginnen soll. Ist aber kein Problem.
[
attachment=13806]
K... danke für die Antworten!
Und danke für das neue Beispiel!
Ich werde es mir gleich mal genauer anschauen, aber auf dem ersten Blick sah es ganz gut aus!
Das mit dem Beginnen bei Null müsste ich schon gelöst haben, weil das Problem ja auch schon vorher bestand! Hab es genau so gemacht wie es "IchSelbst" beschrieben hat.
THX
' schrieb:Das mit dem Beginnen bei Null müsste ich schon gelöst haben, weil das Problem ja auch schon vorher bestand! Hab es genau so gemacht wie es "IchSelbst" beschrieben hat.
Habe das VI vorhin heimlich editiert, das Diagramm beginnt jetzt bei Null.
Das Beispiel funktioniert auch dann, wenn die Messwerte nicht äquidistant daherkommen. Bei gelichmäßigen dt (Metronom!) ist es vielleicht unnötig aufwendig, es genügt dann, wenn Du über Eigenschaftknoten "X-Achse Faktor" dem Diagramm das dt mitteilst und dann nur noch die reinen y-Werte übergibst.
Gruß Ludwig
' schrieb:Bei gelichmäßigen dt (Metronom!) ist es vielleicht unnötig aufwendig, es genügt dann, wenn Du über Eigenschaftknoten "X-Achse Faktor" dem Diagramm das dt mitteilst und dann nur noch die reinen y-Werte übergibst.
An solch eine Lösung hab ich auch schon gedacht. Wenn ich mir nun die Summe der Schleifendurchläufe anschaue, ist dies nicht konstant, wenn ich die Messzeit erhöhe, bzw. verringere.
Beispielsweise ist es in meinem "großen" VI so:
Bei einer Messzeit von 10s habe ich konstante 487 Schleifendurchläufe, also habe ich "vielfache von ms" ausreichend groß gewählt (auf 20ms).
Bei einer Messzeit von 20s sind es 987 Schleifendurchläufe, also nicht das Doppelte, was es theoretische sein müsste. So ist die Zeitangabe im Signalverlaufsdiagramm schon um rund 0,25s verschoben.
Und bei einer Messzeit von 5s sind es auch nur 238 Werte.
Woran das jetzt liegt , weiß ich nicht.
Auf jeden Fall ist die Variante mit der Signalverlaufserzeugung besser, hier kann ich nun auch VIs der Signalanalyse benutzen. Der einzige Nachteil ist, dass ich nicht zwei Plots gleichzeitig in einem Diagramm darstellen kann.
Das liegt sicher daran, weil diese beiden Signale, die ich ja bündeln muss, nicht die gleiche Zeitinformation besitzen KÖNNEN. Und da macht LabVIEW nicht mit. Diese Signale liegen ja jetzt in "WDT"-Form da.
Bei mir haben sie aber dieselbe Zeitinformation...das eine ist das normale Rohsignal und das andere nur der laufende Mittelwert.
Hat einer von euch eine Idee, wie man trotzdem beide Signale in einem Signalverlaufsdiagramm darstellen kann?
Schon mal Danke!!!
' schrieb:Bei einer Messzeit von 10s habe ich konstante 487 Schleifendurchläufe, also habe ich "vielfache von ms" ausreichend groß gewählt (auf 20ms).
Bei einer Messzeit von 20s sind es 987 Schleifendurchläufe, also nicht das Doppelte, was es theoretische sein müsste. So ist die Zeitangabe im Signalverlaufsdiagramm schon um rund 0,25s verschoben.
Und bei einer Messzeit von 5s sind es auch nur 238 Werte.
Mit oder ohne Metronom? Bei 10s Dauer und 20ms Raster muss die Anzahl der Durchläufe bei 500 liegen. Erhöhe für einen Test das Raster auf z.B. 50ms (25ms?). Wenn dann die Anzahl immer bei 200 (400) liegt, ist die Sache als solche in Ordnung.
Zitat:Woran das jetzt liegt , weiß ich nicht.
Weil die Schleife manchmal, leider eben nur manchmal, länger dauert als das Metronom-Raster.
Zitat:Auf jeden Fall ist die Variante mit der Signalverlaufserzeugung besser
Auf jeden Fall.
Jo... mit "vielfache von ms" meinte ich das Metronom VI. Ich probier es gleich mal aus...
Ich dachte wenn die Anzahl der Schleifendurchgänge immer konstant bleibt, habe ich das "Metronom" groß genug eingestellt... hätte aber vorher mal nachrechnen können!
Also: erst ab 70ms warten komm ich auf die rund 142 Schleifendurchgänge pro 10s! Das sind 14 Werte pro Sekunde...das ist mir zu wenig
...normal habe ich schon rund 50 Werte pro Sekunde!
Kann ich mir eigentlich auch ausgeben lassen wie lange ein Schleifndurchgang gedauert hat, um diesen Wert als dt bei der Signalerzeugung zu definiern?
' schrieb:Also: erst ab 70ms warten komm ich auf die rund 142 Schleifendurchgänge pro 10s! Das sind 14 Werte pro Sekunde
Ich wage mal zu sagen, da ist mehr rauszuholen. 70ms ist doch bestimmt die Grenze? Das hieße, die While-Schleife braucht mindestens 50ms. Das ist viel!
[*grübel*]
70ms kann nicht sein. Das widerspricht sich mit deiner obigen Aussage: 487 pro 10s bei 20ms. Hier fehlen 13 von 500. Allergnädigst sind das 10%. Macht 22ms Schleifendauer, noch gnädiger 30ms - aber niemals 70!
Zitat:Kann ich mir eigentlich auch ausgeben lassen wie lange ein Schleifndurchgang gedauert hat, um diesen Wert als dt bei der Signalerzeugung zu definiern?
Klar. Programmieren?
Schieberegister (mit "aktueller Timer" initialisiert) an While-Schleife. In der Schleife Schieberegisterwert von "aktueller Timer", der ins Schieberegister wandert, abziehen. Diese Differenz auf indizierten Array-Ausgang geben.