Heat meter| This
function block calculates the current heat output from flow temperature, return
temperature and flow rate, and counts the amount of heat per day, month, year and in
total. It answers the questions every plant operator asks: "How much did the solar
system yield?" and "How much heat does the heat pump deliver?". Calculation. The output is flow rate times density times heat capacity times temperature difference. Density and heat capacity of water depend on the temperature and are interpolated from a table over the mean temperature of flow and return. That is the difference between "roughly" and "usable", especially for a solar system with a return of 80 °C. Example: 45 °C flow, 38 °C return and 1200 l/h give about 9.7 kW. The amount is summed up over the time that actually passed, not over an assumed cycle time. Flow rate. The flow rate comes either as a value in l/h at input DF or as pulses of a flow sensor at input IM. With pulses the flow rate is calculated over the pulse window: pulses times litres per pulse, extrapolated to one hour. The result is renewed at the end of each window. If IM is on an address, every telegram with a value other than 0 counts as one pulse - even a second one with the same value. With a drawn connection the change from 0 to not 0 counts. Medium. Water or a water-glycol mixture. The glycol share is calculated as an approximation from the values of water. For exact values, density and heat capacity can be set by hand. Protection against phantom output. Two sensors with a small deviation would otherwise produce an output that does not exist for hours at a high flow rate. Below the minimum temperature difference nothing is counted. A broken sensor (a sensor showing 0 °C), on the other hand, would give a huge difference: the output is limited to the maximum plausible output and the status text names the reason - silent limiting would hide the defect. Heating and cooling. With the direction "heating and cooling separately" a negative difference counts as cooling amount at output EK. The default is "heating only": a negative difference is not counted. Counter values. Day, yesterday, month, year and total survive a restart of the controller. They are saved once per hour and on an orderly exit; with a power failure at most the last started hour is lost. The month and year counters change on the set reference day, not necessarily at the beginning of the month or year. As long as the clock of the controller is not set, nothing is reset. Accuracy. This block is a calculating counter, not a calibrated device. For billing a calibrated heat meter is needed, read in via M-BUS or Modbus. The outputs are floating point numbers (EIS 17) with about seven significant digits: a total counter with six digits before the decimal point loses its decimals. Display in the visualisation works via addresses: LE, ET, EM and EJ as value displays, ST as text display. For the history, put LE and ET on addresses and record them - the heat yield then appears in the same chart as the electricity values. |
Inputs |
||
| VL | Flow temperature | Mandatory input. Not connected or outside -50 to 200 °C: the block reports a fault and calculates no output. |
| RL | Return temperature | Mandatory input. Not connected or outside -50 to 200 °C: the block reports a fault and calculates no output. |
| DF | Flow rate in l/h | Applies if the flow rate comes from "value". A value below 0 counts as 0. Not connected: no flow, nothing is counted. |
| IM | Pulse flow sensor | Applies if the flow rate comes from "pulses". Every pulse counts, see above. Not connected: no flow, nothing is counted. |
| FR | Enable | Optional. 0 blocks the block: no output, the counters stand still. Not 0 enables. Not connected: the block counts as enabled. |
| RS | Reset counters | Optional. The change from 0 to not 0 is evaluated: today, yesterday, month, year, total and the cooling amount go to 0. Not connected: never reset. |
Outputs |
||
| LE | Output in kW | Current output. Negative in cooling operation. 0 without flow, with too small a difference and with a fault. |
| DT | Temperature difference | Flow minus return in K. |
| ET | Amount today in kWh | Starts at 0 at midnight. |
| EG | Amount yesterday in kWh | The value of ET at the change of day. If the controller stood still for more than a day, 0. |
| EM | Amount month in kWh | Starts at 0 on the reference day of the month. |
| EJ | Amount year in kWh | Starts at 0 on the reference day of the year. |
| EA | Amount total in kWh | Keeps running until RS resets it. |
| DG | Flow rate calculated in l/h | The flow rate used; with pulses from the last pulse window. |
| ST | Status text | State in plain text (German, ASCII, written by the runtime), for example "Waermeleistung 9.7 kW (DT 7.0 K, 1200 l/h)", "Kein Durchfluss". For a text address. |
| EK | Cooling amount total in kWh | Only with the direction "heating and cooling separately". Otherwise 0. |
Parameters |
||
| Flow rate from, litres per pulse, pulse window | Default value, 1 l and 30 s. A longer window makes the display calmer but slower. | |
| Medium, glycol share | Default water, glycol share 30 %. | |
| Set values by hand, density, heat capacity | Default off. Density in kg/l (default 0.988), heat capacity in kJ/(kg*K) (default 4.181). | |
| Minimum temperature difference | Default 0.5 K. | |
| Maximum plausible output | Default 100 kW. 0 = no limit. | |
| Direction | Default heating only. | |
| Month change on, year change in month and on day | Reference days for the month and year counters. Default the 1st in each case: the calendar month and the calendar year. | |