# Kaskadierte Regelung



## zummi

Hallo,

ich habe momentan bei einer Temperaturregelung das Problem, dass diese beim Hochheizen auf 315°C um 5°C überschwingt. Verwende dazu den PIDE Baustein aus RsLogix mit der integrierten Autotuning-Funktion.

Bekomme über einen PT100 den Ist-Wert und gebe den Sollwert über ein Thyristormodul aus, welches meine Heizung Pulsweise (PWM) ansteuert.

Kann man das Überschwingen mithilfe einer kaskadierten Regelung, also hintereinanderschalten von 2 PIDE-Bausteinen eventuell lösen oder macht das in diesem Fall wenig Sinn?

Hat jemand schon mit ZCDeadband und ZCOff gearbeitet und eine Verbesserung festgestellt?

Gruß


----------



## IBFS

zummi schrieb:


> Hallo,
> 
> ich habe momentan bei einer Temperaturregelung das Problem, dass diese beim Hochheizen auf 315°C um 5°C überschwingt.



Was errechnet denn das Autotuning-TOOL für Werte?

Ich würde den Verstärkungsfaktor reduzieren und einen
gemächlichen I-Anteil parametrieren.

Der Heizkurvenanstieg muss einfach flacher werden, weil du 
die vorhandene Totzeit sonst nicht in den Griff gekommst.

Frank


----------



## zummi

IBFS schrieb:


> Was errechnet denn das Autotuning-TOOL für Werte?


 Bekomme vom Autotuner z.B. folgende 3 verschiedenen Werte:

      Slow 
  P: 3,91788   
I: 5,10658 
  D: 0,35518       

Medium   
P: 7,83576   
I: 10,21320 
  D: 0,71036 

Fast   
P: 11,75360 
  I: 15,31970   
D: 1,06554   



IBFS schrieb:


> Ich würde den Verstärkungsfaktor reduzieren und einen
> gemächlichen I-Anteil parametrieren.


 Ja, nur will ich an den Parametern nichts verändern da der Kunde später den Knopf "autotuning" drücken will und die kompletten Parameter werden richtig ermittelt und abgespeichert.



IBFS schrieb:


> Der Heizkurvenanstieg muss einfach flacher werden, weil du die vorhandene Totzeit sonst nicht in den Griff gekommst.


 Ich gebe jede Minute einen neuen Sollwert vor bis der Endwert erreicht wird. Pro Minute ist somit ein Anstieg von circa 5°C. Hat Materialspezifische Gründe, damit dieses nicht durch zu schnelle Aufheizung kaputt geht. Sollte ich also nur 3°C pro Minute machen oder wie meinst du das?


----------



## IBFS

Also wenn du bzw. der Kunde das Autotuning nehmen will/muss, dann 
kann man an der Parameterschraube nicht drehen. 

Autotuner  versuchen immer einen Kompromiss zwischen 
Schnellligkeit der Regelung und dem Überschwingen zu finden.

Laut Lehrbuch hat eine vernünftig eingestellte Regelung immer
ein geringes Überschwingen - bei 315°C sind 5°C nicht viel aber 
nur dann, wenn du deinen END-Sollwert wirklich aus dem Stand 
setzen würdest. Das machst du ja garnicht sondern fährst ein 
Kurven über ein Programm hoch DELTA 5 °C pro Minute. Das will
mir nicht in den Sinn, bei 5°C Änderung hast du 5°C Überschwingen???
Wie soll das gehen -- oder ich habe es nicht verstanden - egal.  

Die Frage ist, ob es für das Endprodukt ein qualitatives/technisches
Problem gibt, wenn deine Regelung "etwas" überschwingt.

Erkläre mir mal bitte wie groß des Überschwingen zu welchen 
Zeitpunkt ist. 

Frank


----------



## zummi

IBFS schrieb:


> Erkläre mir mal bitte wie groß des Überschwingen zu welchen Zeitpunkt ist.


 Beim Hochheizen von Umgebungstemperatur auf 315°C regelt der PIDE sehr gut und sobald er den Endwert, also 315°C, erreicht hat, schwingt er um 5°C für circa 10 Minuten über. Nach 10 Minuten hat er also von circa 320°C wieder 315°C erreicht und kann das auch stabil halten.  

Der Regler gibt mir einen Ausgangswert zwischen 0 und 100%, diese skaliere ich dann auch eine Integervariable (0% = 0 und 100% = 32767) und sende diese über eine PWM an meine Heizung. 100% = 32747 = volle Ansteuerung der Heizung.  

Beim Hochheizen gibt der Regler in etwa 80% aus und sobald er den Sollwert 315°C erreicht hat, geht er langsam damit zurück. Er geht aber zu langsam mit dem Ausgang zurück und schwingt somit über. Nach circa 10 Minuten ist er dann bei 40% und das ist genau der Ausgangswert um 315°C zu halten.  Die Zeit von 80% auf 40% dauert also zu lange. Der Regler müsste viel schneller mit dem Ausgangswert bei erreichen des Endwertes (Sollwert 315°C) zurück gehen, damit liese sich auch das lange Überschwingen verkürzen.  

Hoffe ich habe das Problem verständlich formuliert, ansonsten einfach nachfragen!  

Irgendwelche Ideen um das Problem zu beseitigen? 

Danke für die Hilfe.
*
Nachtrag: *Im Anhang hab ich dazu mal ein Diagramm in Excel erstellt. Blau ist mein Istwert vom PT100 Temp.Sensor, Pink ist der Istwert der jede Minute um 5°C steigt bis er 315°C erreicht. Gelb ist der Ausgangswert vom PIDE-Regler in %.


----------



## IBFS

zummi schrieb:


> Irgendwelche Ideen um das Problem zu beseitigen?



Ich würde ganz spontan sagen, das kommt davon, das der I-Anteil nicht begrenzt ist. Das ist leider in vielen Reglern garnicht drin oder muss erst eingeschaltet werden.

Auszug aus: [http://de.wikipedia.org/wiki/Regler]

*Wind-up-Effekt bei Großsignalverhalten:* Wenn beim I-Regler die Stellgröße *u(t)*  durch die Regelstrecke begrenzt wird, tritt ein sogenannter  *Wind-up-Effekt* auf. *Dabei arbeitet die Integration des Reglers weiter,  ohne dass die Stellgröße zunimmt. *Wird die Regelabweichung *e(t)* kleiner, entsteht beim Rücklauf von *u(t)* eine ungewollte Verzögerung der Stellgröße und damit der Regelgröße *y(t)*. Dem tritt man mit der Begrenzung der Integration auf die Stellgrößen-Grenzen entgegen *(Anti-wind-up)* (oder durch Absperrung des I-Gliedes).

Gruß 

Frank


----------



## zummi

IBFS schrieb:


> Ich würde ganz spontan sagen, das kommt davon, das der I-Anteil nicht begrenzt ist. Das ist leider in vielen Reglern garnicht drin oder muss erst eingeschaltet werden.


 In der Doku auf Seite 20 steht etwas mit WindupHIn und WinupLIn. Jedoch bezieht sich das auf eine kaskadierte Regelung:
http://samplecode.rockwellautomation.com/idc/groups/literature/documents/wp/logix-wp008_-en-p.pdf

Kaskadierte Regelung ist bei mir wahrscheinlich daher nicht möglich, weil ich nur einen Istwert habe und zwar den vom PT100 Temperatursensor.

Auszug aus der RS Logix Hilfe:

_*WindupHIn (BOOL) Windup high request.  *
When set, the CV is not allowed to increase in value.  This signal is typically obtained from the WindupHOut output from a secondary loop. Default is cleared.

*WindupLIn (BOOL) Windup low request.  *_ _
When set, the CV is not allowed to decrease in value.  This signal is typically obtained from the WindupLOut output from a secondary loop. Default is cleared._

Ich verstehe das so, dass er den CV (Control Value = Ausgangswert vom PIDE Regler) bei setzten von WindupHIn nicht mehr erhöhen darf. Hab ich den Sollwert (Endwert) erreicht, erhöht er den CV-Wert aber nicht mehr sondern geht lediglich zu langsam zurück. Ist also nicht die Lösung für das Problem, oder?


----------



## IBFS

Es kann natürlich sein, das im PrimaryLoop, deinen ersten und einzigen  
Regler das Autowindup schon fest drin ist. Leider steht das wohl nirgens.   

Versuche mal folgendes:

Wenn der Stellwert 100% ist, dann setze den Eingang WindupHIn
Wenn der Stellwert    0% ist, dann setze den Eingang WindupLIn 

Wenn das Verhalten der Regelung dann gleich bleibt, dann wirkt bei
100% bzw. 0% schon automatisch ein "nicht dokumentierter" interner
AutoWindUp.

Frank


----------



## zummi

Okay, werde ich machen. 

Zuvor noch etwas anderes:

Folgendes Dokument auf S. 21:
http://www.plcs.net/downloads/index...nhanced PID PIDE.pdf&directory=Allen_Bradley&

Kapitel "Zero Crossing Deadband Control".

Könnte ich mein Problem mit dem ZCOff und ZCDeadband lösen?


----------



## zummi

Das mit ZCDeadband verstehe ich so, dass sich der ControlValue (CV) Wert nicht ändert, solange der Fehler kleiner dem eingestellten Wert von ZCDeadband ist. Ist der Wert größer wird CV neu berechnet. Der Fehler ist vermutlich die Abweichung von Sollwert zu Istwert.

Würde mir also gar nichts bringen oder? Ich will ja genau das Gegenteil - also dass er schnell bei einer Differenz zw. Sollwert und Istwert auf die Abweichung reagiert und diese beseitigt.


----------



## zummi

Hallo zusammen,

hat noch wer weitere Ideen?

Gruß


----------



## IBFS

zummi schrieb:


> hat noch wer weitere Ideen?



Hast du denn die Variante aus POST #8 probiert?
Was ist dabei herausgekommen?

Frank


----------



## Thomas_v2.1

IBFS schrieb:


> Hast du denn die Variante aus POST #8 probiert?
> Was ist dabei herausgekommen?



Laut seiner Trendkurve sieht es nicht so aus als ob der Regler schon in der Sättigung ist. Sonst würde der Sollwertsprung doch garkeinen Sprung in CV mehr auslösen. Ich gehe dabei mal davon aus dass CV von 0 bis 100 geht,

Wenn man an den Reglerparmatern eh nichts verstellen kann, bzw. der Kunde diese nachher noch verstellt, bleibt ja nicht mehr viel übrig woran du drehen kannst. Die Reglerparameter die berechnet werden scheinen ja ein Überschwingen zu erlauben, oder sind auf Störverhalten anstatt Führungsverhalten optimiert.

Das einzige was mir einfallen würde, wäre
a) Die Sollwertsprünge auf kleinere Abschnitte aufteilen, also den Sollwert eine kontinuierliche Rampe hochfahren. Zumindest bevor der Sollwert erreicht ist würde ich so verfahren, denn dann hast du nicht diesen großen Stellwertsprung aufgrund des P-Anteils.

b) Die Sollwertrampe kurz vor erreichen des Endwertes verlangsamen, damit der Regler mehr Zeit hat sich vollständig einzuschwingen.


----------



## zummi

IBFS schrieb:


> Hast du denn die Variante aus POST #8 probiert?
> Was ist dabei herausgekommen?


 Japp, habe ich am Freitag schon gemacht. Sobald ich den Eingang setze, ändert sich nichts, zumindest ist es auf den Aufzeichnungen nicht zu erkennen. Ich vermute also, dass der Antiwinup schon integriert ist.



			
				Thomas_v2.1 schrieb:
			
		

> Laut seiner Trendkurve sieht es nicht so aus als ob der Regler  schon in der Sättigung ist. Sonst würde der Sollwertsprung doch  garkeinen Sprung in CV mehr auslösen. Ich gehe dabei mal davon aus dass  CV von 0 bis 100 geht,
> 
> Wenn man an den Reglerparmatern eh nichts verstellen kann, bzw. der  Kunde diese nachher noch verstellt, bleibt ja nicht mehr viel übrig  woran du drehen kannst. Die Reglerparameter die berechnet werden  scheinen ja ein Überschwingen zu erlauben, oder sind auf Störverhalten  anstatt Führungsverhalten optimiert.


 Ja das ist richtig, ich kann an den Parametern nichts ändern, aber ich dachte an eine andere Beschaltung oder an eine Funktion, die ich eventuell übersehen habe. Das Autotuning ermittelt für das Hochheizen ganz gute Werte und auch das Regeln auf 315°C zu halten ist gut, es ist lediglich der kleine Überschwinger welcher mir einen Alarm auslöst weil die Max.Temperatur um 4°C überschritten wird. Ich kann diesen Alarm natürlich hochsetzten, damit er erst bei 10°C auslöst, aber zuerst wollte ich prüfen, ob ich den Überschwinger vermeiden kann.



			
				Thomas_v2.1 schrieb:
			
		

> Das einzige was mir einfallen würde, wäre
> a) Die Sollwertsprünge auf kleinere Abschnitte aufteilen, also den  Sollwert eine kontinuierliche Rampe hochfahren. Zumindest bevor der  Sollwert erreicht ist würde ich so verfahren, denn dann hast du nicht  diesen großen Stellwertsprung aufgrund des P-Anteils.
> 
> b) Die Sollwertrampe kurz vor erreichen des Endwertes verlangsamen,  damit der Regler mehr Zeit hat sich vollständig einzuschwingen.



zu a) Das habe ich auch schon versucht. Der Sollwert geht nun nicht mehr 5°C pro Minute sondern 5°C/60 pro Sekunde hoch. Das Hochheizen ist etwas schöner geworden, also Soll- und Istwert weisen eine geringere Differenz auf aber der Überschwinger bleibt.

zu b) ist eine gute Idee, könnte ich noch einbauen. Wäre dann zwar die Holzfällermethode, aber würde funktionieren denk ich mal.

Also seid ihr der Meinung, dass ich anhand der Parametrierung, Beschaltung etc nichts mehr am Regler verbessern/Einstellen kann, damit die Regelung verbessert wird?

Grüßle


----------



## IBFS

zummi schrieb:


> Also seid ihr der Meinung, dass ich anhand der Parametrierung, Beschaltung etc nichts mehr am Regler verbessern/Einstellen kann, damit die Regelung verbessert wird?



Da du ja an den - vom Wizard erzeugten - Werten nicht ändern willst, habe ich momentan keine andere Idee.

Frank


----------



## Thomas_v2.1

Tip: Wenn du des Englischen mächtig bist, kannst du deine Frage auch mal bei plctalk stellen ( http://www.plctalk.net ).
Dort sind einige echte Regelungstechnik-Gurus unterwegs. Leute sich sich mit den RS Logix-Reglern auskennen wirst du dort auch eher treffen als hier.


----------



## IBFS

Thomas_v2.1 schrieb:


> Tip: Wenn du des Englischen mächtig bist, kannst du deine Frage auch mal bei plctalk stellen ( http://www.plctalk.net ).
> Dort sind einige echte Regelungstechnik-Gurus unterwegs. Leute sich sich mit den RS Logix-Reglern auskennen wirst du dort auch eher treffen als hier.



1. Er - der Themenstarter - hat ein paar wichtige Einschränkungen und damit sind die Wahlmöglichkeiten und Stellschrauben eingeschränkt.

2. Es würde ja schon reichen, wenn es - vgl. SIEMENS - vernünftige Blockschaltbilder der AB-Regler gäbe. Leider sind aber die Rockwelldokus
mehr als unterirdisch und viel zu unergiebig und viel zu kurz.

Frank


----------



## Thomas_v2.1

IBFS schrieb:


> 2. Es würde ja schon reichen, wenn es - vgl. SIEMENS - vernünftige Blockschaltbilder der AB-Regler gäbe. Leider sind aber die Rockwelldokus
> mehr als unterirdisch und viel zu unergiebig und viel zu kurz.


In der Siemens-Dokumentation zum CONT_C findet man an keiner Stelle eine Information ob der Regler einen internen Anti-Windup besitzt oder nicht. Also ich würde hier Siemens nicht als Referenz für gute Dokumentation heranziehen.


----------



## IBFS

Thomas_v2.1 schrieb:


> In der Siemens-Dokumentation zum CONT_C findet man an keiner Stelle eine Information ob der Regler einen internen Anti-Windup besitzt oder nicht. Also ich würde hier Siemens nicht als Referenz für gute Dokumentation heranziehen.



Wenn es einen "Anti Reset Wind-up" im CONT_C gäbe, würde es dastehen.
Stattdessen gibt es ein schönes Blockschaltbild und einen "INT_HOLD"-Eingang
der beschrieben und in der Grafik dargestellt ist. Das ersetzt aber nicht den
"Anti Reset Wind-up" 

Im im Produkt Standard-PID-Control hingegen die Funkion hingegen enthalten und 
auch beschrieben -->  Seite  104 (4-44)   siehe PDF

Frank


----------



## Thomas_v2.1

IBFS schrieb:


> Wenn es einen "Anti Reset Wind-up" im CONT_C gäbe, würde es dastehen.
> Stattdessen gibt es ein schönes Blockschaltbild und einen "INT_HOLD"-Eingang
> der beschrieben und in der Grafik dargestellt ist. Das ersetzt aber nicht den
> "Anti Reset Wind-up"


Vertrauen ist gut, Kontrolle ist besser.

Ich geb dir mal einen heißen Tip:
Starte den CONT_C Regler als PI-Regler und lass den Ausgang hochlaufen.
Frage:
- Was macht der Ausgang LMN_I wenn der Ausgang LMN bei 100 ist? Läuft dieser weiter hoch?
- Wozu sind die statischen Variablen "sbArwHLmnOn" und "sbArwLLmnOn", und was könnte "Arw" bedeuten?


----------



## zummi

Hallo zusammen,

ich hatte gerade eine Idee:

Was, wenn ich beim Hochheizen den I- und D-Anteil komplett entferne und nur den D-Anteil verwende, also nur P-Regler. Sobald ich den Endwert erreicht habe, schalte ich den I-Anteil zu, also ab dem Zeitpunkt wo 315°C erreicht werden eine PI-Regelung.

Was meint ihr dazu?

Gruß


----------



## IBFS

zummi schrieb:


> ..... und nur den P-Anteil verwende, also nur P-Regler.



komplett einzelne Anteil wegschalten bzw. Im Betrieb umschalten geht bei vielen Regler nicht, denn sie schalten immer nur bei einen Neustart des Reglers die Struktur um...
In deiner Situation wäre es aber einen Versuch wert.

frank


----------

