TIA Servo-Pumpe dynamisch nachregeln

Rabi

Level-2
Beiträge
94
Reaktionspunkte
13
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe gesehen es gibt bereits ähnliche Themen, möchte jedoch trotzdem ein eigenes aufmachen und hoffe dass ich hier eventuell ein paar gute Ansätze für meine Aufgabenstellung bekomme.

Bei meinem Projekt habe ich eine 1516TF-3 CPU im Einsatz mit mehreren Servo-Antrieben und Motion-Control-Funktionen.
Auf der Steuerung werden ebenfalls 6 Regelkreise verarbeitet, dort stehe ich vor einer kleinen Problematik.

Jeder Regelkreis hat seine eigene Pumpe mit darauffolgenden Durchflussmesser. Die Flüssigkeit wird danach auf einer Platte aufgebracht.
Ein Regelkreis hat einen Durchfluss von bis zu 5 l/min, und der Mindestdurchfluss beträgt 1 l/min, auch wenn der Sollwert des PID-Reglers hier doch sehr oft
und schnell umgestellt wird (teilweise alle 2-3 Sekunden) pendelt sich der Regler schnell genug ein, auch wenn die Drehzahl in diesem Fall natürlich stark schwankt.
Der zweite Regelkreis dazu hat jedoch eine sehr genaue Pumpe, dort werden 0.07 l/min als Mindestdurchfluss verwendet und ein maximaler Fluss von ca. 500 ml/min ist möglich. Wenn ich das ganze jetzt regeln will, komme ich eben nur auf den Effekt dass die Drehzahl zwischen Max/Min dauerhaft hin und her schaltet, da vor allem bei dem Mindestdurchfluss kaum noch Flüssigkeit durchrinnt und bei einer kleinen Reduktion der Drehzahl bereits auf 0.00 l/min wechselt.

Rein steuerungstechnisch berechne ich anhand meiner Datenblätter eigentlich die nötige Drehzahl meiner Antriebe um den nötigen Durchfluss zu erreichen. Es werden jedoch verschiedene Flüssigkeiten mit verschiedenen Viskositäten usw. verwendet, dadurch kann es natürlich passieren dass ein Antrieb mit einer z.B.: Drehzahl von 1000 U/min fahren soll für einen Durchfluss von 0,07 l/min, plötzlich mehr Drehzahl benötigt weil der Durchfluss auf 0,057 l/min abgesackt ist.

Der Sollwert wird bei beiden Regelkreisen sehr oft und schnell verändert (ca. 2-3 Sekunden).
Momentan, sollte aber ein Workaround bleiben, verwende ich die berechnete Drehzahl und Rampe (relativ schnell) auf den Sollwert hin, dafür komme ich jedoch auf die Ist-Abweichungen wie oben angegeben.

Natürlich ist hier mein Hauptproblem der schnelle Wechsel zwischen hohen und niedrigen Drehzahlen.
Momentan kann ich das ganze nur mit einem PT2-Glied einigermaßen simulieren indem ich Dämpfung und Zeitkonstante relativ gering halte. Hatte aber bereits an der echten Anlage die Funktion getestet und bin ziemlich auf dasselbe Ergebnis gestoßen.

Hatte schon an zwei andere Optionen gedacht, mit denen ich nicht ganz glücklich bin:
1. Durchschnitts-Wert:
Ich hatte schon die Idee eventuell eine Durchschnitts-Aufzeichnung über 1 Sekunde zu machen (also jeden Zyklus den Ist-Wert wegzuspeichern) und anhand dieses Durchschnitts auszurechnen wieviel Drehzahl ich auf die existierende draufsetzen muss um den Durchfluss zu erreichen.
Diese Prüfung muss natürlich dauerhaft gemacht und angepasst werden.

2. Kalibrierung durch Kunde:
Die absolute Notlösung wäre für mich eine Kalibrierung durch den Kunden durchführen zu lassen, dass er sozusagen die nötigen Prozente die fehlen am HMI noch einstellen kann und er im Kalibrierungsmodus testen könnte ob bei einer Vorgabe von 0.07 ml/min, auch wirklich 0.07 ml/min fließen.


Die Aufzeichnung mit simulieren PT2, während ich mich mit Werten etwas gespielt habe.
Bitte keine zu starke Kritik, soll nur als Beispiel dienen.

1669041803827.png


Nun zur Frage, hat vielleicht jemand Erfahrung mit sehr schnell ändernden Ist-Werte in Kombination mit schnell ändernden Sollwerten mit der PID-Regler Funktion von Siemens und kann mir dabei eventuell einen Tipp geben?
Den Prozesswert, da er sich schnell ändert habe ich bereits mit einem PT2-Glied gedämpft.
Habe mich schon mit ziemlich allen PID-Parametern gespielt, komme aber auf kein einwandfreies, bzw. schnell genug reagierendes Ergebnis.
 
Ist dir in der SPS bekannt welches Medium mit welcher Viskosität gefördert werden soll?
Dann würde ich für jedes Medium einen separaten Regler verwenden der entsprechend eingestellt wird (darunter zB auch min/max Drehzahlen)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ich gerne bei sich ändernde Verhalten mache ist eine Art Speicherung des letzten guten Wertes und diesen dann als Vorgabe als Erstwert vorhalte.
Hier könnte ich mir in deinem Fall eine Art Tabelle je nach Medium und geforderten Durchlaufes vorstellen.
Danach könnte man die für den nächsten Wert noch den Zwischenwert mit einem Polygonzug berechnen.
 
Was bedeutet für dich denn "Nachregeln"? Vielleicht sehe ich das Problem nicht, aber warum nicht jede Pumpe durchflussgeregelt betreiben, entweder mit einem Regler bei dem je nach Pumpe unterschiedliche Reglerparameter verwendet werden, oder je Pumpe ein Durchflussregler mit Umschaltung der Reglerparameter je Pumpe. Was ich auch schon gesehen habe, aber wie ich finde nicht immer optimal ist, einen Regler zu verwenden, und dann bei unterschiedlichen Ist- und Sollwerten diese immer auf 0..100% zu skalieren.

Bezüglich der Viskosität, würde ich mal prüfen wie groß die Unterschiede dort überhaupt sind. Bei Kreiselpumpen bleibt die Fördermenge bis zu einer bestimmten Viskosität annähernd gleich, und fällt erst dann ab. Bei Zwangsverdrängerpumpen sieht das anders aus. Im einfachsten Fall stellst du den Regler für die niedrigste vorkommende Viskosität (z.B. Wasser) möglichst schnell ein, dann wird der Regler mit steigender Viskosität nur langsamer, sollte aber definitiv nicht schwingen.

Zu deiner Simulation würde ich behaupten, deine Reglerparameter sind viel zu schnell eingestellt, und du siehst dort eine gedämpfte Schwingung. Du hast doch bei deiner PT2-Strecke in deiner Simulation die Streckenparameter selber vorgegeben, und kannst somit ohne Testlauf die optimalen Reglerparameter direkt ausrechnen.
 
Hört sich für mich jetzt spontan nach Leimauftrag mit Leim- und Härterdosierung an.

Ich würde das Ganze 2-stufig aufbauen. Vorsteuerung + PID-Anpassung

Deine hier beschriebene Rechnung als Grundlage bzw. Vorsteuerung,
Rein steuerungstechnisch berechne ich anhand meiner Datenblätter eigentlich die nötige Drehzahl meiner Antriebe um den nötigen Durchfluss zu erreichen. Es werden jedoch verschiedene Flüssigkeiten mit verschiedenen Viskositäten usw. verwendet, dadurch kann es natürlich passieren dass ein Antrieb mit einer z.B.: Drehzahl von 1000 U/min fahren soll für einen Durchfluss von 0,07 l/min, plötzlich mehr Drehzahl benötigt weil der Durchfluss auf 0,057 l/min abgesackt ist.

Das heißt, die Nominalwerte der Pumpen für den vorgegebenen Durchfluss-Sollwert errechnen.
Die Regelabweichung auf den PID-Regler verschalten (Sollwert PID = 0.0) und den Regler-Ausgang z.B. auf +- 20% des Drehzahlbereichs der Pumpe normieren.
Anschließend die Summe der Vorsteuerung + PID-Regelung als Sollwert für die Pumpe vorgeben.

Großer Vorteil: Bei schnell ändernden Sollwerten für den Durchfluss bist du durch die Vorsteuerung sehr schnell im richtigen Bereich (z.B +- 5%) des Durchflusses (grobe Steuerung = schnell) und der PID-Regler muss nur noch eine Anpassung vornehmen ohne schnell reagieren zu müssen -> kleiner P-Anteil (feine Regelung).

Edit: Textanpassung
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Großer Vorteil: Bei schnell ändernden Sollwerten für den Durchfluss bist du durch die Vorsteuerung sehr schnell im richtigen Bereich (z.B +- 5%) des Durchflusses (grobe Steuerung = schnell) und der PID-Regler muss nur noch eine Anpassung vornehmen ohne schnell reagieren zu müssen -> kleiner P-Anteil (feine Regelung).
Ich mache das so, dass ich den Regler auf Handwert (MAN/MAN_ON) setze, und mit dem passenden Startwert initialisiere. Hat den Vorteil, dass man den Regler mit klassischen Berechnungsverfahren einstellen kann. Außerdem wird zumindest beim Siemens CONT_C dabei der Integrator so initialisiert, dass bei Umschaltung auf Automatik der P-Anteil keinen direkten Einfluss hat, d.h. wenn du bei 50% startest, dann wird ab diesem Wert fortgesetzt.
Bei deinem Verfahren außerhalb, gibst du 50% als Vorsteuerung vor, und dann musst du im Kopf noch die 20% von deinem Regler dazurechnen, also du startest dann ggf. mit 70%. Kann man natürlich auch machen.
 
In der Praxis geht diese Art der Regelung natürlich nur mit Zahnradpumpen oder ähnlichen Verdränger-Pumpen zur feinen Dosierung.
Normalerweise gehe ich sogar so weit, mir eine Flanke für einen Sollwertsprung zu bilden und setze den PID für z.B. 2 Regelzyklen = 200ms auf Manuell, um den aktuellen Regler-Wert festzusetzen bis die neue Solldrehzahl erreicht ist.

Die Regelgrenzen gebe ich normalerweise als Parameter auch noch frei, dass z.B. nur 5% - 90% Ausgangsdrehzahl ausgegeben werden. Die Cont_C-High- und Low-Limit verschalte ich aktiv so, dass der finale Regelwert die parametrierten Min- und Max-Grenzen einhält.

Den PID-Regler stelle ich nach Erfahrung und Praxis bei der Inbetriebnahme ein.

Wobei deine Lösung, den PID-Regler mit der Vorsteuerung zu manipulieren auch nicht schlecht klingt.
 
Zu deiner Simulation fällt mir noch auf, dass dein Regler so wie es aussieht nur jede Sekunde aufgerufen wird. Oder liegen die Stufen an den Einstellungen des Traces? Üblicherweise sagt man, die Aufrufrate des Reglers sollte 1/5 bis 1/10 der Zeitkonstante der Strecke betragen. Aus dem Verlauf am Ende würde ich mal grob 1-2s schätzen, also für die Strecke würde ich auf 100ms Regleraufruf gehen. Die Analogwerte sollten natürlich auch genau so schnell eingelesen werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke euch allen für die super Antworten und Gedankenanstöße.

Ich habe mich nun dazu entschieden dass ich mit meinem berechneten Wert, wie vorgeschlagen, eine Voransteuerung realisiere. Sobald dieser Wert erreicht ist, starte ich den PID-Algorithmus dazu, dieser ist auf einen gewissen Prozentsatz beschränkt (z.B.: +/- 10%). Wie gesagt wurde, wird das ganze als Feintuning verwendet und dadurch ist der P-Anteil relativ klein eingestellt.
Durch die heftigen Sprünge nach Setpoint Änderung (auch wenn der Ausgangswert beschränkt ist), habe ich dennoch einen Ramp-Block hinzugefügt damit ich den Wert bei schnellen Änderungen besser unter Kontrolle habe.
Soweit ich es simulieren konnte gefällt mir die Lösung ganz gut, vor allem da ich sehr viel Konfigurations-Möglichkeiten habe.
 
Zurück
Oben