FB_BACnet_PidControl

FB_BACnet_PidControl 1:

Anwendung

PID Regelbaustein in Parallelanordnung bzw. Idealform. Der Regelbaustein dient als Basis für das BACnet Loop Objekt  (FB_BACnet_Loop).

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 im Moment 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;
fPresentValue   : REAL;
bReset          : BOOL;
fCtrlCycleTime  : REAL;
fBias           : REAL;
fKp             : REAL;
fKi             : REAL;
fKd             : REAL;
fTp             : REAL:=-1.0;
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).

fTp: Dampfungszeit für D Anteil (PT1) [s] (wenn fTp0, dann gilt: Tp = fKd / 10).

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_OUPUT

fY            : REAL;
nErrorStatus  : UINT;

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

nErrorStatus: Fehlercode, siehe BACnet_Globals für eine Übersicht.

Beispiel

FB_BACnet_PidControl 4:
Bild -2: 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.