Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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
10.11.2011, 11:20 (Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2011 11:21 von M Nussbaumer.)
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) ?
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
10.11.2011, 13:20 (Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2011 13:21 von M Nussbaumer.)
Ü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.
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.
10.11.2011, 13:38 (Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2011 13:41 von M Nussbaumer.)
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 eintragen
*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...
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..