09-11-2012 08:00 AM
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
Solved! Go to Solution.
11-09-2012 10:01 AM
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
11-12-2012 12:34 AM
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
11-13-2012 07:38 AM
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
11-14-2012 05:14 AM
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
11-14-2012 06:10 AM
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
11-14-2012 06:21 AM
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
11-14-2012 06:38 AM
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
11-14-2012 06:55 AM
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 ?
11-14-2012 07:18 AM
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