Problem mit Datenerfassung (keine NI-Hardware) und Darstellung
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Problem mit Datenerfassung (keine NI-Hardware) und Darstellung
Hallo Leute,
ich hab hier ein Problem und hoffe ihr könnt mir helfen.
Ich hab hier einen Meßverstärker (keine NI-Hardware) den ich über eine mitgelieferte DLL ansteuere. Ich hab mir ein VI programmiert, welches mir immer ein Array von Messwerten abholt.
Leider ist die Anzahl der Messwerte im Array nicht konstant. Abhängig von der eingestellten Datenrate liefert mein VI mal ein Array mit 4 Werten, mal eins mit 3 Werten usw..
Aus diesem Array erstelle ich pro Schleifendurchlauf ein Signalverlaufs-Datentyp. Hierfür ermittle ich mir einfach das dt (in der DLL ist eine funktion "getFreq() die die Datenrate ermittelt) und ich ermittle mir das t0 aus der Systemzeit. Damit hab ich alle nötigen Informationen um mein Signalverlauf zu erstellen.
Nun das Problem:
Diese Signalverläufe übergebe ich an mein Signalverlaufsdiagramm (Chart). Das Chart ordnet nun anhand der Information t0 und dt die ankommenden Daten korrekt im Signalverlaufsdiagramm (Chart) an.
Aber leider kommt es manchmal vor, dass sich das letzte Datenpacket mit dem neuen zeitlich überschneidet! Dies führt zu einem löschen des Signalverlaufsdiagramms!
Also ein Bsp.:
t0 = 100 (nur zur Vereinfachung); dt = 1; Y[W1;W2;W3]
Dann ist W1 dem Zeitpunkt t0 zugeordnet, also 100.
Und W3 ist dem Zeitpunkt t0 + 2*dt zugeordnet, also 102.
Nun kommt ein zweites Datenpacket an und dieses darf aufkeinenfall mit einem t0-Wert anfangen der kleiner ist als t0+2*dt (102) -> sonst reset des Charts!
Nun ja, aber das ist alles so ungenau t0 wird aus der Systemzeit ermittelt usw. Es kommt immer wieder zu überschneidungen und damit zu einem löschen des gesamten Graphen.
Hatte jemand mit ähnlichen Problemen zu tun? Benötigt Ihr noch weitere Informationen um mir helfen zu können?
Hoffe jemand kennt eine Lösung.
mfg
m0n0g0n
Anzeige
22.05.2008, 10:10 (Dieser Beitrag wurde zuletzt bearbeitet: 22.05.2008 10:10 von jg.)
Und eine Alternative (und Lösung) hab ich dir auch schon mal vorgeschlagen: XY-Graph!
------
Übrigens mal eine Frage zu deiner Hardware: Ändert sich die Datenrate wirklich dauernd, sprich hast du wirklich dauernd verschiedene Delta-t? Oder ist so wie bei NI-Hardware üblich, die Datenrate eigentlich fest, dein Messverstärker puffert auch schön brav zwischen, und dein Problem kommt dann nur daher, dass zu jedem Datenpaket willkürlich und ungenau ein neues t0 per Software generierst? Im ersten Fall würde es nämlich langen, die Datenpakete als Array (und nicht als Waveform) abzuholen, diese Arrays aneinander zu hängen, und dann mit einem festen dt darzustellen. Dann hast du keine Probleme.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Und eine Alternative (und Lösung) hab ich dir auch schon mal vorgeschlagen: XY-Graph!
------
Übrigens mal eine Frage zu deiner Hardware: Ändert sich die Datenrate wirklich dauernd, sprich hast du wirklich dauernd verschiedene Delta-t? Oder ist so wie bei NI-Hardware üblich, die Datenrate eigentlich fest, dein Messverstärker puffert auch schön brav zwischen, und dein Problem kommt dann nur daher, dass zu jedem Datenpaket willkürlich und ungenau ein neues t0 per Software generierst? Im ersten Fall würde es nämlich langen, die Datenpakete als Array (und nicht als Waveform) abzuholen, diese Arrays aneinander zu hängen, und dann mit einem festen dt darzustellen. Dann hast du keine Probleme.
MfG, Jens
Der XY-Graph ist leider für meine Anforderung ungeeignet. Ich möchte eine Histroy haben und des weiteren soll der Graph fortlaufend gezeichnet werden. Beim X-Y Graph kann ich ja nur immer eine feste Anzahl von Y-Werten darstellen. Ich könnte zwar immer neue Y-Werte an die alten ranhängen und diese an den XY-Graph übergeben, aber dann würde trotzdem dieser fortlaufende Effekt nicht entstehen.
Also die Datenrate ist eigentlich mehr oder weniger konstant, ich denke es liegt daran, dass ich ein ungenaues t0 per Software generiere.
Ja also zurzeit Löse ich das Problem indem ich den neuen Signalverlauf immer an den alten ranhänge (t0 wird ja dann verworfen).
Das Problem ist, dass der Signalverlauf mir immer mehr meinen Speicher zustopft (ich arbeite mit Datenraten von ca 1 kHz und im worst case 8 Kanälen). Des Weiteren entsteht eine Verfälschung der Zeitachse da sich ein geringer dt-Fehler bei sehr vielen Messwerte aufsummiert.
Ausserdem würde ich gerne die Messung wärend der Laufzeit aufnehmen. Sprich immer ein Datenpacket abholen und dieses als ASCII abspeichern. Das Problem ist, dass meine Datenpackete ja teilweise sich überschneidende Zeiten haben und somit kann ich keine korrekte Wert-> Zeit Zuordnung machen. Bei dem Problem hilft mir auch kein aneinanderhängen von Signalverläufen.
Problem mit Datenerfassung (keine NI-Hardware) und Darstellung
' schrieb:Der XY-Graph ist leider für meine Anforderung ungeeignet. Ich möchte eine Histroy haben und des weiteren soll der Graph fortlaufend gezeichnet werden. Beim X-Y Graph kann ich ja nur immer eine feste Anzahl von Y-Werten darstellen. Ich könnte zwar immer neue Y-Werte an die alten ranhängen und diese an den XY-Graph übergeben, aber dann würde trotzdem dieser fortlaufende Effekt nicht entstehen.
Hier hast du einen XY-Graph, der eine Chart-Funktionalität zeigt. History ist dann dein Graph selber.
Klar muss man das Sammeln, Ordnen, Zerteilen der Daten jetzt selber machen. Aber was meinst du, macht LV im Hintergrund bei einem Chart? Sehr wahrscheinlich nicht viel anderes...
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Hier hast du einen XY-Graph, der eine Chart-Funktionalität zeigt. History ist dann dein Graph selber.
Klar muss man das Sammeln, Ordnen, Zerteilen der Daten jetzt selber machen. Aber was meinst du, macht LV im Hintergrund bei einem Chart? Sehr wahrscheinlich nicht viel anderes...