FB_MaximumDemandController

Baustein zur Spitzenlastoptimierung, der durch Ab-/ Zuschaltung von bis zu acht Verbrauchern die Einhaltung der eingestellten Leistungsgrenze realisiert. Die Verbraucher können entsprechend ihrer Leistung und Priorität so abgeschaltet werden, dass keine Störungen des Produktionsablaufs entstehen.
Zur Erkennung der einzelnen Messzyklen wird von dem Energieversorgungsunternehmen (EVU) ein Synchronimpuls geliefert. Dieser gibt den Beginn eines neuen Messzyklus an und muss auf den Eingang bPeriodPulse aufgeschaltet werden. Die Erfassung der Ist-Leistung erfolgt über die Zählerklemme KL1501.
Der Baustein arbeitet mit einer festen Messperiodenzeit von 15 Minuten. Überschreitet der Synchronimpuls die 16-Minuten-Grenze, so wird der Ausgang bEmergencySignal gesetzt.
Zu Beginn jeder Messperiode werden alle Verbraucher zugeschaltet. Innerhalb der Messperiode erfolgt bei drohender Überschreitung der Leistungsgrenze (fAgreedPower) nacheinander eine Abschaltung der Verbraucher. Ist die Gefahr der Lastüberschreitung nicht mehr gegeben, werden die Verbraucher wieder eingeschaltet.
Über eine Eingangsvariable können Besonderheiten, wie minimale Einschaltzeit, minimale Ausschaltzeit oder maximale Ausschaltzeit festgelegt werden. Ebenfalls kann die Priorität der einzelnen Verbraucher bestimmt werden. Verbraucher mit einer niedrigen Priorität werden vor Verbrauchern mit einer hohen Priorität abgeschaltet.

VAR_INPUT
bStart : BOOL;
fMeterConstant : LREAL;
fAgreedPower : LREAL;
bPeriodPulse : BOOL;
arrLoadParameter : ARRAY[1..8] OF ST_MDCLoadParameters;
bStart: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.
fMeterConstant: Zählerkonstante [Impulse / kWh].
fAgreedPower: Dies ist die vereinbarte Leistungsgrenze, die im Betriebsfall nach Möglichkeit nicht überschritten werden darf [kW].
bPeriodPulse: Synchronimpuls, der vom Energieversorgungsunternehmen (EVU) gesendet wird. Mit diesem Impuls wird das Messintervall gestartet.
arrLoadParameter: Parameterstruktur des jeweiligen Verbrauchers (siehe ST_MDCLoadParameters).
VAR_OUTPUT
arrLoad : ARRAY[1..8] OF BOOL;
fAgreedEnergy : LREAL;
fInstantaneousEnergy : LREAL;
fActualEnergy : LREAL;
tRemainingTime : TIME;
fLastPeriodEnergy : LREAL;
bEmergencySignal : BOOL;
bError : BOOL;
nErrorId : UDINT;
arrLoad: Ist ein Array vom Datentyp BOOL; eingeschaltete Verbraucher sind TRUE.
fAgreedEnergy: Vereinbarter Energieverbrauch [kWh].
fInstantaneousEnergy: momentaner Energieverbrauch [kWh] bezogen auf einen Integrationszeitraum von 15s (interner Messintervall).
fActualEnergy: Zum "jetzigen" betrachteten Zeitpunkt der Messperiode verbrauchte Energie.
tRemainingTime: Restzeit bis zum nächsten Messintervall.
fLastPeriodEnergy: Sollleistung aus der vorhergegangenen Messperiode [kWh].
bEmergencySignal: Der Ausgang wird gesetzt sobald die vorgegebene Energie überschritten wird.
bError: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung eines Befehls ein Fehler aufgetreten ist.
nErrorId: Enthält den Fehlercode.
VAR_IN_OUT
stInDataKL1501 : ST_MDCInDataKL1501;
stOutDataKL1501 : ST_MDCOutDataKL1501;
stInDataKL1501: Verknüpft mit der KL1501 (siehe ST_MDCInDataKL1501).
stOutDataKL1501: Verknüpft mit der KL1501 (siehe ST_MDCOutDataKL1502).
Beispiel
VAR_GLOBAL
arrLoadParameters AT %MB100 : ARRAY[1..8] OF ST_MDCLoadParameters;
(* KL1002 *)
bPeriodPulse AT %IX6.0 : BOOL;
(* KL1501*)
stInDataKL1501 AT %IB0 : ST_MDCInDataKL1501;
stOutDataKL1501 AT %QB0 : ST_MDCOutDataKL1501;
(* KL2404 *)
bLoadOut1 AT %QX6.0 : BOOL;
bLoadOut2 AT %QX6.1 : BOOL;
bLoadOut3 AT %QX6.2 : BOOL;
bLoadOut4 AT %QX6.3 : BOOL;
(* KL2404 *)
bLoadOut5 AT %QX6.4 : BOOL;
bLoadOut6 AT %QX6.5 : BOOL;
bLoadOut7 AT %QX6.6 : BOOL;
bEmergencySignal AT %QX6.7 : BOOL;
END_VAR
PROGRAM MAIN
VAR
fbMaximumDemandController : FB_MaximumDemandController;
END_VAR
arrLoadParameters[1].bConnected := TRUE;
arrLoadParameters[1].nDegreeOfPriority := 1;
arrLoadParameters[1].tMINPowerOnTime := t#60s;
arrLoadParameters[1].tMINPowerOffTime := t#120s;
arrLoadParameters[1].tMAXPowerOffTime := t#600s;
arrLoadParameters[2].bConnected := TRUE;
arrLoadParameters[2].nDegreeOfPriority := 2;
arrLoadParameters[2].tMINPowerOnTime := t#60s;
arrLoadParameters[2].tMINPowerOffTime := t#120s;
arrLoadParameters[2].tMAXPowerOffTime := t#600s;
arrLoadParameters[3].bConnected := TRUE;
arrLoadParameters[3].nDegreeOfPriority := 3;
arrLoadParameters[3].tMINPowerOnTime := t#60s;
arrLoadParameters[3].tMINPowerOffTime := t#120s;
arrLoadParameters[3].tMAXPowerOffTime := t#300s;
arrLoadParameters[4].bConnected := TRUE;
arrLoadParameters[4].nDegreeOfPriority := 4;
arrLoadParameters[4].tMINPowerOnTime := t#20s;
arrLoadParameters[4].tMINPowerOffTime := t#30s;
arrLoadParameters[4].tMAXPowerOffTime := t#8m;
arrLoadParameters[5].bConnected := TRUE;
arrLoadParameters[5].nDegreeOfPriority := 5;
arrLoadParameters[5].tMINPowerOnTime := t#20s;
arrLoadParameters[5].tMINPowerOffTime := t#50s;
arrLoadParameters[5].tMAXPowerOffTime := t#20m;
arrLoadParameters[6].bConnected := TRUE;
arrLoadParameters[6].nDegreeOfPriority := 6;
arrLoadParameters[6].tMINPowerOnTime := t#30s;
arrLoadParameters[6].tMINPowerOffTime := t#1m;
arrLoadParameters[6].tMAXPowerOffTime := t#1m;
arrLoadParameters[7].bConnected := TRUE;
arrLoadParameters[7].nDegreeOfPriority := 7;
arrLoadParameters[7].tMINPowerOnTime := t#0s;
arrLoadParameters[7].tMINPowerOffTime := t#0s;
arrLoadParameters[7].tMAXPowerOffTime := t#1m;
arrLoadParameters[8].bConnected := FALSE;
fbMaximumDemandController(bStart := TRUE,
fMeterConstant := 20000,
fAgreedPower := 600,
bPeriodPulse := bPeriodPulse,
arrLoadParameters := arrLoadParameters,
stInDataKL1501 := stInDataKL1501,
stOutDataKL1501 := stOutDataKL1501);
bLoadOut1 := fbMaximumDemandController.arrLoad[1];
bLoadOut2 := fbMaximumDemandController.arrLoad[2];
bLoadOut3 := fbMaximumDemandController.arrLoad[3];
bLoadOut4 := fbMaximumDemandController.arrLoad[4];
bLoadOut5 := fbMaximumDemandController.arrLoad[5];
bLoadOut6 := fbMaximumDemandController.arrLoad[6];
bLoadOut7 := fbMaximumDemandController.arrLoad[7];
bEmergencySignal := fbMaximumDemandController.bEmergencySignal;
Voraussetzungen
Entwicklungsumgebung | Erforderliche SPS-Bibliothek |
---|---|
TwinCAT ab v3.1.4020.32 | Tc2_BABasic ab v3.1.0.0 |