Hallo zusammen, ich zerbreche mir schon mehrere Tage über die Realisierung eines Regelvorgangs den Kopf: Es gibt einen Behälter, welcher mit einem Füllstandssensor (kapazitiv) ausgestattet ist und in dem eine Flüssigkeit eingefüllt ist. Diese Flüssigkeit wird kontinuierlich entnommen. Eine Pumpe P (analog ansteuerbar 0-5 V) soll den Flüssigkeitsstand im Behälter konstant halten. Der Flüssigkeitsstand ist in Prozent als Sollwert vorgegeben. Die Ausgangsgröße des Füllstandssensors ist auf Prozent skaliert. Nun füttere ich beide Werte in meinen PID-Regler und bekomme eine Stellgröße heraus, welche mittels DAC in eine Spannung umgewandelt wird und die Pumpe ansteuert. So weit erst einmal so gut und das funktioniert auch.. Fassen wir zusammen: - Pumpe P füllt nur nach und kann nur positiv regeln, negative Stellgrößen werden auf 0 begrenzt (entspricht 0 V Ansteuerung) - Kontinuierliche Entnahme der Flüssigkeit aus dem Behälter mit einer relativ hohen Flussrate - Mit geeigneter Parametrierung des Reglers wird der Sollwert vom Füllstand sicher erreicht Das Problem beginnt, wenn der Sollwert sicher erreicht wird oder (durch einen evtl. zu hohen I-Term) der Regler überschwingt und der Sollwert überschritten wird. Die Pumpe läuft noch kurz nach (Integralteil) und schaltet dann schlagartig ab, was eine entsprechende Belastung für die Pumpe inkl. starken Druck- und Füllstandsschwankungen nach sich zieht. Kurz vor Erreichen des Sollwertes läuft die Pumpe auf ca. 60 % ihrer Leistung, wobei dieser Wert je nach Viskosität der Flüssigkeit variieren kann. Dieser Wert kann leider nicht vorgegeben/berechnet werden, sondern stellt sich im System autark ein. Wie kann ich es nun anstellen, dass bei Erreichen des Sollwertes (Fehler = 0) die Stellgröße verharrt und bei Überschwingern die Drehzahl der Pumpe reduziert wird, ohne dass die Stellgröße auf 0 gesetzt wird? - Das Abschalten der Pumpe zieht jedenfalls größere Schwankungen in den nachfolgenden Systemen nach sich und muss definitiv verhindert werden. Theoretisch bräuchte ich eine Nullpunktverschiebung, die sich gleitend an den Punkt des Gleichgewichts herantastet und die Regelung bei Stellgröße = 0 genau dort verharrt. Positive Stellgrößen lassen die Pumpe schneller laufen, negative langsamer. Aber wie um Himmels Willen realisiere ich das? Kann mir jemand Tipps dazu geben? Weitere Infos: PID-Regler mit Anti-Windup/Winddown und Stellgrößenbeschränkung ist selbst geschrieben. Rechenleistung reicht aus (80 MHz ARM-Core). Viele Grüße! Sven
:
Bearbeitet durch User
Hört sich an, als wäre ein relativ langsam eingestellter I-Anteil im PID-Regler das, was du brauchst. Ich realisiere Füllstandsregelungen übrigens meist als einfachen P-Regler. Manchmal mit (statischer) Nullpunktverschiebung, wenn das, was auf der anderen Seite entnommen wird, bekannt ist (durch Durchflussmessung, oder weil es der immer gleiche Arbeitspunkt der Anlage ist). Ansonsten ist bei typischen Anwendungen (Puffergefäß) der stationäre Fehler häufig wurscht.
Sven, die Förderpumpe bei einer Füllstandsregelung muss mit einem reinen P-Regelung geregelt werden. Grund: Der Behälterstand selbst wirkt als Integrator. Den I-Teil braucht man nur, wenn die Stellgrösse bei Sollwert == Istwert nicht gleich Null ist, Ciao, Hermann
Hallo mechatroniker, vielen Dank für Deine Antwort! - Eine langsame Abtastung (Zeitkonstante 10 Sekunden) und entsprechender I-Anteil sorgt für eine langsame Regelung, bei welcher keine großartigen Schwankungen auftreten. Wie Du schon bemerkt hast, wird dann aber immer eine Regelabweichung vorhanden sein und solange der Istwert unter dem Sollwert bleibt, funktioniert das System auch stabil. Wie kann man denn so einen autonom bildenden Offset dem Regler beibringen? Viele Grüße! Sven
Hermann, ja genau das ist das Problem: Ist = Soll wird ohne I-Anteil nicht erreicht, was aber in der Natur eines P-Reglers liegt. Es bleibt immer eine Regelabweichung bestehen. Viele Grüße! Sven
Sven L. schrieb: > Es bleibt immer > eine Regelabweichung bestehen. Und ist die Regelabweichung dann ein Problem in deiner Anwendung? Wenn du die Pumpe nicht abschalten willst, ist das doch genau was du brauchst.
@Hermann: Der Behälter (=Regelstrecke) wirkt zwar integrierend, aber das hat nichts mit dem Verhalten des Reglers zu tun. @TO: Wenn Du mit einer dauerhaften Regelabweichnung leben kannst bleibe beim reinen P-Regler. Wenn die dauerhafte Regelabweichung Null werden soll brauchst Du den I-Anteil. Um die Überschwinger zu vermeiden den D-Anteil, d.h. nähert sich der Füllstand von "unten" dem Sollwert wirkt der D-Anteil gegen und der Füllstand nähert sich "sanfter" dem Soll, ohne Überschwingen aber auch erst nach längerer Zeit. Bei konstanter Entnahme wird der Füllstand durch den I-Anteil exakt erreicht, bei Verringerung der Entnahme muss natürlich erst mal eine positive Regeldifferenz (=Überfüllung) entstehen bevor der Regler reagieren kann. Kein Regler kann ohne Regeldifferenz auf sich ändernde Bedingungen reagieren. Wenn die Pumpe nicht ganz abgeschaltet werden soll hilft wohl nur eine manuelle Begrenzung der Stellgröße (per Codierung).
Hallo zusammen, eine dauerhafte Regelabweichung ist nicht erwünscht und wird auch nicht akzeptiert. Der Hintergrund ist der, dass das Behältnis zusätzlich mit einem leichten Überdruck beaufschlagt ist, welcher den konstanten Abfluss der Flüssigkeit ermöglicht (Differenzdruck). Das Nachfüllen in das Behältnis bringt einerseits neue Flüssigkeit hinein und erhöht aber auch den Druck. - Die Regelung soll am Gleichgewichtspunkt (Zufluss = Abfluss) verharren bzw. maximal leicht und langsam um diesen pendeln. Plötzlich auftretende Druckschwankungen durch Abschaltung der Pumpe bringen das System stark aus dem Gleichgewicht. Ich verfolge gerade folgenden Ansatz: Die letzte Stellgröße != 0 werden bei jedem Regleraufruf gespeichert. Wird der Fehler null, und damit die Steuergröße null, wird mit dem letzten Wert weitergefahren, bis der Regler wieder eine Stellgröße ausgibt, die sich durch ihren Integralteil dem Ersatzregelwert angenähert hat. - Nicht schön, sieht aber erst einmal nicht schlecht aus... Gibt es evtl. andere Vorschläge? Viele Grüße! Sven
Andere? Nö, halt wie gesagt dass nur durch den Integralanteil die Regelabweichung zu Null werden kann. Und Abschalten der Pumpe kannst Du nur durch manuelle Begrenzung des Stellwertes erreichen, also etwas das unabhängig vom Regleralgorithmus ist.
@Marian: Der Druck wird bereits reguliert und das funktioniert. Nur kann der Druck nicht so schnell ausgeregelt werden (Totzeit der Regelstrecke über die Aktoren zu lang). Überdruck baut sich bekanntlich ganz schnell ab... :) Begrenzung, sprich: Das Verharren auf dem Idealwert mache ich bereits außerhalb meines Regelalgorithmus. Im Endeffekt bekomme ich aus dem PID-Regler ja auch nur eine Korrekturgröße heraus. Sie sagt also nur aus, ob die Pumpe zum gegenwärtigen (Abtast-)Zeitpunkt und dem "virtuellen Nullpunkt" schneller oder langsamer laufen muss. Das Gleiten dieses "virtuellen Nullpunktes" auf den Wert, auf den sich das System einpendelt, wäre ideal. So würde die Korrekturgröße in eine Geschwindigkeitsänderung umgesetzt, ansonsten bei Stellgröße 0 eine Grundgeschwindigkeit beibehalten. - Wie gesagt: Dieses Offset ist nicht statisch, sondern pendelt sich beim Hochfahren des Systems ein. Viele Grüße! Sven
Das was Du "virtueller Nullpunkt" nennst ist ein sprachlicher Mischmasch aus der Regeldifferenz (eben der Differenz zwischen Soll- und Istwert) und der Stellgröße, die bei einem Regler mit I-Regler eben nur den I-Anteil enthält wenn die Regeldifferenz Null ist, also Sollwert = Istwert. Den D-Anteil brauchst Du wenn Du die Überschwinger vermeiden willst. Am Besten in sauberen Blöcken aufbauen, sonst wird das gemurkse.
Die Idee, eine gewisse Menge Luft unter Druck in dem Behälter zu halten, um den Abfluss zu ermuntern hat einen Haken: Luft löst sich unter Druck in Wasser auf - zwar nur in geringer Menge, aber über die Zeit doch merklich. Nicht umsonst ist in Asugleichsbehältern von Zentralheizungen eine Gummimembran eingebaut. Die von dir beobachtete Nullpunktverschiebung muss also nicht ausschliesslich ein Reglerproblem sein.
Hallo, Hast du ein paar Daten des Behälters? Volumen/Füllhöhe/Grundfläche? Wieviel Volumenstrom fließt aus? Ist der Volumenstrom am Ausgang regelbar (Ventil) oder stellt er sich nur über die Druckdifferenz bei fixer Abflussgröße ein? Bin mir sicher, dass sich hier eine saubere Regelung implementieren lässt. Bei konstantem (oder bekanntem) Füllstand und Behälterdruck könnte man relativ einfach den Ausgangsvolumenstrom für eine Vorsteuerung heranziehen. Dadurch wird die Stellgrößenbeschränkung nach unten hin hinfällig. Melde dich einfach nochmal wenn du mehr infos brauchst LG Dominik
Hallo Dominik, leider kann ich Daten über den Behälter nicht herausgeben. Die beaufschlagten Drücke spielen sich im millibar-Bereich ab und der sich daraus ergebende Differenzdruck ist ebenfalls sehr niedrig. Ich habe die Regelung jetzt mit vorwiegend proportionaler Regelung angepasst und nutze einen sehr kleinen Integralteil zum Erreichen des Endwerts. - In der bisherigen Parametrierung war der Integralteil zu hoch, was ein ständiges Schwingen des Füllstandes und damit der Drücke verursacht hat. Da die Drücke ebenfalls reguliert werden, haben sich die Regler untereinander aufgeschwungen. Aktuell habe ich ein zufriedenstellendes Ergebnis erreicht, welches kaum noch eine Schwingneigung zeigt. Die Glättung der Eingangsgrößen (gleitender Mittelwert) wie auch die starke Reduktion des Integralteils der einzelnen Regler bringen dieses Ergebnis. Der Regler des Füllstandes regelt kontinuierlich außerhalb und innerhalb seines Totbereichs verändert er die Regelgröße nicht. Das Ergebnis ist ein leichtes Pendeln zwischen Ober- und Untergrenze des Sollbereichs. Eine kontinuierliche Regeleung ohne Totbereich hingegen bringt durch die Pumpenregelung zu viele Störgrößen ein und die Regler arbeiten gegeneinander und das Gesamtsystem kommt wieder in's Schwingen. Ich denke das Gesamtsystem lässt sich durch weitere Anpassung der Regelparameter noch optimieren, aber das liegt nicht mehr in meinem Verantwortungsbereich. Vielen Dank für alle Beiträge und die Ideen! Sven
Ernst O. schrieb: > Die Idee, eine gewisse Menge Luft unter Druck in dem Behälter zu halten, > um den Abfluss zu ermuntern hat einen Haken: Luft löst sich unter Druck > in Wasser auf - zwar nur in geringer Menge, aber über die Zeit doch > merklich. > Nicht umsonst ist in Asugleichsbehältern von Zentralheizungen eine > Gummimembran eingebaut. Hallo Ernst, vielen Dank für Deinen Beitrag! - Bei der zu fördernden Flüssigkeit handelt es sich nicht um Wasser und auch nicht um eine Heizungsanlage mit entsprechend hohen Drücken. Der Gedanke, dass sich allerdings Luft in der Flüssigkeit lösen könnte ist nicht schlecht und würde eine langfristige Abweichung der Drücke erklären können. Ich danke Dir für diesen Hinweis! Viele Grüße! Sven
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.