Zwischen Regelung und Steuerung umschalten, Stellwert übergeben
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!
Zwischen Regelung und Steuerung umschalten, Stellwert übergeben
Hallo,
mit meinem Program soll es möglich sein, zwischen Regelung (PID-Regler) und Steuerung eines Volumenstroms bei Bedarf umzuschalten. Dafür verwende ich eine Case-Struktur, in der bei True die Regler.vi (Bild1) läuft, bei False die Steuerung. Damit die Stellgröße nicht zu sehr springt (hängt auch ab vom eingestellten Sollwert ab) beim Wechsel zum Regler, soll die aktuelle Stellgröße als I-Wert des Reglers gesetzt werden, sozusagen als einmaliger Startwert (gelbe Markierung), danach wird der I-Wert wieder aus dem Fehler berechnet...Dazu gibt es die Abfrage im Bild PID-Regler unten (Erster Aufruf?, rot eingekringelt).
Problem ist nun, dass das ganze nur einmal funktioniert, da die Regler.vi beim Wechsel nicht beendet wird, folglich der 1.Aufruf nur einmal vorkommt. Dafür ist der Stop-Button gedacht, sodass bei jedem Wechsel von Regler -> Steuerung die Regler.vi beendet wird und beim Wechsel von Steuerung -> Regler diese zum erneut gestartet wird, damit obige Logik mit dem Startwert funktioniert. Das klappt aber leider nicht. Ich hab versucht die Regler.vi über Methodenknoten zu beenden, weiß nicht ob das richtig implementiert war, da kenn ich mich zu wenig aus.
Der Vollständigkeit halber hier noch das Bild 2,3 der Main-Schleife, in der die Case-Struktur verbaut ist. Die VIs sind alleine nicht lauffähig, da Daten von einem Sensor kommen und Stelleinrichtungen angesteuert werden, weshalb es hier keinen Sinn macht die VIs hochzuladen.
Wo liegt der Fehler? Danke
20.04.2016, 10:45 (Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2016 10:48 von GerdW.)
RE: Zwischen Regelung und Steuerung umschalten, Stellwert übergeben
Hallo New,
Zitat:Problem ist nun, dass das ganze nur einmal funktioniert, da die Regler.vi beim Wechsel nicht beendet wird, folglich der 1.Aufruf nur einmal vorkommt.
Dann solltest du statt diesem "Erster Aufruf" eine passendere Bedingung wählen, z.B. "Erster Aufruf?" ODER "Umschalten"!
Nachtrag:
Bei den PID-Funktionen aus dem PID-Toolkit ist diese Umschaltung schon integriert. Und das Toolkit ist spätestens mit LV2014 frei verwendbar in der LabVIEW-Lizenz enthalten…
RE: Zwischen Regelung und Steuerung umschalten, Stellwert übergeben
Vielen Dank erstmal GerdW für die Antwort. Der offizielle PID-Regler von NI steht mir leider nicht zur Verfügung, ich arbeite mit Labview 8.6.
Ich hab mal versucht die Bedingung 'Umschalten' umzusetzen, in dem ich den booleaschen Wert des Buttons 'Regler ON/OFF' an das Regler.vi übergebe und dort damit einmalig den I-Wert auf den letzten Wert aus der Steuerung setze. Unten sind die jetzt lauffähigen VIs angehängt.
Mir ist klar, dass die aktuelle Umsetzung nicht funktionieren kann, da die Hilfsvariable 'Anfangswert gesetzt' nie wieder auf False TRUE gesetzt werden kann, da Wert des Buttons 'Regler ON/OFF' beim Wechsel von Regelung -> Steuerung gar nicht mehr das VI "erreicht", sprich das ganze funktioniert auch wieder nur beim 1.Mal.
Mir scheint es, als ob die Case-Struktur + VI nicht dafür geeignet ist, da das Regler.vi beim Wechsel Regelung->Steuerung nicht anhält, sondern weiterläuft, also auch der I-Wert immer weiter steigt. Wechsel ich jetzt also von Steuerung -> Regelung zurück, springt meine Stellgröße erstmal ordentlich. Vielleicht kann man das Problem des "Weiterlaufens" anderweitig unterbinden (andere Struktur).
Versuche mit anderen Mitteln wie Occurences oder statische VI-Referenz + Methodenknoten (VI abbrechen, zur Beendigung des VIs beim Wechsel) zu arbeiten brachten keinen Erfolg, sehr wahrscheinlich meiner begrenzten Erfahrung mit Labview geschuldet.
Bin dankbar für jede Anmerkung!
26.04.2016, 15:15 (Dieser Beitrag wurde zuletzt bearbeitet: 26.04.2016 15:34 von GerdW.)
RE: Zwischen Regelung und Steuerung umschalten, Stellwert übergeben
Hallo New,
Zitat:Mir ist klar, dass die aktuelle Umsetzung nicht funktionieren kann, da die Hilfsvariable 'Anfangswert gesetzt' nie wieder auf False TRUE gesetzt werden kann, da Wert des Buttons 'Regler ON/OFF' beim Wechsel von Regelung -> Steuerung gar nicht mehr das VI "erreicht", sprich das ganze funktioniert auch wieder nur beim 1.Mal.
Deswegen macht man die Umschaltung von Regelung und Steuerung ja auch im PID-subVI - und nicht etwa außen herum!
So wie eben das PID aus dem PID-Toolkit…
Warum gibt es sowohl ein Control als auch einen Indicator mit dem Namen "V_ctrl_mc_set [%]"? Programmierst du bei textbasierten Programmiersprachen auch überall mit identischen Variablennamen?