For a heat pump without a buffer to function properly, one of the heating loops must always remain open. This article demonstrates how to prepare the logic to achieve this effect.
1. For each heating loop, create a virtual Thermostat
object. If you need help with their creation, check out this article.
In our example, the thermostats created are: Thermostat_LivingRoom
, Thermostat_Bedroom
, and Thermostat_Kitchen
, corresponding to the heating loops in the living room, bedroom, and kitchen.
The thermostats will control the actuators via relay outputs: Loop_LivingRoom
, Loop_Bedroom
, and Loop_Kitchen
.
2. Designate the heating loop that will remain open when all others are closed. In our case, this will be Loop_LivingRoom
.
3. Create a script that checks the states of all actuators except the duty loop. If all actuators are off (logical product is zero), the algorithm will stop the thermostat managing the duty loop and then activate its actuator. If the condition is not met, the algorithm will restart the duty loop thermostat.
Example script (SCR_Duty_Loop
):
if (CLU->Loop_Bedroom->Value==0 and CLU->Loop_Kitchen->Value==0) then
CLU->Thermostat_LivingRoom->Stop()
SYSTEM.Wait(1000)
CLU->Loop_LivingRoom->SwitchOn(0)
else
CLU->Thermostat_LivingRoom->Start()
end
where:
Thermostat_LivingRoom
is a virtualThermostat
object (with outputLoop_LivingRoom
) that is dedicated to switching on unconditionally while the other actuators are off.Loop_Bedroom
,Loop_Kitchen
are all actuators in the installation except the duty actuator (in this case,Loop_LivingRoom
).
Assign the script to the OnValueChange
events of all actuators except the designated duty actuator.
4. In the final step, upload the configuration to the CLU.