We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you've provided to them or that they've collected from your use of their services.

Control of the heating

When all the lights and circuits were functioning I began to work on controlling the temperature in the rooms and steering of the valves in heating system junction boxes.

 

 

Since the very beginning I wanted to have the possibility to control the heating in each room.  In the junction boxes of the central heating, from which all the pipes run to each of the heat exchanger I installed 24VDC electro-valves.  Such an addition triggered a cost of some EUR 125.  If I subtract the costs of the standard valves, which normally are mounted directly onto the heat exchangers, the final cost was not terrifying.

Initially I had no idea how to measure the temperature in the rooms.  I could not find anything based on the PT1000 within my price range.  The sensors of Moeller and Siemens cost over EUR 25 apiece.  Sensors of the Polish company PIAST were cheaper but their design was unacceptable.  I also found an offer of a Czech company Sensit, but the cost of the sensors with the deliver was also too high.

I managed to buy a used Siemens sensor for a mere EUR 5.  When it arrived on my desk I dismantled in. Inside of the ‘luxury’ Siemens-logo bearing case there was… a tiny little sensing element attached to a copper strip. At www.tme.eu I managed to buy similar once at EUR 1.5/piece.  One week after placing an offer 5 of such sensors were in my hands at a total price of a large pizza. 

I bought a soldering iron at Castorama for EUR 5, red the instruction on how to use it and… started to braze.  After 20 attempts and burning my finger once, I managed to attach two wires to the sensor.  It was ready!  I plugged it quickly into the PLC and got the temperature read at no delay.

Przygotowanie do pracy Czujnik PT-1000 Gotowy czujnik

I spent some time looking for a case but finally I decided to place the sensors in the frames of the wall-mounted switches.  The experts will most probably frown commenting my lack of professionalism, insufficient airflow etc…  Sure, if I knew better the theory of temperature sensors and had more money, I would come up with something better.  Anyway – the sensors now stick you their heads through holes in the switch frames, they are invisible and measure the temperature quite well.  Within a few minutes after the children start jumping around the room, the PLC picks up a temperature rise of c.a. 0.4 degrees.

Łącznik FIORENA POLO ...widoczny czujnik temperatury

Before the Winter I need to coneect the thermo-valves and write the code.  The first should be easy but the programming still is a great enigma.   I found some function blocks in the WAGO libraries, which enable setting cut-off temeratures and innertion but it all will surely need a lot of testing. 

Rozdzielnia c.o.

(Update05.01.2013)

It took me 3 years to fine-tune the system to make it work properly.  Finally:

1. The boiler (Vitodens 200) takes care for seting the water temperature using its built-in weather automation.  The boiler knows best what to do.

2. The control of individual heating circuits is done therough a Fb_Weather function block from WAGO's building_common.lib; Fb_Weather. The picture below shows best how it functions:

Fb Weather

Source: building_common.lib documentation

To make the function blok work properly one needs to set the target temperature in a given room.

In my case the settnig wHyst1 = 4 has proven to fit the needs.  It defines the delay of turning the heating on or off, when the temperature differs by +/- 0.2 degrees from the set target.  Greater values caused complaints of the users, who felt too cold or too warm.

As to coding:  in the variable definitions:

VAR RETAIN PERSISTENT
	HEATER_0PL : Fb_Weather:=(dwTon_10tel_s:=10, dwToff_10tel_s:=3000, wHyst1:=4);
	TEMP_H0PL: INT;
	WINTER : BOOL;
END_VAR;

Where:

  • dwTon_10tel_s - sets the delay in 0.1s of turning the heating off after the target temperature is reached,
  • dwToff_10tel_s - sets the delay in 0.1s of turning the heating on after the target temperature is reached (here set at 5 minutes to avoid turning the heating on when the garage doors are opened for a short period of time),
  • TEMP_H0PL - stores tha target temperature; modified through a visualization,
  • WINTER - used throughout the program - to signal if it is winter.
HEATER_0PL(iInput_Signal:=SensorReader.TEMPERATURE_4, iLimit1:=TEMP_H0PL*10, dwTon_10tel_s:=10, dwToff_10tel_s:=3000);
OUT86:= WINTER AND (NOT HEATER_0PL.xActorLimit1);

Where: 

  • SensorReader.TEMPERATURE_4 holds the temperature red from the sensor in the SensorReader process,
  • OUT86 - is the DO controling the thermo-valve.