FB_CTRL_PI_PID

FB_CTRL_PI_PID 1:

Der Funktionsbaustein stellt einen kaskadierten PI - PID-Regler im Wirkungsplan dar. Intern nutzt dieser Baustein die Übertragungsglieder FB_CTRL_PI, FB_CTRL_LIMITER und den FB_CTRL_PID.

Übertragungsfunktion des PI-Glieds:

FB_CTRL_PI_PID 2:

Übertragungsfunktion des PID-Glieds:

FB_CTRL_PI_PID 3:

Wirkungsplan des kaskadierten Übertragungsglieds:

FB_CTRL_PI_PID 4:

VAR_INPUT

VAR_INPUT
    fSetpointValue      : FLOAT;        (* setpoint value *)
    fActualValueOuterLoop   : FLOAT;        (* actual value from the process to the PI-controller *)
    fActualValueInnerLoop   : FLOAT;        (* actual value from the process to the PID-controller *)
    fPreControl         : FLOAT;        (* pre control value *)

    fManSyncValueInnerLoop  : FLOAT;        (* input value for the manual mode or the sync request *)
    bSyncInnerLoop      : BOOL;         (* rising edge set the output to the fManSyncValue *)
    eModeInnerLoop      : E_CTRL_MODE;  (* sets the mode of the function block *)
    bHoldInnerLoop      : BOOL;         (* hold the internal integrator *)

    fManSyncValueOuterLoop  : FLOAT;        (* input value for the manual mode or the sync request *)
    bSyncOuterLoop      : BOOL;         (* rising edge set the output to the fManSyncValue *)
    eModeOuterLoop      : E_CTRL_MODE;  (* sets the mode of the function block *)
    bHoldOuterLoop      : BOOL;         (* hold the internal integrator *)
END_VAR

fSetpointValue : Sollwert der Regelgröße.

fActualValueOuterLoop : Istwert der Regelgröße, die auf den PI-Regler des äußeren Regelkreises zurückgeführt wird.

fActualValueInnerLoop : Istwert der Regelgröße, die auf den PID-Regler des inneren Regelkreises zurückgeführt wird.

fPreControl : Vorsteuerung, die hinter dem PI-Regler aufgeschaltet wird.

fManSyncValueInnerLoop : Eingang, auf dessen Wert der interne Zustand des PID-Glieds (innerer Regelkreises) gesetzt werden kann.

bSyncInnerLoop : Mit einer steigenden Flanke an diesem Eingang wird das PID-Glied (innerer Regelkreises) auf den Wert fManSyncValueInnerLoop gesetzt.

eModeInnerLoop : Eingang, der die Betriebsart des PID-Glieds (innerer Regelkreises) festlegt.

bHoldInnerLoop : Ein TRUE an diesem Eingang hält den internen Zustand des PID-Glieds (innerer Regelkreises) konstant auf dem aktuellen Wert.

fManSyncValueOuterLoop : Eingang, auf dessen Wert der interne Zustand des PI-Glieds (äußerer Regelkreises) gesetzt werden kann.

bSyncOuterLoop : Mit einer steigenden Flanke an diesem Eingang wird das PI-Glied (äußerer Regelkreises) auf den Wert fManSyncValueOuterLoop gesetzt.

eModeOuterLoop : Eingang, der die Betriebsart des PI-Glieds (äußerer Regelkreises) festlegt.

bHoldOuterLoop : Ein TRUE an diesem Eingang hält den internen Zustand des PI-Glieds (äußerer Regelkreises) konstant auf dem aktuellen Wert.

VAR_OUTPUT

VAR_OUTPUT
    fOut            : FLOAT;            (* manipulated value to the process *)

    eStateInnerLoop         : E_CTRL_STATE;
    bARWactiveInnerLoop     : BOOL;
    eErrorIdInnerLoop           : E_CTRL_ERRORCODES;    (* error code *)
    bErrorInnerLoop         : BOOL;             (* TRUE if an error situation exists *)
    
    eStateOuterLoop         : E_CTRL_STATE;
    bARWactiveOuterLoop     : BOOL;
    eErrorIdOuterLoop           : E_CTRL_ERRORCODES;    (* error code *)
    bErrorOuterLoop         : BOOL;             (* TRUE if an error situation exists *)
END_VAR

fOut : Ausgang des PI-PID-Glieds.


eStateInnerLoop
: State des internen PID-Glieds (innerer Regelkreis).

bARWactiveInnerLoop : Ein TRUE an diesem Ausgang signalisiert, dass sich das PID-Glied (innerer Regelkreis) in der Begrenzung befindet.

eErrorIdInnerLoop : Liefert bei einem gesetzten bError-Ausgang die Fehlernummer des PID-Glieds (innerer Regelkreis).

bErrorInnerLoop : Wird TRUE, sobald ein Fehler in dem PID-Glied (innerer Regelkreis) eintritt.
eStateOuterLoop
: State des internen PI-Glieds (äußerer Regelkreis).

bARWactiveOuterLoop : Ein TRUE an diesem Ausgang signalisiert, dass sich das PI-Glied (äußerer Regelkreis) in der Begrenzung befindet.

eErrorIdOuterLoop : Liefert bei einem gesetzten bError-Ausgang die Fehlernummer des PI-Glieds (äußerer Regelkreis).

bErrorOuterLoop : Wird TRUE, sobald ein Fehler in dem PI-Glied (äußerer Regelkreis) eintritt.

VAR_IN_OUT

VAR_IN_OUT
    stParams        : ST_CTRL_PI_PID_PARAMS;
END_VAR

stParams : Parameterstruktur des PI-PID-Glieds. Diese besteht aus den folgenden Elementen:

TYPE
ST_CTRL_PI_PID_PARAMS :
STRUCT
    tCtrlCycleTime    : TIME  := T#0ms; (* controller cycle
time [TIME] *)
    tTaskCycleTime    : TIME  := T#0ms; (* task cycle time
[TIME] *)
    fKp_OuterLoop     : FLOAT := 0; (* proportional gain
*)
    tTn_OuterLoop     : TIME  := T#0s; (* Tn *)
    fMaxLimit_OuterLoop   : FLOAT := 1E38;
    fMinLimit_OuterLoop   : FLOAT := -1E38;
    fKp_InnerLoop     : FLOAT := 0; (* proportional gain
*)
    tTn_InnerLoop     : TIME  := T#0ms; (* Tn *)
    tTv_InnerLoop     : TIME  := T#0ms; (* Tv *)
    tTd_InnerLoop     : TIME  := T#0ms; (* Td *)
    fMaxLimit_InnerLoop   : FLOAT := 1E38;
    fMinLimit_InnerLoop   : FLOAT := -1E38;
END_STRUCT
END_TYPE

tCtrlCycleTime : Zykluszeit, mit der der Regelkreis bearbeitet wird. Diese muss größer oder gleich der TaskCycleTime sein. Der Funktionsbaustein berechnet mit dieser Eingangsgröße intern, ob die Zustands- und Ausgangsgrößen im aktuellen Zyklus aktualisiert werden müssen.

tTaskCycleTime : Zykluszeit, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Task-Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Zyklus aufgerufen wird.

fKp_OuterLoop : Reglerverstärkung / Reglerbeiwert des PI-Glieds (äußerer Regelkreis).

tTn_OuterLoop : Nachstellzeit des PI-Glieds (äußerer Regelkreis). Wenn diese zu T#0s parametriert ist, wird der I-Anteil deaktiviert.

fMaxLimit_OuterLoop : Oberes Limit, an dem die Integration des PID-Glieds angehalten und der Ausgang begrenzt wird ( ARW-Maßnahme). Das Erreichen dieses Limits wird durch ein TRUE an dem Ausgang bARWactiveOuterLoop signalisiert.

fMinLimit_OuterLoop : Unteres Limit, an dem die Integration des PID-Glieds angehalten und der Ausgang begrenzt wird ( ARW-Maßnahme). Das Erreichen dieses Limits wird durch ein TRUE an dem Ausgang bARWactiveOuterLoop signalisiert.

fKp_InnerLoop : Reglerverstärkung / Reglerbeiwert des PID-Glieds (innerer Regelkreis).

tTn_InnerLoop : Nachstellzeit des PID-Glieds (innerer Regelkreis). Wenn diese zu T#0s parametriert ist, wird der I-Anteil deaktiviert.

tTv_InnerLoop : Vorhaltzeit des PID-Glieds (innerer Regelkreis). Wenn diese zu T#0s parametriert ist, wird der D-Anteil deaktiviert.

tTd_InnerLoop : Dämpfungszeit des PID-Glieds (innerer Regelkreis).

fMaxLimit_InnerLoop: Oberes Limit, an dem die Integration des PID-Glieds angehalten und der Ausgang begrenzt wird ( ARW-Maßnahme). Das Erreichen dieses Limits wird durch ein TRUE an dem Ausgang bARWactiveInnerLoop signalisiert.

fMinLimit_InnerLoop : Unteres Limit, an dem die Integration des PID-Glieds angehalten und der Ausgang begrenzt wird ( ARW-Maßnahme). Das Erreichen dieses Limits wird durch ein TRUE an dem Ausgang bARWactiveInnerLoop signalisiert.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.8

PC (i386)

TcControllerToolbox.lib

TwinCAT v2.9 ab Build 947

BC

TcControllerToolbox.lb6

TwinCAT v2.9 ab Build 956

BX

TcControllerToolbox.lbx