AmpiFarm in OpenEMS
To have a useful implementation of the AmpiFarm in OpenEMS we make a distinction between two purposes:
- Manage the decisions and following actions from Controllers scheduled in OpenEMS
- Operate the physical devices to act on the decisions and actions from said controllers
Besides this notion, it is also desirable to maintain a consistent interface between the different AmpiFarm devices.
The AmpiFarm's code architecture reflects the desire to keep these two purposes separate and share the same interface between the devices.
A class diagram for the different components involved in managing the AmpiFarm in the EMS and on the physical level is presented.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | classDiagram
class AmpiFarm
<<Abstract>> AmpiFarm
class AmpiFarmAlphaComponent
class AmpiFarmBetaComponent
class AmpiFarmOneComponent
class Controller
class AmpiFarmManagedSymmetricESS
<<Interface>> AmpiFarmManagedSymmetricESS
class IAmpiFarmAlphabetComponent
<<Interface>> IAmpiFarmAlphabetComponent
class IAmpiFarmDecimalComponent
<<Interface>> IAmpiFarmDecimalComponent
class IAmpiFarm
<<Interface>> IAmpiFarm
class AbstractAmpiFarmComponent
<<Abstract>> AbstractAmpiFarmComponent
Controller --|> AmpiFarmManagedSymmetricESS : uses
AmpiFarmManagedSymmetricESS <|-- AbstractAmpiFarmComponent : implements
AmpiFarmAlphaComponent --|> IAmpiFarmAlphabetComponent : implements
AmpiFarmBetaComponent --|> IAmpiFarmAlphabetComponent : implements
AmpiFarmOneComponent --|> IAmpiFarmDecimalComponent : implements
AbstractAmpiFarmComponent <|-- AmpiFarmAlphaComponent : extends
AbstractAmpiFarmComponent <|-- AmpiFarmBetaComponent : extends
AbstractAmpiFarmComponent <|-- AmpiFarmOneComponent : extends
AmpiFarmOneComponent --|> AmpiFarmDecimal : has
AmpiFarmAlphaComponent --|> AmpiFarmAlphabet : has
AmpiFarmBetaComponent --|> AmpiFarmAlphabet : has
AmpiFarmAlphabet --|> AmpiFarm : extends
AmpiFarmDecimal --|> AmpiFarm : extends
AmpiFarm --|> IAmpiFarm : implements
|
The top side of this diagram represents the energy management function, through the AmpiFarmManagedSymetricESS interface. What actions do we need the devices to take for us.
The bottom represents the device management side of things, or how the individual components actually should be told to take the actions we require them to from an energy management perspective.