====== Load shedding (E-Max) ====== {{:en:mervis-ide:35-help:t34.png}} ===== Block name ===== T34_E_MAX ===== ST call ===== PROGRAM TEST_T34 VAR REAL1,REAL2,REAL3,REAL4,REAL5: REAL; BOOL1,BOOL2: BOOL; UDINT1,UDINT2:UDINT; ARRAYOFUDINT1,ARRAYOFUDINT2,ARRAYOFUDINT3: ARRAY[0..7] OF UDINT; ARRAYOFBOOL1: ARRAY[0..7] OF BOOL; ARRAYOFREAL1: ARRAY[0..7] OF REAL; FB: LIB.HVAC.V1_0.T34_E_MAX; END_VAR FB(TIN:=UDINT1, EIN:= REAL1, BGRP:=ARRAYOFBOOL1, EMAX:=REAL2, TPERIOD:=UDINT2, TNMIN:=ARRAYOFUDINT1, TFMIN:=ARRAYOFUDINT2, TFMAX:=ARRAYOFUDINT3, DOFF:= REAL3, D:=ARRAYOFREAL1, BWARN=>BOOL1, BCRIT=>BOOL2, BYGRP=>ARRAYOFBOOL1, ESOLL=>REAL4, EEST=>REAL5); END_PROGRAM ===== Library ===== LIB\HVAC ===== Version ===== V1.0 ===== Description ===== The block controls (shuts off) up to 8 groups of aggregates to keep the energy consumed in a 15 minutes interval below a given limit. ===== Inputs ===== |Input |Type |Description |Default value | |TIN |UDINT |Current time within the period in seconds |0 | |EIN |REAL |Cumulated energy consumed within the current period |0 | |BGRP |ARRAY[0..7] OF BOOL |Signals of groups operation, if available (otherwise the input has to be set to //true//) |[False,...,False]| |EMAX |REAL |Maximum energy amount to be consumed in the period, see note below |100 | |TPERIOD|UDINT |Measured period, usually 900 s (= 15 min) |900 | |TNMIN |ARRAY[0..7] OF UDINT|Minimum allowed operation time of a group |[0,0,...,0] | |TFMIN |ARRAY[0..7] OF UDINT|Minimum off time after a group has been cut off (e.g. for cooling compressors) |[0,0,...,0] | |TFMAX |ARRAY[0..7] OF UDINT|Maximum allowed off time of a group (after expiration a group is enabled even ig the maximum would be exceeded) |[0,0,...,0] | |DOFF |REAL |Difference for safe switch-on |0 | |D |ARRAY[0..7] OF REAL |Differences for switching off of the groups (should correspond to energy consumed by a particular group during the TPERIOD, if permanently on)|[10,10,...,10] | ===== Outputs ===== |Output|Type |Description | |BWARN |BOOL |Warning signal - current consumption exceeded the //ESOL// value| |BCRIT |BOOL |Alarm signal - current consumption exceeded the //EMAX// value | |BYGRP |ARRAY[0..7] OF BOOL|Outputs to enable / disable the groups of aggregates | |ESOL |REAL |Ideal consumption at the current time (for information) | |EEST |REAL |Predicted consumption at the end of the period (for information)| ===== Function ===== The block reads two values from an input counting module M710: energy consumption in the current 15 minutes interval (number of pulses multiplied by the weighting constant, which gives the amount of consumed energy) and current time within the 15 minutes interval in seconds (this time is reset by a sync pulse from the energy meter which is brought on the second input of the M710 module). The block calculates, according to the maximum allowed 15 min. consumption (//EMAX//) the optimum consumption //ESOL// for the current time, which is a linear value starting at 0 in time 0 up to //EMAX// in the final time of the interval. Furthermore, the predicted consumption //EEST// is calculated, which is energy consumed by the end of the interval provided that the consumption trend up to now will be constant. The optimum consumption is compared to the current consumption, and if the optimum consumption is exceeded (or, the //EMAX// value is estimated to be exceeded at the end of the interval), the groups are cut off one after another. If, later, the current consumption drops below //ESOL//, the groups are switched on again. The differences //D// define the areas of cutting off and switching on of the groups, //DOFF// represents a safety range which separates the cutting-off area from the switching-on area.\\ Instead of M710, a software structure can be used which brings the current period time in seconds to //TIN// (i.e. 0...900 for a 15 minutes interval), and consumed energy starting with the start of the period to //EIN//. {{:en:mervis-ide:35-help:t34_1.png}} Outputs to enable the aggregate groups are available as binary values array //BYGRP//. The input array //BGRP// reads information on which gropus are active and which have to be omitted when switching off. Inactive groups are excluded from the sequence as they would not contribute to power reduction anyway. The arrays with time parameters //TNMIN//, //TFMIN//, and //TFMAX// read limitations for maximum and minimum switch-off time and minimum activity time (//TNMIN//, or, if a group is active, it will not be switched off before this time elapses, even if required by the load shedding algorithm). **Note:** The //emax// value is entered in kWh in (typically) 15 minutes. It is amount of energy, or work; not power (consumption). Even if it is given in **kilowatthours,** it is the energy consumed within the specified period, e.g. in a 15 minutes interval. If there is a building with power limitation e.g. 1000 kW, maximum energy consumed within a 15 minutes interval is 250 kWh. The //emax// value then does not represent the average (contracted) power (in kW), the average power would be equal to //emax// only in case that the period would be 1 hour. ===== Application example ===== {{:en:mervis-ide:35-help:t34_example.png}} Two variables which read the number of energy pulses and period time in the M710 module are brought to the //TIN// and //EIN// inputs. //E_MAX// is the value of maximum energy consumption allowed within a period. The commands to switch off the groups are available in the output variable //BYGRP//, which is an array with 8 boolean values. The //HELPER_MULTIOUTBOOL8// block decodes the array to 8 binary boolean variables which can be used in FUPLA; in structured text, it could be referred directly to //BYGRP[INDEX]//, i.e. to the array element. The //BGRP// is an input vector with operation feedback signals from the groups; it is composed from the variables //OPER_CHILLERS//, //OPER_DHW_EL_1,// and //OPER_DHW_EL_2//. This means that the operation feedback signals are available at groups 1, 4 and 5 only; other groups, i.e. 2, 3, 6, 7 and 8, do not possess feedback (most probably the groups consist of more small aggregates linked to several groups).\\