DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Probleme mit Kanalauswertung über mehrere Seiten im Raport....

Solved!
Go to solution

Hallo zusammen,

 

ich arbeite erst seit ein paar Tagen mit DIAdem, sollte aber eine Auswertung anfertigen für so ein Projekt in der Fh! Vielleicht kann mir jemand helfen....
Also ich habe eine txt bzw. asc. Datei, mit 8 Kanälen ( Zeit,Vorlauftemp., Rücklauftemp.,Luft, Feuchte,p32,H15,Abtau) Dr letzte Kanal zeichnet nur 1 und 0 auf, ist also nur dafür da, zu sagen ob die Maschine läuft oder abtaut. Alle anderen Werte werden gemittelt augezeichent, das klappt auch.... Doch möchte Ich eigentlich, dass immer wenn bei Kanal 8 von 0 auf 1 gesprungen wird alle Werte auf einer neuen Seite im Report die Diagramme angelegt werden, damit praktisch immer 1 und 0 einzeln betrachtet werden können....

Irgendwie bisschen kompliziert zu erklären...Hoffe ihr könnt mir irgendwie helfen 🙂

 

Grüsse und vielen Dank schonmal Schluri

0 Kudos
Message 1 of 28
(6,150 Views)

Hallo schluri

Eine Möglichkeit, die mir einfällt, ist, jedesmal eine neue Gruppe anzulegen, die immer nur den aktuellen 1er oder 0er-Block enthält.

Dann kann man die Kurven in vorbereitete Blätter 'reinfallen' lassen, jedes Blatt sieht gleich aus, aber in den Kurvendefinitionen sind jeweils die Kanäle der gewünschten Gruppe.

 

Oder man such mit PNo("[1]/OnOff", 1) die Zeilen, an denen 0/1 wechselt und sucht die Zeitwerte dieser Zeilen aus der ersten Spalte. PNo liefert die Zeilennummer, CHDx("[1]/MeinZeitkanal",PNo(....)) also den Zeitwert.

 

Und jetzt greift man über die Scriptschnittstelle auf die x-Achsenparameter zu und setzt diese blattweise auf den gewünschten Zeitwert auf XBegin = Anfangszeitwert, XEnd = Endzeitwert.

 

Keine Zeit das komplett zu scripten, aber schau mal die Hilfe für CurveChart2D und die zugehörigen Beispiele an.

MiC

 

0 Kudos
Message 2 of 28
(5,967 Views)
Solution
Accepted by robotix89

Hey Mic,

danke für deine Hilfe! Werdedas mal ausprobieren...

Habe das ganze aber jetzt nochmal anders gelöst bekommen. Wenn man in LabView eine Tdms Datei erstellt,

kann man jedem Wert Infos wie Zeit und Datum zuordnen...

 

Aber Danke und Grüsse

0 Kudos
Message 3 of 28
(5,952 Views)

Ich habe da mal eine Frage!

Ich mache gerade eine Messung einer Luftwärmepumpe, ich habe einen Zeitkanal, indem die Anfangs und Endzeit als max und min angegeben wird.

1. Ist es möglich diese beiden voneinander abzuziehen, damit ich die tatsächliche Prüfzeit erhalte? Habe noch keine Funktion im Scribt entdeckt, mit welcher man innerhalb eines Kanales rechnen kann.

2. Wärend der Messung läuft auch ein Triggerkanal, dieser springt immer von 0 auf 1, wenn eine Abtauung statt findet. Ist es möglich immer die Sekunden zu zählen wenn dieser auf 1 oder 0 ist, um später die Abtauzeit (also wenn der Trigger auf 1 steht) auszulesen?

Ich bräuchte dann einfach 3 neue Kanäle...1.Messzeit, 2.Abtauzeit, 3.Heizzeit. Ist das möglich?

 

 

Vielen Dank schon mal....

Grüsse

Robotix

0 Kudos
Message 4 of 28
(5,917 Views)

Hallo

1. Datum und Zeit werden in DIAdem ja als ziemlich große Fließkommazahl behandelt (Sekunden ab 0.0.0000 AD, wenn ich's richtig weiß) und liegen für heute so um 3.14151 * 10^9. Also etwa pi * 10 ^9 😉

Diese Zeitwerte kann ich voneinander subtrahieren und erhalte die Sekunden Laufzeit. Sieht also so aus, als müsste man 'nur' sicherstellen, dass deine vorliegenden Werte ins DIAdem-Zeitformat hineingepresst werden.

Langt des scho'?  sonst lad mal ein Beispieldatenstückchen hoch.

 

2. Sind die Werte in gleichen Intervallen aufgezeichnet, z.B. alle 2 Sekunden? Dann integriere den Kanal, in dem die 1 steht. Der integrierte Kanal liefert die Heizdauer, weil das Integral über 1 * dt = Gesamtzeit ist. Bzw. das Integral über (1 oder 0 ) * dt die Gesamtdauer für "1" ergibt. Durchs Integrieren wird die Abtastrate gleich miteinberechnet.

2 b: Für die Ruhezeit 0 udn 1 vertauschen und wieder integrieren.

 

Scriptweise: (hängt davon ab, ob die Messwerterfassung NI-Waveforms aufzeichnet oder Zeitkanal udn Werte separat)

Call ChnIntegrate("Zeit", "OnOff-Kanal", "Heizzeit")

Call Formulacalc(Chn("OnOff") = 1- Chn("OnOFF")     'invertiere den 0/1-Kanal

Call ChnIntegrate("Zeit", "OnOff-Kanal", "Ruhezeit")

 

Ein bisschen dran stricken musst du evtl noch.

Aber als grobe Linie.

Gruß

Michael

0 Kudos
Message 5 of 28
(5,898 Views)

Hallo,

naja so ganz hab ich immer noch nicht hinbekommen!

Ich habe einfach noch Probleme mit den ganzen Bezeichnungen und Befehlen....

 

Hänge mal eine Beispielmesswertdatei an...

 

Grüsse und Danke

Robotix

0 Kudos
Message 6 of 28
(5,892 Views)

Hallo robotox89,

 

Anbei ein Beispiel welches den Kanal Abtauzeit bestimmt. Der Kanal wird in der neuen Gruppe "Results" angelegt.

Entspricht das Resultat den Anforderungen ?

 

 

Dim   oAbtauen_Status,oTimePassed,oResultGroup,oTempChannels,oChn

Set oAbtauen_Status = Data.GetChannel("Stromsignale/Abtausignal")
Set oTimePassed     = Data.GetChannel("Time/Verstrichene Zeit")

Set oResultGroup = Data.Root.ChannelGroups.Add("Results")
Call oResultGroup.Activate

Call ChnDeltaCalc(oTimePassed,"/Delta#")
Call ChnMul("/Delta#",oAbtauen_Status,"/Multiplied#")
Call ChnSum("/Multiplied#","/Abtauzeit")

Set oTempChannels = Data.GetChannels("Results/*#")

For Each oChn in oTempChannels
  Call oResultGroup.Channels.Remove(oChn.Name)
Next

 

 

0 Kudos
Message 7 of 28
(5,887 Views)

Hallo Andreas,

 

super genau das wollte ich erreichen...Danke!

Nur eine Frage noch, ist das ganze auch möglich ohne den Kanal "Verstrichene Zeit" zu programmieren, da ich eigentlich die tdms. Datei gerne verkleinern würde!

Sprich also den max. Zeitwert vom Minimalen abzuziehen, dann könnte ich den anderne Kanal löschen...

 

Grüsse

 

0 Kudos
Message 8 of 28
(5,884 Views)

Wenn es nur um die Minima und Maxima geht könnte man natürlich auch einfach die bestimmen. Allerdings braucht man den Kanal zuerst einmal wenn man die minimalen und maximalen Abkühl- bzw. Aufheizzeiten (dieses Kanals) bestimmen will

Auf das Maximum greift man über das Attribut "Maximum" zu z.B. so:

 

Maximum = Data.Root.ChannelGroups(2).Channels("Schall_2").Properties("maximum").Value

 

Beantwortet das die Frage ?

0 Kudos
Message 9 of 28
(5,879 Views)

Das verstehe ich irgengwie nicht so richtig !?

In dem Beispiel das ich geschickt habe, Ist doch in dem Kanal "Zeit" jeweils ein Wert mit Datum gespeichet, das ist wann die Messung beginnt und aufhöhrt!

Und diese beiden Werte würde ich gerne voneinander abziehen, also aus (min und max oder Start und Endzeit) die Länge des Versuches berechnen! Und das habe ich bis jetzt noch nicht geschafft, ich weiss ja noch nicht mal ob man inerhalb eines Kanales Berechnungen durchführen kann. Bzw das Ergebnis darus als neuen Kanal zu speichern...

 

Grüsse und Danke

0 Kudos
Message 10 of 28
(5,875 Views)