Hallo!
Hoffe dass mir jemand bei meinem vi weiterhelfen kann.
Also folgende problemstellung
Ich habe eine daq karte in LabVIEW simuliert. Die sensoren habe ich zurzeit auch simuliert. (12 temperatursensoren). Es sollten zum schluss mehere temperatur/zeit diagramm ausgegeben werden. Die messdaten sollen von jedem sensor in ein excel-file und in ein xml-file gespeichert.
Soooo… das programm selber funktioniert im großen und ganzen. Nur:
1. Frage
Im excelfile werden so viele messdaten angezeigt wie ich abtastwerte eingestellt habe. Das sind z.B. 100 messdaten pro sekunde. Das ist zu viel. Gibt es eine möglichkeit dass ich von den daten, die ich vorher in einen string umgewandelt habe (um sie im excel file darzustellen), nur jeden 10. messwert in das excel file schreibe?
2. Frage
Beim xml file möchte ich eigentlich selbiges wie beim excel-file (die messwerte hineinschreiben). Nur ist hier das problem, dass es immer nur den LETZTEN wert der messung in die datei schreibt. Warum schreibt er nicht ebenso viele daten hinein wie beim excel file?
3.frage
Nächste woche bekomme ich die richtige messkarte und die richtigen sensoren. Welche abtastrate bzw. samplerate ist für temperaturmessungen denn am sinnvollsten? Lufttemperatur und wassertemperatur ändert sich ja nicht soo schnell, deshalb muss die abtastrate ja auch nicht so groß sein, oder?
einige für euch wird mein vi wahrscheinlich ein müdes lächeln kosten... mache seit 2 monaten ein persönliches "LabVIEW bootcamp" durch und bitte daher das wahrscheinlich schlecht geschriebene programm zu entschuldigen
bin daher um JEDEN ratschlag/verbesserungsvorschlag dankbar!!
pelikan
' schrieb:1. Frage
Im excelfile werden so viele messdaten angezeigt wie ich abtastwerte eingestellt habe. Das sind z.B. 100 messdaten pro sekunde. Das ist zu viel. Gibt es eine möglichkeit dass ich von den daten, die ich vorher in einen string umgewandelt habe (um sie im excel file darzustellen), nur jeden 10. Messwert in das excel file schreibe?
Ich beantworte mal nur die eine Frage. Besser ist es doch, die Daten schon vorher zu reduzieren, und genau das hast Du ja mit dem Express-VI "Sample Compression" schon versucht. Nur funktioniert das vermutlich nicht, wenn des VI nur jeweils 1 Sample als Eingangswert hat. Du solltest das DAQmxRead.vi umstellen auf N Abtastungen und als Anzahl zu lesender Werte ein Vielfaches von 10 eingeben. Dann wartet das DAQmxREAD.vi, bis die vorgegebene Anzahl im Buffer ist. Beispiel für Wert 100: Du hast dann nach Reduzierung 10 Samples, die Schleife läuft einmal pro Sekunde durch, die Diagramme werden 1 mal pro Sekunde aktualisiert, wobei die 10 Werte der letzten Sekunde auf einmal geschrieben werden.
So wie es jetzt läuft, mit 100 Aktualisierungen pro Sekunde von mehreren Diagrammen, ist zu befürchten, daß das kein Grafikkarte mehr schafft. Es ist auch unnütz, wenn die Aktualisierungsgeschwindigkeit einer Visualisierung nicht an die menschliche Aufnahmefähigkeit angepasst ist.
Hallo,
dann will ich auch mal meinen Senf dazu geben.
Wenn das Dezimieren der Messdaten nicht richtig funktionieren will, dann nimm doch das Decimate Array-VI, zieh es so weit auf, dass insgesamt 10 Anschlüsse herausgehen und nimm den zehnten. Heraus kommt ein neues Array, das nur jeden zehnten Wert enthält. Nicht sonderlich schön, frisst Ressourcen, aber einfach
Zur Messfrequenz der Temperatur: Je nachdem, was gemessen werden soll, würde ich sagen, höchstens 1 Messwert pro Sekunde.
Wenn es sich um langsame Prozesse handelt oder bei größeren Luftmasssen reichen auch 10s oder 30s zwischen zwei Messwerten. (Kommt einfach drauf an, ob geregelt wird oder nur aufgezeichnet und wie die Regelstrecke ist).
Wenn es nur um Aufzeichnung von Daten geht und die Platte groß ist, dann sollte man natürlich die Karte voll ausreizen und die maximale Frequenz nehmen; nach 65535 Zeilen macht dann aber M$ Excel schlapp
lynx
hallo!
dass mit der samplerate umstellen funktioniert super, danke! und das mit dem decimate array.vi ist auch toll dass ich das jetzt weiß, hab lang nach soetwas gesucht.
kennt sich wer mit xml aus? wenn ich selbiges möchte machen wie bei der exceldatei (die messwerte in das xml file schreiben), dass schreibt er immer nur den letzten messwert hinein. weis zufällig wer warum?
danke
pelikan
keiner einen vorschlag für die xml datei?
Hallo nochmal!
hoffe es kann mir bei dieser frage wer helfen. (möchte vorerst keinen neuen thread eröffnen, hoffe dass dieser thread noch von einigen gelesen wird)
also ich habe wie schon gesagt temperatursensoren (vorerst nur simuliert)
meine pt100 temperatursensor(en) gehen auf einen messumformer und vom messumformer direkt auf einen analogen eingang von der NI USB-6218 karte. meine frage: der Messumformer gibt ein SPANNUNGSSIGNAL von 0 bis 10 Volt aus. im MAX kann man ja konfigurieren ob man spannung, temperatur, frequenz usw... messen möchte. Ich war immer der meinung dass ich im MAX einen temperatur-task erstellen muss, aber da mir nun die idee gekommen ist, wenn der messumformer ein spannungssignal von 0 bis 10 V ausgibt, muss ich ja in MAX einen spannungstask erstellen, oder?
danke
pelikan
Hallo,
zum DAQ: Temperatur-Tasks sollten meiner Meinung nach genauso die Spannung messen, diese dann aber intern nach einer Rechenvorschrift (durch den Benutzer anzugeben) umrechnet. Beim Spannungstask bekommst Du direkt die Spannung und musst sie dann in Deinem Programm umrechnen. Dazu kann ich aber nichts genaueres sagen, habe bisher nicht viel mit DAQ gearbeitet
zum XML-Problem: Bisher nur Vermutungen. Irgendwie mag mein LabVIEW Dein VI nicht. Es lässt sich zwar runter laden,beim Öffnen verweigert LabVIEW aber den Dienst. (Öffnen -> Auswählen -> Keine Reaktion
)
Kannst Du vielleicht nochmal das VI hochladen und zusätzlich einen Screenshot erstellen?
Kann es vielleicht sein, dass Du die XML-Daten nach einander schreibst und dann immer nur der letze Wert in die XML-Struktur eingefügt wird?
So kann ich aber leider nichts genaues sagen.
gruß
Lynx
' schrieb:Hallo,
zum DAQ: Temperatur-Tasks sollten meiner Meinung nach genauso die Spannung messen, diese dann aber intern nach einer Rechenvorschrift (durch den Benutzer anzugeben) umrechnet. Beim Spannungstask bekommst Du direkt die Spannung und musst sie dann in Deinem Programm umrechnen. Dazu kann ich aber nichts genaueres sagen, habe bisher nicht viel mit DAQ gearbeitet
zum XML-Problem: Bisher nur Vermutungen. Irgendwie mag mein LabVIEW Dein VI nicht. Es lässt sich zwar runter laden,beim Öffnen verweigert LabVIEW aber den Dienst. (Öffnen -> Auswählen -> Keine Reaktion )
Kannst Du vielleicht nochmal das VI hochladen und zusätzlich einen Screenshot erstellen?
Kann es vielleicht sein, dass Du die XML-Daten nach einander schreibst und dann immer nur der letze Wert in die XML-Struktur eingefügt wird?
So kann ich aber leider nichts genaues sagen.
gruß
Lynx
Ich habe den „write to xml file.vi“ mal „zerlegt“ und ich denke mir dass da ne while schleife rein muss. (der vi ist angehängt, ich habe ihn ein bisschen editiert um auf meine erforderungen zuzuschneiden). Wenn ich das in die datei schreib, wird immer nur das ausgegeben was in dem angehänten xml file steht. Ist doch schon mal was, aber nur möchte ich ALLE Messwerte drinnen stehen haben mit allen zugehörigen zeiten.
Ich habe bereits versucht den string (das sind die Daten/zeit) in eine while schleife zu stellen. (und noch etliches mehr) Aber das funktioniert nicht bzw. mache ich was falsch.
ich hoffe es klappt mit den vi's. habe LabVIEW version 8.0
ach ja, hab die sensoren bekommen, und sie geben ein spannungssignal aus (da ja der messumformer auch ein spannungssignal von 0-10V ausgiebt
danke
pelikan
der "vi nur zur demo" ist der eigentliche versuchs vi, ich weiß nicht ob du den anderen vi wo nur das "write to xml file" enhalten ist auch brauchst, aber wahrscheinlich eh nicht, da dass schon im "vi nur zur demo" enthalten ist.
Hallo,
Jetzt wird mir langsam klar, wo das Problem liegt. Ich bin vorher immer davon ausgegangen, dass die Daten nach Beenden der Erfassungsschleifen in einem Rutsch für den gesamten erfassten Zeitraum geschrieben wird.
So wird jedoch wie beschrieben immer nur ein Wert in die XML-Datei geschrieben, da immer ein Wert und eine Zeit genommen wird, der XML-String daraus geformt wird und anschließend die Datei geschrieben. Der Wahlschalter steht auf "create or replace", Meldungen werden unterdrückt. => Die vorherige Datei verschwindet sang- und klanglos im Orcus und wird durch eine neue ersetzt.
Um die Dateien kontinuierlich in die XML-Datei zu schreiben, musst Du das Öffnen und Schreiben des Kopfes der Datei, das Schreiben der einzelnen Wertepaare und das Schließen der Datei in drei eigene VIs aufteilen, dann sollte es funktionieren. Das Öffnen und Schreiben des Kopfes vor Beginn der While-Schleife, das Schließen danach, Schreiben dazwischen.
Ich bau mal schnell ein Beispiel zusammen, dann wird es denke ich klarer.
Beispiel:
[
attachment=4628]
Schreibt jede Sekunde einen XML-Tag im von Dir verwendeten Format in die XML-Datei. Nach Stopp wird die Datei geschlossen.
Und die Ausgabe des VIs:
[
attachment=4632]
gruß
Lynx
hallo!!
das mit xml funktioniert super, danke! ich wär da wohl nie darauf gekommen... hast mir wahnisnnig weitergeholfen!
pelikan