INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Größe der Queue für eine 70 sek. Messung



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!

21.03.2014, 12:33
Beitrag #1

LV_Greenhorn Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Mar 2014

2013
2014
DE_EN

65XXX
Deutschland
Größe der Queue für eine 70 sek. Messung
Tag die Herrschaften,

unsereiner ist Neuling auf den Gefilden von NI und ich benötige Eure Hilfe.
Ich habe mich stets darum gedrückt Fragen im Forum zu stellen, da ich eher den Ehrgeiz dazu habe alles selber zu lösen.
Nun bin ich zu einem Punkt gelangt, wo ich nicht weiter weiß...

Angehängt ist ein kleiner Ausschnitt, um den Täterkreis einzugrenzen.

Am Teststand werden 11 Signale erfasst und diese 1/s abegriffen (Langzeitdauertest >5000 h) und in eine .txt Datei geschrieben. Diese Schleife ist im Ausschnitt nicht zu sehen.

Nun soll aber bei einem Notfall/ Störung 10 sek. vor- und 60 sek. nach dem Event die Daten "hochaufgelöst" - wie diese aus dem DAQmx - Read kommen in eine Datei geschrieben werden.
Daher werden die Daten von Schleife #2 in Schleife #1 in eine Lossy Queue übergeben und beim "Event" + 60 sek. alle Daten in eine Datei niedergeschreiben.
Bitte ignoriert die eine Notiz von der Excel-Tabelle die Rede ist. Habe es versucht und hat nicht funktionieren und somit verworfen - ohne vorher die Notiz zu ändern. - Sorry.

Das Problem was ich nun habe ist, dass ich keine 70 sek. an Daten aufgeschrieben bekomme, sondern lediglich ~20 sek.

Was mache ich hier falsch?

Ich in der Meinung, dass wenn ich den Takt mit 1000, somit jeden Kanal 1000 abfrage. So komme ich auf 11*1000 Messungen/sek.
Um dann 70 sek. abzudecken wird dies dazu multipliziert und erhalte eine Anzahl von 770000 Messungen @70sek.
Um die Queue klein zu halten und Resourcen zu schonen setze ich diese mit einer Reserve von ~30% an und komme so auf eine Queue-Größe von 10^6.
Leider funktioniert dieses nicht wie erwünscht und habe daher die Größe auf 50^6 erhöht in der Annahme es würde daran liegen.

Ich wäre Euch sehr dankbar, wenn Ihr mir in der Hinsicht weiterhelfen könntet.


Ich arbeite mit LV2013 und USB-6259.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.03.2014, 13:15 (Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2014 13:26 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Größe der Queue für eine 70 sek. Messung
Hallo Greenhorn,

1. Problem:
In deiner "1. Consumer"-Schleife hast du eine While-Schleife programmiert, um 50s zu warten. Dummerweise wird während dieser Wartezeit nichts in deine Buffer-Queue geschrieben. THINK DATAFLOW!
D.h. du startest zwar deine Wartezeit, schreibst aber nur einmalig zu Beginn der Wartezeit Daten in deinen Buffer…

2. Problem:
Du legst diese Buffer-Queue mit einer Länge = 5M an. Wieso? Jedes Element in deiner Queue entspricht einem "Array of Waveforms". Eine Waveform entspricht einem Zeitabschnitt von 0.1s (Samplerate = 1kS/s, 100 zu lesende Samples). Also muss deine Bufferqueue genau 70*10=700 "Array of Waveforms" buffern!

3. Problem/Lösung:
Lege die Buffer-Queue mit der gewünschten Länge (für 70s) an. Schreibe andauernd Daten in diese Queue. Wenn dein "Event" auftritt, musst du es einfach nur um 60s verzögern, um dann einfach den kompletten Inhalt der Queue (60s nach Event und 10s vorher) zu speichern…

Ich möchte noch erwähnen, dass ich das VI (soweit sichtbar) schon für recht ordentlich halte!
Hier und da noch ein paar Kleinigkeiten, aber sonst keine groben Schnitzer… Smile

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.03.2014, 14:04 (Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2014 14:05 von LV_Greenhorn.)
Beitrag #3

LV_Greenhorn Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Mar 2014

2013
2014
DE_EN

65XXX
Deutschland
RE: Größe der Queue für eine 70 sek. Messung
Hallo GerdW,

vielen Dank für die schnelle Antwort und das Du Dich meinem Problem angenommen hast.

Dataflow!
Scheibenkleister! Beim Lesen sind mir die Schuppen von den Augen gefallen. [Bild: wallbash.gif]

Habe angenommen, dass ein Queue-Element = ein Signal entspricht (daher die 77.000 bzw. 1.000.000 Elemente) und wusste nicht das ein Queue-Element = eine Waveform bzw. Array. darstellt. O
Und bei 5 Mio. dachte ich viel - hilft viel evtl...

Dann würde ich ich in der Consumer Schleife den Melder direkt an den Stopp setzen und die Zeitschleife löschen. Und in meiner - nicht mit aufgezeichneteten Überwachungsschleife den 60s Countdown setzen.
Der bei TRUE dann meldet. Das müsste doch gehen, oder?

Vielen Dank für das Lob, dass kann ich gebrauchen. Bin absoluter Anfänger und habe auch noch nie programmiert und hänge seit knapp 4 Wochen (teilweise Haareausreisend) dran.
Aber zum Glück hast Du den Rest nicht gesehen, weil ich glaube Du würdest dann anders urteilen. Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.03.2014, 16:41
Beitrag #4

LV_Greenhorn Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Mar 2014

2013
2014
DE_EN

65XXX
Deutschland
RE: Größe der Queue für eine 70 sek. Messung
Tag die Herren,
wollte nur kurz meine Lösung aufzeigen und das es funktioniert.
Nochmal Danke an Gerd!

Kann es sein, dass bei Verwendung des Melder.vi die Schleife nicht "aktiv" ist und somit nicht in die Queue schreibt?
Sondern erst dann, wenn er eine Meldung erhält?
Habe daher die Melder durch Globale Variablen ersetzt.

Dank und Gruß


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.03.2014, 16:42 (Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2014 16:43 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Größe der Queue für eine 70 sek. Messung
Hallo Greehorn,

Zitat:Kann es sein, dass bei Verwendung des Melder.vi die Schleife nicht "aktiv" ist und somit nicht in die Queue schreibt?
Sondern erst dann, wenn er eine Meldung erhält?
Sowohl GetNotifier als auch DeQueue haben jeweils einen Timeout-Eingang - und dessen Bedeutung ist in der LabVIEW-Hilfe beschrieben…

Rtmfx Big Grin

Zusätzliche Wartezeiten/Metronome benötigt man in den Consumer-Schleife nicht, sie sind eher noch hinderlich!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: