LabVIEWForum.de - "Schleifenübergreifende" PID Regelung

LabVIEWForum.de

Normale Version: "Schleifenübergreifende" PID Regelung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

Zuerst einmal eine kurze Problembeschreibung:
Bei meinem Versuchstand befindet sich ein Durchflussmessgerät zwischen zwei Pumpen. Die Pumpen werden mit einem NI 6009 gesteuert.
Das Durchflußmessgerät gibt mir über die Differenz von Impulsen jede Sekunde einen Wert an (Ergebnis kommt durch eine eigene While Schleife zustande).

In weiterer Folge will ich eine Reglung aufbauen d.h. ich gebe einen Sollvolumenstrom vor und vergleiche ihn mit dem Istvolumenstrom.
Realisiert soll das ganze mit einem PID-Regler werden. Dazu hab ich ein sub-vi runtergeladen (das übliche simple pid) allerdings hab ich noch gar keine Erfahrung mit PIDs
bzw. weiß ich nicht ob das über die Schleifen hinweg mit meinem Aufbau funktionieren kann.
Wenn ich dass Programm starte und ich habe noch keinen Sollwert vorgegeben fährt mir z.B. die Pumpe nämlich schon hoch und dann wieder ab (Dreiecksform) - auch bei verschiedenen Eingaben für p,i,d...

Anbei ist das VI (LV 2009)...

Danke für Eure Hilfe
ugarcia
Dein SubVI fehlt noch.

Gruß Markus
Schon da....

Wichtig ist auch noch dass die Schleifen unterschiedlich schnell sein sollen - d.h. der Sollwert soll kontinuierlich mit dem Istwert der jede Sekunde berechnet wird geregelt werden...

LG

[attachment=27155]
Lv09_img2
Vorab schon mal: Bitte VI-Version mit angeben. Rulez
Ich hab's jetzt mal für Dich gemacht.

Gruß Markus
Steht im ersten Post....
Hab mirs mal kurz angesehen. Es wird nur alle 1 sec gesampled. Demgegenüber ist die Regelstrecke vermutlich sehr schnell, d.h bei Änderung der Motordrehzahl reagiert die Durchflußgeschwindigeit quasi sofort. Die Übergangsfunktion der Reglstrecke hätte dann bis zum nächsten Abtastpunkt ihren stationären Zustand bereits erreicht. Das ist ungewöhnlich, ich blicke da im Moment nicht durch, wie man eine Regelung mit einer so niedrigen Abtastrate im Verhätnis zur Reaktionszeit des Systems überhaupt noch machen kann.
Der PID-Regler scheint einen Fehler zu enthalten: Bei der Berechnung des I-Anteil muß dt als Faktor mit eingehen (so wie bei beim D-Anteil das dt als Quotient). Das scheint vergessen worden zu sein.
Die Verzögerung von 10 ms im Regeler kann ich auch nicht nachvollziehen, das Updating solte doch so schnell wir möglich geschehen.
Offtopic2
' schrieb:Steht im ersten Post....
Das langt aber lauf LVF-Regeln nicht. Bitte bei jedem VI-Upload angeben.
http://www.LabVIEWforum.de/LV-Version-hoch...d39s-t7949.html

Gruß, Jens
' schrieb:Der PID-Regler scheint einen Fehler zu enthalten: Bei der Berechnung des I-Anteil muß dt als Faktor mit eingehen (so wie bei beim D-Anteil das dt als Quotient). Das scheint vergessen worden zu sein.
Die Verzögerung von 10 ms im Regeler kann ich auch nicht nachvollziehen, das Updating solte doch so schnell wir möglich geschehen.
Das ist ja eigentlich damit gelöst oder (also den dt Faktor meine ich):

err = sp-pv;
errsum = err + errsum;
prop = p*err;
integ = i*errsum;
deriv = d*((err-olderr)/(newtime-oldtime));

laut http://www.rn-wissen.de/index.php/Regelungstechnik glaube ich zumindest...

lg
ug


LV 2009
Dann vergleich doch mal selbst Deinen PID-Regler mit dem von LabVIEW aus der Beispielsammlung. (Der war allerdings nur bis zu Version 7 mit dabei, jetzt hast Du gefälligst das Addon kaufen, wenn Du so etwas brauchst)
Lv82_img[attachment=27172]
Wie ich im Laufe meines Berufslebens festgestellt habe, muß man unterscheiden zwischen "Universitäts-Reglern" ( oder "Professoralen Regler", "Lehrbuch-Reglern") und "Industriereglern". Beide sind gleich stabil, aber bei den erstgenannten erhält man nie ein überschwingungsfreies Verhalten.
Der Unterschied: Bei den professoralen Reglern wird der D-Wert aus dem Errorsignal gebildet (so wie auch der P- und I-Anteil). Bei dem Industrieregler hingegen wird er direkt aus der Prozess-Ausgangsvariablen gebildet. Jeder Student, der einen Regler bauen muß, muß erst mal diese Erfahrung machen, daß es so nicht geht wie es überall gelehrt wird. (und auch NI hat sich der professoralen Richtung angeschlossen)
Was ich bei Dir unbedingt als erstes ändern würde: Flußmessung nicht mit Impulszählung, sondern auf Basis von Periodendauermessung dieser Impulse. Damit könntes Du z.B eine Abtastrate von 10 ms statt 1 s erzielen, und damit ließe sich vernünftig regeln.
Referenz-URLs