Forum: Mikrocontroller und Digitale Elektronik PID-Algorythmen Ein- und Ausgangsparameter skalieren


von Stefan (Gast)


Lesenswert?

Moin erstmal!

Jetzt als neues Thema, da da sonst ja doch einiges durcheinander zu 
kommen scheint.

Ich habe mich in den letzten Wochen zum 1sten mal mit PID-Reglern
befasst.

Ohne die tiefsten Tiefen der mathematischen Herleitungen wirklich
begriffen zu haben, zugegebener Maßen. So ein ungefähres Bild, was   P-,
I-, und D-Anteil bewirken sollen (und warum sie das auch tun) hat sich
aber schon eingestellt.

Aber genau bei dem Skalierungsproblem komme ich auch nicht weiter.

Also angenommen man möchte eine Temperatur regeln, z.B. auf 50°C.

Und angenommen, irgendwann würde diese Temperatur ereicht und sich nicht
mehr ändern (also quasi Störgröße konstant -> Regleroutput (z.B.
50%)auch konstant und gleicht die Störgröße  aus).

Dann müsste ja der I-Anteil des Reglers bei einem Ausgangssignalbereich
von 0..100 (%) permanent 50 rausgeben, oder? (Damit dann ein einfaches
Stellventil z.B. immer in dieser Stellung bleibt).

Ist das soweit richtig bzw. nachvollziehbar?

Dieter Werner schrieb:
> Das stimmt so.
>
> Da bei Regelabweichung 0 der P-Anteil der Stellgröße ebenfalls 0 ist,
> muss der I-Anteil allein die erforderliche Stellgröße liefern.
>
> btw. Stellventile steuert man oft mit einem Dreipunktschrittregler an.
>
> siehe z.B.
> http://www.jumo.de/de_DE/support/faq-weiterbildung/faq/regler/T2/Q16.html


Stefan schrieb:
> Moin Dieter Werner,
>
> danke für die schnelle Antwort!
>
> Nun denn.
>
> wenn ich jetzt mal die u.A. auch in diesem Forum benutzte Formel
>
> esum += e_neu
>
> y= Kp *e + Ki*esum + Kd* (e_neu-e_alt)
>
> wobei esum (oder auch Ki*esum) dann ja oft auf y_max begrenzt wird (was > dann 
oft als Anti-Wind-Up bezeichnet wird). Meine ich auch hier und
> anderswo gefunden zu haben.
>
> Dann müsste, wenn ich Ki auf z.B. 0.5 gesetzt hätte, esum ja 100 sein?
>
> Wenn ich jetzt den Sollwert auf z.B 60° setzen würde, müsste ich also Ki
> vergrößern, um die Regelabweichung im oben angenommenen ZUSTAND
> überhaupt noch kompensieren zu können, da  esum ja auf 100 begrenzt
> ist??
>
> Soweit auch noch richtig?
>
> Stefan

Stefan schrieb:
> ...
>
> Den Drei-punkt-schrittregler habe ich mir schon schön programmiert- und
> zwar so, dass er immer 0..100% möchte.
>
> Jumo- PID-Regler beschreibung, Adruino-PID-Regler (sehr schön! Den
> Hinweis habe ich, glaube ich. auch hier im Forum gefundenund) und
> vieles, vieles andere habe ich mir auch schon 'reingezogen'
>
> Stefan

von короткое троль (Gast)


Lesenswert?

>Ist das soweit richtig bzw. nachvollziehbar?

Ja. Deshalb ist es auch eine duemmliche Loesung.

von Stefan (Gast)


Lesenswert?

Und wo ist dann die schläuliche Lösung?

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?


von Stefan (Gast)


Lesenswert?

Ókay, is mir jetze schon ein bisserl peinlich, aber:

Wer Rechtschreibfehler findet darf diese sammeln und behalten. Sind 
diese doch Teil meines persönlichen, künstlerischen Ausdrucks ist - 
abhängig meiner weiteren Entwicklung - auch eine Wertsteigerung nicht 
ausgeschlossen.

von короткое троль (Gast)


Lesenswert?

Fuer eine bessere Loesung lehnt man sich erst mal zurueck.
Wir wissen, die Stellgroesse setzt sich zusammen aus einem P-Teil, einem 
I-Teil und allenfalls einem D-Teil. Und wir wissen auch, dass 
Stellgroesse:=funktion(T). Dann sollten wir das auch so machen und nicht 
warten bis ein Regler das irgendwann herausfindet.

Also Stellgroesse:= P-Teil + I-Teil + D-Teil + funktion(T) : T=Soll

Diese Funktion(T) finden wir mit einem Durchgang heraus und passen sie 
in eine Tabelle oder ein Polynom. So genau muss das auch nicht sein, 
denn der PID-Regler macht den Rest dann schon.

von Bitflüsterer (Gast)


Lesenswert?

Deine Erlaubnis haben wir nicht nötig.
Aber Du hast unseren guten Willen nötig.
Denk' noch mal über das Problem nach.
Oder kannst Du das auch nicht?

von Stefan (Gast)


Lesenswert?

короткое троль schrieb:
>
> Also Stellgroesse:= P-Teil + I-Teil + D-Teil + funktion(T) : T=Soll
>
> Diese Funktion(T) finden wir mit einem Durchgang heraus und passen sie
> in eine Tabelle oder ein Polynom. So genau muss das auch nicht sein,
> denn der PID-Regler macht den Rest dann schon.

Das soll heißen, man soll den erforderlichen Stellwert zu einem 
gewollten Sollwert "manuell" herausfinden und dann einfach hinzu 
addieren?

von Stefan (Gast)


Lesenswert?

Bitflüsterer schrieb:
> Deine Erlaubnis haben wir nicht nötig.
> Aber Du hast unseren guten Willen nötig.
> Denk' noch mal über das Problem nach.
> Oder kannst Du das auch nicht?

Ne, deswegen frag ich ja

von Bitflüsterer (Gast)


Lesenswert?

> Ne, deswegen frag ich ja

Dann lern' häkeln!

von Stefan (Gast)


Lesenswert?

Bitflüsterer schrieb:
>> Ne, deswegen frag ich ja
>
> Dann lern' häkeln!

Wahrscheinlich wäre man in den entsprechenden Foren hilfsbereiter als Du 
es zu sein scheinst.

Wie schade.

Ich werd's mir dann anders beipulen

Danke an


короткое троль
Ulrich
Dieter Werner

von Btflüsterer (Gast)


Lesenswert?

>Wahrscheinlich wäre man in den entsprechenden Foren hilfsbereiter als Du
>es zu sein scheinst.

Wir waren hilfsbereit. In Bezug auf Dein Regler-Problem und in Bezug auf 
Deine Rechtschreibung.
Was ich nicht vertragen kann sind diese schnoddrigen um nicht zu sagen 
frechen Antworten.

von Stefan (Gast)


Lesenswert?

Btflüsterer schrieb:
>>Wahrscheinlich wäre man in den entsprechenden Foren hilfsbereiter
> als Du
>>es zu sein scheinst.
>
> Wir waren hilfsbereit. In Bezug auf Dein Regler-Problem und in Bezug auf
> Deine Rechtschreibung.
> Was ich nicht vertragen kann sind diese schnoddrigen um nicht zu sagen
> frechen Antworten.




Okay, DEN geb ich mir jetzt noch:

Du hast Dein Pseudonym eben falsch geschrieben, Schatz ;-)

Tschau

( das schreibt man ciao, gell)

von короткое троль (Gast)


Lesenswert?

>Das soll heißen, man soll den erforderlichen Stellwert zu einem
gewollten Sollwert "manuell" herausfinden und dann einfach hinzu
addieren?

Genau. Das muss man ja sowieso. Man stellt also 10% Stellgroesse ein und 
wartet bis das ungeregelte System stabil ist. Ablesen und auf 20% gehen. 
... bis zum Maximum. Das muss man eh machen, um eine Ahnung zur 
Linearitaet des Systems zu haben.
Es kann ja sein, dass die Stellgroesse eine Spannung ist, fuer das 
System aber die Leistung zaehlt. Dann muss man eben irgenwo noch eine 
Wurzel einbauen. Heizsystems sind meist irgendwie nichtlinear. Die macht 
der I-Anteil dann schon weg, man sollte aber eine Idee der Abhaengigkeit 
haben.

von Bitflüsterer (Gast)


Lesenswert?

Meine Güte. Du kannst schon ein fehlendes 'i' erkennen, wenn man Dir 'ne 
Vorlage gibt. Beindruckend - ist das überhaupt nicht.

von Comment (Gast)


Lesenswert?

Btflüsterer schrieb:
>> Wahrscheinlich wäre man in den entsprechenden Foren hilfsbereiter
>> als Du es zu sein scheinst.
>
> Wir waren hilfsbereit. In Bezug auf Dein Regler-Problem und in Bezug auf
> Deine Rechtschreibung.
Wo und wann warst du denn hilfsbereit? Das Einzige, was man von dir 
gelesen hat, waren Antworten wie:
> Dann lern' häkeln!
womit wir beim Thema Antworten sind:
> Was ich nicht vertragen kann sind diese schnoddrigen um nicht zu sagen
> frechen Antworten.
...die in diesem Falle ausschließlich von dir kamen!

von Stefan (Gast)


Lesenswert?

@Comment:
Danke, dass das noch jemand so sieht und auch äußert!

@короткое троль:
Okay, ich nehme dem I-Anteil also den größten Teil der 'Arbeit' ab, 
indem ich immer den zu erwartenden Stellwert zum PID-Algorithmus 
hinzuaddiere.

Macht es dann nicht auch Sinn, den Regler erst in einem Bereich aktiv zu 
schalten, der nahe dem Sollwert liegt (Also z.B. Soll=500° (oder was 
auch immer) -> Regler aktiv zwischen z.B. 480°..520°; dann schaltet sich 
der Regler z.B. erst bei 480° hinzu, bei Werten weit über 520° ist er 
auch nicht aktiv)?

Stefan

von qwreqwer (Gast)


Lesenswert?

Stefan schrieb:
> Macht es dann nicht auch Sinn, den Regler erst in einem Bereich aktiv zu
> schalten, der nahe dem Sollwert liegt (Also z.B. Soll=500° (oder was
> auch immer) -> Regler aktiv zwischen z.B. 480°..520°; dann schaltet sich
> der Regler z.B. erst bei 480° hinzu, bei Werten weit über 520° ist er
> auch nicht aktiv)?

nennt sich AntiWindup!

von Stefan (Gast)


Lesenswert?

Okay!?!

Alles was ich bisher gefunden habe, sah immer so aus, das esum oder auch 
Ki*esum begrenzt wurden, und irgendwie resultiert mein Problem ja auch 
genau daraus.....

Wenn ich jetzt also den Regler nur in einem kleinen Bereich um den 
Sollwert aktiv schalte, kann ich dann ja esum (oder eben Ki*esum) wieder 
auf y_max (in meinem Fall 100%) begrenzen und alles ist gut?!

Stefan

von Stefan (Gast)


Lesenswert?

...
Wenn ich also verschiedene Sollwerte habe, müsste ich den Bereich 
"Regler aktiv" jedesmal mit verschieben (und wahrscheinlich auch in der 
Größe anpassen, bzw. die Beiwerte (Kp,Ki,Kd) umrechnen)?

von думлихер троль (Gast)


Lesenswert?

>Macht es dann nicht auch Sinn, den Regler erst in einem Bereich aktiv zu
schalten, der nahe dem Sollwert liegt (Also z.B. Soll=500° (oder was
auch immer) -> Regler aktiv zwischen z.B. 480°..520°; dann schaltet sich
der Regler z.B. erst bei 480° hinzu, bei Werten weit über 520° ist er
auch nicht aktiv)?

Nee. Wenn man weit vom Ziel weg ist, muss die Stellgroesse in die 
Begrenzung. Anti-windup verhindert, dass der Integrator dann 
weiterlaeuft. Das ist vernuenftig. Vom Regler brauchen wir in diesem 
Bereich erst mal den P-Anteil, denn der jagt das Stellglied in den 
Anschlag.

von Ulrich (Gast)


Lesenswert?

Die Begrenzung des Integralanteils auf einen festen Wert ist eine nicht 
so gute Möglichkeit für Anti-Windup. Nach dem dazu addieren des ersten 
Schätzwertes für den Ausgang geht es damit ggf.. Die einfachere Lösung 
ist das Aufaddieren von esum auszusetzen wenn der Ausgang am Limit ist. 
Das ist einfacher und braucht keine individuelle Anpassung der Grenzen. 
Man kann auch zusätzlich ein Limit setzen - muss es aber nicht.

Den I Anteil erst zu aktivieren wenn der Fehler nicht zu groß ist, kann 
Vorteile habe - ist aber eher keine Alternative zum Anti Windup. Es kann 
aber auch nach hinten los gehen, wenn ohne den Integralanteil der Wert 
nicht erreicht wird. Ob es damit besser wird hängt vom System und den 
Ansprüchen ab - es ist jedenfalls im Gegensatz zum Anti-windup über die 
Grenzen des Ausgangs keine Standardlösung.

Die Linearität sollte man schon grob überprüfen, aber so kritisch ist 
das nicht - man muss im nichtlinearen Fall nur die PID Koeffizienten 
nach dem Arbeitspunkt mit der größten Empfindlichkeit abstimmen. Besser 
wird es aber wenn man so etwas wie den bekannten Zusammenhang Spannung - 
Heizleistung gleich linearisiert.

von Stefan (Gast)


Lesenswert?

короткое троль schrieb:
> Also Stellgroesse:= P-Teil + I-Teil + D-Teil + funktion(T) : T=Soll
>
> Diese Funktion(T) finden wir mit einem Durchgang heraus und passen sie
> in eine Tabelle oder ein Polynom. So genau muss das auch nicht sein,
> denn der PID-Regler macht den Rest dann schon.

Nun gut, also werde ich diesen Weg gehen  und dazu eine Standard-mäßige 
I-Anteil-Begrenzung.

Das wird erst irgendwann Mitte Mai getestet- ich werde mich dann noch 
mal (kurz oder lang, je nach Erfolg ;-) melden.

Soweit erstmal DANKE an Alle die versucht haben meinen dunklen Kopf 
etwas zu erhellen ;-)

Bleibt noch die Frage nach den verschiedenen zu findenden Algorüthmen 
(;-).

oft:


Y=  Kp *e +  Ki*esum + Kd*(e_alt-e_neu)

manchmal:
y = Kp * [e(i) + Ta/Tn * SUM_k=0..i(e(k)) + Tv/Ta (e(i) - e(i-1))]


Mal abgesehen von der unterschiedlichen Schreibweise und einmal 
Abtastzeit in der Formel und einmal sozusagen außen:

Einmal wird nur der aktuelle Fehler mit Kp multipliziert
das andere mal "Alles".

Fehlt mir nur der mathematische Hintergrund um das als gleich anzusehen 
zu können, oder sind das unterschiedliche Ansätze, oder...?

Stefan

von Stefan (Gast)


Lesenswert?

Stefan schrieb:
> Y=  Kp *e +  Ki*esum + Kd*(e_alt-e_neu)


OOPS:

Y=  Kp *e +  Ki*esum + Kd*(e_neu-e_alt)

von Ulrich (Gast)


Lesenswert?

Die beiden gezeigten Formen sind noch äquivalent. Bei der ersten Version 
ist nur esum = SUM_k=0..i(e(k)) extern berechnet (macht auch Sinn). Die 
alten Fehlerwerte muss man sich ja auch nicht merken, es reicht die 
Summe zu aktualisieren (oder wegen Windup ggf. auch nicht).
Sonst sind einfach Ki = Kp*Ta/Tn und Kd = Kp*Tv/Ta als vorweg berechnete 
Größen genutzt.

Die Parameter Tn, Tv sind als Zeiten etwas anschaulicher als Ki,Kp, vor 
allem für die Eingabe. Viele fertige Regler programmiert man daher meist 
mit Kp (Alternativ auch 1/Kp als proportional band - wegen der 
Anschaulicheren Einheit), Tn und Tv.

Für einen relativ langsamen Temperaturregler sollte man ggf. noch eine 
Tiefpass Filterung für das D Glied einbauen, um den Einfluss von höher 
frequentem Rauschen zu reduzieren. Da gibt es mehrere Möglichkeiten: Die 
Abtastzeit anpassen und ggf. schon bei den Messwerten mitteln, oder eine 
Filterung (z.B. ein einfacher IIR Tiefpass) für die Daten oder nur die 
Ableitung.

Mit klassischem Anti-Windup kann man auf den Schätzwert für die Leistung 
auch verzichten - zumindest für den Anfang. Wenn man den Teil dann 
später noch braucht (für eine schnellere Reaktion auf geänderte 
Sollwerte), kann man das gut aus einem Dreieckförmigen Temperaturprofil 
ablesen.

Bei so was langsamen wie Temperaturregelung kann man sich auch den Luxus 
einer Berechnung mit Fließkommazahlen leisten.

von Stefan (Gast)


Lesenswert?

Ulrich schrieb:
> Die beiden gezeigten Formen sind noch äquivalent. Bei der ersten Version
> ist nur esum = SUM_k=0..i(e(k)) extern berechnet

Klar, verstehe ich.

Ulrich schrieb:
> Die Parameter Tn, Tv sind als Zeiten etwas anschaulicher als Ki,Kp, vor
> allem für die Eingabe. Viele fertige Regler programmiert man daher meist
> mit Kp, Tn und Tv.

Auch klar.

Ulrich schrieb:
> Sonst sind einfach Ki = Kp*Ta/Tn und Kd = Kp*Tv/Ta als vorweg berechnete
> Größen genutzt.

Tja, da mangelt es dann wohl an der mathematischen Herleitung des Ganzen 
bei mir.
Für mich scheinen Kp und Ki (bzw. Ta/Tn) und Kd (bzw. Tv/Ta) völlig 
unabhängig von einander parametrierbare Werte (dass sie den 
Regelungsprozess beeinflussen und, mmh, wie soll ich es sagen, die Größe 
des einen das Verhalten des anderen irgendwie mitbeinflusst, kann ich 
mir noch vorstellen).

Ulrich schrieb:
> Mit klassischem Anti-Windup kann man auf den Schätzwert für die Leistung
> auch verzichten

Mmh- dieses Problem dachte ich gerade losgeworden zu sein..
Wenn ich einen Sollwert und einen Istwert von 500 habe (Also einen 
"stabilen" Zustand), den I-Anteil auf 100 (y_max sozusagen) begrenze 
einen Reglerausgang von 50 (0..100%) müsste Ki  ja 5.0 sein.

Das Gleiche bei Soll/Ist = 100 -> Ki müsste 0.5 sein.

Ein derart unterschiedliches Ki beeinflusst aber doch das 
Reglerverhalten extrem, oder nicht?

Deshalb kam mir короткое трольs Vorschlag genau sinnvoll vor (ich habe 
das bei nem Synchronlauf 2er Antriebe auch schon mal erfolgreich so 
gemacht: Y= Y_Soll + Kp*Fehler, wobei Y der Geschwindigkeitssollwert des 
geführten Antriebs ist; wie ich genau den Fehler errechnet habe müsste 
ich erst mal nachschauen..).

Ich glaube, bald steck ich auf... Oder teste es dann eines Tages einfach 
so oder so- und bekomme dann ein Gefühl dafür (oder eben auch nicht ;-)

Stefan

von Stefan (Gast)


Lesenswert?

Stefan schrieb:
> Das Gleiche bei Soll/Ist = 100 -> Ki müsste 0.5 sein.

Das Gleiche bei Soll=Ist = 100

von Stefan (Gast)


Lesenswert?

Stefan schrieb:
>einen Reglerausgang von 50 (0..100%) müsste Ki  ja 5.0 sein.

>Das Gleiche bei Soll/Ist = 100 -> Ki müsste 0.5 sein.

einen Reglerausgang von 50 (0..100%) müsste Ki  ja mindestens 5.0 sein.

Das Gleiche bei Soll/Ist = 100 -> Ki müsste mindestens 0.5 sein.

Beide eher noch um Einiges größer!

von Stefan (Gast)


Lesenswert?

Ulrich schrieb:
> Die Begrenzung des Integralanteils auf einen festen Wert ist eine nicht
> so gute Möglichkeit für Anti-Windup. Nach dem

@Ulrich..

Sorry, ich Dein mit oben zitiertem Satz beginnende Posting übersehen.

Gut, wenn man  den I-Anteil nicht begrenzt, sind meine Überlegungen 
bezüglich Ki vielleicht hinfällig.


Ich denke, ich werde mehrere Varianten implementieren und hoffe Mitte 
Mai dann genug Zeit zum Testen zu bekommen..Oft macht man sich ja im 
Vorhinein auch zu viele Gedanken.. ich persönlich neige zumindest dazu 
;-)


Und melde mich dann, wie's ausgegangen ist.


Vielen Dank Euch allen noch mal! Ihr habt Euch wirklich Mühe mit mir 
gegeben ;-)
Danke

Stefan

von Ulrich (Gast)


Lesenswert?

Die Regelparameter (Kp,Ki,Kp bzw. Kp,Tn,Tv)) muss man schon an das 
System anpassen - nicht an die Begrenzung des Integrals. Man muss 
andersherum die Grenze an Kp anpassen. Oft ist es auch besser gleich die 
Grenze für Ki*esum festzulegen. Da kann man sich dann auch was drunter 
vorstellen. Bei der Summe gleich den Faktor Ki mit drin zu haben hat 
auch den Vorteil, dass man damit Ki auch bei laufendem Regler verändern 
kann, ohne das es zu großen Sprüngen kommt.

Für das Anti-Windup gibt es halt verschiedene Möglichkeiten:
1) Eine Grenze für esum. Da muss man die Grenze aber an Ki anpassen, 
etwa als Grenze = Max_ausgang / Ki , oder einen Teil davon. Hilfreich 
ist dabei auch wenn man den Schätzwert in der Formel dazu nimmt - das 
sorgt dafür das die Grenzen etwa passend mit wandern. Damit können die 
Limits ggf. kleiner werden. Es bleibt aber, dass man sich passende 
Grenzen noch Aussuchen muss: nicht zu klein, damit der Endwert auch 
erreicht wird und wenn möglich auch schnell genug, aber auch nicht zu 
groß, sonst hat man weiter Windup - wenn auch mit begrenzter Größe.
2) Man nutzt das Limit beim Ausgang als Kriterium. Etwa so das man beim 
Erreichen des Limits esum nicht mehr weiter aufaddiert, oder dann wenn 
das Limit erreicht wird esum neu berechnet, so das gerade so das Limit 
erreicht wird. Für diese Version braucht man den Schätzwert nicht, weil 
man halt keine starre Grenze mehr hat, sondern die feste Grenze des 
Aktors. Der Schätzwert kann trotzdem Hilfreich sein um Änderungen des 
Sollwertes schneller zu folgen - das hat dann aber nichts mehr mit den 
Anti-Windup zu tun.

Meiner Meinung nach ist die 1. Version vom Anti-Windup keine gute 
alleinige Lösung. Das ist bestenfalls eine Ergänzung zur Ausführung 2).


Die beiden Gleichungen Ki = Kp*Ta/Tn und Kd = Kp*Tv/Ta bekommt man 
einfach durch den Vergleich der Koeffizienten vor dem Integral und der 
Ableitung - so dass die beiden Formen halt gleich sind.

von Stefan (Gast)


Lesenswert?

Rückmeldung:

Das war ja leicht!!

es werden 2-3 m3 Wasser erhitzt, eine Pumpe wälzt die gesamte Menge in 
ca. 3 Minuten um. Es geht immer Wasser verloren, das neue (kalte) wird 
ein paar Meter (Rohrleitung) vor dem Brenner eingeleitet.

Es gibt einen Temp-Sensor direkt hinter dem Brenner, einen irgendwo in 
der Wanne, in der sich das Wasser befindet.

Durch Wsser-Ablass konnte die Störgröße (eigentlich vor allem kalte 
Lebensmittel, die gekocht werden sollen (95°C)) grob simuliert werden.


Ich hatte alles mögliche vorbereitet, so z.B., dass bei erstmaligem 
Überschreiten des Sollwertes der I-Anteil (und somit quasi auch das 
Ausgangssignal des Reglers) auf den "Arbeitspunkt" gesetzt wird.


Das ganze ist aber VIEL dynamischer, als ich mir das vorgestellt habe, 
dass heißt, der Brenner fährt "ständig", voll auf oder zu.

Der Inbetriebnehmer, der ansonsten die gleiche Funktion mit eingekauften 
Reglern umgesetzt hat, meinte, das sehe genau so aus, wie es sollte.

Nach 6 Stunden (mit vorherigem Umbau und späterem Rückbau) waren wir 
schon wieder auf dem Heimweg-COOL ;-)

Was ich gelassen habe, ist, dass der I-Anteil auf min./max. Stellwert 
begrenzt wird.

Wie gesagt, ich hätte nie gedacht, dass sich die ganze Geschichte SOOO 
dynamisch verhält.

Mein  Fazit ersteinmal: geht doch- die anderen kochen auch nur mit 
Wasser (sic!) ;-)


Euch noch einmal vielen Dank, insbesondere an Ulrich, der sich auch 
nicht zu schade war, Dinge mehrmals zu beschreiben, weil ich sie beim 
ersten Lesen noch nicht gerafft hatte, aber auch an die russische (?) 
Fraktion- Ihr habt mir alle sehr geholfen- ich denke mal, der erste 
Schritt zum Verständnis von Regelungstechnik ist getan!

Besten Dank und bis dahin,

Stefan

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Korrektur Rückmeldung
Ich muss das noch mal richtig stellen, wenn es auch schon lange her ist:

diese von mir beschriebene 'Dynamik' ist so gar nicht vorhanden, sie 
entstand nur dadurch, dass wir durch Kaltwasserzulauf den Prozess zu 
simulieren versuchten.

Im echten Betrieb zeigte sich dann, dass sich das ganze doch sauber 
ausregelt, und die Temperatur, bei einigermaßen konstanten Umgebungs- 
und Produktionsbedingungen, mit kleinen (3-5%) Änderungen des 
Brennerventils auf +/- 0,2° C genau halten lässt.

Mit einem Arbeitspunkt konnte ich nicht arbeiten- der läge manchmal bei 
10%, ein anderes mal bei 70% (je nach Umgebungs- und 
Produktionsbedingungen).

Mit den Anteilen habe ich lange herumgespielt- am wichtigsten, war aber 
die Erkenntnis, dass die ABTASTZEIT passen muss- ich konnte sehen, dass, 
wenn das System ausgeregelt war, eine Änderung des Brennerventils erst 
ca. 30-35 Sekunden später am Sensor 'ankam'! Dies habe ich dann als 
Abtastzeit genommen.

Allerdings nur, solange die Temperatur sich innerhalb eines Fensters von 
-0,4° bis +0,3° um den Sollwert befindet.
Denn wenn sich die Bedingungen ändern (z.B. kein Material kommt nach), 
kann die Temperatur schnell über 102,103° Grad kommen, was ich dann mit 
Abschaltung des Brenners quittieren muss.

Ich wusste mir nicht anders zu helfen, als außerhalb dieses Fensters 
(-0,4° bis +0,3° um den Sollwert), Ta auf 5 Sekunden zu setzen. Dass ist 
natürlich eigentlich für die Regelung totaler Unsinn, funktioniert aber 
zum Glück; meist ist das System nach 60-120 Sekunden wieder in Ruhe.

Wenn kaltes Wasser zugeführt wird (die Temperatur am Sensor hinter dem 
Brenner sinkt rapide um ca. 5-10° C), wird das ganze unruhig.

Um nach dem Wasserzulauf kein zu heftiges Überschwingen zu haben, friere 
ich den I-Anteil solange ein (Zeiten gestoppt, es dauert ca. 45 Sekunden 
vom Öffnen des Wasserventils bis es am Sensor angelangt).

So schwingt das ganze um max. ca 1,5 Grad über (Brenner war zuvor bei 
80-100%).

Ich habe ein Diagramm meines Datenloggings angehängt.
Dort kann man die Temperatureinbrüche durch die Wasserzufuhr auch 
erkennen (meistens mehrmals direkt nacheinander).

Vielleicht hilft das ja irgendjemandem, ansonsten nochmals vielen Dank 
für Eure Hilfe!

Stefan

von Stefan (Gast)


Lesenswert?

Ich vergaß:
Wenn die Temperatur außerhalb des 'Fensters' ist, arbeite ich mit 
anderen Parametern (u.A. schalte ich einen D-Anteil hinzu)

Wenn Ist-Temperatur = Soll-Temperatur UND die Ist-Temperatur vorher 30 
Sekunden lang innerhalb des 'Fensters' war, schalte ich auf Ta=35 
Sekunden zurück.

Schön wäre eigentlich noch, irgendeine kaskadierte Regelung zu haben, um 
direkt auf die Temperatur des Bassins regeln zu können; da habe ich mich 
aber dann nicht ran getraut, mein Kunde hielt das für unnötig, der 
Endkunde wollte natürlich produzieren- keine Zeit, keine Zeit....


Stefan

von Stefan (Gast)


Lesenswert?

Soo,

jetzt habe ich das Ganze noch einmal mit einem Dampfventil anstatt eines 
Brenners in Betrieb genommen.

Das Ventil reagiert sehr schnell (0..100% in vielleicht 2 Sekunden, im 
Gegensatz zum Brenner: 35 Sekunden).

Durch ein viel kürzeres und optimiertes Rohrsystem, wird das Wasser nun 
auch wirklich in wenigen Minuten komplett "durchgespült".

Ich habe im Prinzip alles so gelassen, lediglich die Abtastzeit und die 
PID-Parameter verändert.

So weit so gut.

Was mir jetzt allerdings noch mal klar wurde: eines meiner anfänglichen 
Verständnisprobleme hat sich nicht wirklich geklärt:


Durch die lange Aufheizphase steigt der I-Anteil bis zum Erreichen der 
Solltemperatur bis auf sein Maximun (habe ich max. Stellwert = 100 
gesetzt)
an, sodass dann der I-Anteil erst wieder auf den jeweiligen 
"Arbeitspunkt" herabschrumpfen muss.

Dadurch würde aber die Temperatur viel zu stark überschwingen.

Mache ich Tn aber sehr klein, fällt der I-Anteil zwar schneller wieder 
ab, aber die Regelung im wirklichen Prozess würde instabil.


Ich begrenze den I-Anteil bei Überschreitung von Soll * 0,3° jetzt 
einfach auf 50%- das funktioniert, ist aber auch nicht gerade elegant 
und könnte, wenn der Arbeitspunkt irgendwann vielleicht mal bei 80 oder 
90% läge zu Problemen führen.

Irgendjemand Vorschläge?

Stefan

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.