Do SolarEdge Inverters suffer from wear issues on the flash memory? #727
Replies: 6 comments 8 replies
-
@cyberkryten I know you have been deeply involved in at the conversation on Predbat where a single start charge command from predbat can then result in charging stopped if the inverter times out or resets. Predbat now has the always keyword to repeat a command on each cycle which gets round that part of the problem. However, the concern now becomes a large number of redundant inverter writes and leaves a "wear" concern on the flash memory here. I'm experimenting with a script that is called from the Predbat service API which checks current status before issuing another write. This replaces the SE Multi entity select calls and only calls them if the current value is different from the provided one. The script also sets the timeouts to extend those out whilst charging is take place I end up with this sort of service call in the Predbat apps.yaml
|
Beta Was this translation helpful? Give feedback.
-
I can add a warning in the write enable screen that frequent writes may cause flash wear. I would assume all models are affected to some level, but the flash used is unknown and could even change between different internal revisions if supplier availability for parts like flash chips (or whatever SE is using for storage internally) changes. |
Beta Was this translation helpful? Give feedback.
-
I always do a check of whether the battery is already in the desired mode before changing it, which obviously helps a bit. But sometimes, particularly in summer, I need to change the battery mode multiple times per day. Even in winter it needs to change at least twice a day. Not really much you can do about it. |
Beta Was this translation helpful? Give feedback.
-
Yeah, I'm struggling to figure out what is written where and the consequences. It seems likely that anything that persists between restarts/resets (ie the 'Default' mode) must be written to flash, otherwise it couldn't restart in the same state. So, anyone using those values as the target for Predbat is almost certainly causing flash writes on a regular basis. It also seems possible that transient items (ie the current mode) may not be written to flash as things like the status of the inverter will probably be RAM only. Of course, it could be that all mode changes are written out (that would be the simplest option from a coding perspective) - if anyone has a contact within SE Dev team I'm happy to engage but front line support won't understand the questions. I'm a bit wary of putting logic probes into the inverter and running it with extra wires on the board to test, given the significant DC/AC voltages involved, though as has been mentioned, the effect and MTBF of flash will vary between inverters anyway. Of course, in theory a failure should be covered under warranty... |
Beta Was this translation helpful? Give feedback.
-
I think caution is wise, and I have already been modifying my automations in order to check whether a change is necessary before executing it, which is probably good practice regardless. This could be implemented at an integration level, but I suspect it may be a significant PITA! However, having digested the document that initially raised these concerns, I think we may concerned unnecessarily. I suspect that the only registers written to flash would be those in the the non-volatile category. Those that reset on inverter reboot are likely stored in volatile memory; though I concede that they may be reset to defaults by the inverter's startup routine, I'm not sure why they would be, if they were stored in non-volatile flash. The supposition that the inverter employs volatile (less-wearing) memory for volatile registers is supported by the read-only registers that it writes itself with significant frequency, such as the instantaneous power, voltage, etc. If it is writing these into flash then the frequency of our writes would pale in comparison! Of the registers listed as non-volatile in that document (assuming commonality between SE inverter architectures) the only one that we consumer-grade users are likely to be changing with any regularity is the command timeout. |
Beta Was this translation helpful? Give feedback.
-
This is only an issue when writing state, isn't it? Just reading energy, power and battery stats without modifying any setting should not cause any flash wear, right? |
Beta Was this translation helpful? Give feedback.
-
Describe the bug
There have been changes made to Predbat for GivEnergy inverters because register writes are causing premature wear of the on-board flash memory.
There are many parameters being changed when using this integration to control the inverter, so an understanding of whether this is something we need to be concerned about would be good.
Has anyone got an answer or asked SE about this?
I note that there is a warning about this in one of the more recent SolarEdge TerraMax Inverter technical notes, though I can't find any reference in others :
https://knowledge-center.solaredge.com/sites/kc/files/se-modbus-interface-for-solaredge-terramax-inverter-technical-note.pdf
At the bottom of Page 19:
The adjustable parameters in Modbus registers are intended for long-term storage.
Periodic changes in this parameter may damage the flash memory.
Due to the way the SE inverters reset daily and also have a default command timeout of 1 hour, it is necessary to write the status to the inverter regularly, so this is a concern if it does affect SE Inverters - without knowing the MTBF and wear details, it is hard to know if current writes are within limits or likely to cause major problems.
Expected behavior
Change settings without causing premature failure.
Screenshots
No response
Diagnostic File
None
Debug logs
No response
Home Assistant Version
All
solaredge-modbus-multi Version
All
Installation Type
HAOS
Read the Instructions
Additional Context
No response
Beta Was this translation helpful? Give feedback.
All reactions