10.11.2011, 10:40
Beitrag #1
|
narrentanz
LVF-Grünschnabel
Beiträge: 39
Registriert seit: May 2011
2009SP1
2011
DE_EN
Deutschland
|
zeitabhängiger Wert
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
|
|
|
10.11.2011, 11:20
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2011 11:21 von M Nussbaumer.)
Beitrag #2
|
M Nussbaumer
Zarathustra
Beiträge: 654
Registriert seit: Sep 2009
2009 SP1
2009
EN
6300
Schweiz
|
RE: zeitabhängiger Wert
(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) ?
|
|
|
10.11.2011, 13:03
Beitrag #3
|
narrentanz
LVF-Grünschnabel
Beiträge: 39
Registriert seit: May 2011
2009SP1
2011
DE_EN
Deutschland
|
RE: zeitabhängiger Wert
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.)
Beitrag #4
|
M Nussbaumer
Zarathustra
Beiträge: 654
Registriert seit: Sep 2009
2009 SP1
2009
EN
6300
Schweiz
|
RE: zeitabhängiger Wert
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:
Zeitgesteuert auslesen.vi (Größe: 10,44 KB / Downloads: 256)
Wie gesagt würde ich die Interpretation über ein Array of Cluster machen:
Zeitgesteuert.vi (Größe: 9 KB / Downloads: 204)
Hoffe das ganze hilft dir weiter, falls du Fragen zum Code hast kannst du diese gerne stellen
Gruss Marc
|
|
|
10.11.2011, 13:30
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2011 13:32 von narrentanz.)
Beitrag #5
|
narrentanz
LVF-Grünschnabel
Beiträge: 39
Registriert seit: May 2011
2009SP1
2011
DE_EN
Deutschland
|
RE: zeitabhängiger Wert
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.
|
|
|
10.11.2011, 13:38
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2011 13:41 von M Nussbaumer.)
Beitrag #6
|
M Nussbaumer
Zarathustra
Beiträge: 654
Registriert seit: Sep 2009
2009 SP1
2009
EN
6300
Schweiz
|
RE: zeitabhängiger Wert
(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 eintragen
|
|
|
10.11.2011, 13:42
Beitrag #7
|
narrentanz
LVF-Grünschnabel
Beiträge: 39
Registriert seit: May 2011
2009SP1
2011
DE_EN
Deutschland
|
RE: zeitabhängiger Wert
*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...
|
|
|
10.11.2011, 14:51
Beitrag #8
|
|
|
15.11.2011, 12:20
(Dieser Beitrag wurde zuletzt bearbeitet: 15.11.2011 12:21 von narrentanz.)
Beitrag #9
|
narrentanz
LVF-Grünschnabel
Beiträge: 39
Registriert seit: May 2011
2009SP1
2011
DE_EN
Deutschland
|
RE: zeitabhängiger Wert
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.
@Lucki: Danke!
|
|
|
15.11.2011, 14:32
|
narrentanz
LVF-Grünschnabel
Beiträge: 39
Registriert seit: May 2011
2009SP1
2011
DE_EN
Deutschland
|
RE: zeitabhängiger Wert
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..
|
|
|
| |