Jump to content

Grant/Chofu heat pumps (and others) - Weather compensation capabilities


Recommended Posts

I am currently looking at which heat pump to install for my 4 bed detached 1930s house (fairly well insulated following lots of work by me).  I have read with interest many of the posts on this forum, and also on the renewable heating hub forum and Heat Geek (the latter of which I recommend very highly for anybody who wants actually to understand what affects the efficiency of heating systems and why, rather than trying to sort between often conflicting opinions).  I have also read extensively elsewhere and had several quotes (none of which I entirely trust)

 

What is driving me mad now is trying to work out what the candidate systems are actually capable of, more specifically as regards weather compensation.  Since this is one of a very small number of factors key to the overall system efficiency, understanding what the heat pumps (or more accurately the heat pump controllers) are capable of is an important factor (at least for me) in any decision.  The easily accessible information is mostly marketing hyperbole of one kind or another, so I have been reading the installation/commissioning/user manuals but with only limited success.

 

Almost all heat pumps seem to feature (as a minimum) a user-adjustable linear weather compensation curve.  What is not clear is which ones allow a non-linear/multipoint curve to be programmed in, nor is it clear which ones vary the flow temperature if the target room temperature is changed programmatically, eg for night time setback, (this latter feature is sometimes called parallel shifting).  I get the impression that the only way to find out may be to own one, which of course is too late!

 

I'm currently particularly interested in the capability of the Grant (Chofu) heat pump as I have identified this as a candidate for other reasons.  The manual is clear that the compensation curve is linear only, but does anyone know whether the native Chofu controller implements parallel shifting.  It can certainly be programmed for a timed setback ('economy' vs 'comfort'), but the manual is silent on how this is actually achieved .  If anybody knows the answer, or has definitive answers for any other common make, I would be interested (and maybe others would too).  If I get more than a couple of responses I will compile and post a table.

 

 

 

 

Link to comment
Share on other sites

Certainly if using radiators, a straight line wc ‘curve’ isn’t really optimal because the radiator output doesn’t follow a linear relationship to flow temperature - check radiator data sheets to see. Some will provide a formula as well. It’s because the air flow will be increased with greater dT between the surface and the air, hence output rising at a faster rate than increase in flow.

 

On the “others” camp - Vaillant ArothermPlus has configurable curves that seem to match radiator output nicely.

 

The system does vary the flow temp with room temperature, both in terms of deviation from set point and the set point itself (when configured to do so). This has the handy impact that the system can be very responsive in morning heat up, if you work that way, by setting a higher target for a short period of time without impacting that much the overall COP achieved.

 

It also has configurable floor and cap temperatures as well as maximum outside temperature for heating mode.

Edited by J1mbo
Link to comment
Share on other sites

The yellow curve shows what I calculate to be the weather compensation required to match my radiators and the straight line is what I am using.  There's not a huge difference.  Both are based on the assumption that the MCS calculation is correct and I need my maximum flow temperature at -3.8 C or less.    

Weather compensation.jpg

Edited by ReedRichards
Link to comment
Share on other sites

ReedRichards - similar to my calculated curve (using a rad exponent of 1.3) there is a couple of degrees difference in the middle  (which is where the temperature sits most of the time).  2 degrees is noticeable. 

 

Its clearly not beyond the wit of man (but maybe beyond the wit of some designers or installers of heat pumps) to implement a multipoint curve, and its hardly the most challenging piece of code ever.  Still not perfect of course, because wind makes a difference and possibly also humidity, but still better and possibly able to be tweaked to allow for humidity at least because the most humid days at predictable temperatures.

 

Anyway the roll so far looks like:

  • Vaillant: Selectable (but fixed) non linear curves, adapts flow temp to room temp
  • Mitsubishi: Multipoint curves, claims to adapt flow temp to room temp but not verified experimentally
  • CoolEnergy: Multipoint curves, flow temp does not adapt to room temp 
  • Grant/Chofu: Straight line only, flow temp does not adapt to room temp(?).  Possibility that multizone function could be 'bodged' to implement night time set back of flow temp in single zone system

 

Anybody know for definite about Daikin, LG, Samsung, Viessmann, Nibe, Hitachi?

 

Link to comment
Share on other sites

With the Vaillant, the curves can also be tuned by applying positive or negative offsets to the VRC700 temp sensor and the outside temp sensor (in 0.5 degree steps(. It’s a bit of a cludge but it does provide shifting of the curves up and down.

 

Room temperature itself would typically be regulated to the readings from the wireless Ambisense controller (or the other one who’s name escapes me).

Link to comment
Share on other sites

  • 1 month later...

A bit late to this thread, but I *think* it might be possible to have an external source adjust the weather compensation curves on the Grant/Chofu via Modbus.  I see the values in the table that's been reverse engineered, but I haven't tried changing them.  If this is of interest I can investigate and report back.  You'd still get a two-point straight line, but you could then adjust the two points dynamically, eg over the course of a day.

 

Then you'd need something to send the Modbus commands - fairly simple from a Raspberry Pi or similar.  Rather depends what you want to do with them from then on.

 

Link to comment
Share on other sites

Is the modbus connection active, I thought I had seen a post where the poster had reverse engineered the communication between the controller and the hp because he had found that the modbus connection was inactive.

Link to comment
Share on other sites

https://github.com/aerona-chofu-ashp/modbus
 

There are some slightly unusual default baud rate settings (by default 19200 bps, no parity, two stop bits), but it's enabled by default.  Modbus is a request-response protocol, so if you don't send a valid request you won't hear anything back. Once I had the baud rate settings (and got my +/- the right way round) it worked straight away.

Edited by Ommm
Link to comment
Share on other sites

6 hours ago, Ommm said:

https://github.com/aerona-chofu-ashp/modbus
 

There are some slightly unusual default baud rate settings (by default 19200 bps, no parity, two stop bits), but it's enabled by default.  Modbus is a request-response protocol, so if you don't send a valid request you won't hear anything back. Once I had the baud rate settings (and got my +/- the right way round) it worked straight away.

2 stop bits? Ok.... that's, different.

 

*Embedded electronics by day - my industry (offshore survey) runs on serial ports, still

Link to comment
Share on other sites

  • 6 months later...
On 13/05/2022 at 23:17, Ommm said:

A bit late to this thread, but I *think* it might be possible to have an external source adjust the weather compensation curves on the Grant/Chofu via Modbus.  I see the values in the table that's been reverse engineered, but I haven't tried changing them.  If this is of interest I can investigate and report back.  You'd still get a two-point straight line, but you could then adjust the two points dynamically, eg over the course of a day.

 

Then you'd need something to send the Modbus commands - fairly simple from a Raspberry Pi or similar.  Rather depends what you want to do with them from then on.

 

This is really interesting, and something I'd like to see more off.

 

Load compensation - lowering and raising based on an air stat in the main living area is the way forward!

 

Link to comment
Share on other sites

Yes, opentherm added to a heat pump is a no brainer and why has it not been done already? The standard is there, all that needs changed is the flow temp numbers.

 

Anyway, any further info on aerona flow temp changes on ModBus?

Link to comment
Share on other sites

7 hours ago, GaryW said:

Yes, opentherm added to a heat pump is a no brainer and why has it not been done already? The standard is there, all that needs changed is the flow temp numbers.

 

Anyway, any further info on aerona flow temp changes on ModBus?

It sort of has, but it hasn’t been done using opentherm. Evergreen Energy have launched a IoT temp controller called Homely that does load compensation and automatically figures out the best WC curve for your emitters, but it only supports Midea and Samsung, and it doesn’t have a nice wall stat, just a phone app.

Link to comment
Share on other sites

OpenTherm is a Honeywell boiler protocol.  Heat pumps are mostly designed in countries where they don't have boilers, and there isn't much crossover between the boiler world and the heatpump world.  If you're using a boiler controller for a heatpump you're doing it wrong - you should be using the heatpump's own controller instead.

 

Anyway, I knocked up this code and it reads the weather comp settings.  An algorithm to change them is left as an exercise for the reader - I have put in an example of how to write a register, but it's commented out so it doesn't change any of your settings.  I have a Modbus TCP server (actually a Raspberry Pi 1 running mbusd and a USB-Modbus adapter) at the IP address in the code below.  You also need to install the pyModbusTCP library (I got it from pip).  It's also possible to use the same with a USB Modbus adapter but needs reworking to use a library other than pyModbusTCP (I previously used MinimalModbus).

 

#!/usr/bin/env python3

from pyModbusTCP.client import ModbusClient

# the values return are 16-bit signed integers,
# so convert to python integers
def sint16(v):
    signbit = 1 << 15
    return (v & (signbit - 1)) - (v & signbit)

def read(mb, reg):
    result = mb.read_holding_registers(reg, 1)
    if isinstance(result, list):
        return sint16(result[0])
    else:
        return 0

def write(mb, reg, val):
    mb.write_single_register(reg, val)

# hostname of the ModbusTCP server
hostname = "192.168.4.117"

# connect to the server on port 502
mb = ModbusClient(host=hostname, port=502, unit_id=1, auto_open=True, debug=False)

# read settings from the holding register table
# these are in units of 0.1C, resolution 0.5C
z1_fixed_outgoingwater_set = read(mb, 2)*0.1
z1_tm1 = read(mb, 3)*0.1
z1_tm2 = read(mb, 4)*0.1
z1_te1 = read(mb, 5)*0.1
z1_te2 = read(mb, 6)*0.1

print("Zone 1: Fixed setpoint %f" % (z1_fixed_outgoingwater_set))
print("Zone 1: At min air temp te1=%f, outgoing water temp is tm1=%f" % (z1_te1, z1_tm1))
print("Zone 1: At max air temp te2=%f, outgoing water temp is tm2=%f" % (z1_te2, z1_tm2))

# set Zone 1 fixed outgoing water setpoint to 55C
##write(mb, 2, 55*10)


When I run this I get:
 

Quote

Zone 1: Fixed setpoint 55.000000
Zone 1: At min air temp te1=-2.000000, outgoing water temp is tm1=56.000000
Zone 1: At max air temp te2=20.000000, outgoing water temp is tm2=45.000000

which must be what my installer has configured it with.

Edited by Ommm
Typo in mbusd
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

14 hours ago, Ommm said:

OpenTherm is a Honeywell boiler protocol.  Heat pumps are mostly designed in countries where they don't have boilers, and there isn't much crossover between the boiler world and the heatpump world.  If you're using a boiler controller for a heatpump you're doing it wrong - you should be using the heatpump's own controller instead.

 

Anyway, I knocked up this code and it reads the weather comp settings.  An algorithm to change them is left as an exercise for the reader - I have put in an example of how to write a register, but it's commented out so it doesn't change any of your settings.  I have a Modbus TCP server (actually a Raspberry Pi 1 running mbusd and a USB-Modbus adapter) at the IP address in the code below.  You also need to install the pyModbusTCP library (I got it from pip).  It's also possible to use the same with a USB Modbus adapter but needs reworking to use a library other than pyModbusTCP (I previously used MinimalModbus).

 

#!/usr/bin/env python3

from pyModbusTCP.client import ModbusClient

# the values return are 16-bit signed integers,
# so convert to python integers
def sint16(v):
    signbit = 1 << 15
    return (v & (signbit - 1)) - (v & signbit)

def read(mb, reg):
    result = mb.read_holding_registers(reg, 1)
    if isinstance(result, list):
        return sint16(result[0])
    else:
        return 0

def write(mb, reg, val):
    mb.write_single_register(reg, val)

# hostname of the ModbusTCP server
hostname = "192.168.4.117"

# connect to the server on port 502
mb = ModbusClient(host=hostname, port=502, unit_id=1, auto_open=True, debug=False)

# read settings from the holding register table
# these are in units of 0.1C, resolution 0.5C
z1_fixed_outgoingwater_set = read(mb, 2)*0.1
z1_tm1 = read(mb, 3)*0.1
z1_tm2 = read(mb, 4)*0.1
z1_te1 = read(mb, 5)*0.1
z1_te2 = read(mb, 6)*0.1

print("Zone 1: Fixed setpoint %f" % (z1_fixed_outgoingwater_set))
print("Zone 1: At min air temp te1=%f, outgoing water temp is tm1=%f" % (z1_te1, z1_tm1))
print("Zone 1: At max air temp te2=%f, outgoing water temp is tm2=%f" % (z1_te2, z1_tm2))

# set Zone 1 fixed outgoing water setpoint to 55C
##write(mb, 2, 55*10)


When I run this I get:
 

which must be what my installer has configured it with.

Kudos Ommm.

 

This is great work.

 

My aerona is being installed end of month, will be trying this over the holiday period.

 

Tieing this into HA with the input of a living room thermostat is a simple solution.

Link to comment
Share on other sites

  • 2 months later...

I install hat pumps for a living.

I also own a Grant, and are looking for ways to change the flow temp on the fly.

 

The Homley device is a great product, currently it does not work with the Grant units.

 

Are you running that code above in HA YAML.

 

 

Great work .

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...