Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Info

PID-Regler (ohne und mit anti-wind-up)

Inhalt dieser Seite

Inhalt

Funktionsbeschreibung

Status
colourPurple
titleReviEW erforderlich
Ziel eines Reglers ist es, einen Ist-Wert an einen Soll-Wert heranzuführen und dann den Soll-Wert zu halten.
Es gibt unterschiedliche Arten von Regler. Ein PID-Regler ist eine Kombination von drei Reglertypen, nämlich

  • einem Proportionalregler (welcher primär die Differenz zwischen Ist-und Sollwert misst und daher sehr direkt auf Abweichungen reagiert [→ “Berücksichtigung der Abweichung”]),

  • einem Integralregler (welcher basierend auf Vergangenheitswerten das Ergebnis des P-Reglers optimiert und eher langfristig wirkt [→ “Aufsummierung der Abweichung”]) ,

  • einem Differenzialregler (welcher - basierenden auf Veränderungen des Ist-Wertes - versucht, die Zukunft zu antizipieren [→ “Reaktion auf Änderungen der Abweichung”]).

Das Logik-Modul PID awu enthält zusätzlich noch eine sog. Anti-Wind-Up-Funktion. Damit wird vermieden, dass der I-Regler die Stellgrösse über- oder unterschreitet.

Eingänge

  • Soll(float): Soll-Wert

  • Ist (float): Ist-Wert.

  • Kp(float): Proportional-Term.

  • Ki(float): Integral-Term.

  • Kd (float): Differential-Term.

  • (nur PID awu) Untergrenze (float): Kleinster möglicher Wert der Stellgröße

  • (nur PID awu) Obergrenze (float): Größter möglicher Wert der Stellgröße

  • (Optional) Inhibit 1-n(boolean): (Optionale) Sperreingänge, lösen die →Abbruchfunktion aus.

  • (Optional) Trigger 1-n(boolean): (Optionale) Triggereingänge, lösen die →Triggerfunktion aus.

Ausgänge

  • Stell (float): Stellgröße.

Hinweise

Praktische Anwendungsbeispiele

  • Temperaturregelung

Zugrundeliegender Modulbaustein

Zugrundeliegende Modulbausteine

Status
colourYellow
titleFortgeschrittene

Code

Status
colourRed
titleExperten

Der Custom-Logik-Code dieses Logik-Moduls lautet wie folgt:

Einfache Variante

Codeblock
{  
"Level": [
    [      "$Reference",      "float",      0    ],
    [      "$Controlled",      "float",      0    ],
    [      "$Manipulate",      "float",      0    ],
    [      "$Kp",      "float",      0    ],
    [      "$Ki",      "float",      0    ],
    [      "$Kd",      "float",      0    ],
    [      "$VAR<Inhibit?>",      "bool",      false    ]  ],
"Module": [
    [      "Break",      [        "$VAR<Inhibit?>"      ]    ],
    [       "PID controller",      "$Reference",      "$Controlled",      "$Manipulate",      "$Kp",      "$Ki",      "$Kd"    ]  ],
"Input": [
    [      "Soll",      "Soll-Wert",      "$Reference",      "c"    ],
    [      "Ist",      "Ist-Wert",      "$Controlled",      "a"    ],
    [      "Kp",      "Proportional-Term",      "$Kp",      "c"    ],
    [      "Ki",      "Integral-Term",      "$Ki",      "c"    ],
    [      "Kd",      "Diverential-Term",      "$Kd",      "c"    ],
    [      "Inhibit",      "INHIBIT",      "$VAR<Inhibit?>",      "u"    ]  ],
"Output": [
    [      "Stell",      "Stellgröße",      "$Manipulate",      "a"    ]  ]
}

Variante mit Anti-Wind-Up

Codeblock
{  
"Level": [
    [      "$Reference",      "float",      0    ],
    [      "$Controlled",      "float",      0    ],
    [      "$Manipulate",      "float",      0    ],
    [      "$Kp",      "float",      0    ],
    [      "$Ki",      "float",      0    ],
    [      "$Kd",      "float",      0    ],
    [      "$LowerLimit",      "float",      0    ],
    [      "$UpperLimit",      "float",      100    ],
    [      "$VAR<Inhibit?>",      "bool",      false    ]  ],
"Module": [
    [      "Break",      [        "$VAR<Inhibit?>"      ]    ],
    [       "PID_awu",      "$Reference",      "$Controlled",      "$Manipulate",      "$Kp",      "$Ki",      "$Kd",      "$LowerLimit",      "$UpperLimit"    ]  ],
"Input": [
    [      "Soll",      "Soll-Wert",      "$Reference",      "c"    ],
    [      "Ist",      "Ist-Wert",      "$Controlled",      "a"    ],
    [      "Kp",      "Proportional-Term",      "$Kp",      "c"    ],
    [      "Ki",      "Integral-Term",      "$Ki",      "c"    ],
    [      "Kd",      "Diverential-Term",      "$Kd",      "c"    ],
    [      "Untergrenze",      "Kleinster möglicher Wert der Stellgröße",      "$LowerLimit",      "c"    ],
    [      "Obergrenze",      "Größter möglicher Wert der Stellgröße",      "$UpperLimit",      "c"    ],
    [      "Inhibit",      "INHIBIT",      "$VAR<Inhibit?>",      "u"    ]  ],
"Output": [
    [      "Stell",      "Stellgröße",      "$Manipulate",      "a"    ]  ]
}