DuoPump

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

Name
Data type
Value range
Initial value
Function

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

Name
Data type
Value range
Initial value
Function

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

Name
Data type
Value range
Initial value
Function

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:

Scope
Name
Type
Initial

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