Step 7 PID Regler - Teilung der Bearbeitung zwischen Zyklen und Steuerung von Ventile 4-20mA

JSLO

Level-1
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag!

Ich habe nicht ganz gefertigtes Projekt von der Automatisierung einer Anlage von der komplexen Vorbereitung des Erdgases bekommen, das eine andere Firma ein paar Jahre zurück versucht hat zu herstellen. Meine Aufgabe ist mich in diesem Projekt auszukennen und es zu Ende zu bringen. in diesem Zusammenhang sind mir ein paar Fragen betreffs PID Regler bekommen.

Die allgemeine Vorstellung:
zwei 315-2pn/dp,
Analogeingänge - 110 Stück, 4-20 mA (ein Druck, eine Temperatur, ein Niveau),
Analogausgänge - 25 Stück, 4-20 mA (Ausgänge von PID Regler für die Gas- und Niveausteuerung)
Digitaleingänge - 52 Stück,
Digitalausgänge - 25 Stück,
der rechnergestütztere Arbeitsplatz mit WinCC v7.0.

1. Es wird ein FC400, der "LP_SCHED: Loop Scheduler" und alle 25 Regler (FB41 - CONT_C) enthält, zyklisch im OB 35 (100 ms) 4 Mal aufgeruft, das Parameter "TM_BASE" ist 25 ms.
Soweit ich verstehe, Loop Scheduler ruft alle 25 Regler der Reihe nach an, und zwar: die erste Unterbrechng OB 35 - Regler 1,2,3,4 mit der 25ms-Bearbeitung für jeden Regler, die zweite Unterbrechung OB 35 - Regler 5,6,7,8 mit der 25ms-Bearbeitung für jeden Regler usw. Habe ich recht?

1.1 Falls OB 35 wird alle 100 ms ausgeführt, und innerhalb von ihm FC400 viermal mit 25 ms jeder auch ausgeführt, dann wann könnte das Programm im OB1 abarbeitet wird?

1.2 Warum, ihre Meinung nach, wurde es so viel (25 ms) im Parameter "TM_BASE" eingestellt? In diesem Fall der ganze Zyklus der Regler beträgt mehr als 625 ms. Das heißt, dass das Steuersignal zum Ventil weniger als 2 mal pro Sekunde kommen wird.
Es scheint mir, dass ungefähr 5 ms statt 25 ms für die Bearbeitung von 1 Regler genug ist. Kann ich mehr als 4 Regler im 1 Zyklus im meinem Fall abarbeiten? Oder was für eine bessere Lösung vorhanden ist?


2. Es gibt ein Separator, wo ein Flüssigkeit und Erdgas getrennt werden. Dort werden 2 geregelten Ventile für den Druck des Gases und das Niveau der Flüssigkeit eingestellt. Das Niveau soll nicht mehr als z.B. 30% sein. Das Ventil soll sich aufmachen lassen wenn das Niveau mehr als 30% ist (z.B. 31%). In diesem Fall die Aufgabe für den Regler und sein Ausgang ist negativ (30 - 31). Aber ich habe als Ausgang des Reglers einen Analogausgang 4-20 mA, der keinen negativen Wert nehmen kann, um ein Ventil zu steuern. Zur Zeit das Ventil wird nicht geöffnet, wenn das Niveau von 30% bis 100%. Vielleicht soll ich den Ausgang vom Regler invertieren, bevor Digital-Analog-Umsetzung im AO Modul erledigen?
Die Antwort wurde gefunden - man soll das Vorzeichen des Gain Gliedes wechseln.

Scr622.jpg

Danke für die Hilfe!
 
Zuletzt bearbeitet:
Hallo JSLO,

1.) Müsste stimmen.OB 35 ist standardmässig auf 100ms.Den LP_sched nimmt man eigentlich wenn man unterschiedliche Abtastzeiten hat.
Er untersetzt die TM-Base so wie du sie parametrierst hast.Man sorgt dann für eine gleichmässige Aufrufzeit der Regler.
Wenn du 25 Regler hast kommst du aber auf 25X25 ms=625 ms.Wieso nimmt mann dann nicht einen Weckruf(OBXX) und verteilt
sie auf eine länger Zeit.Selbst aufgeteilt auf 2 SPS en kommt mir diese Aufrufzeit zu schnell vor.
Wie lang ist der restliche Programmcode?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
zu 1.)sinngemäß könnte man langsamere Regelungen, üblicherweise Temperaturregelungen als Bsp. weniger häufig aufrufen.Das würde die Zykluszeitbelastung minimieren.
der Scheduler würde das aufteilen.
 
Was bringt dir so eine schnelle Aufrufzeit bei sovielen Reglern?Du kommst ja gar nicht durch in der Zeit.Der Programmcode muss ja abgearbeitet werden.
 
Das ist klar aber weisst du wie lange 25 Regler brauchen?Das muss ich doch aufteilen.:D
Ich würde die langsamen Regelungen in eine Steuerung machen und die schnellen in die andere.
 
naja.. ich würde sie nicht gleich in zwei SPS'n verbauen. Ich bin mir ziemlich sicher, dass 1 CPU dies in einer angemessen Zeit abarbeiten kann.

An welche Zykluszeit hast du gedacht?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das will doch der JSLO so.Ich würde die Regelstrecken erst mal alle klassifizieren.Man weiss ja gar nicht was für Regelungen er hat.
25 Regler in einer SPS.Das glaube ich nicht das das geht.Schau mal alleine wie lang er da für den Programmcode braucht.:D

Die Zykluszeiten sind eben unterschiedlich.Darum der Scheduler.Theoretisch kann man die Regelung qualifizieren indem man um den Sollwert rum einen Sprung drauf gibt.
Die Verzugszeit und Totzeit ist dann ein Maßstab wie schwierig die Strecke zu regeln ist.
Gasregelstrecken können sehr schnell sein.Man weiss es nicht was er genau hat.
 
1. Es wird ein FC400, der "LP_SCHED: Loop Scheduler" und alle 25 Regler (FB41 - CONT_C) enthält, zyklisch im OB 35 (100 ms) 4 Mal aufgeruft, das Parameter "TM_BASE" ist 25 ms.
[...]
1.2 Warum, ihre Meinung nach, wurde es so viel (25 ms) im Parameter "TM_BASE" eingestellt?
[...]
Anhang anzeigen 30170
[...]
Anhang anzeigen 30171
An TM_BASE wird nicht die Bearbeitungsdauer des Reglers angegeben, sondern die Aufrufzeit des OB35 dividiert durch die Anzahl Aufrufe der FC LP_SCHED in dem OB-Durchlauf: (100ms / 4 = 25ms)

Die Bearbeitungszeit des Reglers FB41 CONT_C beträgt (viel) weniger als eine halbe ms (abhängig von der eingesetzten CPU).

Interessant wäre, was für Analog-Eingangs- und Ausgangs-Baugruppen verwendet werden. Die limitieren nämlich die Regelgeschwindigkeit.


Irgendwie funktionieren Deine Anhänge nicht "Ungültige Angabe: Anhang".

Harald
 
Ja er hat ja aber noch das eigentliche SPS-programm.Das sind ja nicht nur die Regleraufrufe.
Meiner Meinung nach macht es keinen Sinn alle Regelungen mit 25 ms aufzurufen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es macht vermutlich Sinn, die Regler in einem Intervall aufzurufen, den die Technologie erfordert und den die Hardware auch hergibt. Das können durchaus auch verschiedene Intervalle sein (manche Regler häufiger, manche seltener). Dazu gibt es vom TE jedoch keine genauen Angaben.

Das Verteilen von Regleraufrufen auf mehrere (ggf. höher frequentierte) OB3x-Aufrufe hat außer dem Verlangsamen der Regelungen auf das technologisch notwendige/machbare u.a. den Sinn, die OB1-Zykluszeitverlängerung abzumildern in dem OB1-Zyklus, wo der OB3x "zuschlägt". Idealerweise sollte man dazu zunächst das OB3x-Intervall soweit senken, daß je OB3x-Aufruf nur noch 1 Regler aufgerufen wird - dann ist der Einfluß des Weckalarms OB3x auf die OB1-Zykluszeit am geringsten.

Harald
 
1. Es wird ein FC400, der "LP_SCHED: Loop Scheduler" und alle 25 Regler (FB41 - CONT_C) enthält, zyklisch im OB 35 (100 ms) 4 Mal aufgeruft, das Parameter "TM_BASE" ist 25 ms.
Soweit ich verstehe, Loop Scheduler ruft alle 25 Regler der Reihe nach an, und zwar: die erste Unterbrechng OB 35 - Regler 1,2,3,4 mit der 25ms-Bearbeitung für jeden Regler, die zweite Unterbrechung OB 35 - Regler 5,6,7,8 mit der 25ms-Bearbeitung für jeden Regler usw. Habe ich recht?

Ich wollte mir auch mal schlau machen über den Loop Scheluder.
In welche Bibliothek ist die enthalten ?
Auf die Stelle finde ich ihm nicht

Bram
 
Modular PID Control.Ca. ein Dutzend fertige Reglerapplikationen von Siemens die man pro Steuerung kostenpflichtig erwerben muss.
Insgesamt besteht die Bibliothek aus vielen Funktionsbausteinen die für vorgefertigte Applikationen verwendet werden.

Bsp. kaskadenregelung,Split Range,Mischungsregelung,....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen und danke für die Antworten!

>Wie lang ist der restliche Programmcode?
Der Programmzyklus ist maximal 50 ms als ich nur 2 CPU miteinander, ohne Module, verbunden habe.
??????0013.jpg

>Was bringt dir so eine schnelle Aufrufzeit bei sovielen Reglern?
Ich wollte auf diese Weise im OB35 (100 ms) z.B. 15 Regler mit 5 ms für jeden aufrufen, um noch 25 ms für die Abarbeitung vom restliches Programm aufzuheben.

Ich habe mich nicht ganz genau geäußert. Ich habe 25 Regler im 1. CPU und nur 1 im 2. CPU. Die Belastung ist sehr ungleichmäßig. Diese 2 CPU stehen zu weit auseinander und es ist unmöglich analoge Signale zwischen CPUs zu teilen.
Darüber hinaus war ich noch nicht dort, wo diese Anlage funktioniert, und kein Gespräch mit Arbeitsvorbereiter hatte. Darum betrachte ich zur Zeit Regler von Drück und Niveau im Separator als gleichwertige.

Die verwendete Analog-Eingangs- und Ausgangs-Baugruppen:
AO 332-5HF00-0AB0
AI 331-1KF02-0AB0
 
6ES7331-1KF02-0AB0, AI 8 x 13 Bit = 1 integrierender ADU mit 8-Eingangs-Multiplexer

Wenn alle 8 Analogeingänge der Baugruppe aktiviert sind, dann kommt von jedem Eingang nur alle 528ms (*) ein neuer Meßwert (Regler-Istwert). Die Regler brauchen/können nicht schneller regeln.

(*) AD-Wandlungszeit
bei 50Hz Störfrequenzunterdrückung: 66ms * 8 = 528ms
bei 60Hz Störfrequenzunterdrückung: 55ms * 8 = 440ms

Harald
 
Ich glaube die verwendete Art der Regelung und die Stellglieder, eventuell Störgrößenaufschaltungen,Kaskaden bringen mehr Zugewinn wie irgendwelche
schnellen Regler.Es sind ja verfahrenstechnische Regelungen.

Eventuell gibt es auch Beeinflussungen von Regelungen die in dem gleichen Rohr sitzen und gleiche oder ähnliche Größen regeln.
Man kann das bei PT2-Strecken beobachten.Die schwingen sich gern auf.Abhilfe-->unterschiedliche PID-Werte.

Dennoch Regler so schnell wie nötig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Modular PID Control.Ca. ein Dutzend fertige Reglerapplikationen von Siemens die man pro Steuerung kostenpflichtig erwerben muss.
Insgesamt besteht die Bibliothek aus vielen Funktionsbausteinen die für vorgefertigte Applikationen verwendet werden.

Bsp. kaskadenregelung,Split Range,Mischungsregelung,....

Hallo Silverfreaky.

Hab die Bibliothek jetzt bei TIA gefunden. Danke.......
ich muss aktuell das ein und ander in TIA verwenden...

@ JSLO,

Du brauchst die Bibliothek dann nicht zu schicken. Doch danke für das Angebot..
 
>Wenn alle 8 Analogeingänge der Baugruppe aktiviert sind, dann kommt von jedem Eingang nur alle 528ms (*) ein neuer Meßwert (Regler-Istwert). Die Regler brauchen/können nicht schneller regeln.

Danke! Ich habe ganz darüber vergessen.

An TM_BASE wird nicht die Bearbeitungsdauer des Reglers angegeben, sondern die Aufrufzeit des OB35 dividiert durch die Anzahl Aufrufe der FC LP_SCHED in dem OB-Durchlauf: (100ms / 4 = 25ms)

Die Bearbeitungszeit des Reglers FB41 CONT_C beträgt (viel) weniger als eine halbe ms (abhängig von der eingesetzten CPU).

Aber ich kann nicht bis jetzt begreifen, wann der OB1 bearbeitet werden wird? Ob das beduetet, dass Regler im OB35 jeder 25ms aufgerufen werden und im Laufe von ungefähr 1ms abarbeitet werden?
Dann stelle ich mich folgendes Bild vor:

1) Aufruf des OB35.
2) FC mit Loop_Scheduler und alle Regler wird gestartet und dort 1. Regler wird abarbeitet. Das wird weniger als 1ms gedauert.
3) Warten die restliche Zeit (circa 24ms).
4) FC mit Loop_Scheduler und alle Regler wird gestartet und dort 2. Regler wird abarbeitet.
5) Warten die restliche Zeit (circa 24ms).
6) FC mit Loop_Scheduler und alle Regler wird gestartet und dort 3. Regler wird abarbeitet.
7) Warten die restliche Zeit (circa 24ms).
8 )FC mit Loop_Scheduler und alle Regler wird gestartet und dort 4. Regler wird abarbeitet.
9) OB35 ist beendet. Es gibt noch 24ms für die Abarbeitung des Programms im OB1 bis OB35 aufs neue wird aufgerufen.

Ist diese Auffassung korrekt?
??????0057.jpg
 
Zuletzt bearbeitet:
Vielleicht bin ich einen falschen Weg gegangen, wenn ich an LP_SCHED für diese Aufgabe gedacht habe.
Hier https://support.industry.siemens.co...rs-in-an-s7-300-and-s7-400-cpu?dti=0&lc=en-WW
befindet sich diese Tabelle mit Laufenzeiten von Regelungsbausteine. FB41 CONT_C PID Control für mein CPU 6ES7315-2EH14-0AB0 - 0.07ms.
Scr626.jpg

1) Kann ich alle 25 Regler gerade aus OB35 (100ms) aufrufen? Die Verlängerung vom OB1 beträgt insgesamt nur 1.75ms.

2) Ist es sinnvoll, OB35 in diesem Fall seltener als 100ms wegen der Störfrequenzunterdrückung (66ms*8=528ms) aufzurufen, um den Einfluß auf OB1 zu vermindern?
 
Zurück
Oben