Forum: Mikrocontroller und Digitale Elektronik Schwierigkeiten bei PID-Regler Einstellung


von Kevin B. (supertomcat)


Lesenswert?

Servus,
ich hab hier schon so einige Threads und Verfahren durch und schaffe es 
einfach nicht mein PID-Regler vernünftig einzustellen.

Kurz zu meinem Aufbau: Ich pumpe meine Flüssigkeit in einem Kreislauf 
und kann Druck und Menge verändern. Die Flüssigkeit soll mit einer 
Heizung möglichst genau meine Temperatur von 40°C halten. Der PID-Regler 
wird bei mir über Labview realisiert.
Vom Glied her müsste es sich um PT2 handeln? Erst wird ja die Heizung 
mit Verzug erwärmt, danach die Flüssigkeit ebenfalls mit Verzug (also 
Totzeit).

Nun kurze Frage vorher, da sonst alles nachfolgende unnötig ist: Sollte 
mein PID Regler funktionieren, funktioniert dieser nur für einen 
Betriebspunkt oder auch für alle anderen bei anderen Durchflussmengen 
und Drücke?

Und nun was ich probiert habe:
 Über Labview selbstoptimierenden Regler,
dieser spuckt aber (für mich) unplausible Werte aus. Der 
Proportionalfaktor ist bei gerade mal 0,07, während die Nachstellzeit 
-20 Minuten beträgt. Übernehmen ich die Werte in den Regler, so schießt 
die Temperatur weit über die 40°C (und hört wahrscheinlich gar nicht auf 
zu heizen)

Verfahren über Nicholson: Habe Kc(Proporionalitätsfaktor) soweit 
geregelt, dass meine Temperatur periodisch immer um 2°C schwankt. 
Berechnete Werte im PID eingesetzt erzeugen eine Temperatur von 43°C und 
ein rel. starkes periodisches Schwanken der Temp.

Dann aufnehmen der Sprungantwort und bestimmen der Werte über die 
Wendetangente. Kurz gefasst: funktioniert genauso wenig, Temp. über 
Sollwert und periodisches Schwanken
Die Sprungantwort habe ich dabei so aufgenommen: Stellgröße auf max., 
somit heizt die Heizung bis zu ihrer Sicherheitstemperatur, Messung wird 
gestoppt nachdem 40°C von der Flüssigkeit erreicht worden sind.

Hab dann weiterhin versucht über stupides Probieren von Werten im PID, 
werde da aber auch nicht glücklich mit, bei kleinem  Kc übersteigt die 
Temp. meinen Sollwert wieder deutlich und schwankt periodisch. bei hohem 
passt die Temperatur aber schwankt ebenfalls. D-Glied verstellen bringt 
irgendwie keine Abhilfe. (weiß auch ehrlich gesagt nicht wie die Werte 
dimensioniert werden müssen bei solchen Systemen)

Testweise habe ich mir eine ON-OFF-Regelung gebaut und dort für einen 
Betriebspunkt eine Schwankung von gerade mal 0,3°C erreicht. Sobald ich 
den Betriebspunkt aber ändere, fängt der Regelkreis an stark zu 
schwingen und fängt sich nicht mehr, erst wenn entsprechende Parameter 
von Hand angepasst werden.

Und somit bin ich leider mit dem Latein am Ende. Entweder mache ich was 
komplett falsch oder das Ding lässt sich über PID gar nicht regeln?

von Erfahrener Prozesstechniker (Gast)


Lesenswert?

Naja, von welchen Leistungen, Massenströme etc. sprechen wir denn?

Wo sitzt die Heizung, wo der Temperaturfühler? Wie wird die Heizung 
angesteuert?

von TestX (Gast)


Lesenswert?

Die nichtlinearitäten werden zu groß sein...deswegen geht es so nicht. 
Du brauchst zumindest ein kennfeld mit den reglerparametern

von Kevin B. (supertomcat)


Lesenswert?

Heizleistung ist 2x 3kW und Durchfluss geht hoch bis ca. 4L pro min.
Heizung kann nur an/aus über Relais
Aufbau ist in etwa so: Tank-> Heizung-> Pumpe -> Leitung mit größerem 
Querschnitt (oder kleiner Speicher) -> wieder Leitung -> Temp- Sensor 
der 40°C messen soll -> Leitung -> Messeinrichtung für Durchfluss -> 
Rücklauf zum Tank

was heißt das genau mit dem Kennfeld? Bzw. wie bekomme ich das heraus?
Oder gibts dann bessere Alternativen als PID?

von transparenter Flachtroll (Gast)


Lesenswert?

Ja, den PID kannst du zur Feinarbeit verwenden. Und natuerlich nich im 
Auto-mode.
Erst musst du ein Kennlinienfeld fuer das Stellglied zu den 
verschiedenen Parametern aufnehmen. Also Stellglied=f(delta-T)(fluss). 
Allenfalls kann man das auch rechnen. Dann laesst du das so laufen. Als 
Steuerung. Und darauf werden die PI Parameter bestimmt. Den D Anteil 
kannst du spuehlen. Der PI addiert sich dann einfach noch zum Stellglied 
hinzu. Die Steuerung bringt die Statischen werte, die Regelung abeitet 
oben drueber fuer die letzten paar Prozent.

von Alexander (Gast)


Lesenswert?

Hast du deine Strecke vernünftig identifiziert? Was sind deine 
Zeitkonstanten des Systems?

von Alexander (Gast)


Lesenswert?

Alexander schrieb:
> Hast du deine Strecke vernünftig identifiziert? Was sind deine
> Zeitkonstanten des Systems?

Ich nehme alles zurück - sorry.

Kevin B. schrieb:
> Dann aufnehmen der Sprungantwort und bestimmen der Werte über die
> Wendetangente. Kurz gefasst: funktioniert genauso wenig, Temp. über
> Sollwert und periodisches Schwanken
> Die Sprungantwort habe ich dabei so aufgenommen: Stellgröße auf max.,
> somit heizt die Heizung bis zu ihrer Sicherheitstemperatur, Messung wird
> gestoppt nachdem 40°C von der Flüssigkeit erreicht worden sind.

Verwende einen einfachen P-Regler (I und D anteil = 0) mit Verstärkung 
1. Somit hast du keinen Regler mehr.

Gibt einen Sprung in den Eingang des Systems und miss den Ausgang.

Kannst du den Plot hier zur Verfügung stellen?

Gruß,

von Wolle G. (wolleg)


Lesenswert?

Versuch doch mal die Einstellung der PID-Parameter nach Ziegler-Nichols
erläutert unter: 
https://de.wikipedia.org/wiki/Faustformelverfahren_(Automatisierungstechnik)

von Gerald B. (gerald_b)


Lesenswert?

4L/min Durchflussmenge und das mit 2x3 KW geheizt ist schon recht flott. 
Und das nur mit einem Relais, ohne Schwingungspaketsteuerung.
Nimm mal eine Heizung raus, dann wird das Ganze etwas gemächlicher, so 
das du die Werte beobachten kannst und es nicht innerhalb von Sekunden 
aus dem Ruder läuft.

von Kevin B. (supertomcat)


Lesenswert?

Das Ziegler-Nichols hab ich schon probiert, hat ja nicht geklappt.

Sprungantwort kann ich Mittwoch hochladen, hab es jetzt nicht bei mir...

Wegen dem Kennlinienfeld werde ich mich etwas einlesen müssen, hab da 
momentan kein Bild vorm Kopf was man machen muss...

Eigentlich wollte ich den Aufbau so lassen wie er ist. Hab vergessen zu 
erwähnen das ich noch die Flüssigkeit vor dem Tank kühle :)

btw: Frohe Festtage!

: Bearbeitet durch User
von Kevin B. (supertomcat)


Angehängte Dateien:

Lesenswert?

Hab dann mal die Sprungantwort hochgeladen!

X-Achse ist Sekunden
Y-Achse Temperatur in °C

: Bearbeitet durch User
von Purzel H. (hacky)


Lesenswert?

> Wegen dem Kennlinienfeld werde ich mich etwas einlesen müssen, hab da
momentan kein Bild vorm Kopf was man machen muss...

Naja.

Stellglied = 10 & T(t) aufnehmen.
Stellglied = 20 & T(t) aufnehmen.
Stellglied = 30 & T(t) aufnehmen.
Stellglied = 40 & T(t) aufnehmen.
Stellglied = 50 & T(t) aufnehmen.
Stellglied = 60 & T(t) aufnehmen.
..

von Hermann (Gast)


Lesenswert?

Man kann den Regler auch mit der klassischen Regelungstechnik berechnen. 
Wahrscheinlich hast du dazu keine Lust wegen fehlendem know how. Deshalb 
hier nur eine kurze Skizze:
1. Strecke identifizieren. Dazu hast du ja schon die Sprungantwort 
aufgenommen. Das sieht nach einem normalen PT2-Glied aus. Um da die 
beiden Zeitkonstanten heraus zu messen, sucht man ein PT1-Glied, das 
verschoben bei großen Zeiten der Kurve am nächsten kommt. Wo diese 
PT1-Kurve die x-Achse schneidet, ist die 2. Zeitkonstante. So hast du T1 
und T2 der beiden hintereinander liegenden einfachen PT1-Glieder. Ich 
mache das mit Excel.
2. Eine PT2-Strecke regelt man am einfachsten mit einem PI-Regler (also 
D-Anteil weglassen). Den Vorhalt des Reglers wählt man so, dass sich die 
Zeitkonstante T1 herauskürzt. Die schlimmste Zeitkonstante ist also 
schon mal weg.
3. Mit der Verstärkung des Reglers stellt man dann noch die Dämpfung 
ein. Meisten auf 1/Sqrt(2), das gibt einen leichten einfachen 
Überschwinger. Oder auf 1, dann ist er langsamer aber ohne 
Überschwinger.

Dann brauchst du natürlich eine kontinuierliche Regelung. Das Relais 
muss also eine PWM machen. Besser ist ein elektonisches Relais für 
höhere Taktraten.
Wenn sich deine Strecke ändert wegen anderer Parameter, musst du den 
Regler auf die schnellste Strecke einstellen oder du arbeitest mit 
umschaltbaren Regelparametern.

So macht man es in der Theorie. Mit etwas regeltechnischem Know How 
funktioniert das auch in der Praxis. Ohne muss man eben versuchen mit 
Praxixtipps klar zu kommen.

Vielleicht klappt bei dir auch etwas ganz einfaches: Ein elektronischer 
Temperaturregler für 7€ vom Chinesen. Ich habe damit einen Wärmeschrank 
geregelt (Pizza-Ofen). Der identifiziert die Strecke automatisch und 
regelt danach optimal die eingestellte Temperatur.

von Hermann (Gast)


Angehängte Dateien:

Lesenswert?

Zu dem Thema PT2-Strecke identifizieren hatte ich bisher nur das Prinzip 
an reinen PT2-Gliedern getestet. Dein praktisches Beispiel habe ich mal 
genutzt, um mein Handwerkszeug (Excel-Tabelle) zu optimieren.
Denn in der Praxis kommen dann immer ein paar Problemchen - so wie hier:
1. die Kurve ist kein reines PT2-Glied
2. die Zeitkonstanten liegen sehr dicht zusammen
3. der Endwert ist nicht bekannt
Das führt dazu, dass die PT1-Kurve für T1 nicht soweit verschoben werden 
kann, dass das T2-Glied kaum noch Einfluss hat. D.h. man findet durch 
Verschieben nur die Größenordnung von T1.
Man muss also an allen 3 Parametern (T1, T2, Endwert) drehen, bis die 
simulierte PT2-Kurve mit der Messkurve zur Deckung kommt.
So habe ich aus deiner Messkurve T1=130s, T2=70s und Endwert 42,7° 
herausbekommen.
Im Bild sieht man:
- oben die Parameter, an denen gespiel wird
- links die gemessene Kurve
- in der Mitte die grüne Messkurve, die rote PT1-Kurve mit T1 und die 
orange verschobene PT1-Kurve. Wie man sieht, trifft sie nicht besonders 
gut aus o.a. Gründen.
- rechts sieht man das Ergebnis. Das simulierte PT2-Glied trifft die 
Messkurve recht gut - völlig ausreichend, um damit den Regler zu 
berechnen.

Ganz unten ist noch der Anfang der Tabelle für die Simulation mit den 
benutzten Formel zu sehen.
Das hilft dir wahrscheinlich nicht viel weiter, aber da ich es schon mal 
gemacht habe, wollte ich es nicht vorenthalten.

von Hermann (Gast)



Lesenswert?

Weil es mit meinen fertigen Vorlagen so einfach ging, habe ich noch die 
ganze Regelung mit deiner Strecke berechnet und simuliert.
Im 1. Bild ist der Regelkreis skizziert. Darunter die 
Übertragungsfunktion für den offenen Kreis. Mit Tr=T1 kürzt sich die 
Verzögerung T1 raus. Jetzt muss Fk auf die Form Fk=1/Tap*1/(Tbp+1) 
gebracht werden. So entsteht Tik. Wenn man jetzt für Tik die gewünschte 
Dämpfung einsetzt, erhält man die Verstärkung des Reglers - fertig.
In Bild 2 ist die Simulation berechnet. Mit der Dämpfung 1/Sqrt(2) 
entsteht der zu erwartende Überschwinger.

Für dich ist das noch nicht die ganze Lösung. Weil ich deinen Regelkeis 
nicht genau kenne, habe ich alles auf 1 normiert. Für die endgültige 
Lösung muss man alle Faktoren berücksichtigen. Die Temperatur ist 
erstmal eine Spannung, der Reglerausgang ebenfalls. Dann kommt bei K1 
die PWM für die kontinuierliche Aussteuerung der Strecke. Das sind alles 
nur Faktoren, die das Ergebnis nicht ändern, aber die 
Reglerkoeffizienten.

von Hermann (Gast)


Angehängte Dateien:

Lesenswert?

Mich hat die Regelung der Temperatur noch etwas beschäftigt, weil das 
ein typisches Beispiel ist. Dabei habe ich für mich wertvolle 
Erkenntnisse gewonnen. Ich mache mit meinen Selbsgesprächen noch eine 
Runde weiter. Das ist hoffentlich für den einen oder anderen 
interessant.
Der oben beschriebene PI-Regler ist deshalb so schön, weil man ihn 
direkt berechnen kann. Ein PID-Regler ist aber dynamisch weit besser. 
Das habe ich mir hier mal vorgenommen.
Eine sehr intiutive Vorgehensweise geht anhand des Bode-Diagramms. Im 
1.Bild sind links alle Glieder des Regelkreises in ihrer Wirkung 
eingezeichnet. Der I-Anteil des Reglers läßt die Verstärkung von Beginn 
an mit der Steigung -1 abfallen und läßt die Phase bei -Pi/2 beginnen. 
Jetzt geht es jeweils mit 1/(Tp+1) weiter abwärts mit Steigung -2 und 
mit *(Tp+1) wieder aufwärts.
Instabil wird die Regelung, wenn der Phasenabstand bei einer Verstärkung 
>1 unter eine kritische Grenze (Z.B.<60 Grad) kommt. Dies ist mit dem 
Pfeil angedeutet. So wie die Zeitkonstanten gewählt sind, muss man die 
Verstärkung so weit absenken, dass die Durchtrittsfrequenz 
(Verstärkung=1)schon unterhalb von 1/T1 ist.
Da man den Regler mit Ti und Tv frei wählen kann, liegt es nahe, Ti=T1 
und Tv=T2 zu wählen. Die zugehörigen Glieder kürzen sich raus und es 
bleibt nur noch der Integrator und T3 übrig - siehe rechtes Diagramm. 
Jetzt rutscht die Durchtrittsfrequenz kurz vor 1/T3 und damit kann man 
eine anständige Verstärkung wählen.
Das PT1-Glied T3 hatten wir noch gar nicht. Das ergibt sich, weil ein 
ideales Differenzierglied nicht realisierbar ist (in der Simulation 
schon) und weil sowieso irgend wann zusätzliche Verzögerungen hinzu 
kommen. Die erste sei T3 und die weiteren interessieren nicht mehr.

Das habe ich jetzt mal in Bild 2 simuliert. Aus den 350sec, bis der 
Sollwert des PI-Reglers erreicht war, werden jetzt 60sec - und das fast 
ohne Überschwinger. Das kann man beliebig hoch treiben, wenn T3 kleiner 
wird - von dieser Zeitkonstanten hängt die Grenze ab.
Das ist ja alles zu schön, aber....
Wenn man einen Blick auf die Aussteuerung der Regleranteile im rechten 
Diagramm wirft, sieht man, dass der Reglerausgang (rot) eine irre 
Aussteuerung macht. Man müsste also eine gewaltige Heizung installieren 
- regelungstechnisch bekommt man das locker in den Griff. Praktisch hat 
das natürlich seine Grenzen und muss berücksichtigt werden.
Wenn man in die Tabelle unten schaut, sieht man beim Sprung den riesigen 
idealen D-Anteil Reg-D, der dann am Reglerausgang über T3 gedämpft ist.

Für die realitätsnahe Simulation würde man jetzt noch die realen Grenzen 
aller Glieder einbauen und dann die Verstärkung soweit zurücknehmen, 
dass sie nicht überschritten werden. Oder man kontrolliert die 
Auswirkung der Begrenzung in der Simulation auf Zulässigkeit.

Mich hat das mal gereizt als Muster für meine künftigen Anwendungen. 
Vielleicht hilft das eingigen zur eigenen Vorgehensweise oder zum 
Verständnis der Regelungstechnik.

von aSma>> (Gast)


Lesenswert?

@  Hermann

Du hast es endlich zum Schluß gerafft, dass eine Strecke physikalisch 
begrenzt ist. Habe nur drauf gewartet.

Temperaturregelungen sind meistens nicht linear. Ändert sich die 
Außentemperatur schon geht nichts mehr.

Aus diesen Grund nimmt man Anti-Windup nach Aström.

Vorallem bei sehr trägen Strecken mit großen Zeitkonstanten ist ohne 
knowhow ein 2 Punkt Regler sindvoller als ein PID, welcher sich nach 
Stunden sich einregelt. Weiterhin braucht man den D-Anteil aufgrund der 
Trägheit überhaupt nicht. Hier ändert sich nichts schlagartig!

von Hermann (Gast)


Lesenswert?

aSma>> schrieb:
> Du hast es endlich zum Schluß gerafft

Danke für die Lorbeeren.

aSma>> schrieb:
> Temperaturregelungen sind meistens nicht linear. Ändert sich die
> Außentemperatur schon geht nichts mehr.

Durch Änderung der Außentemperatur wird nichts nichtlinear. Das ist eine 
kleine Störgröße, die mit ausgeregelt wird. Anders ist das bei Sättigung 
der Stellgröße.
Das der I-Anteil des Reglers begrenzt werden muss, um das Windup zu 
verhindern, gehört zur Grundvoraussetzung bei digitalen Reglern.

Es gibt noch viele Sondermaßnahmen um Grenzeffekte zu vermeiden oder 
andere Verbesserungen zu erzielen. Es ging hier erstmal um die 
grundsätzliche Vorgehensweise und die Möglichkeit der Überprüfung in der 
Simulation. Ich dachte, das wäre klar geworden.

aSma>> schrieb:
> Vorallem bei sehr trägen Strecken mit großen Zeitkonstanten ist ohne
> knowhow ein 2 Punkt Regler sindvoller als ein PID

Ja, dann muss man das so machen. Am besten mit einem einfachen 
Thermostat, wie sich das klein Fritzchen so vorstellt.

von aSma>> (Gast)


Lesenswert?

Hermann schrieb:
> Durch Änderung der Außentemperatur wird nichts nichtlinear. Das ist eine
> kleine Störgröße, die mit ausgeregelt wird. Anders ist das bei Sättigung
> der Stellgröße.

Wenn du in der Antarktis bist, dann hast du diesen Fall.

Hermann schrieb:
> Das der I-Anteil des Reglers begrenzt werden muss, um das Windup zu
> verhindern, gehört zur Grundvoraussetzung bei digitalen Reglern.

Wozu sollen dann diese Milchmädchen Spielerreien sein?! Eine Simulation 
muss  möglichst getreu der echten Strecke sein. Bei einer Zeitkonstente 
von 130s und einen begrenzten Stellglied, hätte man sofort erkannt, dass 
hier der einfache pid unnütz ist...

von Kevin B. (supertomcat)


Lesenswert?

@ Hermann

Danke soweit für die Große Mühe!

@ aSma>>

heißt also einfach so viel wie ich soll für jeden Betriebsparameter 
einfach eine Zweipunktregelung auslegen?

von aSma>> (Gast)


Lesenswert?

Kevin B. schrieb:
> heißt also einfach so viel wie ich soll für jeden Betriebsparameter
> einfach eine Zweipunktregelung auslegen?

Hängt von deinen Stellglied und Regelgüte ab. Wenn es ein Schaltrelais 
ist, dann ja. Einen Transistor dagegen kann man auch besser PWM.

Wenn du eh nur einen Betriebspunkt hast, warum sollte ein 2P Regler 
nicht zielführend sein?

Sonst

aSma>> schrieb:
> Aus diesen Grund nimmt man Anti-Windup nach Aström.

Das sind 2 Zeilen Code mehr im Vergleich zum PID-Regler.

von Kevin B. (supertomcat)


Lesenswert?

Naja ich habe eben nicht einen Betriebspunkt sondern eher viele 
verschiedene, da ich Durchfluss und Druck regeln kann...

von PID (Gast)


Lesenswert?

Kevin B. schrieb:
> Vom Glied her müsste es sich um PT2 handeln? Erst wird ja die Heizung
> mit Verzug erwärmt, danach die Flüssigkeit ebenfalls mit Verzug (also
> Totzeit).

Totzeit != Zeitkonstante

Totzeit und PID-Regler sind keine gute Kombination.

von Hermann (Gast)


Lesenswert?

Kevin B. schrieb:
> Naja ich habe eben nicht einen Betriebspunkt sondern eher viele
> verschiedene, da ich Durchfluss und Druck regeln kann...

Betriebspunkt wäre die Solltemperatur. Ein unterschiedlicher Durchfluss 
oder Druck führt bestimmt zu einem anderen Verlauf der Sprungantwort. 
D.h. es ändert sich die Strecke.
Wenn du Glück hast, ändert sich nur der Endwert. Das könntest du einfach 
mit einem Korrekturfaktor am zwischen Regler und Stellgröße ausgleichen. 
Der Regler sieht dann immer die gleiche Strecke. Um das zu beurteilen, 
musst du die Strecke mit unterschiedlichen Durchflüssen ausmessen. Dann 
kannst du prüfen, ob sie mit einem Korrekturfaktor oder einer 
aufwändigeren Funktion  gleich zu machen sind.
Ich habe das schon erfolgreich mit einer Wertetabelle gemacht. Ich habe 
das Equalizer genannt, der dem Regler immer die gleiche Strecke 
vorsetzt. In den Equalizer geht dann als Parameter der Durchfluss 
und/oder der Druck ein. Herauskommt die Verstärkung des P-T1-Gliedes. 
Dann hast du einen adaptiven Regler. Wenn es schwieriger wird, muss noch 
T1 und T2 herauskommen.

von Hermann (Gast)


Lesenswert?

PID schrieb:
> Totzeit und PID-Regler sind keine gute Kombination

Das stimmt!
Aber es ist keine Totzeit. Sonst hätte sich eine Zeitlang gar nichts 
getan. Der anfangs schleppende Anstieg ist die ganz normale Wirkung des 
zweiten PT1-Gliedes. Sonst hätte ich die Strecke nicht mit dem 
simulierten PT2 so gut annähern können.

von Kolja L. (kolja82)


Lesenswert?

Kevin B. schrieb:
> Rücklauf zum Tank

Wie groß ist denn der Tank?

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
Noch kein Account? Hier anmelden.