![]() |
Zeiten zusammenzählen solange ein bestimmter Wert vorliegt - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: Weitere NI Software (/Forum-Weitere-NI-Software) +---- Forum: DIAdem (/Forum-DIAdem) +---- Thema: Zeiten zusammenzählen solange ein bestimmter Wert vorliegt (/Thread-Zeiten-zusammenzaehlen-solange-ein-bestimmter-Wert-vorliegt) |
Zeiten zusammenzählen solange ein bestimmter Wert vorliegt - mapra - 15.01.2008 16:41 Hallo zusammen! Ich hätte noch eine Frage. Und zwar muss ich aus einer Messdatei (Beispiel im Anhang) herausfiltern, wie lange der Steuerwert z.B. auf "40" gestanden hat. In der Beispieldatei wären das 3 Minuten + 1 Minute = 4 Minuten. Das heißt, ich brauche irgendeine Variable, die ich in ein Reportdiagramm einfügen kann, so dass im Report dann z. B. steht: Anlage arbeitete 4 Minuten. Ich habe die DIAdem-Hilfe wirklich sehr lange durchsucht. Aber eine derartige Filter(?)-Funktion habe ich nicht gefunden. Ich wäre Euch wirklich sehr dankbar, wenn ihr mir weiterhelfen könntet! Viele Grüße, mapra Zeiten zusammenzählen solange ein bestimmter Wert vorliegt - Carpe_DIAdem - 16.01.2008 13:39 Hallo mapra, die Frage nach der Variablen ist einfach. Mit dem Befehl GlobalDim kannst du eine globale Variable definieren, die solange aktiv bleibt, wie DIAdem gestartet ist. Interessanter finde ich das Summieren der einzelnen Zeitabschnitte. Hierzu ein Vorschlage (es gibt sicher noch andere Varianten): Option Explicit call GlobalDim("dSumTime") Dim iPosStart, dStartVal dSumTime = 0 iPosStart = 0 do iPosStart = chnFind("ch(""[1]/Steuerwert"") = 40", iPosStart + 1) ' gibt es noch Daten? if iPosStart > 0 then dStartVal = chd(iPosStart, "[1]/Laufzeit") iPosStart = chnFind("ch(""[1]/Steuerwert"") <> 40", iPosStart + 1) ' Ende gefunden if iPosStart > 0 then dSumTime = dSumTime + chd(iPosStart-1, "[1]/Laufzeit") - dStartVal dStartVal = 0 else ' hört Steuerkanal mit 40 auf? if dStartVal > 0 then dSumTime = dSumTime + chd(ChnPropValGet("[1]/Laufzeit", "length"), "[1]/Laufzeit") - dStartVal end if end if end if Loop while iPosStart <> 0 msgbox dSumTime Die globale Variable dSumTime kannst du dann in REPORT anzeigen. Carpe DIAdem Zeiten zusammenzählen solange ein bestimmter Wert vorliegt - mapra - 16.01.2008 14:21 Hallo Carpe DIAdem, vielen Dank für Deine Hilfe! Ich hab das Script mit mehreren Messdaten probiert und es funktioniert wirklich super!! Noch eine kleine Frage zum Abschluss: Der Wert, der in der Variable "dSumTime" hinterlegt ist, ist die Zeit in Sekunden, oder?! Wie kann ich denn die Variable in meinem Report im Format "hh:nn ![]() Können die Stunden eigentlich auch Werte über 23 annehmen? Weil wir haben teilweise Laufzeiten, die über einen Tag gehen und da würde die Laufzeit im Report ja dann im Format hh:nn ![]() Grüße, mapra Zeiten zusammenzählen solange ein bestimmter Wert vorliegt - Carpe_DIAdem - 16.01.2008 16:45 Hallo mapra, die Formatierung in REPORT sieht für die Variable prinzipiell so aus: Dauer: @@str(dSumTime, "#hh:nn ![]() Die @@ Zeichen leiten eine Variable ein und beenden die Definition. Mit STR und "#hh:nn ![]() Mehr als 23 Stunden können aber nicht angezeigt werden. Entweder musst du das selbst ausrechnen und entsprechend aufbereitet anzeigen oder wenn du mit folgendem auskommst hilft dir DIAdem: @@str(dSumTime, "#dd")@@ Tage und @@str(dSumTime, "#hh:nn ![]() Carpe DIAdem Zeiten zusammenzählen solange ein bestimmter Wert vorliegt - mapra - 17.01.2008 09:21 Hallo Carpe DIAdem, es funktioniert alles wunderbar! Vielen Dank für Deine Hilfe! Du hast mir echt richtig weitergeholfen!! Mach weiter so, denn viele Leute wären ohne Dich wirklich "aufgeschmissen"! Danke nochmals und Grüße, mapra Zeiten zusammenzählen solange ein bestimmter Wert vorliegt - mapra - 17.01.2008 10:50 Jetzt hab ich leider nochmals ne kleine Frage. Ich habe festgestellt, dass die Steuerwerte um 40 streuen. Das heißt, es kommen auch beispielsweise Werte mit 39,8 oder 40,7 vor. Wie kann ich denn das obere Script abändern, so dass alle Zahlen im Bereich von 38,5 bis 41,5 "als 40 erkannt werden" ? ich habe mit der "AND-Funktion" herumgespielt, aber nur Fehlermeldungen erhalten... Vielen Dank für die Antwort schon mal im Voraus! Grüße, mapra Zeiten zusammenzählen solange ein bestimmter Wert vorliegt - Carpe_DIAdem - 17.01.2008 16:22 Hallo mapra, du musst die ChnFind-Funktion entsprechend anpassen, also nit = 40 sondern z. B. >= 38.5. Hier können die logischen Vergleiche <,>,=,>=,<= eingesetzt werden. Je nach Streuung muss vor der zweiten Suche eine "Zwischensuche" erfolgen, damit man von einem definierten Punkt aus z. B. 40, weiter suchen kann. Carpe DIAdem |