FB_BA_PIDControl

FB_BA_PIDControl 1:

Der Funktionsbaustein FB_BA_PIDControl ist ein Universal-PID-Regler.

Der Regler ist intern in zwei aufeinander folgende Teile gegliedert:

Betriebsmodus "P-Anteil vorgelagert":

(eOpMode = E_BA_PIDMode.eP1ID)

FB_BA_PIDControl 2:

Betriebsmodus "Parallelstruktur":

(eOpMode = E_BA_PIDMode.ePID )

FB_BA_PIDControl 3:

Wirksinn

Mit eAction = E_BA_Action.eReverse 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:

eAction

fE (Regelabweichung)

Wirksinn

E_BA_Action.eDirect

fCtrlVal-fSetpoint (Istwert-Sollwert)

direkt (Kühlen)

E_BA_Action.eReverse

fSetpoint-fCtrlVal (Sollwert-Istwert)

indirekt (Heizen)

Passiv-Verhalten (bEn = FALSE)

Die Ausgänge werden wie folgt gesetzt:

fPresentValue

0.0

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 fMinOutput oder fMaxOutput 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 fMinOutput, 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 fMaxOutput, 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 bEnSync/fValSync

Regler freigegeben – bEn = TRUE

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

2

Bereichssynchronisation fMinOutput

Regler freigegeben – bEn = TRUE

fMinOutput <> fMinOutput_1 (letzterZyklus)

fY_Test < fMinOutput

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

3

Bereichssynchronisation fMaxOutput

Regler freigegeben – bEn = TRUE

fMaxOutput <> fMaxOutput_1 (letzterZyklus)

fY_Test > fMaxOutput

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

4

Synchronisation bei Wirksinnumkehr

Regler freigegeben – bEn = TRUE

eAction <> eAction_1 (letzter Zyklus)

Es wird so synchronisiert, dass der Ausgang den Wert VOR der Umkehr innehat:
fPresentValue = fPresentValue_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;
  fSetpoint                    : REAL;
  fCtrlVal                     : REAL;
  bEnSync                      : BOOL;
  fValSync                     : REAL;
END_VAR
VAR_INPUT CONSTANT PERSISTENT
  {attribute 'parameterCategory':='Config'}
  eOpMode                      : E_BA_PIDMode := E_BA_PIDMode.ePID;
  {attribute 'parameterCategory':='Deadband'}
  fNeutralZone                 : REAL := 0.0;
  {attribute 'parameterCategory':='Config'}
  eAction                      : E_BA_Action := E_BA_Action.eReverse;
  {attribute 'parameterCategory':='Config'}
  fMinOutput                   : REAL := 0;
  {attribute 'parameterCategory':='Config'}
  fMaxOutput                   : REAL := 100;
  {attribute 'parameterCategory':='Config'}
  fProportionalConstant        : REAL := 3;
  {attribute 'parameterCategory':='Config'}
  {attribute 'parameterUnit':= 's,ms'}
  fIntegralConstant            : REAL;
  {attribute 'parameterCategory':='Config'}
  {attribute 'parameterUnit':= 's,ms'}
  fDerivativeConstant          : REAL;
  {attribute 'parameterCategory':='Config'}
  {attribute 'parameterUnit':= 's'}
  nDampConstant                : UDINT;
END_VAR
VAR_OUTPUT
  fPresentValue                : REAL;
END_VAR

FB_BA_PIDControl 4: Eingänge

Name

Typ

Beschreibung

bEn

BOOL

Freigabe des Reglers

fSetpoint

REAL

Sollwert der Regelstrecke

fCtrlVal

REAL

Istwert der Regelstrecke

bEnSync

BOOL

Synchronisiert den Regler auf den Wert von fValSync.

fValSync

REAL

Synchronisationswert. Der Wert fValSync wird intern begrenzt auf Werte von fMinOutput bis fMaxOutput.

FB_BA_PIDControl 5: Eingänge CONSTANT PERSISTENT

Name

Typ

Beschreibung

eOpMode

E_BA_PIDMode

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

fNeutralZone

REAL

Totband

eAction

E_BA_Action

Wirksinn des Reglers

fMinOutput

TIME

Untere Ausgabebegrenzung des Reglers [%]. Der Wert fMinOutput wird nach oben hin durch fMaxOutput begrenzt.

fMaxOutput

TIME

Obere Ausgabebegrenzung des Reglers [%].

fProportionalConstant

REAL

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

fIntegralConstant

REAL

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

fDerivativeConstant

REAL

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

nDampConstant

UDINT

Dämpfungszeit des D-Anteiles [s].

FB_BA_PIDControl 6: Ausgänge

Name

Typ

Beschreibung

fPresentValue

REAL

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

FB_BA_PIDControl 7: Eigenschaften

Name

Typ

Zugriff

Beschreibung

AntiResetWindup

BOOL

Get

Der Regler befindet sich im Status Anti-Reset-Windup.

ControlDeviation

REAL

Get

Regelabweichung

IsMaxLimit

BOOL

Get

Die Regler Ausgabe fPresentValue ist an der oberen Ausgabegrenze fMaxOutput.

IsMinLimit

BOOL

Get

Die Regler Ausgabe fPresentValue ist an der untere Ausgabegrenze fMinOutput.

Voraussetzungen

Entwicklungsumgebung

Erforderliche SPS-Bibliothek

TwinCAT ab v3.1.4024.56

Tc3_BA2 ab v5.4.2.0