question

jcgalvezv avatar image
jcgalvezv asked

Impact of continuous writes to registers - SmartSolar MPPT 100/20

Reading VE.Direct Protocol BlueSolar and Smart Solar MPPT chargers manual, I found at page 9 this text:

"Battery Settings Registers

WARNING: stored in non-volatile memory. Continuous writing, for example from a control loop, will lead to early failure"

Does it mean that only battery settings registers are stored in non-volatile memory? To be clear: Does constant writes to other registers, different to battery settings registers, like 0xEDAB, lead to early failure? Are these other registers stored in a memory that is not the non-volatile?

MPPT SmartSolar
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

3 Answers
Alex Pescaru avatar image
Alex Pescaru answered ·

Generally speaking there are very few, if any, registers that need to be written often.

And good programming practice is to keep a "mirror" variable in your software for knowing if there is a real need to be written a new value. Meaning, if the "new" value is the same with the existing one, don't write. Or at least read the "old" value and compare it with the "new" one. If the same, skip.

The NV memory used for storing config data has an endurance of about 1 million write cycles.

So, you can do the math, if you have any worries.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

jcgalvezv avatar image
jcgalvezv answered ·

Thank you @Alex Pescaru for your reply. What I wanted to know was if registers, different to Battery Settings Registers, were stored in non-volatile memory. If not, the those could be written many times without issues. The manual only warns Battery Settings Registers in non-volatile memory.

Let me explain why I want to to that:

My SmartSolar MPPT 100/20 load output disconnect is not working properly (Probably miss configuration, but I tried everything and nothing worked) So I used a microcontroller programmed to turn Load Output off when the battery voltage was below 12.5v and reconnect (turn on) when battery voltage was 13.3+ and state of charge was float. Everything works as expected, but I needed to configure RX pin as Load Output On/Off Inverted (I did inverted because if I remove microcontroller I just insert the jumper from pin 0 to 1 and that turns load output on). I want to be able to communicate with SmartSolar MPPT 100/20 to get additional information, even to feed battery temperature, but to do that I need to be able to use RX pin to transmit from microcontroller to charger communications data (Hex Commands). To be able to do that, I need a way to control Load Output state and thought of register 0xEDAB to do that. If this register is not in non-volatile memory then it could be written many times without ageing.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Alex Pescaru avatar image
Alex Pescaru answered ·

Hi @jcgalvezv

They say to not write in a loop many times.

Even if other registers are written in the same NV memory, if only that is what you want to do, then don't worry. Probably you'll do that only a few times a day.

Imagine that a similar mechanism is done in a TV set, when you change the channel. The new channel number is stored in such memory. The channel can be changed several times a day and the TV set last a lifetime.

Alex

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.