hoylabs / OpenDTU-OnBattery

Software for ESP32 to talk to Hoymiles/TSUN/Solenso Inverters, VE.Direct devices, battery management systems, and related peripherals
GNU General Public License v2.0
308 stars 66 forks source link

[Request] Dynamic power limiting on two HMs combined #601

Closed gitisgreat2023 closed 7 months ago

gitisgreat2023 commented 10 months ago

Is your feature request related to a problem? Please describe.

With the Huawei the highest power Hoymiles that can be combined is the HM-1500. The HMT/HMS cannot be used (for example the HMT-2250), as the Huawei and CMT2300A chip cannot be combined (SPI bus limitation) with the ESP32 chip.

A solution would be to use several HMs in parallel, for example a HM 1500 and a HM800, applying the power limitation parallel on them.

Describe the solution you'd like

Using two HM in parallel. Power limiting can be proportional. For example 50% of the combined wattage ist need: both HM inverters are limited to 50%.

Describe alternatives you've considered

Using higher power HM, for example HMT/HMS inverted, like HMT 2250. Not an option, as I want to combine it with the Huawei AC charger.

Additional context

I analysed the histogram of energy consumption. 50% is reached by 600Wish, but the next 40-45% by being able to deliver 2.3-2.4kW. So that would be a HMT-1500 with a HM-800 for example (total 2300W). A Pylontech can (discharge) about 3.8 kW continously, the Huawei 4850G2 3kW. So basically the Hoymiles, HM series are limiting the overall system performance when only one can be used, with two it would be perfect.

gitisgreat2023 commented 9 months ago

@tbnobody Can dynamic power limiting on two HMs in parallel be done on OpenDTU-OnBattery level itself, or would a supporting feature at the OpenDTU level be very helpfull?

gitisgreat2023 commented 9 months ago

I have only experience with Matlab, not C++. By looking at the code I try to see how complicated it might be. Looking at PowerLimiter.cpp I would say for two powerlimiters in parallel, at least three modifications would be needed: 1) adding a second task, if a second HM with power limiter is configured 2) modifying setNewPowerLimit. The total HM power with power limitation activated has to be calculated and then proportionally (a choice) for the array of powerlimiters active the limit can be set. 3) creating an array of powerlimiters Configuration.cpp

spcqike commented 9 months ago

@gitisgreat2023 you would need some more modifications. like, what setup does the user have?

what about solar passthrough?

yes, to limit 2 inverters in one specific usecase shouldn't be to complicated, but openDTU-onBattery has multiple usecases and setups.

another option for handling multiple inverters would be to start with one inverter, increase the load (output) until it maxes out and use the second inverter only, if the first is at max output. as we still want low switching/limiting times and fast responses. afaik the update of multiple inverters takes longer and the time increases with each inverter added to the setup. so if you utilze both (or more) at the same time, you increase the update times and get a not so fast response anymore. so right know, with one inverter, you can keep your production and consumption close together, if you add more inverters and try to limit them at the same time, your system gets slower. this was mentioned here https://github.com/helgeerbe/OpenDTU-OnBattery/discussions/246#discussioncomment-6063893

gitisgreat2023 commented 9 months ago

I would use one battery with two inverters, the simplest case IMHO. For example HM 1500 with HM 600, or even 2x HM1500. I would put the latter case one on each phase (there's a 400V that I can use). Yes the second, blockwise turning on/off of the inverters would also be one I considered, already only only one needs to be controlled. But for the code change the "proportional" would be the easiest to implement I think. On you response time: how much time does it cost to query the power meter, typically? If that is relatively fast, and the HM power limiting is relatively slow, then the performance hit wouldn't be that large if one queries the power meter a second time before power limiting the second inverter and adjust it accordingly.

Thanks for the other thread. @helgeerbe google translate says you considered it to do it in autumn/winter... I also read you concern on people adding 5 HM-1500 to a single wallet. Would it be an idea to enable to use a second HM to be power regulated? That would cover a lot of cases I would say. And the proportional load, that would be easiest to implement, looking at the code. I would be happy to test it then, of course. And I assume @neolauren-cmd would be also happy to test the 2 WR power limiter...

gitisgreat2023 commented 9 months ago

Thinking about it... going for parallel power limiting is really only driven by the limitation that only HM series can be used with the Huawei...

@helgeerbe it is really not feasible that in the near future the HMT in combination with the Huawei will be supported, right?

From a technical point of view supporting HMT/HMS with a Huawei is way more useful than supporting HMs in parallel.

gitisgreat2023 commented 9 months ago

See this post which progressed much further... a software solution would be best, enabling for example combining the HMT2250 with the Huawei (2.25kW vs 1.5kW of the HM1500).

stefan123t commented 9 months ago

I have suggested a list of PV-Pools to which you can assign your PV-Inverters & PV-Panels. That way you can specify a limit for each Pool of PV-Inverters / Panels and control a common limit per pool.

See here for the same discussion upstream https://github.com/tbnobody/OpenDTU/discussions/1608#discussioncomment-7988430

schlimmchen commented 7 months ago

Support for multiple inverters in the dynamic power limiter is a long standing issue, see #230. It will probably be addressed eventually. There is no need for another issue.

github-actions[bot] commented 6 months ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new discussion or issue for related concerns.