# PID Regler parametrieren



## ralfsps (30 Oktober 2010)

Hi Kollegen,
ich habe ein Problem mit der Einstellungen eines PI Reglers zu Gasdurchflussregelung.

Daten:

Steuerung:
 S7-315 + CONT_C (als Regelbaustein)


Regelventil :
Leistung: 0.78 KW
 Eigenschaft: Es braucht ca 30 s um zu schließen / aufzumachen (vom Anfang zu Ende)
 Strecke:
Gasleitung: 100%  entspricht 340 m3/h

Um den Regler zu parametrieren habe ich bissel gegogelt.
da stand: 
1.     Einstellung des Reglers als reinen P-Regler: Ki = 0 und Kd = 0 
Das habe ich auch gemacht
2.     Die Reglerverstärkung Kp wird solange vergrößert, bis sich der geschlossene Regelkreis an der Stabilitätsgrenze befindet und Dauerschwingungen ausführt. 
Von welchem Wert soll man anfangen? (habe von 0.01 angefangen )
Was heißt stabilitätgrenze? Ist das wenn der Istwert schwingt (Sieh bitte die Anlage)?
3.     Der dabei eingestellte Wert Kp wird als Kpkrit bezeichnet. 
4.     Die Periodendauer der sich einstellenden Dauerschwingung Tkrit wird gemessen. 
5. Faustformel anwenden (Zieglers Formel für PI Regler):
                     KP=0.45 Kpkrit  ,   TI=0.85* Tkrit     

Ich habe leider nur Dauerschwingungen (Istwert) und ich komme in keinster Weise zu einem  vernünftigen Ergebnis. Kann jemand weiter helfen?

Danke im voraus

Ralf


----------



## borromeus (30 Oktober 2010)

Dein Problem ist, dass das Stellorgan langsam ist.
Bei der Kurve wäre y zwecks Analyse auch nicht schlecht.

Bist Du sicher, dass die Werte richtig normiert sind?
Für mich schaut das fast so aus.
Wie sieht die Reglerbeschaltung aus?

Dreh mal das TI ab und versuche einen bestmöglichen P-Regler zu machen.
Wenn Du den hast kannst Du eine Nachstellzeit, geschätzt mal mit so 1,5min ausprobieren und mit dem Kp etwas runtergehen.

lG
Karl


edit: ach ja: und stimmt das Aufrufintervall mit dem am Regler überein?


----------



## borromeus (30 Oktober 2010)

ralfsps schrieb:


> 1. Einstellung des Reglers als reinen P-Regler: Ki = 0 und Kd = 0
> Das habe ich auch gemacht
> GUT!
> 2. Die Reglerverstärkung Kp wird solange vergrößert, bis sich der geschlossene Regelkreis an der Stabilitätsgrenze befindet und Dauerschwingungen ausführt.
> ...


 
Das wird schon!

lG
Karl


----------



## Onkel Dagobert (30 Oktober 2010)

Hallo Ralf,

aufgrund des dargestellten Kurvenverlaufes incl. Parameter würde ich zu folgenden Einstellungen tendieren:

P = 0.2
TI = 25..30s
TD = 0s


Gruß, Onkel


----------



## gravieren (30 Oktober 2010)

Hi

Stellwert des Ventils   min--> max   30 sekunden.


Aber innerhalb von 1 Minute   4 bis 5 Istwertsprünge  !


Komisch.


----------



## Onkel Dagobert (30 Oktober 2010)

ralfsps schrieb:


> ..2.     Die Reglerverstärkung Kp wird solange vergrößert, bis sich der geschlossene Regelkreis an der Stabilitätsgrenze befindet und Dauerschwingungen ausführt.
> Von welchem Wert soll man anfangen?..


Wenn er schwingt, verringere die Verstärkung bis das Schwingen aufhört. Anderenfalls erhöhe die Verstärkung bis es dauerhaft schwingt. Dabei den Regler immer wieder durch Sollwertsprünge anstoßen.



ralfsps schrieb:


> ..Was heißt stabilitätgrenze? Ist das wenn der Istwert schwingt..


  Genauer gesagt, wenn er durch erhöhen der Verstärkung den Punkt erreicht hat, wo er nach einem Sollwertsprung dauerhaft zu schwingen beginnt. Wird die Amplitude von Periode zu Periode kleiner, so wird er allmählich stabil.


Gruß, Onkel


----------



## falke69 (30 Oktober 2010)

Achtung:
Regler mit TI = 0 heisst, ultraschneller I-Anteil.

Zum Ausschalten des I und D-Anteils besser I_SEL und D_SEL auf 0 setzen.

Aber vielleicht hast Du das ja beachtet gehabt.


----------



## Onkel Dagobert (31 Oktober 2010)

falke69 schrieb:


> Achtung:
> Regler mit TI = 0 heisst, ultraschneller I-Anteil...


Der Ferrari unter den Reglern? Nein! Wenn man bedenkt dass bei der Berechnung des I-Anteils der Faktor TA/TI (Abtastzeit/Integrationszeit) eine Rolle spielt, dann sollte einem was auffallen.


----------



## Thomas_v2.1 (31 Oktober 2010)

Onkel Dagobert schrieb:


> Der Ferrari unter den Reglern? Nein! Wenn man bedenkt dass bei der Berechnung des I-Anteils der Faktor TA/TI (Abtastzeit/Integrationszeit) eine Rolle spielt, dann sollte einem was auffallen.



Der CONT_C begrenzt aber den I-Anteil bausteinintern auf CYCLE / 2.

Also wenn man an TI 0ms parametriert und an CYCLE 100 ms stehen, wird intern der I-Anteil mit 50ms berechnet.


----------



## Onkel Dagobert (31 Oktober 2010)

Thomas_v2.1 schrieb:


> ..Also wenn man an TI 0ms parametriert und an CYCLE 100 ms stehen, wird intern der I-Anteil mit 50ms berechnet.


Wirklich? Ich hatte jahrelang den FB41/42 eingesetzt. Das hätte mir aufffallen müssen. Heute verwende ich einen eigenen PID-Regler, bei dem eine integrationszeit von "0" abgefangen wird. Eigentlich war ich der Meinug dass es bei den Siemens-Reglern auch so war. Sicher bin ich mir nicht, da ich damals eigene Bausteine hatte, die die Siemens-Regler "bedienten".


----------



## Thomas_v2.1 (31 Oktober 2010)

Onkel Dagobert schrieb:


> Wirklich? Ich hatte jahrelang den FB41/42 eingesetzt. Das hätte mir aufffallen müssen. Heute verwende ich einen eigenen PID-Regler, bei dem eine integrationszeit von "0" abgefangen wird. Eigentlich war ich der Meinug dass es bei den Siemens-Reglern auch so war. Sicher bin ich mir nicht, da ich damals eigene Bausteine hatte, die die Siemens-Regler "bedienten".



Also zumindest die Version 1.5 aus der Standard-Bibliothek die ich mal unter die Lupe genommen habe macht das so (hab mir mal die Mühe gemacht, dern AWL-Code in SCL zurückzuübersetzen, und da komm fast der gleiche AWL-Code raus...fast, weil der SCL-Compiler von Siemens besser zu optimieren scheint).

Aber da steht dann sowas:

```
IF (rTi < (rCycle * 0.5)) THEN
        rTi := rCycle * 0.5;
    END_IF;
```

Intern wird alles in Real-Zahlen mit Sekunden gerechnet.


----------



## falke69 (31 Oktober 2010)

Guten Morgen zusammen,

das mit der 0.5 * SampleTime wusste ich bis jetzt auch nicht. Ich hatte aber eben die Erfahrung gemacht, dass TI = 0 den I-Anteil nicht abschaltet, sondern der Regler sich so verhält, wie wenn ich einen sehr kleinen Wert gegen 0 eingebe.

Ich halte es deshalb in meinen Programmen so, dass ich den Wert von TI auf 0 vergleiche und den Ausgang des Vergleichers mit I_SEL verschalte. Gleiches für TD und D_SEL.


----------



## Onkel Dagobert (31 Oktober 2010)

Moin,

alles klar, ich hatte das in meinem "Bedienbaustein" abgefangen.


```
//+++ I_SEL
      L     #P.HMI.PID.TI
      L     0
      <>I   
      =     #P.HMI.PID.I_SEL            // I_SEL an HMI
      =      [AR2,P#0.4]                // I_SEL an Regler
```


----------

