04-10-2012 05:05 PM
Hallo Gemeinde,
ich habe schon mehrmals versucht das zu lösen, aber da mir dauernd was dazwischen gekommen ist, konnte ich mich noch nicht ernsthaft damit beschäftigen. Und zwar:
Wir schreiben mit LabView tdms-Dateien, die 24/7 laufen, da wir aber alle 8 Stunden einen Bericht haben wollen, schreiben wir alle 8 Stunden in eine neue Datei. Die Daten werden nur ein mal pro Minute geloggt und es sind auch nur timestamp + 6 werte, also sehr wenig Daten, ein paar KB am Tag. Das Problem ist, dass die Indizierung irgendwie zu langsam scheint. Das Script soll die letzten 7 Tage auswerten, insbesondere aber die vergangenen 24 Stunden. Deshalb wird um 5:10 Uhr, 13:10Uhr und 21:10 Uhr in die jeweils nächste tdms-Datei gewechselt.
Zunächst haben wir direkt nach dem Wechsel das Script ausgeführt, das den Bericht erstellt, allerdings war da dann die zuletzt fertig gestellte tdms-Datei nicht enthalten. Wenn man das Script nach dem Suchvorgang stoppt, sieht man, dass alle Dateien (gefiltert wird nach einer benutzerdefinierten Eigenschaft, die im MyDatafinder registriert ist, die restlichen Einstellungen sind die Standard-Einstellungen) gefunden werden, allerdings die letzte nicht indiziert ist und somit nicht in die Auswertung einfliesst. Beim nächsten Bericht ist diese Datei dann verfügbar.
Um MyDatafinder mehr Zeit zum Indizieren zu geben, starten wir das Script nun erst um 5:30 Uhr bzw. + jeweils weitere 8 Stunden. Das Ergebnis ist aber das gleiche, die letzte tdms-Datei wird nicht indiziert.
Meistens wird der Bericht um 5:30 Uhr mit allen Werten erstellt. Aber warum dann die anderen nicht?
Ich habe auch eine Neuindizierung der gefundenen Dateien durch das Script versucht, aber das half auch nicht.
Ich bin für jeden Input dankbar!
Wir benutzen LabView 2009 und Diadem 11.0
Danke und Gruß,
NoUse666
Solved! Go to Solution.
04-11-2012 07:04 AM
Hi NoUse666,
wäre es möglich, dass du uns das Script zum Anschauen uploaden könntest?
04-11-2012 09:55 AM
Im Anhang ist der Anfang des Skripts, ich denke das sollte reichen um zu sehen, wie ich die Daten lade.
Schonmal Danke für die Hilfe.
04-12-2012 03:55 AM
Hallo,
ist mit Neuindizierung über das Skript die folgende Skriptzeile gemeint:
' Aktualisieren Navigator.Display.CurrDataProvider.Browser.RefreshAll()
Dies führt nicht zu einer Neuindizierung der Dateien, sondern lediglich zu einer Aktualisierung der Ansicht des Browsers im Navigator.
Ab DIAdem 2010 gibt es die Möglichkeit, eine einzelne Datei bzw. einen ganzen Ordner per Skript neu zu indizieren.
Vielleicht hilft es, die regelmäßige Indizierung des DataFinder auf stündlich zu setzen. Da sich in dem Suchbereich anscheinend nicht besonders viel verändert, sollte dies relativ schnell fertig sein, so dass die neue Datei zur Auswertung indiziert ist:
' Aktualisieren Navigator.Display.CurrDataProvider.Browser.RefreshAll()
04-14-2012 08:01 PM
Hallo,
Ahso, dachte der Befehl würde auch die Dateien indizieren.
wir haben das mit der stündlichen Indizierung ausprobiert und seitdem hat das zwei mal funktioniert, aber danach fehlten wieder die Daten der vergangenen 8 Stunden.
Ich dachte vielleicht bekommt der Datafinder nicht genügend Prozessor-Zeit, aber die Datenerfassung läuft mit ca 40% CPU-Last, also sollte da ja genügend Zeit für das Indizieren bleiben.
Ich weiß nicht, ob das damit zusammenhängt, aber seit heute kann ich das Script nicht mehr ausführen, Diadem stürzt dabei mir der Meldung
error while executing "" command
in der ntdll.dll ab. Soweit ich weiß sind die Windows-Updates auf dem Rechner deaktiviert und es wurde in letzter Zeit keine neue Software aufgespielt.
Langsam frustriert mich Diadem...
Gruß,
NoUse666
04-16-2012 09:44 AM
Hallo,
ist es möglich, die Datei mit den Daten der letzten 8 Stunden in DIAdem zu öffnen, so lange diese noch nicht erfolgreich indiziert wurde?
Wie ist der Indexstatus für diese Datei?
Vielleicht hilft es die stündliche Indizierung beizubehalten, aber den Observer des My DataFinder zu deaktivieren.
04-18-2012 07:27 AM
Hi,
Versuche mal den DataFinder mit "call oMyDataFinder.Indexer.UpdateIndex()" manuel zu updaten.
Gruss Stefan
04-18-2012 06:48 PM
@stefanwimmer: in Diadem 11.0 scheint es diese Funktion noch nicht zu geben. Es kommt eine Fehlermeldung, dass es diese Eigenschaft nicht gibt.
@usac: Die Datei hat die Eigenschaft "Index Status" nicht. Erst, wenn diese indiziert ist, sehe ich den Status und der ist dann auch "eIndexedSuccess".
Ich habe jetzt mal das VI geändert, sodass nach jedem Schreib-Vorgang die Datei geschlossen und defragmentiert wird. Ich habe in diesem Thread die Anregung dazu gefunden. Morgen Abend um 21.30 Uhr weiss ich, ob das funktioniert...
04-20-2012 06:04 AM
So, jetzt funktioniert das, danke für eure Hilfe!