Step 7 Regelung mit FB41 CONT_C

trabajador73

Level-2
Beiträge
112
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
für eine Regelung soll der FB41 CONT_C verwendet werden.
Folgende Beschaltung wurde vorgenommen:
Eingangsseite:
PV_IN: Temperaturistwert
SP_INT: Temperatursollwert
MAN_ON: Nullmerker
P_SEL: Einsmerker
I_SEL: Einsmerker
D_SEL: Nullmerker
CYCLE: T#1S
GAIN: negative Zahl, zwischen (-2) und (-0,0001)
TI: Zahl zwischen 1 und 5 Sekunden
TD: T#0S
LMN_HLM: 100
LMN_LLM: 0
Ausgangsseite:
LMN_PER: PAW10 (für analogen Eingang von FU)

Regelvorgang:
Ein FU gesteuerter Ventilator soll die Temperatur herunterkühlen. Dieser Ventilator wird ca. 5 Grad über der Solltemperatur eingeschaltet, und wenn die Solltemperatur erreicht ist, dann wird der Ventilator ausgeschaltet.
Die Regelung soll anfangs den Ventilator mit möglichst großer Drehzahl laufen lassen und mit abnehmender Temperatur auch immer geringerer Drehzahl.
Die Regelung wurde bereits mit einem Unscalebaustein umgesetzt, denn der FU bekommt für die Ventilatordrehzahlregelung einen Analogwert zwischen 4-20mA. Jedoch der Kunde ist damit nicht zufrieden, und möchte eine PID-Regelung, bei welcher er selber die einzelnen Anteile einstellen kann.
Die bisherige PID-Regelung wurde nur mit dem Simulationsprogramm von Simatic getestet und dabei folgendes festgestellt:
Wenn der Sollwert kleiner als die Isttemperatur ist, dann steigt der Wert unterschiedlich schnell auch an, je nach gewählten P- und I-Anteil. Wenn der Istwert anschließend unter dem Sollwert gewählt wird, dann sinkt der Wert, bis dieser die null erreicht hat. Wenn Soll- und Istwert gleich sind, dann bleibt der am Ausgang ausgegebene Wert konstant.
Damit eine für diesen Anwendungsfall brauchbare Regelung zustande kommt, müsste anfangs die Drehzahl sehr hoch sein und dann langsam abnehmen. Aber je nach P-Anteil geht der Ausgangswert sehr hoch und bleibt dann bis erreichen des Sollwertes auf dem Maximalwert. Diese Regelung würde nicht funktionieren.
Wurde der Baustein nicht richtig parametriert von mir oder ist der Baustein für eine solche Regelung nicht geeignet? Wenn ja, welcher Baustein ist denn für diese Regelung geeignet?
Danke für Eure Unterstützung.
 
Du willst bzw. der Kunde will einen PID-Regler und dieser Regler soll erst dann aktiv werden, wenn die SollTemperatur um 5 K überschritten wird?
Wenn der PID-Regler dann aktiv ist, soll er die IstTemperatur auf die SollTemperatur herunterregeln und dann was?
Soll er dann die IstTemperatur weiterhin auf der SollTemperatur halten (wenn ja, wie lange?) oder soll er dann inaktiviert werden, bis die IstTemperatur wieder um 5 K grösser als die SollTemperatur geworden ist?
Ich verstehe nicht, warum überhaupt PID-Regler, wenn es nicht darum geht, die IstTemperatur konstant zu halten (oder den IstWert mit geringer Toleranz einem sich verändernden SollWert folgen zu lassen).
Ich verstehe auch nicht, warum Du schreibst "dann steigt der Wert unterschiedlich schnell auch an, je nach gewählten P- und I-Anteil".
Der P-, I- und D-Anteil sollten passend zu den Eigenschaften des RegelKreises ermittelt und festgelegt werden und nicht nach Lust und Laune.
Der Wert sollte sofort abrupt ansteigen (aber nicht unterschiedlich schnell), wenn Du den RegelVorgang mit einer (erheblichen) RegelAbweichung von 5 K startest.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist wichtig, dass du den CONT_C in dem von dir parametrierten Zyklus von 1 Sekunde aufrufst und nicht ohne weitere Bedingung z.B. in jedem OB1 Zyklus.
Am Besten ist es, wenn du den Aufruf in einen Interrupt-OB wie den OB35 aufrufst. Dann wäre Cycle aber auf 100ms zu parametrieren, falls der Aufrufzyklus in der HW-Konfig nicht anders eingestellt wurde.

Um den Regler nach dem Einschalten mit einem Startwert beginnen zu lassen, verwende ich persönlich dafür die MAN und MAN_ON Parameter. Soll der FU nach dem Einschalten mit 100% beginnen, dann setzt du MAN_ON auf true wenn der FU ausgeschaltet ist und MAN auf 100.0. Wenn du den FU einschaltest und dann MAN_ON auf false setzt, dann regelt der Regler von 100% an weiter. Intern wird damit der gespeicherte I-Anteil so vorgeladen, dass der Handwert als Startwert für die Stellgröße der Regelung wirkt.
 
Zuletzt bearbeitet:
"Du willst bzw. der Kunde will einen PID-Regler und dieser Regler soll erst dann aktiv werden, wenn die SollTemperatur um 5 K überschritten wird?
Wenn der PID-Regler dann aktiv ist, soll er die IstTemperatur auf die SollTemperatur herunterregeln und dann was?"

Dann wird der FU eingeschaltet und der angeschlossene Motor beginnt zu laufen, wodurch ein Ventilator angetrieben wird. Die Drehzahl des Ventilator soll mittels des PID-Reglers anfänglich die Temperatur möglichst schnell um 1-3 Grad abkühlen und dann mit abnehmender Drehzahl sich dem Sollwert annähern. Dabei ist ein leichtes Überschwingen auch gewünscht, denn bei Unterschreiten der Solltemperatur wird der FU abgeschaltet, was Energie einspart.

"Soll er dann die IstTemperatur weiterhin auf der SollTemperatur halten (wenn ja, wie lange?) oder soll er dann inaktiviert werden, bis die IstTemperatur wieder um 5 K grösser als die SollTemperatur geworden ist?
Ich verstehe nicht, warum überhaupt PID-Regler, wenn es nicht darum geht, die IstTemperatur konstant zu halten (oder den IstWert mit geringer Toleranz einem sich verändernden SollWert folgen zu lassen)."

Die Istwerttemperatur soll immer den Sollwert unterschreiten, damit der FU auch abgeschaltet wird und erst wenn die Temperatur wieder um 5 Grad angestiegen ist, soll die Kühlregelung wieder beginnen.

"Ich verstehe auch nicht, warum Du schreibst "dann steigt der Wert unterschiedlich schnell auch an, je nach gewählten P- und I-Anteil".
Der P-, I- und D-Anteil sollten passend zu den Eigenschaften des RegelKreises ermittelt und festgelegt werden und nicht nach Lust und Laune.
Der Wert sollte sofort abrupt ansteigen (aber nicht unterschiedlich schnell), wenn Du den RegelVorgang mit einer (erheblichen) RegelAbweichung von 5 K startest."

Ich konnte bisher den Baustein Const-C nur im Simatic-Simulationsprogramm testen, und habe immer die Isttemperatur manuell angepasst. Der P- und I-Anteil werden bei der Inbetriebnahme passend ermittelt und daraufhin der Kunde geschult.
Jedoch wenn der Ausgangswert, also Stellwert, einmal auf 100% angestiegen ist, nimmt dieser Wert erst wieder ab, wenn eine manuell eingegebene Isttemperatur kleiner als der Sollwert ist. Bei allen Zwischenwerten bleibt der Stellwert auf 100%.
Je nach gewählten P- und I-Anteil ist mit der Simulation zu beobachten wie der Stellwert unterschiedlich schnell mit der Zeit anwächst bis zum Maximalwert von 100%, wenn der Isttemperaturwert größer als der Sollwert ist. Bei einer Annäherung des Isttemperaturwertes an den Sollwert nimmt aber leider nicht der Stellwert ab, sondern steigt weiterhin bzw. bleibt bei konstant 100%. Dieses Regelverhalten ist für die Regelung einer Temperaturkühlung nicht geeignet, wenn anfänglich bei hohem Temperaturunterschied zwischen Isttemperatur und Sollwert der Stellwert, eben nur anfänglich richtig, dieser hoch ist, aber dann bis erreichen des Sollwertes nicht abnimmt.
Vielleicht wird die Praxis bei der IBN etwas anderes ergeben, aber mit dem Simulationsprogramm hat das nicht nach der gewünschten Regelung ausgesehen.
 
Es ist wichtig, dass du den CONT_C in dem von dir parametrierten Zyklus von 1 Sekunde aufrufst und nicht ohne weitere Bedingung z.B. in jedem OB1 Zyklus.
Am Besten ist es, wenn du den Aufruf in einen Interrupt-OB wie den OB35 aufrufst. Dann wäre Cycle aber auf 100ms zu parametrieren, falls der Aufrufzyklus in der HW-Konfig nicht anders eingestellt wurde.

Danke für den Hinweis. Der Cont_C wird im OB35 aufgerufen, diese Info hatte ich bereits entweder in diesem Forum gelesen oder in einer Anleitung.


Um den Regler nach dem Einschalten mit einem Startwert beginnen zu lassen, verwende ich persönlich dafür die MAN und MAN_ON Parameter. Soll der FU nach dem Einschalten mit 100% beginnen, dann setzt du MAN_ON auf true wenn der FU ausgeschaltet ist und MAN auf 100.0. Wenn du den FU einschaltest und dann MAN_ON auf false setzt, dann regelt der Regler von 100% an weiter. Intern wird damit der gespeicherte I-Anteil so vorgeladen, dass der Handwert als Startwert für die Stellgröße der Regelung wirkt.
Die Idee anfänglich mit dem Handbetrieb beginnen, mittels den Parametern MAN_ON und MAN, ist sehr interessant und wird am Montag ausprobiert. Das PG ist in der Firma. Vielleicht klappt damit die Regelung dann doch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anscheinend sorgt der I-Anteil für mehr Probleme, als er sich nützlich auswirkt. Ich würde ihn zunächst komplett unwirksam machen und ggfs erst bei nur noch geringer RegelAbweichung aktivieren.
Was ist mit dem D-Anteil? "NullMerker" sehe ich in #1. Mal ein Bisschen mit dem D-Anteil experimentieren bei abgeschaltetem I-Anteil.

On second thoughts:
Mach I- und D-Anteil unwirksam und die P-Verstärkung erheblich grösser. Der "unmanipulierte" RegelKreis kann und soll sich ruhig aufschwingen, weil:
Immer bevor sich das Schwingen bemerkbar macht, schaltest Du doch ohnehin die Regelung ab, bis die Temperatur wieder 5 K über dem SollWert liegt.
 
Zuletzt bearbeitet:
Dann wird der FU eingeschaltet und der angeschlossene Motor beginnt zu laufen, wodurch ein Ventilator angetrieben wird. Die Drehzahl des Ventilator soll mittels des PID-Reglers anfänglich die Temperatur möglichst schnell um 1-3 Grad abkühlen und dann mit abnehmender Drehzahl sich dem Sollwert annähern. Dabei ist ein leichtes Überschwingen auch gewünscht, denn bei Unterschreiten der Solltemperatur wird der FU abgeschaltet, was Energie einspart.

Das spart keine Energie. Der Ventilator würde unendlich lange laufen wenn der Regler optimal eingestellt ist, denn dann überschwingt er nicht mehr garantiert sondern nur unter bestimmten Prämissen. Es sei denn die Temperatur würde auch sinken wenn der Venti auf Minimaldrehzahl läuft.
Um dein Ziel zu erreichen wäre es eher sinnvoll den Regelsollwert um einige punkte unter den Ausschaltsollwert zu bringen.

Die Istwerttemperatur soll immer den Sollwert unterschreiten, damit der FU auch abgeschaltet wird und erst wenn die Temperatur wieder um 5 Grad angestiegen ist, soll die Kühlregelung wieder beginnen.

Das ziel eines Reglers ist den Istwert dem Sollwert anzugleichen, wenn du das nicht willst, dann musst du dem Sollwert einen Offset mitgeben.

Je nach gewählten P- und I-Anteil ist mit der Simulation zu beobachten wie der Stellwert unterschiedlich schnell mit der Zeit anwächst bis zum Maximalwert von 100%, wenn der Isttemperaturwert größer als der Sollwert ist. Bei einer Annäherung des Isttemperaturwertes an den Sollwert nimmt aber leider nicht der Stellwert ab, sondern steigt weiterhin bzw. bleibt bei konstant 100%.

Kann es sein dass dein I Anteil weiterläuft auch wenn der Stellwert schon bei 100 % ist? dann kann es ne weile dauern bis er wieder so weit runterkommt das er sich nicht mehr in die Ausgabe einmischt. Stoppe den I Anteil mal bei 100% Ausgang oder beobachte ihn einfach mal.

Da bin ich mir beim Cont_c nicht mehr so sicher wie der läuft.

Was ist das eigentlich für ne CPU die 1500er hätten einfachere regler mit autotuning​
 
Dein I-Anteil von 1-5 Sek ist viel zu stark... probier mal 120 Sek... Selbst wenn die Regelabweichung sinkt, zieht der I-Anteil Deinen Ventilator relativ schnell wieder hoch. Ich würd vermutlich nen reinen P-Regler nehmen mit nem Kp von 20 (bzw. -20). Und ne min Begrenzung von vielleicht 50% die dazu führt, dass der Lüfter auch wirklich abschaltet... Ansonsten geht das ganze sicherlich auch ohne Regler.
Der Siemensregler hat schon Antiwindup... Autotuning kannst Du dafür was Du machen willst vergessen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Regelung soll anfangs den Ventilator mit möglichst großer Drehzahl laufen lassen und mit abnehmender Temperatur auch immer geringerer Drehzahl.
Die Regelung wurde bereits mit einem Unscalebaustein umgesetzt, denn der FU bekommt für die Ventilatordrehzahlregelung einen Analogwert zwischen 4-20mA. Jedoch der Kunde ist damit nicht zufrieden, und möchte eine PID-Regelung, bei welcher er selber die einzelnen Anteile einstellen kann.


Das er unbedingt einen Regler haben will statt der linearen liegt vermutlich daran das er die Zeit mit dem Regler drastisch verkürzen könnte. Dafür bräuchte er dann wirklich den Regler, ansonsten halt nicht. Lief ja auch schon.

Wie schon geschrieben wurde ist ein Regler dazu da um einen Wert zu halten. Nicht, um ausgeschaltet zu werden. Aber das kommt dennoch immer wieder mal vor das man das so braucht. Im Normalfall wird ein Regler wenn Istwert=Sollwert ist den aktuellen Ausgangswert halten. Da Du abschalten willst musst Du also die Reglerfreigabe nutzen und oder den Istwert unter den Sollwert bringen damit der Regler auf 0% kommt.

Mein Vorschlag, wie ich das nun angehen würde:
Wenn Der Venti bei 10% noch Kühlleistung bringt, dann einfach P, I und D sel im Panel über Button ein/ausschaltbar machen und Du machst ne Voreinstellung auf den Regler von P=-2, I=0,D=0. Nicht optimal, sollte aber funktionieren und wenn Du die Zeit findest kannst Du noch ein wenig daran ändern. Ducati schrieb -20. Kannst Du auch versuchen, aber das halte ich für zu viel.

Deinen Sollwert lässt Du im Programm einfach im OB auf eine Temp-Variable beschreiben bei jedem OB-Aufruf, welche wiederrum am Regler angelegt wird. VarTemp=Sollwert-1. Somit wird er immer 1 Grad niedriger kühlen wollen, also nicht bei Sollwert=Istwert auf einer Stellte treten. Dann würde ich die Ventilatorgrenzen noch auf 20-100% stellen, vorausgesetzt bei 20% gibt es noch eine Kühlleistung, sonst höher. Auch einstellbar über Panel machen.

Du hast eine Reglerfreigabe, die nimmst Du nun einfach weg wenn Istwert<Sollwert für 30 Sek oder so. Dadurch schaltet er ab mit einer Unterschwingung.

Den manuellen Teil würde ich auch im Panel für einen richtigen Handbetrieb nutzen. Sprich er kann einen Wert vorgeben den der Venti fahren soll. Dadurch kann, falls er irgendwie mal seine Einstellungen so verhunzt hat und Du gerade keine Zeit hast, die Anlage dennoch, wenn auch nicht effizient arbeiten.

Den Regler würde ich nicht abschalten. Soll er doch mitlaufen wenn die Temperatur steigt. Irgendwann wird er wieder eingeschaltet und hat dann seine 100% erreicht. Sollte das nicht funktionieren, dann würde ich eine Umgehung programmieren die MAN auf true stellt und den Handwert solange auf 100% solange die Reglerfreigabe nicht kommt. Bei Reglerfreigabe dann Deinen Man Wert rausnehmen, gucken ob der Kd Hand eingetragen hat, dann diesen nehmen, ansonsten in Automatik laufen lassen.
Ein- und Ausschalten geschieht ja eh über die Reglerfreigabe.

Wenn der Regler nun so funktioniert, dann den D-Anteil hinzuschalten und probieren, sobald das funktioniert mit dem I-Anteil arbeiten. Vielleicht aber ist der Kd auch schon zufrieden wenn es nur als P-Regler funktioniert. Den Rest könnte er ja selbst machen ^^. Die Reihenfolge der D und I-Anteile ist im übrigen immer ein Streitpunkt. Da scheiden sich die Geister. Also nicht verwirren lassen, wirst Deine Erfahrungen machen müssen womit es einfacher ist zu regeln.

Bei einer Simulation eines Reglers musst Du immer beachten das Du den Istwert von Hand eingibst. Da ein Regler mit Zeitkonstanten arbeitet ist es zu beachten das unterschiedliche Senkungszeitpunkte des Istwertes den Regler nicht gleichmäßig reduzieren lässt sondern er teilweise bei eingeschalteten I und D-Anteilen eine Sprungantwort geben wird.

Glaub Du hast so oder so am Montag einiges zu probieren, gibt ja nun einige Vorschläge.

 
Vielmals vielen Dank für alle Beiträge, welche alle sehr hilfreiche Ratschläge sein werden für zukünftige Anwendungen mit PID-Regelungen.
Mein Problem mit dem PID-Regler sollte mit der Idee gelöst sein, den Stellwert anfänglich mit dem Handbetrieb auf 100% zu setzen, wie von "Thomas_V1.2" geschrieben und daraufhin je nach Temperaturwert die PID-Regelung zu nutzen. So muss lediglich mit dem P- und I-Anteil die Regelung von einer erhöhten Temperatur zum Sollwert passend ermittelt werden. Und auch der Kunde kann bei persönlicher Einstellungswahl nicht viel falsch machen in meinem Anwendungsfall.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dein eigentlicher Regler ist ein ZweiPunktRegler mit einer Hysterese von 5 K, der bei Tx+5 °C die Kühlung ein- und bei Tx ausschaltet.
Um den Verlauf der KühlPhase zu beeinflussen, "missbrauchst" Du einen PID-Regler, der von dem ZweiPunktRegler dauernd gestört wird und sich nie auf das konzentrieren kann, wozu er erfunden wurde.
Der P-Anteil ist der "einfachste" und "wichtigste". Leider kann man ihn nicht so gross machen, wie er werden müsste, um eine kleine RegelDifferenz zu erhalten, weil mit wachsendem P-Anteil die SchwingNeigung des RegelKreises ebenfalls anwächst. Bei realistischen Werten des P-Anteils ist die Wirkung des P-Anteils zu langsam und zu ungenau.
Gegen die Langsamkeit wurde der D-Anteil erfunden. Er erkennt frühzeitig jede Änderung der RegelAbweichung, so dass Änderungen des SollWertes, Einflüsse durch StörGrössen, aber auch eine zu schnelle Annäherung des IstWertes an den SollWert ausgeregelt wird.
Der I-Anteil schliesslich wurde erfunden, damit sogar eine lang anhaltende, geringe RegelAbweichung noch zu einer StellGrösse führt, die gross genug ist, im RegelKreis überhaupt etwas auszurichten.
Bei Deiner Anwendung kommt der PID-Regler aber nie dazu, mit seinem I-Anteil noch das letzte Bisschen an Genauigkeit herauszukitzeln. Immer, wenn er diesen Zweck erfüllen will, wird er durch den ZweiPunktRegler bevormundet.
Der I-Anteil soll zwar bei lang anhaltenden, geringen RegelAbweichungen nachhelfen, ABER er tut es auch bei langanhaltenden, grossen RegelAbweichungen und zwar umso heftiger, je länger die RegelAbweichung ansteht und je grösser sie ist. Je schlechter die Einstellung des P- und des D-Anteils ist, desto länger anstehend und stärker ist aber die RegelAbweichung, gegen die der I-Anteil anzukämpfen versucht. Der I-Anteil wirkt sich sehr "nachtragend" aus. Das ist erwünscht, wenn es darum geht, eine geringe RegelAbweichung noch weiter zu verringern. Das hat aber verheerende Wirkungen bei grossen RegelAbweichungen, wie Du selbst schon durchlitten hast.
Gerade die Bevormundung des PID durch den ZweiPunktRegler bewirkt aber, dass es der PID die meiste Zeit mit grossen RegelAbweichungen zu tun hat, so dass Du unter den negativen Auswirkungen des I-Anteils leidest, ohne jemals von der positiven Wirkung profitieren zu können, zumal bei Deiner AufgabenStellung die "positive Wirkung" nicht einmal erwünscht ist. Also: weg mit dem I-Anteil!!!
 
Zuletzt bearbeitet:
Zurück
Oben