LabVIEWForum.de
zeitabhängiger Wert - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: zeitabhängiger Wert (/Thread-zeitabhaengiger-Wert)

Seiten: 1 2 3


zeitabhängiger Wert - narrentanz - 10.11.2011 10:40

Hallo.

Mein Problem ist das folgende: Ich will mit einer .vi zur Steuerung eines Thermostaten einen Temperaturverlauf fahren. Ich habe mir schon überlegt, eine .txt einlesen zu lassen, in der zeilenweise [bis Zeit] und [Temp.] drinstehen. Dann halt "gucke in die erste Zeile, stelle die Temp ein, vergleiche die Zeit. Gehe irgendwann zur nächsten Zeile".
Ich komme aber mit der Umsetzung keinen Schritt weiter. Kann mir jemand helfen, oder gibts einen anderen (besseren/einfacheren) Weg, einen Wert über die Zeit zu verändern?

Greetz,
Sjut


RE: zeitabhängiger Wert - M Nussbaumer - 10.11.2011 11:20

(10.11.2011 10:40 )narrentanz schrieb:  Hallo.

Mein Problem ist das folgende: Ich will mit einer .vi zur Steuerung eines Thermostaten einen Temperaturverlauf fahren. Ich habe mir schon überlegt, eine .txt einlesen zu lassen, in der zeilenweise [bis Zeit] und [Temp.] drinstehen. Dann halt "gucke in die erste Zeile, stelle die Temp ein, vergleiche die Zeit. Gehe irgendwann zur nächsten Zeile".
Ich komme aber mit der Umsetzung keinen Schritt weiter. Kann mir jemand helfen, oder gibts einen anderen (besseren/einfacheren) Weg, einen Wert über die Zeit zu verändern?

Greetz,
Sjut

Hallo Sjut

Du kannst ja deine Werte alle auf einmal einlesen und als Array speichern (ich würde ein Array of Cluster nehmen ist aber Geschmackssache).

Dann Zeit immer mit Zeit im Array vergleichen und falls sie >= ist das nächste Element auslesen.

Hoffe das hilft dir weiter!

Gruss Marc

Edit: Hast du dir auch schon überlegt wie du die Zeit angeben willst? Absolut (z.B. bis 12:30:00.000) oder Relativ( 30 Minuten ab letztem Element) ?


RE: zeitabhängiger Wert - narrentanz - 10.11.2011 13:03

Jo, etwa so hatte ich das vor. Es scheitert nur dadran, dass ich mir 1. nicht sicher bin wie ich die Datei richtig einlese und zweitens keinen Schimmer habe, wie das Array entsprechend Zeilenweise mit Zeittaktung auslese.

Ich hab dann ja pro Zeile 2 Spalten, will gucken ob die erste < der Laufzeit ist und wenn das nicht mehr gegeben ist in die ächste Zeile gehen, und währenddessen jeweils die zweite Spalte an die T.Set für den Thermostaten geben.

Die Zeit wollte ich in Sekunden, vll auch Minuten ab Programmstart angeben. In Sekunden brauche ich das eh schon für 2 Speichervorgänge und habs daher fix und fertig drinliegen.

Gruß,
Sjut


RE: zeitabhängiger Wert - M Nussbaumer - 10.11.2011 13:20

Hallo Sjut

Über die Read Textfile Funktionen kannst du dir ja ganz einfach (3 VIs) den gesamten Inhalt des Textfiles als String ausgeben lassen. Diesen String muss man nur noch interpretieren, am besten über die Scan from String Funktion.

Hab dir mal ein Beispiel dazu zusammengeklickt:
[attachment=37066]

Wie gesagt würde ich die Interpretation über ein Array of Cluster machen:
[attachment=37067]

Hoffe das ganze hilft dir weiter, falls du Fragen zum Code hast kannst du diese gerne stellenSmile

Gruss Marc


RE: zeitabhängiger Wert - narrentanz - 10.11.2011 13:30

Danke!

Also. Datei öffnen, lesen, klar. Den String verarbeitet er in Schrittweise 2 DBL, die dann als Wert und Zeit gebündelt werden.
Aber wie kann ich ihm dann sagen, dass er erst Zeile eins ausließt, dann, wenn der Zeitstempel überschritten wurde, Wert zwei, usw, und jeweils den Wert noch nach draußen jagt? Ich hab einfach noch nie mit Clustern gearbeitet :/
Und beim Zeitwert hägt das Design ja nur davon ab, mit was ichs vergleiche, ich bin also nicht auf das von dir geschriebe Format angewiesen, oder?

Gruß,
Sjut

Edit: Habs grad mal ausprobiert, aber da kommt beim Output nichts raus. Hab einfach dein Format-Beispiel in eine .txt geschrieben.


RE: zeitabhängiger Wert - M Nussbaumer - 10.11.2011 13:38

(10.11.2011 13:30 )narrentanz schrieb:  Danke!

Also. Datei öffnen, lesen, klar. Den String verarbeitet er in Schrittweise 2 DBL, die dann als Wert und Zeit gebündelt werden.
Aber wie kann ich ihm dann sagen, dass er erst Zeile eins ausließt, dann, wenn der Zeitstempel überschritten wurde, Wert zwei, usw, und jeweils den Wert noch nach draußen jagt? Ich hab einfach noch nie mit Clustern gearbeitet :/
Und beim Zeitwert hägt das Design ja nur davon ab, mit was ichs vergleiche, ich bin also nicht auf das von dir geschriebe Format angewiesen, oder?

Gruß,
Sjut

Edit: Habs grad mal ausprobiert, aber da kommt beim Output nichts raus. Hab einfach dein Format-Beispiel in eine .txt geschrieben.

Nun im Prinzip mach ich im Auslesen VI nichts anderes als, wie du bereits richtig festgestellt hast, den Wert und die Zeit auszulesen. Das ganze wird dann in einem Array gespeichert.

Ein Cluster kannst du wie eine Struktur verstehen, falls dir das weiterhilft. Falls nicht hier noch ein bildliches Beispiel für das Array of Cluster:

Dein Wert ist ein weisser Spielstein und dein Zeitwert ist ein schwarzer Spielstein. Diese packst du zusammen in eine Schachtel (Cluster) und stapelst diese Schachteln auf die anderen. Dies solange bis keine Spielsteine mehr vorhanden sind.

Bei der Auswertung gehst du nun Schachtel für Schaltel "durch".

Die Auswertung ist im VI "Zeitgesteuert" zu finden welches ich angehängt habe.

Wegen dem auslesen schaue ich gleich noch mal

Gruss Marc

Edit: Bei mir funktioniert das auslesen, du darfst natürlich nur die Zahlenwerte eintragenTongue


RE: zeitabhängiger Wert - narrentanz - 10.11.2011 13:42

*Kopf -> Tisch*
Okay. Mein Fehler. Ich hab da grade nur 2 .vis gesehen in deren Name "zeitgesteuert" stand. Ich hol mir erstmal nen Kaffee, dann schaue ich weiter...


RE: zeitabhängiger Wert - Lucki - 10.11.2011 14:51

Eine graphische Darstellung des Temperaturverlaufs könnte auch nützlich sein:
[attachment=37073]


RE: zeitabhängiger Wert - narrentanz - 15.11.2011 12:20

Prinzipiell sollte das jetzt funktionieren. De Facto.. ließt er bei mir aus irgendwelchen Gründen prinzipiell keine Werte ein.

Zitat:10; 10:10:30.000;
20; 05:10:15.100

Das steht so in der .txt-File, aber es passiert... nichts. Huh

@Lucki: Danke!


RE: zeitabhängiger Wert - narrentanz - 15.11.2011 14:32

So.. nach einer hinterhältigen Arbeitsunterbrechung: Ich habe mal nen paar Sonden gesetzt.
Erstmal: nachdem ich den "Aus Array entfernen" gelöscht habe, kam zumindest ein Wert hinten an.
Dann: Er durchläuft die Schleife nur einmal. Beim ersten Durchlauf schickt er einen Fehler 85, die Schleife stoppt. Hinten an kommt tatsächlich nur ein Wert. Aus Scan from String kommt nur ein Wertepaar. Ich habe den Verdacht, dass der produzierte Fehler da zu früh rauskommt, bevor alle Werte durch sind - warum, ich weiß es nicht..