TIA Mein erster Siemens Regler

uweschwarz

Level-2
Beiträge
257
Reaktionspunkte
16
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich arbeite mit TIA V17 und einer S7 1513-1 PN. Ich habe bisher noch keinen Regler projektiert oder in Betrieb genommen und hoffe daher auf eure Hilfe.
Wir wollen mit einem via FU angesteuerten 30 kW Motor welcher ein Axialkolbengebläse antreibt einen vorgegebenen Druck bei variablem Durchfluss stabil halten.

Die Regelstrecke müsste also die Strecke vom Motor (Stelleinrichtung) bis zum Drucksensor am Ausgang des Gebläses sein (Messeinrichtung). Die Führungsgröße ist der Sollwert, in unserem Fall 0,5 bar. Die Steuergröße ist der Stellwert am Reglerausgang in meinem Programm. Stellgröße ist die Drehzahl des Motors bzw. Gebläses. Regelgröße ist der Istwert/Prozesswert des Drucksensors am Ausgang des Gebläses. Ist das richtig?

Die Regelstrecke ist relativ kurz, da der Sensor direkt am Ausgang des Gebläses sitzt. Somit wirken sich also Drehzahländerungen sehr schnell auf den Druck aus. Das Hauptproblem ist wahrscheinlich, dass der Sensor einen Messbereich von 0-10 bar hat, der Arbeitspunkt aber nur bei 0,5 bar liegt.

Das Gebläse muss mit mindestens 20% von 50 Hz also 10 Hz betrieben werden. Ich nutze den CtrlPId Baustein aus der LBP (Library for Basic Processes) von Siemens. Ich habe einen Versuchsstand zum testen und ausreichend Zeit eine Lösung zu finden.
Aktuelles Problem: Fehler bei der Erstoptimierung: Regelabweichung zu klein
Meine Frage: Macht es Sinn weiter mit der Erstoptimierung herum zu probieren oder ist es zielführender die Regelparameter zu berechnen, was uns zu der Frage: führt Wie berechne ich die Regelparameter?


1663134344644.png
 
Das Hauptproblem ist wahrscheinlich, dass der Sensor einen Messbereich von 0-10 bar hat, der Arbeitspunkt aber nur bei 0,5 bar liegt.
Hallo,
hast du Analogwerte von Sensor ( Messbereich von 0-10 bar ( entsprechend 27648 oder von 0 bis 100 % ) ) auch skaliert ?

Bzw 0 bis 0,5 bar – entsprechend nach Skalierung von 0 bis 1 , oder ( 0 bis 100 % ).

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, die 4-20 mA, die vom Sensor auf die Karte gehen habe ich entsprechend skaliert (mit dem Baustein AnaRead aus der gleichen Bibliothek) und die Werte stimmen auch mit der lokalen Anzeige direkt am Sensor überein. Ich habe auch schon versucht auf mbar zu skalieren, indem ich den Messbereich am Baustein auf 0 - 10 000 eingestellt habe.

Jetzt habe ich gesehen, dass der PID Comfort V2, den der CtrlPID Baustein aufruft, auch einen Eingang Input_Per hat, den ich direkt im Reglerbaustein skalieren kann. Ich habe den CtrlPID jetzt geändert und den Input_Per hinzugefügt. Das müsste die Regeldifferenz ja eigentlich vergrößern, oder?
 
Moin,
also ich würde im ersten Schritt anfangen und deinen analog Wert vom Drucksensor vernünftig zu skalieren und auszugeben. D.h. eine Ausgabe von 0 bis 0,5bar bzw. 500mbar. Das Ganze ist ein 3-zeiler, würde ich eben selber schreiben, anstatt irgendwelche Siemens Bausteine zu nehmen die man ohne Ende manipulieren muss, damit die funktionieren. Dass der Sensor 0-10bar macht, anstatt z.B. 0-1bar, ist nicht wirklich tragisch, da bei dem größeren Messbereich nur die Genauigkeit etwas verloren geht.
Dann im nächsten Schritt würde ich auch nicht unbedingt irgendwelche PID-Regler nehmen, sondern z.B. den ganz einfachen TCONT_CP o.ä. aus der Siemens Bib. Da dran dann als Sollwert deine 0,5bar und als Istwert die 0-0,5bar von deinem Sensor. An den Regler kannst du dann auch deine 20% minimalen Stellwert Schreiben oder direkt in den Instanz-DB.
Dann kannst du bei der Erstinbetriebnahme diesen ganzen Self-Tuning Kram erstmal vernachlässigen. Gib dem Regler mal ein Kp von 1, Ti und TD auf 0 und guck mal was die ganze Regelstrecke so macht. Danach ggf. das Kp anpassen, erhöhen und gucken was passiert und dann verkleinert und gucken was passiert. Wenn der Wert halbwegs passt, das Ti erstmal auf z.B. 1s setzen und gucken was passiert. Danach ggf. anpassen, verkleinern/vergrößern. Kommt ein bisschen drauf an, wie schnell oder träge dein Prozess ist. Bei einem sehr schnellen Prozess kann man dann noch über das Td nachdenken.
Wenn das dann erstmal läuft, kann man über das Selftuning nachdenken. Die Erfahrung zeigt aber, dass das bei manchen Anwendung einfach nur Schrott ist, was der Regler dann ermittelt und man dann doch nachher händisch die Parameter einstellt.

Gruß
 
also ich würde im ersten Schritt anfangen und deinen analog Wert vom Drucksensor vernünftig zu skalieren und auszugeben. D.h. eine Ausgabe von 0 bis 0,5bar bzw. 500mbar.
wenn der Sollwert 0,5bar sein soll, wäre nen Messbereich für den Istwert von 0...0,5bar etwas wenig... Ausserdem ist das doch dem Regler egal, ob der Istwert jetzt von 0...1bar oder von 0...10bar geht...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Drucksensor liefert 4-20 mA // 0-bis 10 bar // 0 bis 27648 // sind 0 bis 100 % Arbeitsbereich.

Und du braucht Arbeitsbereich von 0 bis 0,5 bar, das müsste

20-4 =16 mA

16mA : 10 Bar = 1,6 mA = 1 bar

Rechnen deine Arbeitsbereich von 0 bis 0,5 bar

( 0,5 bar ist 20 Anteil von 10 bar, 27648 :20 = 1382 )

4 mA = 0 bar

0,5 bar entspricht 0,8 mA



4 mA + 0.8 mA = 4,8 mA ( 0,5 bar )

4-4,8 sind Arbeitsbereich



Bei Skalierung am Eingang muss man Werte 0 und 1382 eingeben, damit am Ausgang kriegst du von Regelung von 0 bar bis 0,5 bar ( Ausgang am Baustein von 0 bis 1 , oder von 0 bis 100 )



Und Regeln Arbeitsbereich mit 0,8 mA finde ich nicht so gut, das ist zu kleine Bereich, Regler wird hier und her springen, versucht man Arbeitsberiech regeln.

Wäre als optimale Lösung andere Drucksensor einbauen , mit niedrige Messbereich.

Gruß
 
Der TE hat ein Problem damit, diese LBP Bibliothek ordentlich zu benutzen... Jetzt macht mal keinen Nebenkriegsschauplatz auf, indem Ihr über die Genauigkeit in der x-ten Nachkommastelle philosophiert...

Evtl. gibt das Handbuch der LBP Bibliothek neue Erkenntnisse...

 
Drucksensor liefert 4-20 mA // 0-bis 10 bar // 0 bis 27648 // sind 0 bis 100 % Arbeitsbereich.

Und du braucht Arbeitsbereich von 0 bis 0,5 bar, das müsste

20-4 =16 mA

16mA : 10 Bar = 1,6 mA = 1 bar

Rechnen deine Arbeitsbereich von 0 bis 0,5 bar

( 0,5 bar ist 20 Anteil von 10 bar, 27648 :20 = 1382 )

4 mA = 0 bar

0,5 bar entspricht 0,8 mA



4 mA + 0.8 mA = 4,8 mA ( 0,5 bar )

4-4,8 sind Arbeitsbereich



Bei Skalierung am Eingang muss man Werte 0 und 1382 eingeben, damit am Ausgang kriegst du von Regelung von 0 bar bis 0,5 bar ( Ausgang am Baustein von 0 bis 1 , oder von 0 bis 100 )



Und Regeln Arbeitsbereich mit 0,8 mA finde ich nicht so gut, das ist zu kleine Bereich, Regler wird hier und her springen, versucht man Arbeitsberiech regeln.

Wäre als optimale Lösung andere Drucksensor einbauen , mit niedrige Messbereich.

Gruß
Keine Soll/ Istwertspreizung machen. Braucht mann nicht.
Ja das Bereich des Drucksensors ist sehr unglücklich, aber brauchbar.
Da hab ich ein Kunden die mit eine Mesung 0-50 bar, in millibar regeln wollte. Dem hab ich den Sensor tauschen lassen.

Wenn du reale theoretische Berechnungen machen willst dan arbeite auch mit reale Werte.
Wichtig ist eine konstante Aufrufzyklus. Sprich in ein Weckalarm OB und diese Aufrufzeit den Reglerbaustein übermitteln.

Du brauchst auch kein speziale Bibliothek. Also den standart CONT_C macht genau was du willst.
Wie gesagt, keine selbstoptimierung.

Da der Sensor direkt am Ausgang des Gebläse ist musst du den Istwert warscheinlich beruhigen.
Entweder im geht das im Hardwareeinstellung der SPS karte oder im programm die skalierte Istwert über z.b. ein PT1 laufen lassen.

Untergrenzen würde ich im FU einstellen. Nicht im SPS. berücksichtiging SPS Stop!.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

den Fehler
Parameter ErrorBits V2 (S7-1200, S7-1500)
Fehler beim Starten der Erstoptimierung. Der Istwert ist zu nahe am Sollwert. Starten Sie die Nachoptimierung.
habe ich öfters, sogar bei sehr großen Abständen, z.B. Sollwert Temperatur 180°C und Istwert Temperatur 150°C.
Ich setzte das System dann immer direkt auf die Nachoptimierung. Dann klappt es eigentlich immer.
Die PID Parameter sind meistens zu "schnell" wie ich finde.....

Aber wie ist denn dein Aufruf? Du hast den PID Regler doch in einem
1663147349615.png
aufgerufen oder? Welche Zeit hast du hier eingestellt?
 
Keine Soll/ Istwertspreizung machen. Braucht mann nicht.
Ja das Bereich des Drucksensors ist sehr unglücklich, aber brauchbar.
Da hab ich ein Kunden die mit eine Mesung 0-50 bar, in millibar regeln wollte. Dem hab ich den Sensor tauschen lassen.

Wenn du reale theoretische Berechnungen machen willst dan arbeite auch mit reale Werte.
Wichtig ist eine konstante Aufrufzyklus. Sprich in ein Weckalarm OB und diese Aufrufzeit den Reglerbaustein übermitteln.

Du brauchst auch kein speziale Bibliothek. Also den standart CONT_C macht genau was du willst.
Wie gesagt, keine selbstoptimierung.

Da der Sensor direkt am Ausgang des Gebläse ist musst du den Istwert warscheinlich beruhigen.
Entweder im geht das im Hardwareeinstellung der SPS karte oder im programm die skalierte Istwert über z.b. ein PT1 laufen lassen.

Untergrenzen würde ich im FU einstellen. Nicht im SPS. berücksichtiging SPS Stop!.
2 Dumme 1Gedanke..... :-)
 
Aktuelles Problem: Fehler bei der Erstoptimierung: Regelabweichung zu klein
Das könnte tatsächlich ein Problem sein. Man benutzt eine SelbstOptimierung eines Reglers, weil man nicht "unnötig" tief in die Materie einsteigen möchte und hofft, dass es zu einem brauchbaren Ergebnis führt.
Die FehlerMeldung "Regelabweichung zu klein" verstehe ich aber nicht so richtig. Müsste der Regler denn nicht selbsttätig dafür sorgen, dass die RegelAbweichung für seine SelbstOptimierung gross genug wird? Wird der Regler daran gehindert, eine genügend grosse RegelAbweichung zu produzieren, weil er irgendwo an seine Grenzen stösst oder weil ihm durch irgendwelche Parametrierungen viel zu enge Grenzen auferlegt werden?
Ist "Das Gebläse muss mit mindestens 20% von 50 Hz also 10 Hz betrieben werden." eine solche Beschneidung der Möglichkeiten, die den Regler zur Verzweiflung treiben? Was ist für den Fall vorgesehen, dass der Regler einen Wert ausgeben will, der weniger als 10 Hz entspricht?
Oder ist die Granularität des EingangsSignals so riesig, dass kleine Änderungen der analogen Grösse zu starken Sprüngen in der Darstellung als digitale Zahlen führen? Sind Abstufungen von (überschlägig) 0,5 mbar zu grob für den Zweck dieses Threads? Wie genau soll der Sollwert eingehalten werden?

Die Diskussion hier gewinnt an Substanz, wenn man Waldy auf seine Liste der ignorierten Mitglieder setzt.
Nun entmutige waldy doch nicht so herb. Ich habe selten so klare Äusserungen von ihm gesehen, wie in diesem Thread und verbuche z.Z. eine durchaus positive Tendenz. Weiter so, waldy! ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Gebläse muss mit mindestens 20% von 50 Hz also 10 Hz betrieben werden." eine solche Beschneidung der Möglichkeiten, die den Regler zur Verzweiflung treiben? Was ist für den Fall vorgesehen, dass der Regler einen Wert ausgeben will, der weniger als 10 Hz entspricht?
Kann man nicht so machen, Regler lassen seine Arbeit in Bereich von "0" bis "X.X" machen , und einfach Werte additien lassen .
Wert von Mindestens 10 Hz plus Wert von Regler von Ausgang.

Ganz grob ungefähr so.

Gruß
 

Anhänge

  • FU.PNG
    FU.PNG
    9,2 KB · Aufrufe: 28
Kann man nicht so machen, Regler lassen seine Arbeit in Bereich von "0" bis "X.X" machen lassen, und einfach Werte additien lassen .
Wert von Mindestens 10 Herz plus Wert von Regler von Ausgang.
"Regler seine Arbeit im Bereich von "0" bis "X.X" machen lassen"? Hmmm, warum fängt sein Bereich denn bei 0 an? Die RegelDifferenz kann doch durchaus auch so sein, dass am ReglerAusgang negative Werte auftreten, wenn der Istwert durch Überschwingen grösser als der Sollwert wird.
Oder Durch Einflüsse von I- oder D-Anteil, je nach "Vorgeschichte" in der Entwicklung des RegelVerlaufs.
Und Deine Addition von 10 zu z.B. -5 würde dann doch wieder zu einem Ergebnis <10 führen.

Meine Frage bezweckte eigentlich nicht, solche "Feinheiten" des LösungsWeges zu klären/besprechen, sondern abzuklären, welches Verhalten hier geplant ist. Soll in solchen Fällen, wenn der Regler kleinere Werte ermittelt, der Wert einfach auf 0 gesetzt und somit das Gebläse "radikal" abgeschaltet werden? Der dadurch entstehende Sprung von 0 auf 10 (und umgekehrt) wird sich mit Sicherheit störend auswirken, wenn der Regler im NormalFall in einem Bereich arbeiten muss, der zu einem dauernden Wechsel zwischen 0 und 10 führt.
Wie verhält sich das Gebläse und insbesondere der Druck bei einer Umschaltung zwischen 0 und 10?
Was ist in dem Fall wichtiger/vorrangig? Die Einhaltung des SollDruckes mit welcher Toleranz oder die Rücksicht auf Belange des Motors/FUs?
Wie gut verkraftet das der GebläseMotor, wenn er in zu kurzen Abständen ein- und ausgeschaltet wird?
Wenn der Regler bei der SelbstOptimierung in diesen Bereich gerät, dürfte das genauso zu Problemen bzw. falschen Ergbenissen führen, wobei ich aber noch keinen Zusammenhang mit der Meldung "Regelabweichung zu klein" erkennen kann. Vielleicht arbeitet die SelbstOptimierung in einem Bereich, der komplett in der Region liegt, die zu Werten entsprechend < 10 Hz führt?
 
also jetzt kommt das nächste Nebenkriegsschauplatz, wie, ob und warum man das Stellsignal nach unten begrenzen sollte...

Wie ichs verstanden hab, hat der TE ein Problem mit der Selbstoptimierung des Reglers. Vielleicht sollte der TE mal posten, was er hier so eingestellt hat:

1663163999759.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meine Frage: Macht es Sinn weiter mit der Erstoptimierung herum zu probieren oder ist es zielführender die Regelparameter zu berechnen, was uns zu der Frage: führt Wie berechne ich die Regelparameter?
Falls Du alles richtig programmiert hast, würde ich mit einem Gain von 2 und einem TI von 10s und einem TD von 0s also deaktivem D-Anteil beginnen. Dann einfach etwas rumprobieren.

Falls Du berechnen willst, schau mal hier:

also Sprungantwort aufnehmen und mit Ziegler/Nichols oder CHR die Reglerparameter "ausrechnen". Aber ob da was besseres als meine 2 und 10s rauskommen, wirst Du sehn...
 
also jetzt kommt das nächste Nebenkriegsschauplatz, wie, ob und warum man das Stellsignal nach unten begrenzen sollte...
Nö, es ging mir nicht darum das Wie, Ob und Warum auszudiskutieren. Die Begrenzung war im Beitrag #1 "am Rande" genannt worden.
"Am Rande" sage ich nun, weil wir nicht erfahren haben, ob diese Begrenzung überhaupt schon umgesetzt ist und bei der Ausführung der SelbstOptimierung aktiviert war und wenn ja, wie, aber nicht warum.
Ich habe keine Ahnung wie (un-)linear der Zusammenhang zwischen Drehzahl/Frequenz und DurchflussMenge/Druck sein mag, sehe hier aber eine Stelle, an der eine evtl. Linearität mit Sicherheit unterbrochen ist.
Wir hatten hier im Forum doch letztens so viele "Hausaufgaben", bei denen es darum ging, eine NichtLinearität zu kompensieren, da es anscheinend nicht so oft möglich ist, NichtLinearitäten einfach zu ignorieren und den Regler einfach so machen zu lassen.
 
Ich habe heute den ganzen Tag herumprobiert und bin ein Stück weiter. Sagen wir mal so: Das System reagiert auf meine Eingaben :)
Aus euren Beiträgen habe ich folgendes verstanden:
Macht es Sinn weiter mit der Erstoptimierung herum zu probieren
Nein, da störanfällig, evtl. in meinem speziellen Fall nicht anwendbar, es gibt bessere Wege die Parameter zu bestimmen.
ist es zielführender die Regelparameter zu berechnen
Nein, sinnvolles probieren ist schneller und ausreichend.
Zunächst eine Korrektur in meinen Angaben.
Der minimale Sollwert ist auf 20 Hz (nicht %) begrenzt, das bedeutet also 40%.
Ich rufe einen FC in dem ich die Regler aufrufe im OB 30 auf.
Die Bibliothek ist mir aus verschiedenen Gründen wichtig
- es ist eine Dokumentation vorhanden, welche man neuen Kollegen, Kunden o.ä. geben kann
- sie ist als einheitlicher Firmenstandard nutzbar
- die Visualisierung ist inklusive

Dennoch habe ich alle Test erstmal mit dem Cont_C gemacht, wenn der funktioniert werde ich das schon irgendwie auf die Bibliothek umrödeln können.
Was habe ich gemacht?
Ich habe erstmal die Trivia verstanden, nicht ganz leicht das zuzugeben, aber ist halt so.
Zum Beispiel, dass der Regler einen prozentualen Wert ausgibt, den ich nochmal durch 2 teilen muss, da der FU bei 50 Hz 100% Drehzahl liefert.
Ich habe, wie empfohlen, die Regelparameter zuerst auf Gain = 1, alle anderen auf 0 gesetzt. Ergebnis: starkes Schwingen, eigentlich nur zwischen 0 und 100 %.
Das Verhalten hat sich bei Veränderung der Werte nach oben und unten nicht wesentlich verbessert. Ich habe folgende Werte für KP getestet:
0.1,0.5,0.7,1,1.5,2,2.5. Den TI habe ich auch mal verändert (0.1,0.4) - hat nichts wesentlich verändert.

Dann habe ich den Sensor direkt auf den FU verdrahtet und mit dem internen Regler des FU geregelt. Das hat prima funktioniert. KP=2,5, Ti=0,4.
Bei 100 mbar schwankt die Frequenz, je nach Abnahme, zwischen 29 und 32,5 Hz. Allerdings war bei diesem Test nicht die Sollwertbegrenzung auf 20 Hz eingeschaltet.
Das werde ich morgen früh testen.

Ich fand den Hinweis von Waldy sehr interessant.
Kann man nicht so machen, Regler lassen seine Arbeit in Bereich von "0" bis "X.X" machen , und einfach Werte additien lassen .
Wert von Mindestens 10 Hz plus Wert von Regler von Ausgang.

Denn genau genommen beträgt mein Regelbereich ja nur 50Hz-20Hz=30Hz. Das habe ich meinem Regler aber noch nicht mitgeteilt. Der Stellwert ist im FU auf 20 Hz nach unten begrenzt. Das sollte ich meinem Regler sicher mitteilen. Aber wie?
Ein andere Überlegung ist den Stellwert des FU entsprechend anzupassen. Also wenn der Regler z.B. 10 % ausgibt sind das bei 60 % Regelbereich 6 % + 40% offset = 46%=23Hz die an den FU geschrieben werden. Passt das?

Das werde ich morgen nach dem rückverdrahten des Sensors auf die SPS probieren.

Was wenn das nicht hilft? Jemand eine Idee?

Ich hoffe ich habe alle Fragen beantwortet.
 
Zurück
Oben