23.06.2006, 09:17
Beitrag #1
|
marvin71
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Jun 2006
6.1
2006
kA
Deutschland
|
Noch immer Probleme mit Temperatur-Vergleichsschleife
Hallo zusammen,
ich hatte mich vor ein paar Tagen schon einmal an das Forum gewendet (vgl. link), Kvasir hatte mir auch mit einer Möglichkeit geholfen, einen eingestellten Temperaturwert mit einer oberen bzw. unteren Schranke zu vergleichen.
link --> http://www.LabVIEWforum.de/index.php?showtopic=2755
Das Teilprogramm schaut jetzt so aus:
Leider hängt das Programm in der Vergleichsschleife fest. Ich weiß nicht, woran es liegt. Kann mir jemand helfen?
Viele Grüße
M.
|
|
|
23.06.2006, 09:45
(Dieser Beitrag wurde zuletzt bearbeitet: 23.06.2006 09:46 von Achim.)
Beitrag #2
|
|
|
23.06.2006, 12:43
Beitrag #3
|
marvin71
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Jun 2006
6.1
2006
kA
Deutschland
|
Noch immer Probleme mit Temperatur-Vergleichsschleife
Hallo Achim,
die Schleife funktioniert jetzt, tut aber noch immer nicht das, was sie soll. Der Plan ist folgender:
1. Temperatursollwert wird aus einer Datei ausgelesen und an den Temperaturcontroller übergeben
2. Das Programm empfängt den ersten Istwert der Temperatur
3. Vergleichsschleife: Befindet sich die Isttemperatur innerhalb des definierten Intervalls um die Solltemperatur herum? Nein --> Nächste Isttemperatur wird gemessen
Ja --> Fünfmaliger Vergleich der Isttemp. mit der Solltemp.
Liegen alle fünf Messwerte innerhalb der Schranken ---> nächste Sequenz wird gestartet (Aufnahme einer Strom-Spannungs-Kennlinie)
Liegt einer (oder mehrere) der Messwerte außerhalb der Schranken --> nächster Temp.-wert wird aufgenommen u.s.w.
Von der Realisierung des Planes bin ich aber noch immer weit entfernt...
Gruß
Marvin
|
|
|
23.06.2006, 15:24
Beitrag #6
|
marvin71
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Jun 2006
6.1
2006
kA
Deutschland
|
Noch immer Probleme mit Temperatur-Vergleichsschleife
Hallo Kvasir,
der Temperaturwert, den Du meinst ist der Sollwert. Dieser wird dann mit dem Istwert verglichen (Feld "Kelvin-Reading"). Ich muß mir die Temperaturwerte einzeln aus einer Datei holen und stabilisieren. Dann wird bei der aktuellen Temperatur eine Strom-Spannungs-Kennlinie gefahren. Ist diese aufgenommen, wird eine neue Temperatur angesteuert usw.
Ich weiß nicht genau, was Du mit Aktivierung der Indizierung in der Vergleichsschleife meinst... Hmm. Ist auch schwierig zu erläutern.. Mein Temperaturfile ist eine Datei mit Werten in einer Spalte, die Zeilen sind jeweils mit einem "end of line" abgeschlossen. Das ist die einzige Möglichkeit, die mir eingefallen ist, um die Werte einzeln einzulesen.
Kannst Du mir Deine Idee etwas genauer erläutern? Ich bin für jeden Tipp dankbar, weil LabVIEW-Neuling. An diesem Programm hab ich schon eine ganze Weile gesessen und jetzt sehe ich den Wald vor lauter Bäumen nicht mehr. Zur Not schicke ich mal das ganze Programm. Das wird aber erst nach dem 5. Juli was, weil am 1. Juli heirate ich erst einmal! Es hat also noch ein wenig Zeit. Trotzdem danke im Voraus und bis später!
Gruß Marvin
Hi Achim,
leider kann ich Dein vi nicht öffnen. wird von LV6 nicht unterstützt. Aber danke für das Bildsche. Vielleicht kann ich das Problem mit Deiner Hilfe und mit der Hilfe von Kvasir doch noch irgendwie lösen. Wie gesagt, ich kann mich erst ab 5.Juli wieder mit meinen Temperaturen beschäftigen, weil Heirat ist erstmal wichtiger. Und schöner!
Vielen Dank erstmal und bis denne
Marvin
|
|
|
24.06.2006, 12:29
Beitrag #7
|
Kvasir
LVF-Freak
Beiträge: 642
Registriert seit: May 2006
10
2004
DE_EN
0000
Oesterreich
|
Noch immer Probleme mit Temperatur-Vergleichsschleife
Hi Marvin
na dann erstmal herzliche Glückwünsche zur Heirat. Verstehe ich, dass dir das wichtiger ist als LabVIEW Probleme
Du hast natürlich recht. Den Wert den ich gezeigt habe ist der Sollwert. Hatte zu schnell drübergeschaut. Das Problem hatte ich allerdings richtig erkannt. Du gehst mit einem einzelnen Messwert in die Schleife. In der Schleife wird dann immer nur dieser eine Wert überprüft.
Das heißt die Schleife läuft entweder 5x (Wert innerhalb der Grenzen) oder ewig (Wert außerhalb der Grenzen).
2 prinzipielle Möglichkeiten fallen mir ein dein Problem zu lösen.
- Du nimmst einen ganzen Array von Messwerten auf und schickst den dann in die Schleife, wo du bei jedem Durchlauf einen Wert davon überprüfst.
- Du machst deine Messung innerhalb der Schleife und nimmst pro Durchlauf einen Wert auf.
Die erste Variante ist die, die Achim gut beschrieben hat. Für was du dich entscheidest dürfte bei deinem Programm eigentlich egal sein. Ich vermute mal, dass 2tere Variante weniger Aufwand beim umschreiben bedeutet.
Ev. genügt es schon deine Mess-Vi's einfach mit in die Schleife zu packen.
Schönes Wochenende noch
A few weeks of developement and testing can save a WHOLE afternoon in the library!
|
|
|
03.07.2006, 14:10
Beitrag #8
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
Noch immer Probleme mit Temperatur-Vergleichsschleife
Hi Marvin,
ich hoffe, du kannst die VI's öffnen...ich hab sie ursprünglich in LV8.0 erstellt und dann bis LV6.1 nach unten konvertiert...
Ich hab da mal deinen Ablauf in ne Art State Machine umgewandelt, natürlich stark vereinfacht! Kopier dir die Dateien alle in einen Ordner, mit Ausnahme der "dummytemperature.txt" (die gehört nach C:datenfilesin). Vielleicht kannst du damit ja was anfangen!
Gruss
Achim
PS: Ebenfalls alles Gute zur Hochzeit! Am 4. bzw. 19. August bin ich auch dran...;-)
temperatur.zip (Größe: 41,14 KB / Downloads: 297)
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
06.07.2006, 10:44
Beitrag #9
|
marvin71
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Jun 2006
6.1
2006
kA
Deutschland
|
Noch immer Probleme mit Temperatur-Vergleichsschleife
Hallo zusammen,
frisch verheiratet aus dem Urlaub zurück...
Eure Tipps waren klasse, die Vergleichsschleife steht jetzt und funktioniert. Danke nochmal für eure Mühe und eure Ideen!
Ich habe noch ein anderes Problem, mit dem ich mich schwer tue:
Zur Ansteuerung der Solltemperatur nutzt der Temperaturcontroller ein Tripel von variablen Termen, sogenannte PID´s (P= proportional, I= integral, D= derivative). Diese Terme steuern das Heizverhalten des Systems. Der Kryostat wird ständig mit flüssigem Stickstoff versorgt und der Temperaturcontroller versucht durch Gegenheizen den Sollwert einzustellen. Nun sind diese PID´s aber temperaturabhängig, weil die Probe eine Wärmekapazität besitzt und das Heizverhalten bei zB 77K ein anderes sein muß als bei zB 200K. Die passenden PID´s für verschiedenen Temperaturbereiche habe ich schon experimentell ermittelt:
T = 77K...130K --> P= 800, I= 300, D= 5
T = 130K...200K --> P= 500, I= 250, D= 3
T = 200K... Raumtemp. --> P= 300, I= 150, D= 2
Die PID´s werden dem Controller wie im Bildschä gezeigt übergeben (steht dort als gain, reset, rate)
Ich bin jetzt am knobeln, wie ich diese Werte temperaturabhängig einlesen kann. Der Sollwert müsste mit der oberen und unteren Schranke des ersten T-Intervalls (77K...130K) verglichen werden. Liegt er im Intervall --> PID´s übergeben. Liegt er nicht drinnen, Vergleich mit nächstem Intervall u.s.w.
Was ich versucht habe, funktioniert alles nicht wiklich. Kann mir jemand helfen?
Viele Grüße von marvin
|
|
|
06.07.2006, 11:53
(Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2006 11:56 von Achim.)
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
Noch immer Probleme mit Temperatur-Vergleichsschleife
Hi Marvin,
nochmals herzlichen Glückwunsch!
Schau dir mal das VI an...
Gruss
Achim
PS: Das TransposeArray im VI hätte man sich sparen können, wenn ich die Werte gleich anders herum eingegeben hätte...
schranken.vi (Größe: 15,4 KB / Downloads: 289)
PPS: Ach, Mist, du hast ja nur LV6...hier die Bilder!
In der CaseStruktur gibt es die Cases 1 (0), 2 (1), 4 (2)!
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
| |