openems
openems copied to clipboard
Implement SMA STP-10.0 SE Hybrid ESS
Implementation of SMA STP 10.0 Hybrid ESS.
The implementation is split into Battery, Inverter and DC Charger. The inverter only works with that battery, but the implementation had to be split up as the devices use different Modbus Unit IDs.
The components are located in the existing bundle io.openems.edge.ess.sma. Note that the other packages were renamed to io.openems.edge.ess.sma.sunnyisland and io.openems.edge.ess.sma.enums.
Is this something you are actively working on? I believe (better) SMA support would be generally nice to have in OpenEMS.
Implementation of SMA STP 10.0 Hybrid ESS. The implementation is split into Battery, Inverter and DC Charger. The inverter only works with that battery, but the implementation had to be split up as the devices use different Modbus Unit IDs.
It sounds like bad abstraction if they only work in this combination anyway. If Modbus Unit-ID is your only problem, we should be able to find an alternative - see e.g. https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.ess.byd.container/src/io/openems/edge/ess/byd/container/Config.java#L23-L30
Is this something you are actively working on? I believe (better) SMA support would be generally nice to have in OpenEMS.
Implementation of SMA STP 10.0 Hybrid ESS. The implementation is split into Battery, Inverter and DC Charger. The inverter only works with that battery, but the implementation had to be split up as the devices use different Modbus Unit IDs.
It sounds like bad abstraction if they only work in this combination anyway. If Modbus Unit-ID is your only problem, we should be able to find an alternative - see e.g. https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.ess.byd.container/src/io/openems/edge/ess/byd/container/Config.java#L23-L30
Yes, we are actively working on this, and we have such an inverter in use on a productive system.
I agree that the abstraction is not very good, and I was trying to get around it too. We definitely need both Unit IDs. Under one unit ID (3 by default) you'll find a protocol needed for write access (similar to the one of ESS Sunny Island), and under the other unit ID (126 by default), there is a SunSpec protocol, as in the SMA PV inverter.
I couldn't find a way of having two unit IDs in one component, as the unit ID is part of the AbstractOpenemsModbusComponent. In the example you give, there are two different modbus bridges (so I assume two different IP addresses), but only one unit ID.
I was also thinking that instead of combining the inverter and the battery to a GenericManagedEss, you have a EssSma combining them, but in the end I didn't see the benefit of it.
I would be glad if you or anyone else has a suggestion of how to deal with different unit IDs in the same component. I saw at least two other modbus devices that use different unit IDs (though in both these cases, one unit ID can be ignored, as the registers are not too relevant).
Best regards, Thomas