ValveThermo (FB)

FUNCTION_BLOCK ValveThermo IMPLEMENTS IValveContinuous

Thermal actuator valve.

Application example

Thermal actuator valves are widely used in building automation, are cost efficient but not very energy efficient and as precise as mechanical gear actuators.

Device examples

Functionality

Thermal actuator valves are mostly controlled by 2-point control or continuous control via pulse-width modulation (PWM). General purpose 2-point control or general purpose PWM doesnt take the specifics of thermal actuator valves into account, leading to sub-optimal control deviation and variance. Thermal actuator valves comes in two flavours - normally closed and normally open valves. Normally closed valves should be prefered whenever possible to optimize for control energy consumption.

ValveThermo provides an optimized control strategy for thermal actuator valves, improving control deviation and variance a bit.

ValveThermo takes into account:

  • warmup needed after longish shutdown / cooldown (normally closed valves only)

  • inherent start delay (sometimes called “dead time”)

  • travel time

  • closing time including travel time plus closing delay (sometimes called “hold time”)

Approximate value (taken from data sheet), guessed values or even default values for tStartDelay / tClose are often good enough. Opening / closing travel time are assumed to be alike. Warmup time and cooldown time are assumed to be alike.

The ValveThermo algorithm does a refined PWM with an cycle tPeriod, but scaling the valve setpoint in a time window (tPeriod - tStartDelay - tClose).

Normally closed valves and warmup:

If ValveThermo is in eWarmupState = IS_COLD, (warmup is enabled by setting usiWarmupCycles > 0) and rSetpt is set to a value > 0.0 there is a subsequent warmup phase. During warmup ValveThermo does the refined PWM mentioned above for usiWarmupCycles using rWarmupSetpt instead of rSetpt. Cooldown starts, if valve is supposed to close (rSetpt:=0), procceds usiWarmupCycles to end up in eWarmupState = IS_COLD. Warmup/cooldown can be disabled using usiWarmupCycles:=0.

ValveThermo doesnt do warmup/cooldown for normally open valves.

Blocking protection

If the valve is not opened for a given time tBpMaxOff, open it even if rSetpt = 0.0 for a given time tBpTime and the given position rBpPos.

InOut:

Scope

Name

Type

Initial

Comment

Input

xEnable

BOOL

TRUE

Enable

xNormallyClosed

BOOL

TRUE

Valve is normally closed (if no power is applied), but gets opened if power is applied.

rSetpt

REAL

0.0

Setpoint, 0..100(%) - 0% => closed, 100% => open

tPeriod

TIME

TIME#10m0s0ms

Pulse width modulation period

usiWarmupCycles

USINT

1

Warmup time in number of periods, to deactivate warmaup/cooldown use usiWarmupCycles:=0.

rWarmupSetpt

REAL

50.0

Warmup setpoint.

tStartDelay

TIME

TIME#1m0s0ms

Start delay after powering on.

tClose

TIME

TIME#3m0s0ms

Closing time after powering off.

tBpMaxOff

TIME

TIME#2880m0s0ms

Blocking protection maximum off time

tBpTime

TIME

TIME#0ms

Blocking protection time, set to T#0S to disable blocking protection

rBpPos

REAL

100.0

Blocking protection position, 0..100(%) - 0% => closed, 100% => open

xReset

BOOL

FALSE

Reset

itfDateTimeProvider

Util.IDateTimeProvider

Globals.g_dtpDateTimeProvider

Source for the current date and time information in milliseconds since 1.1.1970 00:00:00.000

Output

xPWM

BOOL

Pulse width modulation

rSetptOut

REAL

Actual setpoint, either rSetpt or rWarmupSetpt

eWarmupState

ValveThermoWarmupState

ValveThermoWarmupState.IS_COLD

Warmup state

xError

BOOL

Error indication

eErrorID

Error

Error ID

itfValveContinuous

IValveContinuous

Output to connect THIS to other function block inputs

Properties:

Structure: