Step 7 Problem mit SPS-Seitigem PID Regler (FB41)

Hallo Zusammen,

ich betreibe einen Temperaturprüfaufbau, den ich gerne regeln würde. Der Ist-Wert wird durch einen Sensor an die Regelung übergeben.
Im Hanbetrieb kann ich einwandfrei den Stellwert regulieren, jedoch im Automatikbetrieb bekomme ich Probleme.
Um die Temperatur zu regeln, habe ich standardmäßig die Streckenparameter bestimmt und mit deren Hilfe die Parameter für einen betragsoptimalen PI Regler berechnet sowie für den FB41 übernommen.
Das daraus resultierende Ergebnis ist jedoch sehr unbefriedigend.
Im Automatikbetrieb kann keine Temperatur angefahren werden, weil der Stellwert immer viel zu niedrig ist.

Deshalb meine Frage:

Was mache ich falsch?

Streckenparameter: Ks = 15,68 ; T1 = 890s ; T2 = 180 s

Reglerparameter: Kr = 0,35 ; Tn = 890s

Ausgabe des FB41:

fb41.jpg

Vielen Dank im Voraus!!!!

LG Froststurm
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hey frost

Ich würde nicht sagen das du was falsch machst, jedoch ist die Beschaltung des Reglers nicht ganz so einfach. Habe bei meinem ersten Regler 3 Tage für die richtige Funktion gebraucht. ;)

Das Ergebniss wird durch die Beschaltung des Reglers verschieden Ausfallen.
In den manchen Fällen muss das Ergebniss noch etwas "aufgewertet" werden, um nachliegende Geräte anzusteuern. Damit wir nicht aneinander vorbei reden, LMN ist der effektiv wirkende Stellwert.

Was willst du mit dem Ergebniss ansteuern? Einen FU mit Motor, eine Regelklappe?

mfg
Kapo
 
Warum verwendest du sowol den ProcessVariabl_IN (PV_IN) als auch den ProcessVariable Peripheral (PV_PER) Input?
 
da kann ich mich auf was gefasst machen.
Ich habe ein wärmegedämmtes "Rohr", in dem sich ein Keramikheizstrahler sowie zwei Temperatursensoren befinden. Über den analogen Ausgang an der SPS soll der Heizstrahler geregelt werden (vor dem Heizstrahler hängt noch ein Dimmer 0...10V auf 0...230V).

Aufbau:

aufbau.jpg

Ich brauche normalerweise nur PV_PER. PV_IN habe ich nur aus Testzwecken (Verzweiflung ;) ) ausprobiert.

mfg froststurm
 
Zuviel Werbung?
-> Hier kostenlos registrieren
FB41 Hilfe schrieb:
Istwertzweig
Der Istwert kann im Peripherie- und im Gleitpunktformat eingelesen werden. Die Funktion CRP_IN
wandelt den Peripheriewert PV_PER in ein Gleitpunktformat von -100 .... +100 % nach folgender
Vorschrift um:
Ausgang von CPR_IN = PV_PER ∗ (100 / 27648 )
Die Funktion PV_NORM normiert den Ausgang von CRP_IN nach folgender Vorschrift:
Ausgang von PV_NORM = (Ausgang von CPR_IN) ∗PV_FAC + PV_OFF

Wenn ich mir den Wert an PV_PER ansehe und den dann in in die Formel einsetze, dann bekomm ich ~62% raus...
Bei einem Sollwert von 50% wird sich nicht viel tun....
 
wenn man den Regler richtig einstellt, dann kann sich bei einer Regelabweichung von 12% sehr viel tun. Wenn er gut eingestellt ist, klappt es auch ohne Überschwingen, jedoch wird es bei einer Heizungssteuerung schwer zu realisieren sein.

Ich denke mal, dass du dein Rohr über die Temperatur regelst und nicht über einen Prozentwert.

ein möglicher Ansatz wäre,

1. Skaliere zuerst deine Temperatur mittels FC105. damit du bei z.B.: 4-20mA --> 0-650°C erhälst
HI und LOW Limit muss mit den Grenzwerten deines Fühlers gesetzt werden. (evtl. leichte Anpassungen am oberen Grenzwert)

2. diesen Wert legst du auf PV_IN (Istwert Eingang)
an SP_INT (Sollwert Eingang) kannst du deine Solltemperatur einstellen
LMN_LLM und LMN_HLM dienen zur Begrenzung des oberen und unteren Stellwertes. Also die höchste und niedrigste Temperatur die angefahren
werden darf.

3. LMN ist der effektiv wirkende Stellwert ausn Regler. Mit dem beschaltest du deinen Heizstrahler
eventuell musst du denn Ausgang noch skalieren.
z.B.: 0-10V --> 0-100%

wie gesagt wäre es ein Vorschlag. Es geht vermutlich auch einfacher. :D

Was mir gerade einfällt, setze die TI Zeit niedriger. Mir kommen knapp 15 Minuten etwas lang vor. Probiers mal mit 30 Sekunden.
Ansonsten ist der Rest fast nur spielerei. :D
 
Also lass mal TN und TI weg und mach nen reiner P-Regler.
Die 0,35 Kp schauen suboptimal aus, von TI und TN will ich mal gar nichts sagen, das ist komplett daneben.
Stell mal ein Kp von 5 ein und schau was passiert.
Vorher die Messwerte auf Prozent skalieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Um die Temperatur zu regeln, habe ich standardmäßig die Streckenparameter bestimmt und mit deren Hilfe die Parameter für einen betragsoptimalen PI Regler berechnet sowie für den FB41 übernommen.
Das daraus resultierende Ergebnis ist jedoch sehr unbefriedigend.

Es gibt verschiedene PID-Reglerstrukturen (Parallelstruktur, Reihenstruktur). Wenn Du die Parameter für die eine Struktur berechnest und bei der anderen anwendest, funktioniert das nicht. Vielleicht ist das eines Deiner Probleme, da dies sehr häufig auftritt.

Ansonsten hab ich mit Berechnungen der Reglerparameter auch sehr unterschiedliche Erfahrungen gemacht. Mal geht's gut mal nicht, mal funktioniert das eine Verfahren mal das andere. Bei dem Temperaturregelprozess kann man da auch ausprobieren, das ist genauso gut. Für schnelle Prozesse muss man rechnen.
Evtl. probierst Dus nochmal mit CHR.

Wie hast Du denn die Streckenparameter bestimmt?

Gruß.
 
Also auf dem ersten Blick erkennt man da mindestens 2 Überlappungen deiner MW/MDs.
Wenn du das richtig gestellt hast, dann kannst du dir (vielleicht) nochmal Gedanken über "Parameter" machen.

LMN_P/I/D überlappen sich.
ER mit PER_IN
usw.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die zahlreichen Antworten!

Ein Problem konnte ich schonmal lösen (bzw. reduzieren):
PV_PER und SP_INT waren unterschiedlich skaliert. Bei PV_PER war der Messwert noch unberührt und hat anstatt 26,6 den Wert 266 ausgespuckt. Nach der Einstellung wurde auch ein Stellwert ausgegeben, der nicht komplett jenseits von gut und böse liegt.

Zur Ermittlung der Streckenparameter habe ich einen Sprung von 0 auf 100% aufgenommen (in 22 Minuten wurden aller 500ms Werte aufgenommen und in einem Dokument gespeichert). Die Starttemperatur lag dabei bei 28 °C. Bei 145°C habe ich die Aufnahme abgebrochen, um Schäden zu vermeiden. Die gesammelten Werte habe ich in Kahlert System-Identifikation IDA übertragen, approximiert, ausgewertet und somit die Streckenparameter erhalten.


Zu den Überlappungen:
Da ich das SPS-Programm nicht selbst geschrieben habe, sondern "nur" die Regelparameter neu bestimmen soll, ist mir der FB41 sowie Step7 nicht sehr vertraut.
Deshalb meine Fragen:
Inwiefern überlappt sich was?
Wie gehe ich am besten an die die Sache ran?
 
Zur Ermittlung der Streckenparameter habe ich einen Sprung von 0 auf 100% aufgenommen (in 22 Minuten wurden aller 500ms Werte aufgenommen und in einem Dokument gespeichert). Die Starttemperatur lag dabei bei 28 °C. Bei 145°C habe ich die Aufnahme abgebrochen, um Schäden zu vermeiden.
...
Zu den Überlappungen:
Inwiefern überlappt sich was?

Naja, die Sprungantwort von 0 auf 100% ist suboptimal. Man macht sowas an dem zu erwartenden Arbeitspunkt vielleicht von 20 auf 30% oder so. Ausserdem macht es keinen Sinn die Messung abzubrechen bevor der stationäre Endwert erreicht ist. Dann kannst Du garnichts ordentlich berechnen.

Zu den Überlappungen: Merkerworte und Doppelworte sollten immer gerade Adressen haben, weiterhin besteht ein Doppelwort aus 4 Byte somit ist MD 104 106 108 110 112 Überlappungen die so keinen Sinn machen.

PS: Evtl. sollte man auch davon ausgehen, dass es eine Strecke mit I-Verhalten (nicht PT2) ist, wenn Deine Kiste gut isoliert ist... Aber wie die anderen schon schrieben, solange Du Deine Beschaltung der MW MD am Reglerbaustein nicht ordentlich machst, brauchst Du über den Rest nicht nachdenken.
 
Zuletzt bearbeitet:
ich nehme für meine Regler keine MW oder MD, stattdessen habe ich mir einen eigenen Global-DB zusammengeschrieben und dann die Länge der Fächer bestimmt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt bin ich auf jeden Fall schlauer.
Ich habe mal den Rest des Programms duchgeschaut und entdeckt das es auch noch an anderen Stellen solche Überlappungen gibt.
Gibt es eine eine schnelle Möglichkeit so etwas zu beheben oder muss ich überall per Hand die Adresse ändern?
 
Mit der Funktion "Umverdrahten" kannst du zum Beispiel alle verwendete M2.0 in M2.1 ändern. Jedoch finde ich das etwas unübersichtlich.
Besser du suchst die Fehlerhaften per Hand.
 
Zurück
Oben