Controllers#
The whoc.controllers
module contains a library of wind and hybrid power plant
controllers. Each controller must inherit from ControllerBase
(see
controller_base.py) and implement a
mandatory compute_controls()
method, which contains the relevant control
algorithm and writes final control signals to the controls_dict
attribute
as key-value pairs. compute_controls()
is, in turn, called in the step()
method of ControllerBase
.
Available controllers#
LookupBasedWakeSteeringController#
Yaw controller that implements wake steering based on a lookup table.
Requires a df_opt
object produced by a FLORIS yaw optimization routine. See example
lookup-based_wake_steering_florisstandin for example usage.
Currently, yaw angles are set based purely on the (local turbine) wind direction. The lookup table is sampled at a hardcoded wind speed of 8 m/s. This will be updated in future when an interface is developed for a simulator that provides wind turbine wind speeds also.
WakeSteeringROSCOStandin#
Not yet developed. May be combined into a universal simple LookupBasedWakeSteeringController.
WindBatteryController#
Placeholder for a controller that manages both a wind power plant and colocated battery.
WindFarmPowerDistributingController#
Wind farm-level power controller that simply distributes a farm-level power reference between wind turbines evenly, without checking whether turbines are able to produce power at the requested level. Not expected to perform well when wind turbines are waked or cannot produce the desired power for other reasons. However, is a useful comparison case for the WindFarmPowerTrackingController (described below).
WindFarmPowerTrackingController#
Closed-loop wind farm-level power controller that distributes a farm-level power reference among the wind turbines in a farm and adjusts the requests made from each turbine depending on whether the power reference has been met. Developed under the A2e2g project, with further details provided in Sinner et al..
Integral action, as well as gain scheduling based on turbine saturation, has been disabled as
simple proportional control appears sufficient currently. However, these may be enabled at a
later date if needed. The proportional_gain
for the controller may be provided on instantiation,
and defaults to proportional_gain = 1
.