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?
Naja, von welchen Leistungen, Massenströme etc. sprechen wir denn? Wo sitzt die Heizung, wo der Temperaturfühler? Wie wird die Heizung angesteuert?
Die nichtlinearitäten werden zu groß sein...deswegen geht es so nicht. Du brauchst zumindest ein kennfeld mit den reglerparametern
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?
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.
Hast du deine Strecke vernünftig identifiziert? Was sind deine Zeitkonstanten des Systems?
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ß,
Versuch doch mal die Einstellung der PID-Parameter nach Ziegler-Nichols erläutert unter: https://de.wikipedia.org/wiki/Faustformelverfahren_(Automatisierungstechnik)
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.
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
Hab dann mal die Sprungantwort hochgeladen! X-Achse ist Sekunden Y-Achse Temperatur in °C
:
Bearbeitet durch User
> 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.
..
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.
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.
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.
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.
@ 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!
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.
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...
@ 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?
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.
Naja ich habe eben nicht einen Betriebspunkt sondern eher viele verschiedene, da ich Durchfluss und Druck regeln kann...
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.
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.
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.
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.