Versuchsingenieure / Produktionsingenieure (m/w)
Prozessentwicklung, Versuchswesen in den Bereichen Messtechnik, Elektronik, Getriebetechnik
über Steinbach Partner Executive Consultants
Region Stuttgart und Unterfranken
Test Engineer (m/w)
Durchführung und Analyse von Versuchen an PKW-Innenraumkomponenten
Johnson Controls Automotive Experienc über Scheerer Werbung GmbH
Burscheid
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
DIAdem Anfänger hat Fragen
Hallo an alle!
Ich bin neuer DIAdem Nutzer und überlege noch ob ich damit in Zukunft arbeiten möchte oder nicht.
Ich habe eine Menge Daten die (ca 60 gb in 6 mb *.txt häppchen) die ich gern Filtern und anschließend Klassieren würde.
Das Problem dabei ist, das ich mit dem Script noch nicht viel anfangen kann obwohl ich C, VBA und LabViwew Kenntnisse besitze.
Meine Fragen erstmal ganz allgemein. Ist es möglich Datei nach Datei nacheinander zu öffnen, Filtern, min - max suchen und danach Klassieren. Die nächsten dateien sollten dann in die selbe Klassierungsmatrix geschrieben werden.
Danke schonmal an alle und ich hoffe ich werde mit DIA den selben spaß haben wie mit LV
DIAdem-Version: 2010 (11.2), 2011 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1995
Beiträge: 171
Registriert seit: Nov 2008
RE: DIAdem Anfänger hat Fragen
Hallo STG,
erstmal "Willkommen im Club!!!".
Die erste Antwort (ganz allgemein): In DIAdem geht fast alles ;-)
Konkret:
Serienauswertungen über Dateilisten, Verzeichnisse oder Suchergebnisse (Datafinder) sind täglich Brot und kein Problem. Die Sammlung von Ergebnissen im Portal (z.B. in einer separaten Ergebnisgruppe) ist ebenfalls nichts besonderes. Min/Max gibts automatisch als Kanaleigenschaft.
Für genauere Anworten fehlen mir noch Details zur Filterung (gibts bestimmt), dem Klassierverfahren und Art der Ergebnis-Sammlung (z.B. Summierung der Klassen als Absoluthäufigkeit).
By the way: Warum denn Daten als Textdateien? Woher kommen denn die?
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
RE: DIAdem Anfänger hat Fragen
Hallo Voyager,
Danke für Deine schnelle Antwort.
Also das es die Klassierung und einen Besselfilter gibt habe ich schon gesehen. Hab das auch schon bei einer Datei ausprobiert, mein Problem ist nun aber das ich es "zu Fuß" erstens nicht so ausgewertet bekomme wie ich es brauche und es wahrscheinlich Jahre dauern würde bis ich die ganzen Dateien angeklickt habe.
Mit dem Script kenne ich mich aber wie gesagt noch garnicht aus und ich finde auch noch keine Seite die mir da auf die schnelle weiterhelfen könnte.
Die Klassierung zum Beispiel bräuchte ich als Absoluthäufigkeit über alle Dateien in 3 Ergebnissen.
Also es sollen die Kanäle x,y,z Klassiert werden - Grenzen und Klassenanz. ist für alle 3 Ergebnisse gleich.
DIA soll nun also den gefilterten Datensatz nehmen und in Kanal A schauen.
Steht da ne 1 soll er es zum Ergebnis 1 addieren, ne 2 zum 2. usw.
Das muss er natürlich in jeder Zeile neu prüfen...
Außerdem sind die Datensätze unterschiedlich lang.
Ist es möglich gnaze Verzeichnisse zu benennen zum durchsuchen?
DIAdem-Version: 10.2, 11.1, 2010 und auf alten CD's runter bis 3.0 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1996
Beiträge: 569
Registriert seit: Oct 2008
RE: DIAdem Anfänger hat Fragen
(05.10.2009 09:20)STG schrieb: Das Problem dabei ist, das ich mit dem Script noch nicht viel anfangen kann obwohl ich ... VBA ... Kenntnisse besitze.
Das ist doch schon die halbe Miete
(05.10.2009 09:20)STG schrieb: Danke schonmal an alle und ich hoffe ich werde mit DIA den selben spaß haben wie mit LV
Wirst Du
(05.10.2009 11:39)STG schrieb: Ist es möglich gnaze Verzeichnisse zu benennen zum durchsuchen?
Ja, sehr einfach und sogar rekursiv über die Unterverzeichnisse...
PHP-Code:
Option Explicit Erzwingt die explizite Deklaration aller Variablen in einem Script.
Function DateiListeAnzeigen(Ordnerangabe) Dim fso, o, d, da, s Set fso = CreateObject("Scripting.FileSystemObject") Set o = fso.GetFolder(Ordnerangabe) Set da= o.Files For Each d in da if d.Type = "DAC File" then msgbox d.Path end if Next Set da= o.SubFolders For Each d in da DateiListeAnzeigen(d.Path) Next End Function
DateiListeAnzeigen("C:\DIAdem\Dac")
Diese einfache Beispiel durchsucht das Verzeichnis C:\DIAdem\Dac un seine Unterverzeichnisse nach DIAdem DAC Dateien und gibt diese in der Msgbox aus. Damit kannst Du z. B. Deine TXT Dateien finden.
Ich würde ein Dataplugin für Deine Daten erstellen, um diese einfach in DIAdem zu verwalten, dann kannst Du z.B. auch den Datafinder benutzen...
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
RE: DIAdem Anfänger hat Fragen
Hallo Bruno,
Danke für Deine Antwort und das Codebesipiel. Werde ich morgen gleich mal ausprobieren.
Im Grunde soll es mal so laufen das DIA ein Verzeichnis genannt bekommt, die erste Datei mit meinem Dataplugin (habe ich schon erstellt) öffnet, Filtert, Klassiert mit meiner Bedingung im Kanal 1 und dann die Datei am besten wieder schließt, die Ergebnisse behält und mit der 2. weitermacht. So das der Speicher nicht Platzt :-)
Ich werde mal die paar code-brocken die ich schon gefunden habe im Netz versuchen morgen zusammen zu bauen, vielleicht kommt ja was bei raus das brauchbar ist.
DIAdem-Version: 2010 (11.2), 2011 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1995
Beiträge: 171
Registriert seit: Nov 2008
RE: DIAdem Anfänger hat Fragen
Hallo Richard,
als flexible Alternative zum Scannen von Verzeichnissen verwende ich immer öfter eine Schleife über die Suchergebnisse des Datafinders.
Einfach mit gewünschtem Filter nach Dateien suchen und falls das Suchergebnis passt, die Liste folgendermassen abarbeiten:
Code:
Dim oMyResultsList, Element
Set oMyResultsList = Navigator.Display.CurrDataProvider.ResultsList
For Each Element in oMyResultsList.Elements
If Element.IsKindOf(eSearchFile) Then
Call DataDelAll(1) 'Datenportal komplett oder nur, beim Laden neu entstandene, Gruppen löschen
Call Navigator.LoadData(Element,"Load") 'Datei laden
'*** Hier steht die gewünscht Auswertung ****
End If
Next
In deinem Fall würde ich ganz zu Anfang eine Gruppe für die Klassierkanalsummen anlegen und in der LAdeschleife nicht immer mit "DataDelAll" löschen, sondern nur die beim Laden entstehende zweite Gruppe "Call GroupDel(2)".
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
RE: DIAdem Anfänger hat Fragen
Hallo mal wieder,
also erstmal vielen Dank für Eure Antworten, bin ein Stück weiter gekommen und es wird schon Klassiert.
Hier erstmal mein Code für die Klassierung:
Code:
'-------------------------------------------------------------------------------
'-- VBS-Script-Datei
'-- Neu erstellt am 07.10.2009 12:37:42
'-- Ersteller:
'-- Kommentar:
'-------------------------------------------------------------------------------
Option Explicit 'Erzwingt die explizite Deklaration aller Variablen in einem Skript.
Dim oMyResultsList, Element
Set oMyResultsList = Navigator.Display.CurrDataProvider.ResultsList
For Each Element in oMyResultsList.Elements
If Element.IsKindOf(eSearchFile) Then
Call GroupDel(2) 'beim Laden neu entstandene, Gruppen löschen
End If
Next
Was sagt Ihr dazu - meiner Ansicht nach geht es so ganz gut.
Ist es möglich einen Schleifendurchlaufzähler irgendwo einzubauen das ich auch außerhalb eines Debugmodus mitbekomme beim wievielten Schleifendurchlauf er ist?
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
RE: DIAdem Anfänger hat Fragen
Ach und eine Frage fällt mir auch gerade noch ein,
wenn die Daten außerhalb vom Klassierbereich liegen, also meine Klassengrenzen überschreiten bricht das Script ab, kann man dies verhindern?
Ich habe in manchen Kanälen ein paar spitzen die ich nicht herausgefiltert bekomme, habe schon sämtliche einstellungen durchprobiert, die Spitzen sind wohl zu lang / breit.
Habe es mit Bessel versucht 20Hz und Filtergrad2.
Aber auch mit 15Hz, 10Hz, 5Hz und Filtergrade bis 5. Alles ohne Erfolg.
Bleibt nur das "Händische" entfernen bzw. ignorieren durch meine Klassierung mit kleineren Grenzen als Datenbereich.
DIAdem-Version: 10.2, 11.1, 2010 und auf alten CD's runter bis 3.0 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1996
Beiträge: 569
Registriert seit: Oct 2008
RE: DIAdem Anfänger hat Fragen
(09.10.2009 08:57)STG schrieb: Ist es möglich einen Schleifendurchlaufzähler irgendwo einzubauen das ich auch außerhalb eines Debugmodus mitbekomme beim wievielten Schleifendurchlauf er ist?
Hallo STG,
kleiner Tipp zum Programmieren: ich rücke innerhalb einer Struktur (z.B. einer Schleife) den zugehörigen Code zwei Leerzeichen ein (geht mit der Tab- Taste, auch für mehrere Zeilen). Dann siehst Du auch, wo Du Deinen Schleifenzähler überall eibauen kannst .
Hilfreich dürfte der Befehl
Call MsgLineDisp(MsgText, [MsgNo], [MsgSrc])
sein, um den Schleifenzähler (i = i+1) in der Statuszeile auszugeben.
Was hast Du denn für Spikes? Sind das Messfehler? Sind das Werte ab einer bestimmten Größe?
Dann würde ich sie mit dem Taschenrechner auf NoValue stzen...
Gruß
Bruno
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
RE: DIAdem Anfänger hat Fragen
Das sind außreißer die Teilweise das 4Fache vom zu Erwartenden Wert haben.
Mit dem Rechner habe ich gerade schon eine Weile rumprobiert, aber egal wie ich es eingebe, er bringt mir immer wieder Fehler. Im Internet habe ich bisher nichts dazu gefunden, habe selbst mein Projekt schon zugemacht und ein neues angefangen, aber auch das hat nichts gebracht.
Meine Formel: