TIA Tänzerregelung

evelkneevel

Level-2
Beiträge
38
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich habe ein regelungstechnisches Problem: Es soll ein Tänzer optimal geregelt werden.
Die eingesetzte Hardware ist eine 1214C und ein S120 mit CU320.
Den Istwert von dem Tänzer bekomm ich über einen analogen Messwert. Den Istwert verschalte ich dann in der SPS mit dem PID-Regler (PID_Compact), lass den dann (noch) als PD-Regler laufen und schreibe den Stellwert des Reglers als Parameter Override in den Antrieb. Ich regel also mit dem Istwert und dem PID-Regler die Drehzahl von dem Antrieb.
Problem mit dem P- bzw. PD-Regler ist nun, dass ich immer eine bleibende Regeldifferenz habe. Schön wäre natürlich einen I-Anteil zu verwenden und diese Regeldifferenz damit auszuregeln. Prinzipiell funktioniert das auch, ich habe dann nur hin und wieder den Fall, dass die Folgemaschine (diese zieht immer wieder Material aus dem Tänzer) zum Stillstand kommt. Ohne I-Anteil gar kein Problem, da der P-Regler dann bis auf den Sollwert regelt und dann abschaltet. Mit I-Anteil habe ich, je nach größe des I-Anteils, einen Überschwinger. Diesen Überschwinger darf ich auf keinen Fall haben, maximal könnte man sich mit einem Überschwinger von 1% Punkt anfreunden, mehr Spielraum habe ich aber nicht.

Die Frage lautet nun, wie man den Tänzer als Regelstrecke interpretieren kann? Wenn die Folgemaschine nicht fördert, wäre er ja eine reine I-Strecke. Wenn ich das Wissen aus dem Studium rauskrame, würde da ja eine reiner P-Regler völlig ausreichen. Fördert aber die Folgemaschine so wird der Tänzer zu einer P-Tn-Strecke (???), diese kann man dann wunderbar mit einem PI-/PID-Regler regeln.

Habt ihr eine Idee, wie ich dieses Problem lösen könnte? Bin für jede Idee dankbar.


Gruß
 
Mal ab von der Regeltheorie:
Wenn ich ein Problem habe, das die Charakteristik der Regelstrecke sich je nach Betriebsphase ändert, habe ich schon die problematischen Regleranteile in diesen Phasen weggeschaltet. Wodurch wird der I-Anteil denn problematisch? Läuft er auf (Wind-up)?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was heißt Wind-up?
Also meinst du einfach, wenn die Folgemaschine steht den I-Anteil auf Null setzen und ansonsten den I-Anteil aktivieren mit welchen Parametern auch immer?!

Gruß
 
wind-up ist der Effekt, wenn der Regler die Regeldifferenz nicht ausregeln kann (weil z.B. die Folgemaschine steht) und dadurch der I-Anteil bis zum Limit hochläuft. Bei einer Rückkehr in den Regelbereich benötigt der I-Anteil Zeit, bis er sich wieder normalisiert hat und bewirkt natürlich ein heftiges Überschwingen.
Folgerichtig begrenzt man die Wirksamkeit des I-Anteils auf die Arbeitspunkte in denen er auch was bewirken kann.
Wie man das jetzt beim Siemens-PID am besten macht, kann ich Dir nicht sagen. Nimm es als Denkanstoß.

Nimm einen einfachen Temperaturregler als Beispiel:
Beim Start aus kalt würde der I-Anteil hochlaufen bis zum erreichen des Sollwerts. Wenn Du eine entsprechende Regelstrecke hast, ist I dann am oberen Limit, wenn der Sollwert erreicht wird. P ist dann 0, D ist dann negativ und I am oberen Limit --> Die Heizung heizt munter weiter.
Mit einfacher Wind-Up-Begrenzung wird der I-Anteil erst beim erreichen des Proportionalbandes aktiviert. Also erst kurz vor Sollwert. P und D halten den Reglerausgang dann im Zaum, sodass das Überschwingen deuuutlich kleiner wird.
 
Zuletzt bearbeitet:
Hallo,
ich gehe einmal davon aus, daß der PID-Baustein aus der Siemens Bibliothek verwendet wird. Dieser hat eine automatische Wind-Up Verhinderung.
Der reine Tänzer ist eine Strecke ohne Ausgleich (I-Verhalten). An reinen I-Strecken ist das mit dem I-Anteil im PID-Regler immer so eine Sache. Ein reiner I-Regler an einer I-Strecke führt zu Strukturinstabilität.
Der Phasengang im Bode-Diagramm ist dann sofort bei -180°.
Ohne I-Anteil hast Du aber natürlich eine bleibende Regelabweichung.
Ich würde es mit einem ganz kleinen I-Anteil (große Nachstellzeit in s) probieren. Dieser I-Anteil wird die bleibende Regelabweichung irgendwann beseitigen. Das ganze kann aber dazu führen, daß man eine sehr langsame Schwingung in den Istwert bekommt.
Eine weiter Möglichkeit wäre die Nutzung eines GAP-Verhaltens. Wenn der Istwert in einem gewissen Bereich um den Sollwert ist, ändert sich der Ausgang des Reglers nicht. Das sieht der TIA-Regler von Hause aus nicht vor und müßte von Hand programmiert werden.
Du kannst den I-Anteil auch dynamisch abschalten, wenn die Regelabweichung beseitigt ist.
Der TIA-Regler hat nur den Nachteil, daß man die Reglerparameter nur bei inaktivem Regler ändern soll (steht so im Handbuch). Regler inaktiv bedeutet aber Reglerausgang = 0% und das wird schlecht in der Anlage funktionieren.

Gruß Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In dem Falle könnte man den I-Anteil separat rechnen und dem Reglerausgang aufschalten. Das gibt dann die benötigte Flexibilät für eine dynamische Um/Abschaltung.
 
Hallo,

vielen Dank für die vielen Anregungen. So wie sich das für mich anhört muss ich in der Konsterlation einfach damit leben, entweder ein sehr großes Ti einstellen und ein bisschen Schwingen hin nehmen oder einfach mit der Regeldifferenz klar kommen. Andere Möglichkeit wäre es ja nur einen eigenen PID-Regler zu programmieren bzw. einen anderen wählen, der dann Wind-up kann.
Ich meld mich, wenn ich eine Lösung hab.

Gruß
 
Hallo evelkneevel,

ich kenne jetzt deinen genauen Prozess nicht, aber ich hatte vor ein paar Monaten einen ähnlichen Fall mit Tänzerreglung. Dabei hab ich auch mit dem PID-Regler (PID_Compact) versucht eine sinnvolle Regelstrecke abzubilden. Leider war diese nur in ~90% der Fälle sinnvoll.

Am Ende habe ich die ganze Reglung verworfen und addiere(subtrahiere) nun einfach Linear, abhängig von der Position des Tänzers, auf den Sollwert vom Antrieb. Somit steht der Tänzer zwar nicht immer Absolut in der 0° Position. War allerdings bei meiner Applikation keine Rolle spielte.

Schönes Wochenende
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,​
diese Addition entspricht eigentlich einem P-Regler.
Der Tänzer muß ja auch nicht genau bei 0 stehen. Die Zugkraft ist ja sowieso Tänzergewicht / 2 , solange der Tänzer noch nicht am Anschlag ist. Durch Änderung der Zuggeschwindigkeit oder durch Änderung einer Bremskraft wird nur versucht den Tänzer wieder halbwegs in seinen "Nullpunkt" zu bekommen.

Gruß Frank
 
... gibt es irgendwo einen Master, oder zumindest eine Klemmstelle wo man einen externen Geber hinbauen kann?
Dann könnte man den dort erfassten Geschwindigkeitsistwert schon mal (ggf. durchmesserbewertet) schon mal als Drehzahlsollwert vorsteuern.
Dann braucht der P(I)- Regler nur noch einen kleinen Rest ausregeln. Einen D- Anteil habe ich selbst noch nicht für solche Anwendungen eingesetzt.

Übrigens gibt es auch die "Converting Toolbox" - man könnte z.B. die Tänzerregelung auch im Antrieb rechnen lassen. In der jeweiligen Doku findet man auch noch interessante Hinweise:
http://w3.siemens.com/mcms/mc-solut...ting/loesungen/seiten/converting-toolbox.aspx

Folgend speziell die "Zugregelung":
http://w3.siemens.com/mcms/mc-solut...ing/loesungen/zugregelung/Seiten/Default.aspx
 
Zuletzt bearbeitet:
Hallo,

so nach 4 Wochen Montage meld ich mich nochmal. Habe gesehen, dass die Regler auf der 1200er nur welche mit Anti-Wind-up, d.h. für meinen Fall (völlig) ungeeignet sind.
Deshalb hab ich jetzt begonnen einen eigenen Regler zu schreiben:

Code:
IF "FirstScan" THEN
    #Kp := 10.0;
    #Ti := 1000.0;
    #Td := 0.5;
    #e_sum := 0.0;
    #Cycle := 0.05;
END_IF;

#e := #Sollwert - #Istwert;                 // Regeldifferenz

IF #e <= 10.0 AND #e >= -10.0 THEN          // Wind-up: I-Anteil wird für große Regeldifferenz ausgeschaltet
    #e_sum := #e_sum + #e;                       // für I-Anteil    
ELSE                                                             // Regelabweichung muss zwischen 10 und -10 liegen
    #e_sum := 0.0;
END_IF;


#P_Anteil := #Kp * #e;                                  // P-Anteil des Reglers
#I_Anteil := #Ti * #e_sum * #Cycle;             // I-Anteil des Reglers
#D_Anteil := #Td * (#e - #e_alt) / #Cycle;   // D-Anteil des Reglers
#e_alt := #e;                                               // für D-Anteil 


IF #P_Anteil > 100.0 THEN                            // Ausgangsgrößen begrenzen
    #P_Anteil := 100.0;
END_IF;

IF #I_Anteil > 100.0 THEN                   // Ausgangsgrößen begrenzen
    #I_Anteil := 100.0;
END_IF;

IF #D_Anteil > 100.0 THEN                   // Ausgangsgrößen begrenzen
    #D_Anteil := 100.0;
END_IF;




#Stellwert := #P_Anteil + #I_Anteil + #D_Anteil;    // Ausgang berechnen

IF #Stellwert > 100.0 THEN                  // Ausgang begrenzen
    #Stellwert := 100.0;
END_IF;

IF #Stellwert < 0.0 THEN                    // Ausgang begrenzen
    #Stellwert := 0.0;
END_IF;

Ich weiß der Code kann noch bzgl. Zykluszeit und Programmierung optimiert werden, möchte jetzt nur wissen ob meine Idee so funktionieren könnte. Stimmt mein Teil mit dem Wind-up? Muss ich die Ausgangsgrößen noch weiter Begrenzen? Würde eine Rückführung des P- und D-Anteil eine Verbesserung bringen? Bin wieder für Ideen und Anregungen sehr dankbar.


Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo evelkneevel,

ich habe auch ein ähnliches Problem wie deines und bin auch dabei meine eigene Reglung in C zu implementieren.
hat es bei dir mit dem code funktioniert? kannst du wenn es möglich wäre, wenn du an dem Code was gemacht hast, nochmal reinstellen?

vielen vielen Dank
 
Zuletzt bearbeitet:
Hallo,
das Nullen des I-Anteils bei zu großer Regelabweichung sehe ich als falsch an. Der Reglerausgang springt dann gleich gewaltig nach unten. Das Anhalten der Integration zur Wind Up Verhinderung muß erfolgen, wenn der Gesamtreglerausgang 100% oder 0% erreicht hat und nicht in Abhängigkeit des PID-Errors.

Gruß Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Grundsätzlich richtig. Dennoch bleibt es eine Proportionalregelung, wenn nicht aufaddiert wird, sondern jeweils die Lagedifferenz zum Drehzahlsollwert addiert wird.
 
Hallo skorpion37,
die einmalige Addition eines Offsets ist das Verhalten wie von einem P-Regler.
Das dauerhafte Aufaddieren entspricht einer Integration (Fläche unter einer Kurve berechnen).

Gruß Frank
 
Ok, dann habe ich das falsch verstanden.

"addiere(subtrahiere) nun einfach Linear, abhängig von der Position des Tänzers, auf den Sollwert vom Antrieb"

klang für mich so als ob da jetzt in jedem Zyklus, also dauerhaft, etwas auf den Sollwert aufaddiert wird. Wenn das aber nur einmal passiert ist es vielleicht eher ein P-Regler.


 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei der Tänzerlageregelung über Anpassung der Geschwindigkeit des Auf- oder Abwicklers handelt es sich aber um eine integrierende Strecke.
Der Proportionalanteil im Regler hat darum alleine schon intergrierende Auswirkung, d.h. eine eine Regeldifferenz wird nur mit einem P-Regler ohne Regelabweichung vollständig ausgeregelt.
Ein D-Anteil im Regler auf einer integrierenden Strecke hat die Wirkung wie ein P-Anteil auf einer nicht integrierenden.
Ich würde darum einen PD-Regler verwenden.
 
Zurück
Oben