BUG: Discrepency between System SOC and Battery Monitor SOC explained

Quattro/ MPPT-RS/ Smart Li/ Cerbo/Smartshunt
Short answer: The System battery amps is approx 2A less than (-ve) the Battery Monitor’s, almost certainly due to ignoring the self consumption (100W) of the inverter/charger. This leads to a cumulative and very significant error in SOC% and eventually unexpected and traumatising low battery errors.
Why do I think this is happening?


The discrepancy is suspiciously close to the self-consumption of the Quattro (2A=100W) and what you might expect if the Quattro ignores its own self-consumption. The sort of simple software or hardware error that is easy to make. A simple software correction to first order would reduce this to negligible levels:
(eg estimate self-consumption = A + B*power)
You can see that with no full recharge for 18 hours the SOC% discrepancy is nearly 20% of a full charge (94% vs 75.4%). There are times when a full recharge may be delayed for 7 days or more, generating apparently spurious (but actually real) low battery errors.
You might ask why not just use the Battery Monitor SOC% and ignore the system SOC%?
(a) A battery monitor is not mentioned as required in the various manuals, nor should it be.
(b) The BM does not have as good a LiFePO4 charging algorithm as the quattro, probably being designed for LAB, and is not really useable for Li.
A small (!! OK I wrote firmware too) software mod can easily fix this, see above).

The inverter does not actually have a shunt in it to measure what it is sending to the battery.

If the lithium have comms to the GX the inverter uses the communicated SOC. So would be the same.

If there are no comms, and you want accuracy, it is recommended to added a shunt to the battery bank (right by the bank), so the system can differentiate between power it is processing on the DC bus for loads direct form solar if you have and power being sent down to the bank.

Otherwise the system just relies on voltage to determine things.

I have many systems without any shunt or comms that have been fine for many years. So no, not a requirement (it is just nice to have if it is set up right)

1 Like

From the battery itself or the ve bus? If it is ve bus then it is programming that causes this. Are you running the ess assistant?

FYI The inverter does not care about SOC only voltage.
So you really should be tracking that rather than SOC.

Questions to be answered when running as you are: -
Does the battery reach target voltage?
Does it stay there long enough to balance?
Does it drop to float (if offgrid)?

I imagine the cerbo is calculating system SOC but it could be the Quattro.
Anyway something is, and it’s doing it wrong, that’s the point.
I only need Vbatt for detecting undercharge, full charge and absorption (balancing), and the Quattro is good for that.
Yes, full charge cycle weekly (or daily if enough solar): the battery has a full charge, absorption, float cycle.
I am essentially running offgrid, but surplus solar is sold, and battery is topped up if required during nightly cheap grid. System and BM set themselves at 100% automatically then. Sometimes solar is enough not to need grid charge (only to 70% anyway, obviously) but not to do a full charge cycle.

Something knows how much is going to the battery and that something must know how much is coming from battery, solar and INTO THE INVERTER so effectively something in the quattro is estimating what DC goes in and out. System SOC works fine (but a bit inaccurately) WITH NO BATTERY MONITOR. That’s just a fact.
Victron Smart Li, so far as I am aware, reports only Vbatt and Tbatt, not SOC.
System definitely does NOT use Vbatt for SOC, see another thread for long discussion on this.
The system is unusable, unstable and not fit for purpose with an error of 2A+ on Ibatt in system mode. Particularly when it is trivial to fix it as I have suggested.
Its broke, can easily be fixed.

Ooops, sorry didn’t answer the battery error. I have had low battery voltage outage from the quattro settings (Vbatt). This was last year; I had more conservative settings after that but still had failures. Now I know it was because system SOC was being incorrectly reported. When SOC is low, even a kettle will trip it.

So its not the battery randomly disconnecting when it is at low soc as Lithium batteries do? Usually this has nothing to do with soc but nore to do with cell voltage levels dripping out of the bms comfort range.

Look you have missed the point. I know what is causing the problem and how to crudely deal with it.
Read my post and checkout the graphs I have provided, it’s all very simple.
BUT Victron need to sort out the System SOC calculation so its reasonably accurate because its needlessly and damagingly misreporting when there is no need for it to do so.

Assuming any victron people ever read stuff posted here.

I didn’t miss the point.

I was asking how? When there is no shunt measurement physically on board? And then separating what the DC bus is processing for loads (which can also be slightly inaccurate due to PF and harmonics and a bunch of etc) vs what actually is absorbed by the battery?

The simplest way is a direct at the battery measurement. SOC is mostly a construct anyway. Who is to say the battery monitor on the battery is correct either? I have used a fair range of batteries now and can say each one has its ‘own brand’ of SOC and they all drift (am including BYD and Pylons in this sweep) when not charged fully to ‘recalibrate’ which is when the problem is appearing…

Yes, they all will drift within their parameters.
See my post though, its 2A off or 2.4kWh out in 24 hours!!
That’s not “drift” that’s poor design.
The smartshunt quotes ±0.4% accuracy so on 10A that’s 40mA, but ‘resolution’ to 10mA.
Now you might wonder, as I did, whether this was actually of full scale or 0.4% of 500A or 2A.
Looks suspiciously like a typical shunt resistor accuracy. In which case the former is more likely.
However the meter is almost certainly an A-D chip, and the Smartshunt specs give resolution (not accuracy) of 10mA. Say 18bits for 2000A version.
As an ex-electrical engineer and hardware, firmware and software designer of course I tend to be suspicious of specifications and definitely know “resolution” and “accuracy” are often not closely related. I therefore checked the 0-20A range of the Smartshunt using a calibrated (1%) multimeter. I was surprised (astonished?) to find the smartshunt was giving current readings essentially accurate to its resolution over the 100mA to 16A range. Looking up suitable 18bit+ A-D converters I find these are cheap as chips, even 24 bit are not expensive (speed not being of the essence here) eg LTC2411IMS#PBF at £8 ea from RS.
So yes, drifting is fine at the tens of mA (even 100mA) but NOT 2A - 3A.
Now you say there is no shunt on a multi/quattro, but there is something that is measuring DC current, after all you can set charging and discharging currents and its actually VERY accurate at measuring discharge current for the System SOC except for the offset current. I have no idea what is inside these devices, have you seen the circuit diagram? Is it published? How do you know? After all, a shunt can be just a well controlled bit of copper trace with a cheap A-D strapped across it.

You have a bit of an advantage in your working out as you already know the answer you want to get from the system and its calculated. And for some part it would need to be as there is solar involvement. But again knowing what path the angry pixies took is important to know as well.

The Victron reads the AC in true rms. But true rms is not the same exactly as metering power.

Agreed they are not the same. Even Fluke say that. Also component ‘accuracy’ is not alway linear. So the load matters as well.

Sure. But it will it be measuring the same way as the battery is doing it? Possibly also a reason for the difference.

No. I don’t have access to those things. But am a bit of a ‘if it didn’t open it i don’t own it’ kind of person. So have had a look. Only thing i don’t open any more is a cellphone.

Is your inverter reading the same voltage as the battery? And no dc ripple (making voltage inaccurate)
Difference in amp reading can be that as power is VA on DC. So if voltages are wrong…

It is either accurate or not. Can’t be both.

Is there any solar contribution on any of the graphs in your original post?

Do you have something constructive you would like to contribute?
The answer is yes, if it catches attention. But number of posts vs victron read ratio sometimes it also helps to have a message passed on.

My original statement is in danger of being buried in interesting but not relevant replies.
That is that assuming a Victron smartshunt is as accurate as claimed and measured, System SOC is consistently out by ~2A (~3A when quattro is handling significant power) and this is resulting in a 24hr inaccuracy of 1.4kWh which is very poor, but would be easy to fix by altering the System SOC algorithm to include this offset.
I note there are other posts where system SOC is called into question.

My mistake will stop now. Wanted to explore the idea with you. Your original post will alway be the first thing people see whne opening the topic, so not sure how the replies will affect that?

Leave my last thought thought now.

An inverter that only measures the AC side using a Hall effect sensor and knows the AC voltage can estimate power, but it may not be as accurate as directly measuring DC power.

Wanting a more accurate DC power calculation, the inverter should:

Measure DC current directly with a shunt resistor or Hall effect sensor on the DC side.

Measure AC power factor (cos(θ) (which a victron does not it is true rms.
if it isn’t assumed to be 1.

Use a real-time efficiency curve instead of a fixed efficiency value. This would be the variable part and the most difficult to factor outside of the inverter as also system set up can affect efficiency .

  1. I think the smartshunt is an accurate device, I am quite impressed.
  2. Accuracy is pretty well always a % of the amount being measured (eg shunt resistance) and the resolving accuracy (eg bit resolution of A-D converter). In this case the latter is the major item as currents are low (10’s of A).
  3. I have no idea what you are talking about re “measuring the same way as the battery is doing it” as voltage is useless outside full and min charge levels and there is no measurement of current in Victron smart Li.
  4. I do not see what the battery voltage and smartshunt voltage have to do with this, unsurprisingly they are the same within a few mV, as you would expect. The effect is minute. My point is that SOC displayed by System and Smartshunt differ by an amount that is explained by the difference between system displayed charge amps and the smartshunt displayed current. As I said in my original post.
  5. Yes there is solar in the centre section, pretty obvious as the system is charging, and this also has the 2A offset. As expected if the self-consumption of the quattro has been ignored.
  6. Yes, I appreciate that you and possibly others may have a direct link to Victron. However my problem is that my very simple demonstration of a consistent error and how to fix it is being drowned by stuff that has little to do with what I said, but is just a scattershot of random arguments that have nothing to do with what I am saying.
  7. You say that the system current and SOC are inaccurate and not to be trusted because the quattro has no DC shunt, and I am saying that in fact it is surprisingly accurate except for a small but important offset. The latter can easily be fixed with a simple change to the system SOC (or charging amps) algorithm. Problem identified and solution produced. Why are you arguing with me?

Or just add 2A (better include a power component) to include the quattro self-consumption energy to the system algorithm?

This is free from hardware costs and relatively cheap to implement in a software update.

What could be easier?

I think that somethig was missed. Can this be cleared up, you are or are not using a shunt? Usually the system SOC is the shunt soc or the battery soc as the two should synchronise to the one set as the system monitor using the GX.

I wasn’t actually arguing. Though i was having a constructive discussion. In any case on that point we have different views…

The offset is not that simple as the offset changes in different conditions. (100w on some conditions and 150 in the other) That is what I was asking for a more technical or constructive input as i thought given your back ground you had a solution?

Yes, I have a smartshunt battery monitor installed.
As stated on the graphs actually. “Battery Monitor 277”.
My apologies, I thought I had included it.
How else would I measure battery current directly?
I would like to download the numerical data, which would make it easier.
However, as I said before, its basically 2A at low power levels but increases to ~3A when the quattro is handling more power. I expect (fans excepted) if its the quattro self energy, there will be a simple (probably close to linear) relationship between self-consumption and power handling to pop into the System algorithm. A handful of bytes (ok maybe more, Python isn’t the best language).

I was wondering :). I mean you could have made your own.

Ok then, so in the SOC graphs of your first post one is the Smartshunt and the other a Quattro.
And of course you would have set the SShunt Puekert to 1.0 so you could compare both without any discharge Amp corrections??
No?

If say the default Peukert of 1.25 is still in place, my bombshell theory - the red line is the SShunt and the yellow the Quattro. And what you’ve derived from their positions is totally null. Your challenge now is to prove me wrong. Look for what ‘System’ is picking up.

Doesn’t matter anyway. Victron don’t recommend installers provide more than one SOC, as clients rarely understand why they’re different. And they almost always are.