Hycon#
Hycon is a python-based tool for real-time hybrid power plant control. Hycon will primarily be run in simulation, although we intend that it could be used for physical plants in future.
The graphic below demonstrates the organization of the Hycon repository and
the controller objects that it contains.

ControllerBase is the core underlying class, which newly implemented
controllers should inherit from. Inheritance is shown using arrows in the
diagram above. The key method of ControllerBase is the step() method,
which progresses the controller by receiving plant measurements; computing
controls (which must be implemented in the children of
ControllerBase); and sending the controls back to the plant. Children of
ControllerBase should inherit step() rather than overloading it.
Additionally, on instantiation, ControllerBase expects to receive an
instantiated interface object (discussed next). For information can be
found in controllers.md.
The interface object handles communications with the plant simulator,
allowing Hycon to be used with various simulation platforms (e.g. Hercules,
FAST.Farm) while keeping the controllers agnostic to the simulation platform
and the boilerplate code needed to handle different platforms. interface
objects should inherit from InterfaceBase. More information can be found in
interfaces.md.
We anticipate that, in future, multiple levels of attribution may be useful when defining top-level controllers that operate hybrid power plants with various different assets (i.e. hierarchical control). This situation is shown below, and we intend to support such usage of Hycon.
