diy solar

diy solar

Growatt protocol

Geoffersb

New Member
Joined
Dec 13, 2023
Messages
14
Location
Devon uk
Hi all,
First post here so please be gentle!
I've got 3x growatt spf5000 running a 3 phase system (off grid) with a diesel generator and eventually 15kw panels. About 20kWh of storage.

This is all to drive 2 milking robots, the load can change quite a bit, there is a large air compressor kicking in, 2x vac pumps and a cooling compressor so total load can get to near 15kw but not for long.

Cows milk 24/7 which is inconvenient for a solar system! When the generator is running obviously it has to charge the batteries (which can safely swallow the growatts full output @ 300A ) and run the load.

I can make it work by setting the utility charging current to say 20A per inverter but when there isn't such a high load this could be 100A. I think the saving in diesel and generator run time makes it worth trying to engineer a way to keep the generator loaded

Has anyone managed to get hold of the protocol (rs485 or can) that BMS use to control the charge current? I can program a micro controller to talk to it if I know what it needs to say!
Could then drop or raise the charge current depending on load.

Hope that makes sense
Thanks Geoff

Ps I've contacted growatt UK but am yet to hear back !
 
Thank you, I appreciate that, I have read through that document since I posted.
The register detailed is the total charge current.

As I have solar input too I'd like to just change the utility charge current so as not to restrict any solar power that might be available while the generator is running.

There are gaps in the register addresses so I guess one of the must be utility charge? They seem not to be in the same order as the registers available through the lcd/buttons which is odd?

Cheers Geoff
 
Guess the easiest way to find it is to set a specific value then read the registers until I find it?! ?
 
Guess the easiest way to find it is to set a specific value then read the registers until I find it?! ?
Hi there,

I use Grott - Grottserver to talk to Grotwatt servers - please check out. Grott

the parameter you need is total charge current. It is number 34; Confirm before trying with change and see method. Cheers
 
Thanks that looks exactly what I'm after! Could run it on a raspberry pi I assume? I just need to setup a simple bit of code to alter the charge current depending on load? Do you know what parameter utility charge is? I'd prefer to alter that so any any available solar would still be used but I could be getting into marginal gains here?!

Cheers Geoff
 
Just spent a while down a rabbit hole researching this a bit, in a ideal world I'd monitor the load on the inverter, (which is also the load on the generator) and lower or raise the charge current accordingly.

Problem I can see is one forum/GitHub said that the writes to the growatt registers are slow, ie. seconds, so by the time my load has come on and been registered it will be too late? I need it to drop current quickly to avoid the generator dipping.

Most of my large loads are three phase motors with vfd's on so can ramp up slowly maybe this could give a bit more time?

Thanks Geoff
 
There is always lag with Modbus, typically you poll to read the registers or write to the registers every 15 secs. You can increase the frequency if it's only one register but there will still be a lag plus the Growatt needs it's own time to respond. As an example I could restrict export by my Solax by writing to a register but the lags mean it's not efficient, well not for me. So instead I have dedicated Arduino sampling the current flow 50 times a second and controlling an SSR to divert energy to an immersion heater.
 
I've got an rs485 adaptor so will have a play about with it, could always do zero cross detection on the generator incoming to pick up it slowing under load? But would prefer to do it from the inverters load monitoring.

It's a shame they don't offer it as a feature, I can't be the only person running into this?
 
Been messing around with this a bit today, I have 3x spf5000es, I connected my rs 485 adapter to pin 1&2 on the rs485 rj45 connector underneath but it just spews out data, I've changed the address to 9 and restarted but I can't get in to respond to any communication?

Am I connected up right? I read somewhere the usb connector isn't but that's where the modbus connects but I have read alot of other vague things too!

I'm using a terminal to send a request as one sting.

Cheers Geoff
 
Hi,
Feel I'm getting somewhere now! Turns out was my mistake in realterm output, now I've persuaded it to send hex I get a reply.
Dropping the charge current happens pretty much instantly as soon as you write the data, this is good 😊, would it do any harm to poll the load percentage every second while my generator is running and drop/raise the charge current according to load? I'm going to see if I can find the utility charge register, a few are missing. Anyone any idea why this register isn't detailed ??

It's that be best to alter them if the sun comes out while the generator is running, total charge limit would be unchanged?

I could always monitor the PV power registers and adjust accordingly I suppose ?
Cheers Geoff
 
Does anyone know about the insides of these?
Only concern I really have is what the holding register is? I learnt the hard way that eeprom life is finite, if you write to it ever second you can wear it out quick!
I would assume the holding register is in RAM but don't really know, I could ask growatt but expect they won't say!

In reality I won't be writing every second as loads stay on for a while.
 
The SMA register map for Modbus states exactly which registers are at danger of having a finite life and best not written to on a regular basis. Growatt must know the same info so I would ask them. They can only ignore, refuse or give you the info.
 
Found the register that holds the ancillary charge current and can alter it easily, I've just got to check my MPASM CRC check i wrote for something else works with the 16bit modus CRC and i should be away.
I've also contacted growatt to ask if there are any registers that shouldn't be written to too often.
Will update if I hear back.
Cheers Geoff
 
Hi,
Feel I'm getting somewhere now! Turns out was my mistake in realterm output, now I've persuaded it to send hex I get a reply.
Dropping the charge current happens pretty much instantly as soon as you write the data, this is good 😊, would it do any harm to poll the load percentage every second while my generator is running and drop/raise the charge current according to load? I'm going to see if I can find the utility charge register, a few are missing. Anyone any idea why this register isn't detailed ??

It's that be best to alter them if the sun comes out while the generator is running, total charge limit would be unchanged?
Unfortunately, this price Unfortunately, this price was given to me by the shipping company we cooperate with. If you have the opportunity, you can organize transport yourself from our warehouse in Mionów, 48-250 Głogówek.was given to me by the shipping company we cooperate with. If you have the opportunity, you can organize transport yourself from our warehouse in Mionów, 48-250 Głogówek.
I could always monitor the PV power registers and adjust accordingly I suppose ?
Cheers Geoff

I'm relying on node-red pid and homeassistant to do similar thing for rainy days where i change my batteries overnight to use them on peak hours. i have a limit of 6.9KW and it's easy to go overpower, so the PID controls charge rate. Even with some delay for about 10 secs it reacts before the time it takes for the grid meter to trip.

I'm afraid of EEPROM writes, i totally miss this point... Please let us know if you receive any answer from Growatt. I wrote to them yesterday also asking this information, let's hope for the best :)
 
Back
Top