FB_BACnet_PidControl

PID Regelbaustein in Parallelanordnung (Kp wirkt nicht auf I- und D-Anteil). Der Regelbaustein dient als Basis für das Objekt "LOOP" (FB_BACnet_Loop).

FB_BACnet_PidControl 1:

Blockdiagramm

FB_BACnet_PidControl 2:
Bild-1: Blockschaltbild der Übertragungsfunktion (Frequenzbereich).

Verwendung

Der Regelbaustein muss zyklisch im SPS Programm aufgerufen werden. Dabei ist zu beachten, dass die Zykluszeit des Aufruf am Eingang fCtrlCycleTime möglichst genau übergeben wird. Die Zykluszeit kann z.B. aus der globalen Struktur "SystemTaskInfoArr" ermittelt werden. Unter Beispiel ist eine mögliche Beschaltung des Regler dargestellt.

VAR_INPUT

fSetpoint        : REAL; (* setpoint value *)
fPresentValue    : REAL; (* actual value *)
bReset           : BOOL; (* reset flag *)
fCtrlCycleTime   : REAL; (* controller cycle time in seconds [s] *)
fBias            : REAL; (* bias also active when reset is set to 1 *)
fKp              : REAL; (* proportional gain Kp (P) *)
fKi              : REAL; (* integral gain Ki (I) *)
fKd              : REAL; (* derivative gain Kd (D) *)
fMaxOutput       : REAL;
fMinOutput       : REAL;

fSetpoint: Sollwerteingabe (z.B. Temperaturvorgabe eines Raumes in [°C])

fPresentValue: Istwert (z.B. Raumisttemperatur in [°C])

bReset: Setzt den Regler zurück, die Ausgabe wird für die Dauer auf fBias gesetzt und durch fMaxOutput und fMinOutput begrenzt.

FB_BACnet_PidControl 3:

Wenn fMinOutput z.B. auf 5% gesetzt ist und fBias auf 0%, dann ist die Ausgabe fY für die Dauer des Reset auf 5% gestellt!

fCtrlCycleTime: Zykluszeit mit der der Regler aufgerufen wird in Sekunden [s].

fBias: Ausgabe-Offset. Dieser Wert wird mit der Ausgabe verrechnet und die Einheit muss der Einheit der Stellgröße entsprechen (z.B. Heizleistung in [%]).

fKp: Verstärkungsfaktor P. Die Regeldifferenz wird mit P multipliziert und auf die Ausgabe addiert (Ausgabe verhält sich proportional zur Eingabeabweichung).

fKi: Integralverstärkung I. Die Regeldifferenz wird unter Berücksichtigung der Zykluszeit mit I multipliziert, mit dem vorherigen Ergebnis summiert und auf die Ausgabe addiert (Hohe Regelabweichung = schnell steigende Ausgabe).

fKd: Differenzialverstärkung D. Die Regeldifferenz wird mit der vorherigen Reglerdifferenz verrechnen, das Ergebnis unter Berücksichtigung der Zykluszeit mit D multipliziert und auf die Ausgabe addiert (Starkes Reglerschwanken = starke Reaktion).

fMaxOutput: Obere Begrenzung des Ausgabewerts fY. Die Einheit muss der Einheit der Stellgröße entsprechen (z.B. Heizleistung maximal 90%).

fMinOutput: Untere Begrenzung des Ausgabewerts fY. Die Einheit muss der Einheit der Stellgröße entsprechen (z.B. Heizleistung minimal 5%).

VAR_OUTPUT

fY            : REAL; (* controller output command *)
nErrorStatus  : UINT; (* controller error output (0: no error; >0:error) *)

fY: Stellgröße (z.B. Heizleistung in [%]).

nErrorStatus: Fehlerstatus (0 = kein Fehler, 1 = ungültige Parameter, 2 = ungültige Zykluszeit). Fehlermeldungen müssen nicht quittiert werden.

Beispiel

FB_BACnet_PidControl 4:
Bild-4: Beispiel für die Verwendung

Anmerkung zu P = 10 --> Bei z.B. 1 K Temperaturdifferenz ergibt sich 10% Heizleistung

Anmerkung zu I = 0.01 --> Bei z.B. 1 K Temperaturdifferenz ergibt sich 0.01% Heizleistungsanstieg pro Sekunde

Anmerkung zu D = 0 --> Kein D-Anteil.