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: 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,
es sieht wohl tatsächlich so aus, als hätten die VBS-basierenden Funktionen ein Problem mit dem Zeichen "µ".
Evtl. kannst du dein Plugin dahingehend anpassen, dass die phys. Einheit nicht an den Kanalnamen gehängt wird.
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
Hallo STG,
wenn Du den Kanal über die Kanalnummer ansprechen möchtest, dann muss die Nummer auch in eckige Klammern.
z.B.: ch("Test") = 2*Ch("[1]/[1]")
Damit sollte es trotz "µ" Bug funktionieren.
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
Hallo mal wieder,
ich habe inzwischen mal Zeit gehabt das alles durchlaufen zu lassen, dauert ganz schön für die Daten. Habe jetzt meine Klassen und Grenzen Super eingestellt und will jetzt nur noch die Bedingung einbauen, wonach Dia das ergebnis dann automatisch dem Richtigen Kanal zuordnet.
Also mein Code sieht jetzt so aus:
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
Weiß jetzt nur nicht wie ich da einbauen soll, das Dia das jetzt noch aufteilt in 4 Ergebniskanäle.
In einem Kanal steht immer 0 / 1 / 2 oder 3.
Ich möchte gern über diese 4 Zustände separat Klassieren. Also habe ich dann 4 Kanäle Häufigkeit Fxrr_0...3
und 4 myZwSp.
Muss ich die Bedingung vorher einbauen, die Daten nach Zustand sortieren und dann 4 x Klassieren oder kann ich das auch anders lösen.
Würde mich freuen wenn mir jemand weiterhelfen könnte dabei.
Vielen Dank schonmal im vorraus und bis dann
DIAdem-Version: 9.1 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 3
Registriert seit: Jan 2010
RE: DIAdem Anfänger hat Fragen
Hallo,
kann mir bitte jemand sagen, ob LabVIEW-Hardwaretreiber auch für DIAdem zu benutzen sind? Ich möchte eine Messkarte kaufen für die es aber nur LabVIEWtreiber gibt. Nun würde mich interessieren, ob diese auch für DIAdem genutzt werden können.
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
RE: DIAdem Anfänger hat Fragen
(05.10.2009 14:05)Bruno schrieb:
(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...
Gruß
Bruno
Hey Bruno :-)
da ich gerade eh noch an meinem Script arbeite spiele ich auch gerade wieder mit der Datei öffnen Geschichte rum. Die Suchergebnisse des Datafinders zu verwenden is ganz gut und funktioniert auch, hat aber auch nachteile für mich. Da ich meine Datensätze nicht bedingt Klassiere wie geplant, sondern vorher mit Excel neu einteile in meine Bedingungen, muss ich die Klassierung auch für jede Bedingung neu Starten.
Um das zu verbessern gibts 2 Möglichkeiten. Die erste wäre diese:
Code:
'-------------------------------------------------------------------------------
'-- VBS-Script-Datei
'-- Neu erstellt am 03.02.2010 13:36:14
'-- Ersteller:
'-- Kommentar:
'-------------------------------------------------------------------------------
Option Explicit 'Erzwingt die explizite Deklaration aller Variablen in einem Skript.
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
Diesen Code mehrfach hintereinander würde mir das Mehrfachstarten sparen. Ich hätte dann nur die Gruppennummern zu ändern und die Pfade. Funktionieren tut der Code auch, ich weiß nur nicht genau ob der beim öffnen mein Dataplugin verwendet oder ob ich da noch etwas verändern müsste.?
Die 2. und Bessere Variante wäre meine Daten gleich bedingt zu Klassieren, das heißt:
-Datei laden
-im Index 31 der Daten schauen ob eine 0 oder 1 drin steht
-im Index 32 der Daten schauen ob eine 1, 2 oder 3 Steht
-daraus in 6 Cases entscheiden wohin Klassiert werden soll:
Die Klassierung hat die selben Kanäle mit den selben Klassen und Klassengrenzen zu bearbeiten. Soll dann halt die Ergebnisse nur in 6 Ergebnisskanäle sortieren. Das wäre am Effektivsten, da somit der Excel-Zwischenschritt entfallen würde in dem ich die Daten in 6 neue Tabellen einteile.
Ich hoffe ich hab mich verständlich ausgedrückt und das es dafür eine Lösung gibt.
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
RE: DIAdem Anfänger hat Fragen
Hallo nochmal,
hab jetzt mal ein bischen mit der Bedingten Klassierung rumprobiert.---> Geht nicht :-(
Ich schick mal mein Code-Versuch, damit wird vielleicht deutlich wie es mal gedacht sein soll. Also ich versteh den Code, nur DIAdem leider nicht. :-)
Code:
'-------------------------------------------------------------------------------
'-- VBS-Script-Datei
'-- Neu erstellt am 07.10.2009 12:37:42
'-- Ersteller: XXX -- STG
'-- 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
ClassNo = 128
ClassBegin = -72.7539444444445
ClassEnd = 160.710944444444
Call ChnHistogram("[2]/Fxul [kN]","[1]/Klassen Fxul", _
(Select Case Ch("[2]/[30]")
Case 0 myZwSp_ZS1 'nur Testweise, hier müsste eine 2. Select case anweisung mit 3 Cases stehen
Case 1 myZwSp_ZF3 'nur Testweise, hier müsste eine 2. Select case anweisung mit 3 Cases stehen
End Select), _
"NoBeginEnd","absolute") '... Y,E,E,ClassMeth1,FrequencyType
Call GroupDel(2) 'beim Laden neu entstandene, Gruppen löschen
End If
Next
Vielleicht hat ja Jemand den DIAdem blick und sieht gleich wo mein Fehler ist, vielleicht geht es auch nicht so wie ich mir das Vorstelle.
Bin über jede Hilfe wie immer Dankbar.
Viele Grüße
MfG STG
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,
hatte letzte Woche Urlaub, deswegen eine Weile funkstille hier. :-)
Der Fehler ist ein Syntaxfehler ab (Select Case Ch...
Wenn man das so schreiben könnte das Dia mal versteht was ich will wäre das ein Traum. :-)
Code:
ClassNo = 128
ClassBegin = -72.7539444444445
ClassEnd = 160.710944444444
Call ChnHistogram("[2]/Fxul [kN]","[1]/Klassen Fxul", _
(Select Case Ch("[2]/[30]")
Case 0 myZwSp_ZS1 'nur Testweise, hier müsste eine 2. Select case anweisung mit 3 Cases stehen
Case 1 myZwSp_ZF3 'nur Testweise, hier müsste eine 2. Select case anweisung mit 3 Cases stehen
End Select), _
"NoBeginEnd","absolute") '... Y,E,E,ClassMeth1,FrequencyType
Nochmal zu meinen Daten:
Daten sehen bei mir so aus: 33 Spalten und max 30000 Zeilen.
Spalte 30 = 0 ODER 1
Spalte 31 = 1, 2, oder 3
Spalte 32 = 0, 1, 2, 3 wird nicht benötigt für Klassierung
Spalte 33 = Uhrzeit - wird auch nicht benötigt für Klassierung
Spalte 1...29 sind die zu Klassierenden Daten
Vielleicht geht es auch nicht so in Verbindung mit der Klassierungsfunktion. Schließlich müsste ja in jeder Zeile neu entschieden werden wohin die Daten Klassiert werden sollen.
Möglich das ich da ein anderen Ansatz verfolgen muss. Ich habe mir da folgendes Überlegt:
Zuerst 6 Gruppen mit 29x2 = 58 Kanälen x 128 Zeilen für die Klassengrenzen und Häufigkeiten erstellen.
Dann müssten 6 Gruppen "Testgruppe0_1" "Testgruppe0_2" "Testgruppe0_3" "Testgruppe1_1" usw. erstellt werden mit 33 Kanälen und variabler Zeilenlänge (max 30000).
Dies sind die Gruppen 7 bis 12.
'(#§$* )
Dann müsste ein Datensatz geöffnet werden, über Ordnerangabe oder Datafinderergebnisliste. Das wird die Gruppe 13
Danach die Daten aus der 13. Gruppe anhand der Spalten 30 und 31 in die Gruppen 7..12 einsortieren
Am besten wäre es wenn Dia in Gruppe 13 Spalte 30 und 31 (Auswahl über Gruppennummer da jeder Datensatz anders heißt) schaut und dann die Gesamte Zeile in die jeweilige Gruppe (7...12) einfügt. Das wäre dann wie folgt:
Gruppe 13 Spalte 30=0, Spalte 31=1 ---> Gesammte Zeile in Gruppe 7 Ch 1 - 33 einfügen
Gruppe 13 Spalte 30=0, Spalte 31=2 ---> Gesammte Zeile in Gruppe 8 Ch 1 - 33 einfügen
Gruppe 13 Spalte 30=0, Spalte 31=3 ---> Gesammte Zeile in Gruppe 9 Ch 1 - 33 einfügen
Gruppe 13 Spalte 30=1, Spalte 31=1 ---> Gesammte Zeile in Gruppe 10 Ch 1 - 33 einfügen
Gruppe 13 Spalte 30=1, Spalte 31=2 ---> Gesammte Zeile in Gruppe 11 Ch 1 - 33 einfügen
Gruppe 13 Spalte 30=1, Spalte 31=3 ---> Gesammte Zeile in Gruppe 12 Ch 1 - 33 einfügen
Danach kann die Gruppe 13 Gelöscht werden.
Jetzt die Daten aus Gruppe 7 in Gruppe 1 Klassieren.
Dann Daten aus Gruppe 8 in Gruppe 2 Klassieren.
Dann Daten aus Gruppe 9 in Gruppe 3 Klassieren.
Dann Daten aus Gruppe 10 in Gruppe 4 Klassieren.
Dann Daten aus Gruppe 11 in Gruppe 5 Klassieren.
Dann Daten aus Gruppe 12 in Gruppe 6 Klassieren.
Dies müsste aber auch über ein Zwischenkanal gemacht werden damit ich die Häufigkeiten der Datensätze zusammenrechnen kann.
Dann müsste der nächste Datensatz geöffnet werden - das Spiel beginnt also wieder ab '(#§$* )
Ich tu mich echt verdammt schwer mit dem Script bzw. der Dia Script-Sprache. Vielleicht schau ich mal in der Bibo vorbei ob es da vielleicht eine Lektür mit Beispielen gibt. Nur leider is es mit dem Zeitdruck im Rücken auch nicht einfacher. :-S
Bin kurz davor erstmal wieder aufzugeben und es weiter mit Excel zu machen... Aber elegant is anders. :-)
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
RE: DIAdem Anfänger hat Fragen
Zu dem neuen Ansatz habe ich mir Überlegt die ersten 6 Gruppen schon als Vorlage zu erstellen - somit spar ich mir das schonmal im Script und habe zudem die Richtige Bezeichnung der Kanäle.
Dabei fiel mir auf das nicht 58 sondern nur 52 Kanäle für die Klassierung benötigt werden.
Aber viel einfacher machts das nicht. Ich bastel jetzt mal weiter an meinen Script-Schnipseln.
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 59
Registriert seit: Oct 2009
RE: DIAdem Anfänger hat Fragen
(15.02.2010 14:45)STG schrieb: Hab jetzt schonmal ein kleines Grundgerüst erstellt mit den Sachen die schon funktionieren....
Code:
'-------------------------------------------------------------------------------
'-- VBS-Script-Datei
'-- Neu erstellt am 15.02.2010 13:02:17
'-- Ersteller: STG
'-- Kommentar: Bedingte Klassierung - Vorlage Bedingte Klassierung muss geöffnet sein!
'-------------------------------------------------------------------------------
Option Explicit 'Erzwingt die explizite Deklaration aller Variablen in einem Skript.
Dim iChn, iRow, oMyChn, oMyGrp
Dim oMyResultsList, Element
Set oMyResultsList = Navigator.Display.CurrDataProvider.ResultsList
For Each Element in oMyResultsList.Elements
If Element.IsKindOf(eSearchFile) Then
'###################################################################################################################################
'###################################################################################################################################
'###################################################################################################################################
'Spitzen mit NoValue ersetzen!
Call ChnCalculate("Ch(""[7]/[1]"")=Ch(""[7]/[1]"")+CTNV(Ch(""[7]/[1]"")<(-70.927)) Or Ch(""[7]/[1]"")>(158.884))",NULL,NULL,"") 'Fxul
Call ChnCalculate("Ch(""[7]/[2]"")=Ch(""[7]/[2]"")+CTNV(Ch(""[7]/[2]"")<(-7.007)) Or Ch(""[7]/[2]"")>(37.83))",NULL,NULL,"") 'Fzul
Call ChnCalculate("Ch(""[7]/[3]"")=Ch(""[7]/[3]"")+CTNV(Ch(""[7]/[3]"")<(-47.312)) Or Ch(""[7]/[3]"")>(35.23))",NULL,NULL,"") 'Fxur
Call ChnCalculate("Ch(""[7]/[4]"")=Ch(""[7]/[4]"")+CTNV(Ch(""[7]/[4]"")<(5.557)) Or Ch(""[7]/[4]"")>(41.777))",NULL,NULL,"") 'Fzur
Call ChnCalculate("Ch(""[7]/[5]"")=Ch(""[7]/[5]"")+CTNV(Ch(""[7]/[5]"")<(-10.953)) Or Ch(""[7]/[5]"")>(13.234))",NULL,NULL,"") 'Fxrl
Call ChnCalculate("Ch(""[7]/[6]"")=Ch(""[7]/[6]"")+CTNV(Ch(""[7]/[6]"")<(-1.913)) Or Ch(""[7]/[6]"")>(81.966))",NULL,NULL,"") 'Fzrl
Call ChnCalculate("Ch(""[7]/[7]"")=Ch(""[7]/[7]"")+CTNV(Ch(""[7]/[7]"")<(-26.047)) Or Ch(""[7]/[7]"")>(22.44))",NULL,NULL,"") 'Fxrr
Call ChnCalculate("Ch(""[7]/[8]"")=Ch(""[7]/[8]"")+CTNV(Ch(""[7]/[8]"")<(-24.384)) Or Ch(""[7]/[8]"")>(109.027))",NULL,NULL,"") 'Fzrr
Call ChnCalculate("Ch(""[7]/[9]"")=Ch(""[7]/[9]"")+CTNV(Ch(""[7]/[9]"")<(-15.029206)) Or Ch(""[7]/[9]"")>(15.834908))",NULL,NULL,"") 'Strl
Call ChnCalculate("Ch(""[7]/[10]"")=Ch(""[7]/[10]"")+CTNV(Ch(""[7]/[10]"")<(-46.295417)) Or Ch(""[7]/[10]"")>(42.189006))",NULL,NULL,"") 'Sbrl
Call ChnCalculate("Ch(""[7]/[11]"")=Ch(""[7]/[11]"")+CTNV(Ch(""[7]/[11]"")<(-11.700048)) Or Ch(""[7]/[11]"")>(20.802038))",NULL,NULL,"") 'Strr
Call ChnCalculate("Ch(""[7]/[12]"")=Ch(""[7]/[12]"")+CTNV(Ch(""[7]/[12]"")<(-52.824427)) Or Ch(""[7]/[12]"")>(52.947037))",NULL,NULL,"") 'Sbrr
Call ChnCalculate("Ch(""[7]/[13]"")=Ch(""[7]/[13]"")+CTNV(Ch(""[7]/[13]"")<(53.265)) Or Ch(""[7]/[13]"")>(53.857))",NULL,NULL,"") 'Sztl
Call ChnCalculate("Ch(""[7]/[14]"")=Ch(""[7]/[14]"")+CTNV(Ch(""[7]/[14]"")<(48.078)) Or Ch(""[7]/[14]"")>(53.337))",NULL,NULL,"") 'Sztr
Call ChnCalculate("Ch(""[7]/[15]"")=Ch(""[7]/[15]"")+CTNV(Ch(""[7]/[15]"")<(-0.519)) Or Ch(""[7]/[15]"")>(0.285))",NULL,NULL,"") 'Fxs1
Call ChnCalculate("Ch(""[7]/[16]"")=Ch(""[7]/[16]"")+CTNV(Ch(""[7]/[16]"")<(-0.179)) Or Ch(""[7]/[16]"")>(0.48))",NULL,NULL,"") 'Fzs1
Call ChnCalculate("Ch(""[7]/[17]"")=Ch(""[7]/[17]"")+CTNV(Ch(""[7]/[17]"")<(-0.391)) Or Ch(""[7]/[17]"")>(0.166))",NULL,NULL,"") 'Fxs2
Call ChnCalculate("Ch(""[7]/[18]"")=Ch(""[7]/[18]"")+CTNV(Ch(""[7]/[18]"")<(-0.257)) Or Ch(""[7]/[18]"")>(0.232))",NULL,NULL,"") 'Fzs2
Call ChnCalculate("Ch(""[7]/[19]"")=Ch(""[7]/[19]"")+CTNV(Ch(""[7]/[19]"")<(-4.155)) Or Ch(""[7]/[19]"")>(1.467))",NULL,NULL,"") 'Fz_Rolle
Call ChnCalculate("Ch(""[7]/[20]"")=Ch(""[7]/[20]"")+CTNV(Ch(""[7]/[20]"")<(-2.006)) or Ch(""[7]/[20]"")>(3.676))",NULL,NULL,"") 'Fz_Halter
Call ChnCalculate("Ch(""[7]/[21]"")=Ch(""[7]/[21]"")+CTNV(Ch(""[7]/[21]"")<(-186.138)) Or Ch(""[7]/[21]"")>(93.955))",NULL,NULL,"") 'Fzl
Call ChnCalculate("Ch(""[7]/[22]"")=Ch(""[7]/[22]"")+CTNV(Ch(""[7]/[22]"")<(-237.714)) Or Ch(""[7]/[22]"")>(89.617))",NULL,NULL,"") 'Fzr
Call ChnCalculate("Ch(""[7]/[23]"")=Ch(""[7]/[23]"")+CTNV(Ch(""[7]/[23]"")<(-8.612537)) Or Ch(""[7]/[23]"")>(8.028389))",NULL,NULL,"") 'azZ
Call ChnCalculate("Ch(""[7]/[24]"")=Ch(""[7]/[24]"")+CTNV(Ch(""[7]/[24]"")<(-30.57054)) Or Ch(""[7]/[24]"")>(41.540492))",NULL,NULL,"") 'azRl
Call ChnCalculate("Ch(""[7]/[25]"")=Ch(""[7]/[25]"")+CTNV(Ch(""[7]/[25]"")<(-11.538514)) Or Ch(""[7]/[25]"")>(12.791077))",NULL,NULL,"") 'azRr
Call ChnCalculate("Ch(""[7]/[26]"")=Ch(""[7]/[26]"")+CTNV(Ch(""[7]/[26]"")<(-10.471194)) Or Ch(""[7]/[26]"")>(9.086721))",NULL,NULL,"") 'azT
'###################################################################################################################################
'###################################################################################################################################
'###################################################################################################################################
'Hier bedingte Klassierung oder erst teilen und dann Klassieren!