FB_BA_PIDCtrl

FB_BA_PIDCtrl 1:

Der Funktionsbaustein FB_BA_PIDCtrl ist ein Universal-PID-Regler.

Der Regler ist intern in zwei aufeinander folgende Teile gegliedert:

Betriebsmodus "P-Anteil vorgelagert":

(eOperationMode = E_BA_PIDMode.eP1ID)

FB_BA_PIDCtrl 2:

Betriebsmodus "Parallelstruktur":

(eOperationMode = E_BA_PIDMode.ePID )

FB_BA_PIDCtrl 3:

Wirksinn

Mit bActn = FALSE wird der Wirksinn des Reglers so umgekehrt, dass eine Regelabweichung kleiner als 0 eine Stellgrößenänderung ins Positive bewirkt. Dies wird dadurch erreicht, dass die Regelabweichung negativ berechnet wird:

bActn

fE (Regelabweichung)

Wirksinn

TRUE

fX-fW (Istwert-Sollwert)

direkt (Kühlen)

FALSE

fW-fX (Sollwert-Istwert)

indirekt (Heizen)

Passiv-Verhalten (bEn = FALSE)

Die Ausgänge werden wie folgt gesetzt:

fY

0.0

fE

aktuelle Regelabweichung, siehe Wirksinn.

Die internen Werte für den P-, I-, und D-Anteil werden auf 0 gesetzt, ebenso die Werte für den I- und D-Anteil vom vorhergehenden Zyklus. Damit wird die Stellgröße bei einem Neustart im ersten Zyklus ohne Vergangenheitswerte berechnet.

Aktiv-Verhalten (bEn = TRUE)

Im ersten Zyklus werden I- und D-Anteil wie bereits erwähnt ohne Vergangenheitswerte berechnet und frei von alten Werten aufgestartet.

Anti-Reset-Windup

Ist der I-Anteil aktiv, so sorgt der Regler dafür, dass dieser festgehalten wird, sollte der Regler Ausgang rY über die Grenzen fYMin oder fYMax hinausgehen wollen. Innerhalb des Reglers wird in jedem Zyklus eine Vorberechnung des Regler Ausgangs gemacht.

Anti-Reset-Windup an Min Grenze

Ist die Vorberechnung kleiner als die untere Ausgangsgrenze fYMin, so wird der I-Anteil daran gehindert weiter zu fallen und auf den Wert des letzten PLC-Zyklus begrenzt. Ein Ansteigen des I-Anteils bleibt jedoch möglich.

Anti-Reset-Windup an Max Grenze

Ist die Vorberechnung hingegen größer als die obere Grenze fYMax, so wird der I-Anteil daran gehindert weiter zu steigen und ebenfalls auf den Wert des letzten PLC-Zyklus begrenzt. In diesem Fall bleibt ein Abfallen des I-Anteiles weiter möglich.

Synchronisationen

Es gibt verschiedene Fälle in denen Regler Ausgang nicht nur begrenzt, sondern durch Manipulation des I-Anteils (wenn nicht aktiv, dann des D-Anteils bzw. des P-Anteils) auf einen neuen Wert synchronisiert werden muss. Diese Fälle sind wegen der möglichen Gleichzeitigkeit priorisiert:

Prio

Beschreibung

Bedingungen

Bemerkungen

1

Synchronisation über bSync/fSync

Regler freigegeben – bEn = TRUE

Ein positives Signal an bSync setzt den I-Anteil so, dass die Stellgröße den Wert fSync annimmt. Diese Methode kann, wenn bEn und bSync gleichzeitig gesetzt werden, zum Setzen eines Initialwertes genutzt werden, von dem aus die Regelung startet. Ist der I-Anteil nicht aktiv, so wird der D-Anteil entsprechend gesetzt. Zu beachten ist, dass intern nur die steigende Flanke von bSync ausgewertet wird, da es sich um eine Setz-Aktion handelt. Für ein erneutes Synchronisieren, etwa auf einen Übergabewert, muss am Eingang bSync ein erneutes TRUE-Signal angelegt werden.

2

Bereichssynchronisation fYMin

Regler freigegeben – bEn = TRUE

fYMin <> fYMin_1 (letzterZyklus)

fY_Test < fYMin

Hat sich die untere Bereichsgrenze geändert und die vorberechnete Regler Ausgabe ist nun kleiner als fYMin so wird auf fYMin synchronisiert.

3

Bereichssynchronisation fYMax

Regler freigegeben – bEn = TRUE

fYMax <> fYMax_1 (letzterZyklus)

fY_Test > fYMax

hat sich die obere Bereichsgrenze geändert und die vorberechnete Regler Ausgabe ist nun größer als fYMax, so wird auf fYMax synchronisiert

4

Synchronisation bei Wirksinnumkehr

Regler freigegeben – bEn = TRUE

eActn <> eActn_1 (letzter Zyklus)

Es wird so synchronisiert, dass der Ausgang den Wert VOR der Umkehr innehat:
fY = fY_1 (letzter Zyklus)

5

Anti-Reset-Windup

Regler freigegeben – bEn = TRUE

siehe Anti-Reset-Windup

Neutrale Zone

Ein Wert von fNeutralZone > 0.0 gibt die Funktion der neutralen Zone (Deadband) frei. Ein Wert gleich Null deaktiviert das Totbandglied und die Werte am Eingang werden direkt durchgereicht.

Ist beim aktiven Regler die Änderung am Eingang des Gliedes in einem SPS-Zyklus im Vergleich zum vorhergehenden SPS-Zyklus kleiner als fNeutralZone / 2, so wird der Ausgang auf dem Wert des vorhergehenden Zyklus gehalten, bis die Änderung größer oder gleich fNeutralZone / 2 ist.

Durch diese Funktion sollen unnötig viele Stellimpulse vermieden werden.

Syntax

VAR_INPUT
  bEn                      : BOOL;
  fW                       : REAL;
  fX                       : REAL;
  eActn                    : E_BA_Action := E_BA_Action.eReverse;
  fYMax                    : REAL := 100;
  fYMin                    : REAL := 0;
  bSync                    : BOOL;
  fSync                    : REAL;
END_VAR
VAR_INPUT CONSTANT PERSISTENT
  nCycleCall               : UDINT := 5;
  eOperationMode           : E_BA_PIDMode := E_BA_PIDMode.eP1ID;
  fProportionalConstant    : REAL;
  tIntegralTime            : TIME;
  tDerivativeTime          : TIME;
  tDampingTime             : TIME;
  fNeutralZone             : REAL := 0.0;
END_VAR
VAR_OUTPUT
  fY                       : REAL;
  fE                       : REAL;
END_VAR

FB_BA_PIDCtrl 4: Eingänge

Name

Typ

Beschreibung

bEn

BOOL

Freigabe des Reglers.

fW

REAL

Sollwert der Regelstrecke.

fX

REAL

Istwert der Regelstrecke.

eActn

E_BA_Action

Wirksinn des Reglers.

fYMax

REAL

Obere Ausgangsbegrenzung des Reglers [%].

fYMin

REAL

Untere Ausgangsbegrenzung des Reglers [%].
Der Wert fYMin wird nach oben hin durch fYMax begrenzt.

bSync

BOOL

Synchronisiert den Regler auf den Wert von fSync.

fSync

REAL

Synchronisationswert. Der Wert fSync wird intern begrenzt auf Werte von fYMin bis fYMax.

FB_BA_PIDCtrl 5: Eingänge CONSTANT PERSISTENT

Name

Typ

Beschreibung

nCycleCall

UDINT

Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit. Intern begrenzt auf einen Minimalwert von 1.

eOperationMode

E_BA_PIDMode

Wirkungsweise des Reglers: PID-Modus oder P-ID-Modus

fProportionalConstant

REAL

Reglerverstärkung. Wirkt nur auf den P-Anteil. Intern begrenzt auf einen Minimalwert von 0.

TIntegralTime

TIME

Nachstellzeit des I-Anteiles [ms]. Ein Nullwert an diesem Parameter schaltet den I-Anteil ab.

tDerivativeTime

TIME

Vorhaltezeit des D-Anteiles [ms]. Ein Nullwert an diesem Parameter schaltet den D-Anteil ab.

tDampingTime

TIME

Dämpfungszeit des D-Anteiles [ms].

fNeutralZone

REAL

Totband

FB_BA_PIDCtrl 6: Ausgänge

Name

Typ

Beschreibung

fY

REAL

Stellgröße. Bereich durch fYMin und fYMax eingeschränkt.

fE

REAL

Regelabweichung (Die Berechnung ist abhängig vom Wirksinn).

Voraussetzungen

Entwicklungsumgebung

Erforderliche SPS-Bibliothek

TwinCAT3.1 4024.35

Tc3_BA2_Common ab V2.1.20.0