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¶
Danfoss ABN A5 Actuator https://assets.danfoss.com/documents/71560/AI111186467687en-010301.pdf
Danfoss Thermal Actuator TWA-Z https://assets.danfoss.com/documents/86003/AI208386479940en-010201.pdf
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
xEnableBOOLTRUE
Enable
xNormallyClosedBOOLTRUE
Valve is normally closed (if no power is applied), but gets opened if power is applied.
rSetptREAL0.0
Setpoint, 0..100(%) - 0% => closed, 100% => open
tPeriodTIMETIME#10m0s0ms
Pulse width modulation period
usiWarmupCyclesUSINT1
Warmup time in number of periods, to deactivate warmaup/cooldown use usiWarmupCycles:=0.
rWarmupSetptREAL50.0
Warmup setpoint.
tStartDelayTIMETIME#1m0s0ms
Start delay after powering on.
tCloseTIMETIME#3m0s0ms
Closing time after powering off.
tBpMaxOffTIMETIME#2880m0s0ms
Blocking protection maximum off time
tBpTimeTIMETIME#0ms
Blocking protection time, set to T#0S to disable blocking protection
rBpPosREAL100.0
Blocking protection position, 0..100(%) - 0% => closed, 100% => open
xResetBOOLFALSE
Reset
itfDateTimeProviderUtil.IDateTimeProviderGlobals.g_dtpDateTimeProvider
Source for the current date and time information in milliseconds since 1.1.1970 00:00:00.000
Output
xPWMBOOLPulse width modulation
rSetptOutREALActual setpoint, either rSetpt or rWarmupSetpt
eWarmupStateValveThermoWarmupState.IS_COLD
Warmup state
xErrorBOOLError indication
eErrorIDError ID
itfValveContinuousOutput to connect THIS to other function block inputs
Properties:
Structure: