openems icon indicating copy to clipboard operation
openems copied to clipboard

Implement SMA STP-10.0 SE Hybrid ESS

Open tsicking opened this issue 1 year ago • 3 comments

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.

tsicking avatar Apr 15 '24 11:04 tsicking

Code Coverage

github-actions[bot] avatar Apr 15 '24 11:04 github-actions[bot]

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

sfeilmeier avatar Jun 19 '24 11:06 sfeilmeier

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

tsicking avatar Jun 19 '24 13:06 tsicking