DuoPump
DuoPump (FB)
DuoPump (FB)FUNCTION_BLOCK DuoPump
Short description
Redundant control of two identical circulation pumps with anti-blocking function Additional functions: request for energy production, manual overrides, pump run-on, operating hours counter, operational monitoring Typical application: redundant control of a twin pump in a heating circuit
Representation

Interfaces
Inputs
xEnOne
BOOL
Request for lead pump
xEnTwo
BOOL
Request for lead and standby pump
xFb1
BOOL
Operating feedback of circulation pump 1
xFb2
BOOL
Operating feedback of circulation pump 2
xAlarmIn1
BOOL
Fault message of circulation pump 1
xAlarmIn2
BOOL
Fault message of circulation pump 2
eAOO1
HVACTYPES.eManBin
HVACTYPES.eManBin.Auto, HVACTYPES.eManBin.ManOff, HVACTYPES.eManBin.ManOn
HVACTYPES.eManBin.Auto
Operating mode of manual override - hardware circulation pump 1
eAOO2
HVACTYPES.eManBin
HVACTYPES.eManBin.Auto, HVACTYPES.eManBin.ManOff, HVACTYPES.eManBin.ManOn
HVACTYPES.eManBin.Auto
Operating mode of manual override - hardware circulation pump 2
xQuit
BOOL
FALSE
Reset of the fault message of the operational monitoring
Outputs
xHB1
BOOL
Enable - circulation pump 1 after manual override
xHB2
BOOL
Enable - circulation pump 2 after manual override
xAB1
BOOL
Enable - circulation pump 1 before manual override
xAB2
BOOL
Enable - circulation pump 2 before manual override
xEnergyRequest
BOOL
Request for energy production
xAlarmFb1
BOOL
Fault message - operational monitoring - circulation pump 1
xAlarmFb2
BOOL
Fault message - operational monitoring - circulation pump 2
tOffDelay
TIME
Remaining time of the pump off-delay
dtLastFb1
DATE_AND_TIME
Date / time of last operation of circulation pump 1
dtLastFb2
DATE_AND_TIME
Date / time of last operation of circulation pump 2
dtAbsLastOn1
DATE_AND_TIME
Date / time of last anti-blocking operation of circulation pump 1
dtAbsLastOn2
DATE_AND_TIME
Date / time of last anti-blocking operation of circulation pump 2
udiOperatingHours1
UDINT
Operating hours of circulation pump 1
udiOperatingHours2
UDINT
Operating hours of circulation pump 2
udiCountFb1
UDINT
Number of starts of circulation pump 1
udiCountFb2
UDINT
Number of starts of circulation pump 2
xAlarm1
BOOL
Aggregate fault - circulation pump 1
xAlarm2
BOOL
Aggregate fault - circulation pump 2
xAlarm
BOOL
Aggregate fault
xAuto
BOOL
Collective automatic mode message
Setpoints / parameters
eManModeB1
eMANBIN
eMANBIN.Auto, eMANBIN.ManOff, eMANBIN.ManOn
eMANBIN.Auto
Operating mode of manual override for circulation pump 1
eManModeB2
eMANBIN
eMANBIN.Auto, eMANBIN.ManOff, eMANBIN.ManOn
eMANBIN.Auto
Operating mode of manual override for circulation pump 2
udiOffDelay
UDINT
0 to 600s
60s
Run-on duration of the circulation pumps
eOffDelayTimeBase
eTime
eTime.Second, eTime.Minute, eTime.Hour
eTime.Second
Scaling of the off-delay ( seconds / minutes / hours )
eAbsDay
eDoW
eDoW.Monday to eDoW.Sunday
eDoW.Monday
Weekday of the anti-blocking operation
todAbsStartTime
TOD
00:00:00 - 23:59:59 hrs
08:00:00 hrs
Time of the anti-blocking operation
tAbsTime
UDINT
0 to 3600s
120s
Duration of the anti-blocking operation
xFbControl
BOOL
TRUE
Enable operational monitoring
udiFbControlTime
UDINT
0 to 300s
60s
Duration of the operating monitoring
eModeRedundance
eOpModeRedundance
eOpModeRedundance.Auto, eOpModeRedundance.ForceComponent1, eOpModeRedundance.ForceComponent2
eOpModeRedundance.Auto
Redundancy mode
Function description
General
This function block controls two identical circulation pumps in redundant operation. The selection of the number of required circulation pumps is done via the inputs xEnOne and xEnTwo The enables of circulation pumps 1 and 2 are made via the outputs xHB1 and xHB2 or xAB1 and xAB2. The following function blocks are essentially used:
Redundance2
AbsB
OperatingHours
ManBin
Prerequisite for using the DuoPump function block
The use of the TimeRead2 function block is required for correct operation.
Redundant control
It serves for the redundant control of the two circulation pumps depending on the influencing variables requests ( xEnOne and xEnTwo ), operating hours ( uxiOperatingHours1 and uxiOperatingHours2 ), operating states ( xFb1 and xFb2 ), fault states ( xAlarm1 and xAlarm2 ) and the operating mode for sequence determination ( eModeRedundance ). The enable of the lead and, if necessary, the standby pump is determined internally and transferred to the internal outputs xCmd1 or xCmd2 transferred. The lead pump is requested when it is requested by the input xEnOne and/or while the pump run-on time is active. The lead and the standby pump are requested when they are requested by the input xEnTwo . Requests at input xEnTwo have priority over requests at input xEnOne. The selection of the lead or standby pump is given high priority by the states of the fault messages of the circulation pumps xAlarm1 or xAlarm2 ( fault = TRUE ). The selection of the lead or standby pump is given low priority by the parameter eModeRedundance. With eModeRedundance = Auto the selection is made based on the current number of operating hours of the circulation pumps. The time difference for switching based on operating hours is 100 hours. The switching is done according to different criteria, which are described in detail in the FB Redundance2. The options xConOperatingHours as well as xEnFb are activated ( = TRUE ). In the case eModeRedundance = ForceComponent1 or eModeRedundance = ForceComponent2 the lead pump is accordingly circulation pump 1 or circulation pump 2.
Enable - circulation pump 1 before manual override xAB1
The output xAB1 is performed by the redundant control, the output xAlarm1, the off-delay module and the anti-blocking module.
Redundant control
xAlarm1
Off-delay module
Anti-blocking module
xAB1
Notes
X
TRUE
X
X
FALSE
Shutdown allowed via collective fault
FALSE
X
FALSE
FALSE
FALSE
Locking via redundant control
TRUE
X
FALSE
FALSE
TRUE
Enable via redundant control
X
X
TRUE
X
TRUE
Off-delay operation
X
X
X
TRUE
TRUE
Anti-blocking operation
Legend: X = don't care
Enable - circulation pump 2 before manual override xAB2
The output xAB2 by the redundant control, the output xAlarm2, the off-delay module and the anti-blocking module.
Redundant control
xAlarm2
Off-delay module
Anti-blocking module
xAB2
Notes
X
TRUE
X
X
FALSE
Shutdown allowed via collective fault
FALSE
X
FALSE
FALSE
FALSE
Locking via redundant control
TRUE
X
FALSE
FALSE
TRUE
Enable via redundant control
X
X
TRUE
X
TRUE
Off-delay operation
X
X
X
TRUE
TRUE
Anti-blocking operation
Legend: X = don't care
Enable - circulation pump 1 after manual override xHB1
Enable - circulation pump 1 after manual override xHB1 corresponds to the enable - circulation pump 1 before manual override xAB1, additionally extended by a manual override module.
xAB1
eMANBIN
xHB1
Notes
FALSE
eMANBIN.Auto
FALSE
Manual override module in automatic
TRUE
eMANBIN.Auto
TRUE
Manual override module in automatic
X
eMANBIN.ManOn
TRUE
Manual override module in manual operation On
X
eMANBIN.ManOff
FALSE
Manual override module in manual operation Off
Legend: X = don't care
Enable - circulation pump 2 after manual override xHB2
Enable - circulation pump 2 after manual override xHB2 corresponds to the enable - circulation pump 2 before manual override xAB2, additionally extended by a manual override module.
xAB2
eMANBIN
xHB2
Notes
FALSE
eMANBIN.Auto
FALSE
Manual override module in automatic
TRUE
eMANBIN.Auto
TRUE
Manual override module in automatic
X
eMANBIN.ManOn
TRUE
Manual override module in manual operation On
X
eMANBIN.ManOff
FALSE
Manual override module in manual operation Off
Legend: X = don't care
Operating feedbacks xFb1 and xFb2
Circulation pump 1 in operation: xFb1 = TRUE Circulation pump 1 not in operation: xFb1 = FALSE Circulation pump 2 in operation: xFb2 = TRUE Circulation pump 2 not in operation: xFb2 = FALSE
Fault messages xAlarmIn1 and xAlarmIn2
Circulation pump 1 faulty: xAlarmIn1 = TRUE Circulation pump 1 not faulty: xAlarmIn1 = FALSE Circulation pump 2 faulty: xAlarmIn2 = TRUE Circulation pump 2 not faulty: xAlarmIn2 = FALSE
Reset of the fault message of the operational monitoring xQuit
The reset of the fault message of the operational monitoring xAlarmFb1 and xAlarmFb2 takes place as long as the reset of the fault message of the operational monitoring xQuit is active ( = TRUE ).
Request - energy generation xEnergyRequest
The request - energy generation xEnergyRequest is influenced by the anti-blocking modules, the run-on modules and the operating feedbacks of circulation pumps 1 and 2 xFb1 and xFb2 . The request - energy production xEnergyRequest is active if for circulation pump 1 the operating feedback xFb1 is present and at the same time the anti-blocking module 1 is not active and/or for circulation pump 2 the operating feedback xFb2 is present and at the same time the anti-blocking module 2 is not active and the run-on module is not active
Off-delay module
The run-on module is implemented by a switch-off delay with adjustable duration udiOffDelay realized. The run-on module is activated if no request via the inputs xEnOne or xEnTwo is present anymore. The pump run-on takes place only on the lead pump.
Anti-blocking modules
The anti-blocking modules are realized by the binary anti-blocking module with adjustable duration. The duration tAbsTime, the time tAbsStartTime and the weekday eAbsDay is adjustable for the first pump. The timing for the second pump is offset from the time of the first pump by twice the duration of the first pump tAbsTime. The timestamp (date / time) of the last anti-blocking operation is available, separated for each circulation pump, at the outputs dtAbsLastOn1 or dtAbsLastOn2 available.
Aggregate fault - circulation pump 1 xAlarm1
The aggregate fault - circulation pump 1 xAlarm1 is active ( = TRUE ) if the fault message of circulation pump 1 xAlarmIn1 is active ( = TRUE ) and/or a fault message - operational monitoring - circulation pump 1 xAlarmFb1 ( = TRUE ) is present. In all other situations the aggregate fault - circulation pump 1 is xAlarm1 is not active ( = FALSE ).
Aggregate fault - circulation pump 2 xAlarm2
The aggregate fault - circulation pump 2 xAlarm2 is active ( = TRUE ) if the fault message of circulation pump 2 xAlarmIn2 is active ( = TRUE ) and/or a fault message - operational monitoring - circulation pump 2 xAlarmFb2 ( = TRUE ) is present. In all other situations the aggregate fault - circulation pump 2 is xAlarm2 is not active ( = FALSE ).
Aggregate fault xAlarm
The aggregate fault xAlarm is active ( = TRUE ) if the aggregate fault - circulation pump 1 xAlarm1 is active or the aggregate fault - circulation pump 2 xAlarm2 is active. In all other situations the aggregate fault is xAlarm is not active ( = FALSE ).
Operating hours counter - circulation pump 1
The operating hours counter for circulation pump 1 is active when the operating feedback xFb1 = TRUE and at the same time the aggregate fault xAlarm1 = FALSE.
Operating hours counter - circulation pump 2
The operating hours counter for circulation pump 2 is active when the operating feedback xFb2 = TRUE and at the same time the aggregate fault xAlarm2 = FALSE.
Write access to the counters
Via the path ‘InstanceName._OperatingHours[1].udiOperatingHours’ or ‘InstanceName._OperatingHours[1].udiCountFb’ a write access to both counter values is possible. Via the path ‘InstanceName._OperatingHours[2].udiOperatingHours’ or ‘InstanceName._OperatingHours[2].udiCountFb’ a write access to both counter values is possible.
Operational monitoring - circulation pump 1
The operational monitoring monitors the correct function of circulation pump 1. The monitoring can generally be enabled (xFbControl = TRUE) or disabled (xFbControl = FALSE) . The operating mode of the manual override - hardware circulation pump 1 must be in automatic mode ( eAOO1 = HVACTYPES.eManBin.Auto ). The fault message - operational monitoring - circulation pump 1 xAlarmFb1 is activated ( = TRUE ) if during the duration of the operational monitoring udiFbControlTime the states of the input xFb1 and of the output xHb1 are different. The fault message - operational monitoring - circulation pump 1 xAlarmFb1 is deactivated ( = FALSE ) if at least one of the following conditions is active: &#xNAN;eAOO1 = HVACTYPES.eManBin.Auto ( switch to automatic mode of the manual override - hardware ). Reset of the fault message of the operational monitoring xQuit = TRUE Enable the operational monitoring xFbControl = FALSE
Operational monitoring - circulation pump 2
The operational monitoring monitors the correct function of circulation pump 2. The monitoring can generally be enabled (xFbControl = TRUE) or disabled (xFbControl = FALSE) . The operating mode of the manual override - hardware circulation pump 2 must be in automatic mode ( eAOO2 = HVACTYPES.eManBin.Auto ). The fault message - operational monitoring - circulation pump 2 xAlarmFb2 is activated ( = TRUE ) if during the duration of the operational monitoring udiFbControlTime the states of the input xFb2 and of the output xHb2 are different. The fault message - operational monitoring - circulation pump 2 xAlarmFb2 is deactivated ( = FALSE ) if at least one of the following conditions is active: &#xNAN;eAOO2 = HVACTYPES.eManBin.Auto ( switch to automatic mode of the manual override - hardware ). Reset of the fault message of the operational monitoring xQuit = TRUE Enable the operational monitoring xFbControl = FALSE\
Collective automatic mode message xAuto
The collective automatic mode message xAuto is set active ( = TRUE ) if the following conditions are met simultaneously:\
Input eAOO1 = HVACTYPES.eManBin.Auto
Input eAOO2 = HVACTYPES.eManBin.Auto
Setpoint / parameter eManModeB1 = eMANBIN.Auto
Setpoint / parameter eManModeB2 = eMANBIN.Auto
CODESYS
InOut:
Input
xEnOne
BOOL
Input
xEnTwo
BOOL
Input
xFb1
BOOL
Input
xFb2
BOOL
Input
xAlarmIn1
BOOL
Input
xAlarmIn2
BOOL
Input
eAOO1
eManBin
eManBin.Auto
Input
eAOO2
eManBin
eManBin.Auto
Input
xQuit
BOOL
FALSE
Output
xHB1
BOOL
Output
xHB2
BOOL
Output
xAB1
BOOL
Output
xAB2
BOOL
Output
xEnergyRequest
BOOL
Output
xAlarmFb1
BOOL
Output
xAlarmFb2
BOOL
Output
tOffDelay
TIME
Output
dtLastFb1
DT
Output
dtLastFb2
DT
Output
dtAbsLastOn1
DT
Output
dtAbsLastOn2
DT
Output
udiOperatingHours1
UDINT
Output
udiOperatingHours2
UDINT
Output
udiCountFb1
UDINT
Output
udiCountFb2
UDINT
Output
xAlarm1
BOOL
Output
xAlarm2
BOOL
Output
xAlarm
BOOL
Output
xAuto
BOOL
Input Const
eModeRedundance
eOpModeRedundance
eOpModeRedundance.Auto
Input Const
udiFbControlTime
UDINT
60
Input Const
xFbControl
BOOL
TRUE
Input Const
udiAbsTime
UDINT
120
Input Const
todAbsStartTime
TOD
TIME_OF_DAY#9:0
Input Const
eAbsDay
eDoW
eDow.Monday
Input Const
eOffDelayTimeBase
eTime
eTime.Second
Input Const
udiOffDelay
UDINT
60
Input Const
eManModeB2
eMANBIN
eMANBIN.Auto
Input Const
eManModeB1
eMANBIN
eMANBIN.Auto
Methods:
mQuit
mResetOperatingHours
Structure:
mQuit (Method)
mResetOperatingHours (Method)
Last updated

