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!
ich hoffe, dass der Beitrag hier an der richtigen Stelle landet. Ich bin gerade dabei eine Heizung zu simulieren deren Spannung über einen PID-Regler geregelt wird. Ich greife mir aus dem Prozessabbild den Spannungs- und Stromwert und berechne mit der Leistung der Heizung die Temperatur um die das Gas in der Kammer ansteigt.
Ich möchte sobald die Leistung (UxI) der Heizung ungleich Null ist, den Temperaturwert (Thermo T Kammer) einmal abfragen und ab dann auf diesen Wert den berechneten Temperaturanstieg drauf addieren (delta T = (QxMx2)/(mxRx5)). Zur Zeit ist das Problem das die Temperatur bei jedem Durchlauf neu eingeht. Ich habe versucht den Temperaturwert beim Einschalten der Heizung in einem Schieberegister zwischen zu speichern. Aber nun bleibt in der while Schleife des Subvi das Programm hängen.
Kann mir jemand sagen wie ich den Wert Zwischenspeichern kann ohne das sich das Programm aufhängt? Ich hatte überlegt ihn vielleicht in eine Tabelle zu schreiben.
01.08.2016, 12:40 (Dieser Beitrag wurde zuletzt bearbeitet: 01.08.2016 12:47 von Freddy.)
Deine While Schleife bekommt genau einen Wert für die Schleifenbediengung. Wenn dieser Wert nicht true ist, endet die While Schleife nie.
Die While Schleife hat keine Funktion.
Der Wert der Variablen KL3314... wird vom Programm überschrieben.
Wenn Du Dir den ersten Wert speichern möchtest, musst du eine Variable festlegen, die nur beim ersten Mal mit dem Wert beschrieben wird.
Ich habe hier mal ein Bild angehängt wie es vorher aussah. Das funktioniert einigermaßen solange man die Heizung nur einmal anschaltet. Das Problem war halt nur das sobald U oder I gleich Null ist, sofort die Temperatur auf 20°C stürzt was unrealistisch ist. Deshalb würde ich gern den Temperaturwert zwischenspeichern.
Wie kann ich denn eine Variable festlegen die nur einmal beschrieben wird? Ich steh scheinbar gerade auf dem Schlauch.
Das bei I oder U = 0 der Wert 20 als Ergebnis kommt liegt an der Multiplikation (0 mal X gleich 0).
Wir sehen nur einen Ausschnitt des Programms.
Ich spekuliere mal:
Den Programmteil, den wir sehen ist bestimmt zur Wiederholung in einer While Schleife.
Wenn Du den ersten Wert dir merken möchtest, dann eine Variable die bei der nicht sichtbaren While Schleife gesetzt wird.
While ....
if Schleifeniteration = 0
Wert wird gesetzt
.
.
.
While End
Wenn Du mal das VI anhängst, ist es leichter eine Antwort zu finden.
"Kanäle verbinden" ist das Subvi und befindet sich in Druckkammerprüfstandssoftware.vi im Case "I/O Update". Das Subvi heißt dort aber SIM.
Kannst du das öffnen ohne das Projekt?
Danke für deine Mühe Freddy! Ich hätte das Ganze ein bisschen besser beschreiben sollen. Das mit der Case Struktur die wie eine Schleife im Hauptprogramm läuft konntet ihr ja gar nicht wissen.
Ich habe jetzt eine doch recht einfache Lösung (siehe Anhang) gefunden.