T34_E_MAX
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
LIB\HVAC
V1.0
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.
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] |
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) |
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.
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.
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).