DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Report mit bestimmten Zeitbereich automatisch erstellen

Hallo

Ich arbeite erst seit ein paar Tagen mit dem DIAdem (Version 11.0) und bin ein bisschen überfordert mit folgendender Problemstellung:

Ich zeichne die Messdaten eines Heizsystems mit Hilfe des VI-Loggers auf. Die Kanäle sind Temperatur, Durchfluss, Pumpenzustand usw.. Nun möchte ich mit dem Script einen Report von allen oben genannten Kanälen für einen bestimmten Zeitbereich erstellen lassen. Am Schluss soll also mit der Scriptdatei der gewünschte Zeitbereich angegeben werden können, damit dann die Kurven in diesem Bereich angezeigt werden.

Vielen Dank im voraus!
0 Kudos
Message 1 of 10
(5,991 Views)

Hallo Luca88,

 

In DIAdem laesst sich die X-Achse relative leicht - entweder manuall oder per Script automatisch - auf einen bestimmten Zeitbereich einstellen.

 

Kannst Du einen Datensatz hochladen (oder per FTP an mich senden), mit dem ich Dir das zeigen kann?

 

Folgendes brauchst Du (grob), um Deine Aufgabe zu erfuellen:

 

1. Datensatz

2. REPORT Layout, das die Daten so darstellt wie von Dir gewuenscht.

3. Script, in dem die Parameter fuer die X-Achstenskalierung der oben genannten REPORT Layouts an den gewuenschten Bereich angepasst werden.

 

Das Script enthaelt eine Eingabeauffoerderung fuer den Bereich, und macht dann die benoetigten Aenderungen am Layout.

 

Das ganze sollte recht schnell und einfach zu machen sein.

 

Mit einem Datensatz kann ich ein kleines Beispiel machen. Ich kann auch einen der DIAdem Demo Datensaetze verwenden wenn das fuer DIch reicht.

 

Gruss,

 

     Otmar

Otmar D. Foehner
Message 2 of 10
(5,988 Views)
Wenn du das mit einem Demo Datensatz machen könntest wäre das super, vielen dank!
0 Kudos
Message 3 of 10
(5,976 Views)

Hallo Luca88,

 

Hier ist ein - bewusst sehr einfach gehaltenes - Beispiel zum Eingeben der Achsenskalierung "per Hand". Das Script und das Layout sind in der ZIP Datei am Ende dieses Postings.

 

 

L1 = InputBox("Bitte den Anfangswert der X-Achse eingeben:") L2 = InputBox("Bitte den Endwert der X-Achse eingeben:") '------------------- Kurven- und Achsendefinition --------------------- Call GraphObjOpen("2DAxis1") 'Oeffnet das Achsenobjekt '------------------- X Skalierung -------------------------------- Call GraphObjOpen("2DXAxis1_1") 'Oeffnet das Kurvenobjekt D2AxisXScaleType = "begin/end manual" 'Setzt die skalierung von "automatisch" auf "manuell" D2AxisXBegin = L1 'Ubernimmt den oben eingegebenen Anfangswert fuer die X-Achse D2AxisXEnd = L2 'Ubernimmt den oben eingegebenen Endwert fuer die X-Achse Call GraphObjClose("2DXAxis1_1") Call GraphObjClose("2DAxis1") Call PicUpdate

 

Das Beispiel funktioniert mit einem beliebigen Beispieldatensatz von DIAdem der Serie "TR_*.TDM" (im Zweifelsfall im Navigator nach "TR_*" suchen).

  1. Einen Datensatz der Serie "TR_*.TDM" im NAVIGATOR Laden
  2. Layout  "Achsenbeispiel.TDR" in REPORT laden - der Komplette X-Achsenbereich wird angezeigt
  3. Script "Achsenbeispiel.VBS" laden und laufen lassen. In den beiden Dialogen den Anfangs- und Endwert fuer die Achse eingebe. Das Script wird dann automatisch das Layout aendern um den gewaehlten Zeitbereich darzustellen. 

 

Das Beispiel ist bewusst sehr einfach gehalten, Dinge wie eine Ueberpruefung ob die Anfangs- und Endwerte mit den Daten zusammenpassen (kann ja gut sein das jemand einen Wert eingibt der weit ueber dem Maximalwert der X-Achse liegt) oder ob jemand etwas anderes als Ziffern eingegeben hat, habe ich nicht eingebaut.

 

Die Eingabedialoge sind auch extrem haesslich (VBS Funktion InputBox) und lassen sich erheblich verbessern, aber hier geht es ja nur ums Prinzip, nicht um Schoenheit.

 

Ich hoffe das hilft erstmal weiter, ich bin am Freitag noch im Buero, dann fliege ich eine Woche nach Washington DC um dort Kunden zu besuchen und werde tagsueber keine Gelegenheit haben hier im Forum vorbeizugucken.

 

Besste Gruesse aus Austin,

 

      Otmar

Otmar D. Foehner
0 Kudos
Message 4 of 10
(5,960 Views)
Super, du hast mir sehr geholfen! ich werde das heute gleich ausprobieren. Ich habe mich auch noch ein bisschen mit den Dialogen beschäftigt. Ich glaube ich bekomme das hin, dass man den Anfangs- und Endwert per Dialog eingeben kann. Nochmals danke!
0 Kudos
Message 5 of 10
(5,944 Views)
Achso, das mit der InputBox erstellt schon einen Dialog 🙂 super
0 Kudos
Message 6 of 10
(5,942 Views)
Jetzt hab ich noch ein Problem. Ich stelle die X-Achse im Datum/Zeit Format an. Die Variablen L1 und L2 sind aber Integervariablen und nehmen so das Datum/Zeit Format nicht an. Welche Variablen muss ich verwenden damit ich zum Beispiel das Datum 19.02.2010 12.00.00.0000 übergeben kann?
0 Kudos
Message 7 of 10
(5,937 Views)

Hallo Luca88,

 

ich habe das Script und Layout leicht veraendert um der Datumsfrage gerecht zu werden.

 

Bitte probiere folgendes aus:

  1. Beispieldatensatz "Data1"  laden (ist ein DIAdem Beispiel mit Wetterdatendie ueber zwei Jahre gesammelt wurden -> Datum als X-Kanal). Da ich eine englische Version habe musst Du evtl. die Namen der Kanaele an die Deutsche Datendatei anpassen, da bin ich nicht sicher
  2. Aus der ZIP Datei (unten) das neue Layout "Achsenbeispiel-Datum.TDR" laden. Hier habe ich nur die Kanalzuweisungen im "Achsen und Kurvendialog" an die neuen Daten angepasst ("Datum" und "T_Max")
  3. Aus der ZIP Datei (unten) das neue Script "Achsenbeispiel-Datum.VBS" laden

In der VBS Datei habe ich folgendes veraendert:

 

L1 (und L2, L3, ...) sind freie LongIntegervariablen in DIAdem (ist in dieser Scriptvariante nicht mehr benutzt)

R1 (und R2, R3, ...) sind freie Realvariablen in DIAdem

T1 (und T2, T3, ...) sind freie Textvariablen in DIAdem

 

"Frei" bedeutet hier das diese Variablen nicht von DIAdem benutzt wird (um z.B. die Achsenskalierung zu bestimmen), sondern dem Anwender frei zur Verfuegung steht um dort eigene Werte abzulegen.

 

 

T1 = InputBox("Bitte den Anfangswert der X-Achse eingeben:") T2 = InputBox("Bitte den Endwert der X-Achse eingeben:") R1 = ttr(T1) R2 = ttr(T2)

 

In der InputBox geben wir Textvariablen (T1, T2) ein. Das Format dort muss genau mit dem in DIAdem eingestellten Datums/Zeitvormat uebereinstimmen, also in Deutschland das Format (dd.mm.yyyy hh:nn:ss.ffff) - das entspricht Deinem Datum "19.02.2010 12.00.00.0000". Eingabe ist "19.02.2010 12.00.00.0000" ohne die Anfuehrungszeichen, jeweis korrekt fuer Anfangs- und Endwert!
 

Der Code  R1 = TTR(T1) wandelt die Textvariable in einen Realwert um, den man dann als Achsenskalierung nutzen kann. Die Achsenskalierung erwartet Real oder Integerwert, daher muss das Datumsformat (String) in einen Realwert umgerechnet werden. TTR ist dioe Funktion TimeToReal, Details dazu sind in der DIAdem Hilfe zu finden.

 

Zuletzt habe ich die Variablen R1 und R2 den Anfangs- und Endwerten der  X-Achsenskalierung zugewiesen (siehe Script im Anhang).

 

Das Ganze laesst sich erheblich verbessern (z.B. indem man im Eingabedialog prueft ob das Datumsformat korrekt eingegeben wurde - dazu muss man allerdings einen Scriptable User Dialog - SUD erstellen - das kann man in der Hilfe nachlesen), aber im Prinzip ist das Script eine lauffaehige Loesung.

 

Ich hoffe das hilft weiter.

 

Gruss,

 

   Otmar

 

Otmar D. Foehner
0 Kudos
Message 8 of 10
(5,925 Views)
Ich habe gemerkt, dass das Script nicht funktioniert, wenn ich es auf einen Report mit mehreren Diagrammen, verteilt auf mehreren Blätter anwende. Gibt es dafür auch eine Lösung?
0 Kudos
Message 9 of 10
(5,895 Views)

Call GraphSheetShow(GraphSheetName)

 

keine weiteren Fragen 🙂

0 Kudos
Message 10 of 10
(5,894 Views)