Package io.openems.edge.edge2edge.ess
Class Edge2EdgeEssImpl
- java.lang.Object
-
- io.openems.edge.common.component.AbstractOpenemsComponent
-
- io.openems.edge.bridge.modbus.api.AbstractOpenemsModbusComponent
-
- io.openems.edge.edge2edge.common.AbstractEdge2Edge
-
- io.openems.edge.edge2edge.ess.Edge2EdgeEssImpl
-
- All Implemented Interfaces:
ModbusComponent
,OpenemsComponent
,Edge2Edge
,Edge2EdgeEss
,AsymmetricEss
,ManagedSymmetricEss
,SymmetricEss
public class Edge2EdgeEssImpl extends AbstractEdge2Edge implements ManagedSymmetricEss, AsymmetricEss, SymmetricEss, Edge2EdgeEss, Edge2Edge, ModbusComponent, OpenemsComponent
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class io.openems.edge.bridge.modbus.api.AbstractOpenemsModbusComponent
AbstractOpenemsModbusComponent.BitConverter, AbstractOpenemsModbusComponent.ChannelMapper<T extends AbstractModbusElement<?>>
-
Nested classes/interfaces inherited from interface io.openems.edge.ess.api.AsymmetricEss
AsymmetricEss.ChannelId
-
Nested classes/interfaces inherited from interface io.openems.edge.edge2edge.common.Edge2Edge
Edge2Edge.ChannelId
-
Nested classes/interfaces inherited from interface io.openems.edge.edge2edge.ess.Edge2EdgeEss
Edge2EdgeEss.ChannelId
-
Nested classes/interfaces inherited from interface io.openems.edge.ess.api.ManagedSymmetricEss
ManagedSymmetricEss.ChannelId
-
Nested classes/interfaces inherited from interface io.openems.edge.bridge.modbus.api.ModbusComponent
ModbusComponent.ChannelId
-
Nested classes/interfaces inherited from interface io.openems.edge.common.component.OpenemsComponent
OpenemsComponent.ChannelId
-
Nested classes/interfaces inherited from interface io.openems.edge.ess.api.SymmetricEss
SymmetricEss.ChannelId
-
-
Constructor Summary
Constructors Constructor Description Edge2EdgeEssImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
applyPower(int activePower, int reactivePower)
Apply the calculated Power.protected void
deactivate()
Handles @Deactivate of implementations.java.lang.String
debugLog()
Gets some output that is suitable for a continuous Debug log.protected java.util.function.Consumer<java.lang.Object>
getOnUpdateCallback(ModbusSlaveNatureTable modbusSlaveNatureTable, ModbusRecord record)
Provide a Consumer for Registers that cannot be automatically mapped to Channels.Power
getPower()
Gets an instance of the 'Power' class, which allows to set limitations to Active and Reactive Power.int
getPowerPrecision()
Gets the smallest positive power that can be set (in W, VA or var).protected ChannelId
getWriteChannelId(ModbusSlaveNatureTable modbusSlaveNatureTable, ModbusRecord record)
Provide a local ChannelId that gets mapped to remote READ_WRITE or WRITE_ONLY registers.protected void
setModbus(BridgeModbus modbus)
Set the Modbus bridge.-
Methods inherited from class io.openems.edge.edge2edge.common.AbstractEdge2Edge
activate, activate, defineModbusProtocol, isHashEqual
-
Methods inherited from class io.openems.edge.bridge.modbus.api.AbstractOpenemsModbusComponent
activate, activate, getBridgeModbus, getModbusProtocol, getUnitId, m, m, m, m, m, m, modified, modified, unsetModbus
-
Methods inherited from class io.openems.edge.common.component.AbstractOpenemsComponent
_channel, addChannel, addChannels, addChannels, alias, channels, getComponentContext, id, isEnabled, logDebug, logError, logInfo, logWarn, removeChannel
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.openems.edge.ess.api.AsymmetricEss
_setActivePowerL1, _setActivePowerL1, _setActivePowerL2, _setActivePowerL2, _setActivePowerL3, _setActivePowerL3, _setReactivePowerL1, _setReactivePowerL1, _setReactivePowerL2, _setReactivePowerL2, _setReactivePowerL3, _setReactivePowerL3, getActivePowerL1, getActivePowerL1Channel, getActivePowerL2, getActivePowerL2Channel, getActivePowerL3, getActivePowerL3Channel, getReactivePowerL1, getReactivePowerL1Channel, getReactivePowerL2, getReactivePowerL2Channel, getReactivePowerL3, getReactivePowerL3Channel
-
Methods inherited from interface io.openems.edge.edge2edge.common.Edge2Edge
_setMappingRemoteProtocolFault, _setRemoteNoOpenems, getMappingRemoteProtocolFault, getMappingRemoteProtocolFaultChannel, getRemoteNoOpenems, getRemoteNoOpenemsChannel
-
Methods inherited from interface io.openems.edge.edge2edge.ess.Edge2EdgeEss
getRemoteSetActivePowerEqualsChannel, getRemoteSetReactivePowerEqualsChannel, setRemoteActivePowerEquals, setRemoteReactivePowerEquals
-
Methods inherited from interface io.openems.edge.ess.api.ManagedSymmetricEss
_setAllowedChargePower, _setAllowedChargePower, _setAllowedDischargePower, _setAllowedDischargePower, _setApplyPowerFailed, _setDebugSetActivePower, _setDebugSetActivePower, _setDebugSetReactivePower, _setDebugSetReactivePower, addPowerConstraint, addPowerConstraintAndValidate, createPowerConstraint, getAllowedChargePower, getAllowedChargePowerChannel, getAllowedDischargePower, getAllowedDischargePowerChannel, getApplyPowerFailed, getApplyPowerFailedChannel, getDebugSetActivePower, getDebugSetActivePowerChannel, getDebugSetReactivePower, getDebugSetReactivePowerChannel, getSetActivePowerEqualsChannel, getSetActivePowerEqualsWithPidChannel, getSetActivePowerGreaterOrEqualsChannel, getSetActivePowerLessOrEqualsChannel, getSetReactivePowerEqualsChannel, getSetReactivePowerGreaterOrEqualsChannel, getSetReactivePowerLessOrEqualsChannel, getStaticConstraints, isManaged, setActivePowerEquals, setActivePowerEqualsWithPid, setActivePowerGreaterOrEquals, setActivePowerLessOrEquals, setReactivePowerEquals, setReactivePowerGreaterOrEquals, setReactivePowerLessOrEquals
-
Methods inherited from interface io.openems.edge.bridge.modbus.api.ModbusComponent
_setModbusCommunicationFailed, getModbusCommunicationFailed, getModbusCommunicationFailedChannel
-
Methods inherited from interface io.openems.edge.common.component.OpenemsComponent
_channel, _getChannelAs, alias, channel, channel, channels, getComponentContext, getState, getStateChannel, hasFaults, id, isEnabled, serviceFactoryPid, servicePid
-
Methods inherited from interface io.openems.edge.ess.api.SymmetricEss
_setActiveChargeEnergy, _setActiveChargeEnergy, _setActiveDischargeEnergy, _setActiveDischargeEnergy, _setActivePower, _setActivePower, _setCapacity, _setCapacity, _setGridMode, _setMaxApparentPower, _setMaxApparentPower, _setMaxCellTemperature, _setMaxCellTemperature, _setMaxCellVoltage, _setMaxCellVoltage, _setMinCellTemperature, _setMinCellTemperature, _setMinCellVoltage, _setMinCellVoltage, _setReactivePower, _setReactivePower, _setSoc, _setSoc, getActiveChargeEnergy, getActiveChargeEnergyChannel, getActiveDischargeEnergy, getActiveDischargeEnergyChannel, getActivePower, getActivePowerChannel, getCapacity, getCapacityChannel, getGridMode, getGridModeChannel, getMaxApparentPower, getMaxApparentPowerChannel, getMaxCellTemperature, getMaxCellTemperatureChannel, getMaxCellVoltage, getMaxCellVoltageChannel, getMinCellTemperature, getMinCellTemperatureChannel, getMinCellVoltage, getMinCellVoltageChannel, getReactivePower, getReactivePowerChannel, getSoc, getSocChannel
-
-
-
-
Field Detail
-
cm
protected org.osgi.service.cm.ConfigurationAdmin cm
-
power
protected Power power
-
-
Constructor Detail
-
Edge2EdgeEssImpl
public Edge2EdgeEssImpl() throws OpenemsException
- Throws:
OpenemsException
-
-
Method Detail
-
setModbus
protected void setModbus(BridgeModbus modbus)
Description copied from class:AbstractOpenemsModbusComponent
Set the Modbus bridge. Should be called by @Reference- Overrides:
setModbus
in classAbstractOpenemsModbusComponent
- Parameters:
modbus
- the BridgeModbus Reference
-
deactivate
protected void deactivate()
Description copied from class:AbstractOpenemsComponent
Handles @Deactivate of implementations. Prints log output.- Overrides:
deactivate
in classAbstractEdge2Edge
-
getOnUpdateCallback
protected java.util.function.Consumer<java.lang.Object> getOnUpdateCallback(ModbusSlaveNatureTable modbusSlaveNatureTable, ModbusRecord record)
Description copied from class:AbstractEdge2Edge
Provide a Consumer for Registers that cannot be automatically mapped to Channels.- Specified by:
getOnUpdateCallback
in classAbstractEdge2Edge
- Parameters:
modbusSlaveNatureTable
- theModbusSlaveNatureTable
of the Registerrecord
- theModbusRecord
- Returns:
- a Consumer that receives the value from Modbus
-
getWriteChannelId
protected ChannelId getWriteChannelId(ModbusSlaveNatureTable modbusSlaveNatureTable, ModbusRecord record)
Description copied from class:AbstractEdge2Edge
Provide a local ChannelId that gets mapped to remote READ_WRITE or WRITE_ONLY registers.- Specified by:
getWriteChannelId
in classAbstractEdge2Edge
- Parameters:
modbusSlaveNatureTable
- theModbusSlaveNatureTable
of the Registerrecord
- theModbusRecord
- Returns:
- a local ChannelId
-
debugLog
public java.lang.String debugLog()
Description copied from interface:OpenemsComponent
Gets some output that is suitable for a continuous Debug log. Returns 'null' by default which causes no output.- Specified by:
debugLog
in interfaceOpenemsComponent
- Returns:
- the debug log output
-
getPower
public Power getPower()
Description copied from interface:ManagedSymmetricEss
Gets an instance of the 'Power' class, which allows to set limitations to Active and Reactive Power.- Specified by:
getPower
in interfaceManagedSymmetricEss
- Returns:
- the Power instance
-
applyPower
public void applyPower(int activePower, int reactivePower) throws OpenemsError.OpenemsNamedException
Description copied from interface:ManagedSymmetricEss
Apply the calculated Power.Careful: do not adjust activePower and reactivePower in this method, e.g. setting it to zero on error. The purpose of this method is solely to apply the calculated power to the ESS. If you need to constrain the allowed power, add Constraints using the
ManagedSymmetricEss.getStaticConstraints()
method.- Specified by:
applyPower
in interfaceManagedSymmetricEss
- Parameters:
activePower
- the active power in [W]reactivePower
- the reactive power in [var]- Throws:
OpenemsError.OpenemsNamedException
- on error; causes activation of APPLY_POWER_FAILED StateChannel
-
getPowerPrecision
public int getPowerPrecision()
Description copied from interface:ManagedSymmetricEss
Gets the smallest positive power that can be set (in W, VA or var). Example:- FENECON Commercial 40 allows setting of power in 100 W steps. It should return 100.
- KACO blueplanet gridsave 50 allows setting of power in 0.1 % of 52 VA. It should return 52 (= 52000 * 0.001)
- Specified by:
getPowerPrecision
in interfaceManagedSymmetricEss
- Returns:
- the power precision
-
-