A Reference Open-Source Controller for Fixed and Floating Offshore Wind Turbines

. This paper describes the development of a new reference controller framework for ﬁxed and ﬂoating offshore wind turbines that greatly facilitates controller tuning and represents standard industry practices. The reference wind turbine controllers that are most commonly cited in the literature have been developed to work with speciﬁc reference wind turbines. Although these controllers have provided standard control functionalities, they are often not easy to modify for use on other turbines, so it has been challenging for researchers to run representative, fully dynamic simulations of other wind turbine 5 designs. The Reference Open-Source Controller (ROSCO) has been developed to provide a modular reference wind turbine controller that represents industry standards and performs comparably to or better than existing reference controllers. The formulation of the ROSCO controller logic and tuning processes is presented in this paper. Control capabilities such as tip-speed ratio tracking generator torque control, minimum pitch saturation, wind speed estimation, and a smoothing algorithm at near-rated operation are included to provide a controller that is comparable to industry standards. A ﬂoating offshore wind turbine 10 feedback module is also included to facilitate growing research in the ﬂoating offshore arena. All (cid:58)(cid:58) of the standard controller implementations and control modules are automatically tuned such that a non-controls engineer or automated optimization routine can easily improve the controller performance. This article provides the framework and theoretical basis for the ROSCO controller modules and generic tuning processes. Simulations of the National Renewable Energy Laboratory (NREL) 5-MW reference wind turbine and International Energy Agency 15-MW reference turbine on the University of Maine semisubmersible 15 platform are analyzed to demonstrate the controller’s performance in both ﬁxed and ﬂoating conﬁgurations, respectively. The simulation results demonstrate ROSCO’s peak shaving routine to reduce maximum rotor thrusts by nearly 14


Introduction
As wind turbine research has evolved during the past few decades, the need for reference wind turbine controllers has also changed.Traditionally, reference wind turbine controllers have been used for two primary purposes.First, the control systems research community has extensively used reference controllers as a baseline to compare and evaluate more modern and advanced control algorithms (Lackner and van Kuik, 2010;Schlipf et al., 2013).Second, researchers interested in aero-structural dynamics have used reference controllers to enable dynamic simulations in studies concerning other aspects of the wind turbine (Wayman et al., 2006;Sathe et al., 2013).In both applications, a reference controller provides a standardized method by which wind energy researchers can compare and contrast their various turbine designs, aerodynamic models, structural analysis tools, and more.
There has been a lack of reference controllers that can be easily adapted to a wide variety of different wind turbines.The National Renewable Energy Laboratory (NREL) and the Technical University of Denmark (DTU) have published perhaps the most ubiquitous of these reference turbines and respective controllers with the NREL 5-MW (Jonkman et al., 2009) and DTU 10-MW (Bak et al., 2013;Hansen and Henriksen, 2013) turbine models.Generally, for new turbine models, the tuning processes for these turbines' respective controllers necessitate a control systems engineer to generate linear models of the turbine at multiple operating points using aeroelastic simulation solvers to schedule controller gains.At the very least, someone familiar with the NREL 5-MW reference controller tuning process must be able to adequately modify the controller accordingly, as shown in Griffith and Ashwill (2011), where the reference controller is scaled for a rotor with a novel blade design.
Additionally, trends in the wind energy industry are heavily favoring larger and more flexible rotor designs (Veers et al., 2019).As wind turbines have grown and modeling tools have improved and increased in fidelity, design constraints-such as blade tip deflection-have become increasingly important.Without a controller that performs consistently across turbine designs and is representative of the controllers in the field, dynamic simulations cannot be entirely trusted to provide reliable results that can be used for turbine design.The need to run representative dynamic simulations of large flexible turbines necessitates a controller and controller tuning process that can be implemented consistently by the non-controls engineer in a streamlined fashion.
Finally, completely automated optimization tools for medium-to high-fidelity wind turbine designs are becoming well established in research and industry.These tools-such as the Wind-Plant Integrated System Design & Engineering Model (WISDEM®) (Dykes et al., 2014), HawtOpt (Zahle et al., 2015), and Cp-max (Bottasso et al., 2012)-generally include some element of dynamic wind turbine simulation within the optimization loop.Naturally, changes in the wind turbine design often necessitate an update to the controller.An automated controller tuning process and generalized implementation method provide the opportunity for automated control codesign, where the system and controller are designed concurrently (Garcia-Sanz, 2019;Zalkind et al., 2020).
In addition to the need for a generic controller for land-based and fixed-bottom wind turbines, to the authors' knowledge, the availability of a modern, open-source controller with specific logic for floating offshore wind turbines (FOWTs) is not available.Simply reducing the controller bandwidth, as presented by Larsen and Hanson (2007), has been shown to have offshore :::: wind :::::::: turbines.Finally, these generalized tuning procedures and controller implementations provide a framework by which systems design optimization tools such as WISDEM can include a controller for time-domain simulations in the optimization loop.
The structure of this manuscript is as follows.In Section 2, we give a high-level overview of the ROSCO tool chain and implementation methods.Here, we also discuss the structure of the ROSCO controller and some requisite theoretical background for the proceeding sections.In Section 3 and Section 4, we discuss the primary generator torque and collective blade pitch controllers, respectively.In Section 5, we provide details on the primary individual "modules" of the controller.For each module detailed in this paper, we provide a review of its purpose, how the generic tuning processes are applied, and in some cases a brief time-domain simulation result to showcase its functionality.Then, in Section 6, we provide power and loads analysis results for the ROSCO controller on turbines in both land-based and floating configurations.Finally, Section 7 discusses some conclusions and future directions of ROSCO.
2 Foundations of the Reference Open-Source Controller ROSCO was developed to provide a modular control systems architecture with a Fortran-based software structure similar to that of OpenFAST (NREL, 2019), a complete aero-servo-hydro-elastic wind turbine simulation tool developed at NREL.The initial work and foundation for the ROSCO controller was done by researchers at the Delft University of Technology and presented in (Mulders and van Wingerden, 2018).The standard controller functionalities are designed to perform comparably with existing reference controllers in the literature, such as the NREL 5-MW and DTU 10-MW controllers.In addition to the standard control functionalities, a number of controller features are included that are considered to be similar to those on many industry turbines.The primary functions of the controller are still to maximize power in below-rated operation and to regulate rotor speed in above-rated operation.The controller is available for download and implementation on GitHub (NREL, 2021a): The controller was developed to communicate with wind turbine simulation software (e.g., OpenFAST) using the Bladedstyle control interface (DNV-GL, 2018).The controller source code is compiled once and reads a controller input file.The controller input file can be renamed and changed for any horizontal-axis wind turbine, and it is generally referred to as the "DISCON.IN" file.
To facilitate usage of ROSCO, a related "ROSCO toolbox" was developed.The ROSCO toolbox is a Python-based tool set developed for tuning, implementing, and post-processing OpenFAST simulations using ROSCO.The ROSCO toolbox is :::: Both ::::::: ROSCO :::: and ::: the ::::::: ROSCO ::::::: toolbox ::: are : available for download and implementation on GitHub as well (NREL, 2021b) :::::::::::: (NREL, 2021a): https://github.com/NREL/ROSCO.The primary purpose of the ROSCO toolbox is to automatically execute the generalized tuning procedures for a given OpenFAST turbine model and to generate the necessary input file for the controller.A separate .yaml(Ben-Kiki et al., 2009) formatted parameter file is used for these generic tuning procedures.This file includes relevant turbine and controller tuning parameters that are generally available a priori :::::: a-priori.Only four parameters are necessary for tuning a complete controller, though additional tuning inputs are available for the user to introduce further modifications and fine-tune the controller perfor- overview of the primary controller modules that are generically tuned by the ROSCO toolbox or were added specifically for ROSCO.

115
There are generally two methods of actuation in the standard reference wind turbine controllers, including ROSCO.A variablespeed generator torque controller is used to control the generator power, and a collective blade pitch controller is used to regulate rotor speed.These methods of actuation are commonly separated into four regions of operation, with transition logic between them.The steady-state operating points, as shown in Figure 2 for the NREL 5-MW and International Energy Agency (IEA) 15-MW wind turbines, are a convenient way to visualize the regions of operation.for the IEA 15-MW turbine and that the y-axis is shared for both plots.

120
In Figure 2, regions 1 and 4 are considered to be below cut-in wind speed and above cut-out wind speed, respectively, so they are not of particular interest.Here, we provide a brief overview of each region and compare how they are implemented in the NREL 5-MW reference wind turbine controller versus ROSCO.In the following sections, we provide more in-depth descriptions of the logic and tuning processes.
Region 1 is when the wind speed is below the turbine's cut-in wind speed.This region is generally uninteresting for standard control purposes, and it is not shown in Figure 2 for either turbine.
Region 1.5 is when the wind speed is above the turbine's cut-in wind speed but the turbine cannot operate at its optimal tip-speed ratio (TSR).In the traditional NREL 5-MW reference controller, a linear transition from no generator torque to the minimum optimal generator torque is used.In ROSCO, a proportional-integral (PI) controller modifies the generator torque to maintain a defined minimum rotor speed, and the blades are pitched to their minimum allowable blade pitch angle.In turbines designed to operate at a higher TSR in low wind speeds because of a minimum rotor speed constraint, minimum blade pitch angles can be scheduled by a wind speed estimate to improve power output (see Section 5.3.2).ROSCO's different Region 1.5 behaviors are shown in Figure 2, where Region 1.5 does not span a specific range of wind speeds for the NREL 5-MW wind turbine because of the use of a PI controller and increased blade pitch angles are seen in low wind speeds for the IEA 15-MW turbine.
Region 2 is when the wind speed is large enough that the turbine can operate at its optimal TSR but is still below rated.
Here, the torque controller aims to maximize power as much as possible, and the blade pitch angle is fixed.In ROSCO, the generator torque controller either follows a traditional squared law (Bossanyi ( 2000)) or employs a TSR tracking PI controller (see Section 3.1.2) to track a rotor speed reference that is based on a wind speed estimate (see Section 5.1) and optimal TSR.
The blades are pitched to fine pitch, where they are generally designed to be the most aerodynamically efficient.
Region 3 is when the wind speed is above rated.The blade pitch controller regulates the rotor speed, and the generator torque is either constant or maintains constant power output.In ROSCO, a gain-scheduled PI collective pitch controller is used to regulate the rotor speed.For floating systems, the NREL 5-MW reference controller reduces the pitch controller bandwidth to prevent platform instability.In ROSCO, an additional feedback term is added to this controller for FOWTs (see Section 5.5) to help stabilize the platform using collective pitch, without the need to detune the rotor speed controller.The generator torque is either kept constant at its rated torque value, or the controller adjusts the torque to maintain constant power output.
Region 4 is when the wind speed is greater than the turbine's cut-out wind speed.Here, the blades are pitched to reduce rotor thrust to zero.Other than triggering a shutdown maneuver, this region is also generally uninteresting for standard control purposes and is not shown in Figure 2.
In the case of the generator torque and blade pitch controllers, a generator speed signal is low-pass filtered and fed back to the respective controllers.The low-pass filter can be chosen as a first-or second-order filter, and the ROSCO toolbox tuning processes generically tunes the cutoff frequency for the filter to be one-quarter of the blade's first edgewise natural frequency, as suggested in Jonkman et al. (2009).This helps prevent the controller from actuating at a frequency that excites the first edgewise mode of the blade.

Implementation Structure
The high-level block diagram of ROSCO shown in Figure 3 provides an overview of the control modules that are implemented in ROSCO.The combination of these modules ensures smooth actuation across the range of operation regions, as described in Section 2.1.Table 1 provides a brief description of each controller module.is the collective blade pitch angle, ωg is the generator speed, and τg is the generator torque.For outputs from the controller modules, βfloat is the floating controller's contribution to the blade pitch angle (see Section 5.5), βmin is the minimum blade pitch angle (see Section 5.3), v is the estimated wind speed (see Section 5.1), and ∆ω is a controller reference set point shifting term from the setpoint smoother (see Section 5.2).

The Power Coefficient Surface
Many tuning procedures and module implementations in this work are based on the so-called C p surface.The power coefficient, C p , is the ratio of the power extracted from the wind to the power available in the wind (Burton et al., 2011).For any given wind speed, the C p surface can be calculated to represent the aerodynamic efficiency of the turbine as a function of collective blade pitch angle and TSR.The TSR is the ratio of the speed of the tip of the wind turbine blade to the rotor-averaged wind speed: Table 1.The primary ROSCO modules and each of their available functionalities.The flag column shows the flag that must be set in the controller input file to activate each functionality.The functionalities column gives the possible flag values and a high-level description of available functions for each module.Section 5 gives more details of these functionalities.Modules with a section number reference in this table are primary modules that are discussed in more detail in this article.Functionalities with an asterisk denote functionalities that are used in the traditional NREL 5-MW wind turbine controller.

Module Flag Functionalities
Blade pitch controller (Section 4) PC_ControlMode (0) Fixed pitch (for debug) (1)* Gain-scheduled blade pitch control to regulate rotor speed Generator torque controller (Section 3) VS_ControlMode (0) Square law below rated, constant torque above rated (1)* Square law below rated, constant power above rated (2) Tip-speed ratio tracking below rated, constant torque above rated (3) Tip-speed ratio tracking below rated, constant power above rated where ω r is the rotor speed, R is the rotor radius, and v is the wind speed.Similar parameter surfaces can be generated for the thrust and torque coefficients of the turbine, C t and C q , respectively.An example C p surface is shown in Figure 4 for the IEA 15-MW wind turbine (Gaertner et al., 2020).The overlaid lines on the C p surface shown in Figure 4 represent the expected steady-state operation point of the wind turbine.The dash-dotted black line shows the steady-state operating points at low wind speeds, where the TSR is high because of a constraint on the wind turbine's minimum rotor speed.By imposing a blade pitch angle that is greater than fine pitch at low wind speeds, the turbine can operate at a higher point on the C p surface.In below-rated operation, the turbine is expected to operate with a fixed blade pitch angle and a constant TSR (see Figure 2); this operation point is denoted by the red dot in Figure 4.In above-rated wind speeds, the blades pitch to regulate the rotor speed, and there is a reduction in TSR (see Figure 2), as denoted by the dashed blue line in Figure 4.
In the standard ROSCO toolbox tuning procedure, the steady-state blade element momentum solver cc-blade (Ning, 2013) is used to find the C p , C t , and C q surfaces quickly and efficiently.Similarly, parameter surfaces can be generated and written to a text file using any other blade element momentum or coupled aeroelastic solver.Using more complex solvers will, naturally, provide a more realistic C p surface, though at a significant increase in computation time.Anecdotally, the authors have found the C p -surfaces ::::::: surfaces generated using cc-blade to be sufficiently accurate for controller synthesis on numerous wind turbines thus far.Future work includes a more substantive analysis of the controller performance sensitivity to C p -surfaces ::::::: surfaces generated using different aerodynamic solvers.
Within the ROSCO toolbox tuning processes, the C p surface is primarily used to facilitate the calculation of the plant parameters, as discussed in Section 2.4.These parameters are used for tuning the blade pitch and generator torque controller gains and for accurate implementation of the wind speed estimator.The C p surface is also used to determine the minimum blade pitch schedule in low wind speeds, if needed, and to determine the optimal below-rated TSR to maximize power output.
Finally, the C p surface is used within ROSCO itself so that the wind speed estimator can accurately estimate the operational state of the wind turbine.The C t surface is used to determine the minimum blade pitch schedule for the so-called "peak shaving" routine, as described in Section 5.3.1.
Notably, this :::: This : linearized plant model is used to separately tune above-and below-rated controllers.In above-rated operation, the generator torque is assumed to be constant, so dτ g = 0. Similarly, in below-rated operation, the blade pitch angle is assumed to be constant, so dβ = 0. Finally, :::: Note :::: that B v , the disturbance (dv ::: ∆v) input matrix to the system, is set to 0 for the controller tuning.
If PI controllers are employed for below-and above-rated operation, we are left with the need to define four controller tuning inputs.The choice of ω des and ζ des for the below-and above-rated operating regions are the only parameter decisions that need to be made by the control designer or optimization routine, though additional tuning of the individual modules discussed in Section 5 might further improve controller performance.

Filters
Four filters are commonly used in the ROSCO controller (see Figure 3): first-and second-order low-pass filters, a first-order high-pass filter, and a notch filter.Appendix A shows the continuous-time formulations of these filters.The filters are converted to discrete time for implementation using the bilinear transform.

The Generator Torque Controller
Four total variable-speed generator torque control methods are available in ROSCO (see Table 1).Two methods of optimal power generation are available for below-rated operation, and two methods of maintaining power output near the turbine's rated value are available in above-rated operation.

Below-Rated Torque Control
In below-rated operation, the generator torque controller's goal is to maximize power production.If the blades are pitched to fine pitch, maximum aerodynamic efficiency can be achieved and power can be maximized if the torque controller maintains the TSR corresponding to the peak of the C p surface.In ROSCO, this is done in one of two ways.

Kω 2 Law
A study of equation ( 2) in steady state, such that ωg = 0, provides the foundation for the so-called "Kω 2 g law" for optimal torque control (Bossanyi, 2000;Johnson et al., 2006).By restructuring equation ( 2), and assuming that the wind turbine is operating at its optimal TSR, λ opt , and corresponding power coefficient, C p,max , one can realize a quadratic relationship between the generator speed and demanded generator torque.This relationship is commonly defined as: , where K = πρR 5 C p,max 2λ 3 opt N 3 g η gen η gb πρR 5 C p,max 2λ 3 opt N 3 g η gb :::::::::: .
In equation , η denotes efficiencies of the generator (gen) and gearbox (gb).

Tip-Speed Ratio Tracking Torque Control
Two primary motivations are behind the development of the TSR tracking controller in ROSCO.First, although the Kω 2 g law has historically worked reliably in idealized simulation environments, the calculation of K can be subject to modeling and assumption errors.For example, the assumption that R is a constant value across wind speeds does not hold as strongly in modern, highly flexible rotors as it has in the past.Fortunately, modern rotors are still commonly designed to maximize aerodynamic efficiency at a specific TSR.Second, industry collaborators have indicated that a TSR tracking controller is more representative of the controllers often used in the field.
If the blades are pitched to their most aerodynamically efficient angle and the wind turbine rotor is operating at its optimal TSR, the turbine power is theoretically maximized.This suggests that if the wind speed can be measured or estimated accurately, a generator torque controller can be designed to maintain the rotor's λ opt and maximize power capture.In ROSCO, a standard PI controller is used to track a generator speed reference.For the generator torque controller: where v is the estimated rotor-effective wind speed provided by the wind speed estimator described in Section 5.1.This reference signal is also constrained by: where ω g,min is the minimum allowable generator speed .::: and ::: the :::::::: subscript :::::: "rated" ::::::: denotes ::: the ::::: value :: as ::::::::: calculated :: at ::::: rated :::::::: operation A straightforward and automated tuning process has been developed for the PI gains for the TSR tracking torque controller.

Above-Rated Torque Control
There are two standard methods of actuating the generator torque in above-rated operation.Defining P as the generator power output, in above-rated operation the generator torque is defined to be: for constant torque or constant power output, respectively, where the subscript "rated" denotes the value as calculated at rated operation.
If the Kω 2 g law is used for below-rated torque control, the torque controller switches to above-rated operation when the blades are pitched beyond an offset, denoted by PC_Switch in the DISCON.IN file.When the turbine is in above-rated operation, the generator torque is then defined directly by the relationships in (21).If the TSR tracking control is used for below-rated operation, the above-rated generator torque output is simply constrained such that τ g (t) ≤ τ g,ar (t).In above-rated operation, the set point smoother (see Section 5.2) shifts the reference generator speed such that the generator torque is saturated at its maximum allowable value, resulting in either constant torque or constant power output.
If constant torque control is used, power output changes are directly correlated to the changes in the generator speed in above-rated operation.If constant power control is used, there are still some changes in power output because ω g (t) in ( 21) is low-pass filtered, but the power is much more consistent :::: more ::::::::: consistent :::: than :: in ::: the ::::::: constant :::::: torque :::: case.As discussed by Jonkman (2010), using a constant generator torque controller in above-rated operating conditions can help improve FOWT platform stability.

The Blade Pitch Controller
In below-rated operation, the generator speed is less than the rated generator speed, so the blade pitch angle, β, saturates at β = β min .This is generally the fine-pitch angle, unless a pitch saturation schedule is implemented, as described in Section 5.3.
In above-rated operation, a PI controller is used to determine the collective blade pitch angle to keep the turbine at a rotor speed reference.The above-rated rotor speed reference ω g,ref for the blade pitch controller is generally defined as It is well established, and common in reference controllers, to employ a gain schedule to improve blade pitch controller performance (Jonkman et al., 2009;Hansen and Henriksen, 2013;Mulders and van Wingerden, 2018).In the ROSCO toolbox , we use the C p surface to prescribe this gain schedule, rather than using aero-servo-elastic linearization tools.
Notably, the C p surface gradients used to calculate both A(v op ) and B(v op ) approach zero near the "peak" of the C p surface.
Because B β (v op ) is in the denominator of ( 15) and ( 16), the gains would theoretically approach infinity near rated operation.
To avoid unrealistically high gains, A(v op ) and B(v op ) are each approximated by a linear fit for the blade pitch controller gain calculation in the ROSCO toolbox.With this foundation, the blade pitch controller's gain schedule can be generated using the ROSCO toolbox for any user-defined ω des and ζ des .

Additional Control Modules
ROSCO is modularized such that various control methods can be switched on and off without the need to recompile any code.
Here, we present the theoretical foundations for the module implementations and their respective generic tuning processes.

Wind Speed Estimator
In this section, we discuss the wind speed estimator used in ROSCO.The wind speed estimate is used in the TSR tracking generator torque controller (see Section 3.1.2)and pitch saturation (see Section 5.3) routines.The employed wind speed estimator is inspired by Knudsen et al. (2011) and is based on a continuous-discrete extended Kalman filter.The theoretical background of the continuous and discrete-time extended Kalman filters used in this work is further detailed in Grewal (2011).
The Kalman filter uses informed definitions of the covariance matrices based on the expected wind fields to provide a wind speed estimate, v.The derivatives are evaluated in continuous time, whereas the measurement updates are evaluated in discrete time.A forward Euler integration method is used to propagate the state and covariance estimates forward in time.
The nonlinear continuous-time state-space model used for the continuous-discrete Kalman filter implemented in the controller is defined as where the system noise is ξ s = [n 1 n 2 n 3 ] T , and n i is considered to be zero-mean white noise.The measurement noise, ξ m , is assumed to be white noise with a constant covariance.The system state, inputs, and outputs are defined as: where v t is the turbulent component of the wind speed, and v m is the mean wind speed.The nonlinear state equations are defined as: and the output is: To complete the state equation definitions, we establish: In ( 36), L is a turbulence length-scale parameter generically defined as L = 3D, where D is the rotor diameter.
In the Kalman filter, the covariance matrices are based on the wind model as defined by Knudsen et al. (2011).In the ROSCO implementation of this wind speed estimator, the process noise (Q) and measurement noise (R m ) covariances are: where the turbulence intensity is defined as t i = 0.18, the upper limit of the turbulence intensity for standard inflow wind conditions as defined by DNV-GL (2018).A continuous-discrete Kalman filter is then implemented through the following formulation: -Prediction update:  -Measurement update: where the state transition and output Jacobians are defined as: Wind speed estimator results from a 10-minute simulation of the NREL 5-MW turbine are shown in Figure 6.In the presented simulation, the root-mean-square error between the rotor-averaged wind speed and the wind speed estimate is 0.48 m/s.

Set Point Smoothing
The generator torque and blade pitch controllers will conflict with each other in near-rated operation if the generator torque and blade pitch reference speeds are defined only by ( 19) and ( 22).To avoid this, we employ a set point smoother regime that is akin to a Region 2.5 controller (Schlipf;Zalkind and Pao, 2019).Practically, the so-called "set point smoother" shifts the generator speed reference signal of the saturated controller while the unsaturated controller is active, so the controllers do not have conflicting behaviors.This encourages one controller to stay active while the other is not.
We first define an offset to the rotor speed set point, ∆ω, as: where k vs and k pc are unitless gain factors that are greater than 0, and β max is the blade pitch angle at cut-out wind speed.
Equation ( 48) is defined such that ∆β = 0 in below-rated operation, and ∆τ = 0 in above-rated operation.A piecewise logic is then implemented to shift the blade pitch or generator torque reference generator speeds: Figure 7 shows a block diagram displaying the set point smoother logic.The shifting term in the set point smoother defined in (48) includes normalization terms, so no specific tuning is necessary.
The ROSCO toolbox tuning processes define k vs = 1 and k pc = 1e−3.These values were chosen because of their utility across turbine models, although specific tuning of these can improve the controller performance near rated operation.
Figure 8 shows results from a 10-minute time-domain simulations of the NREL 5-MW wind turbine near rated operation.
The set point smoother employed in ROSCO provides significantly smoother transitions from above-to below-rated operation.
When the blade pitch is greater than zero (the first 12 seconds in Figure 8), the torque controller set point decreases, which biases the generator torque toward its maximum value.When the generator torque is less than its rated value (the last 12 seconds in Figure 8), the set point for the pitch controller increases, and it biases the pitch to its minimum value.The smoother shifts the saturated controller's set point linearly depending on how "far" it is from rated operation.By separating the control regions this way, resonances such as those seen in the time history of the NREL 5-MW torque controller's signal between 15 and 25 seconds can be reduced.

Minimum Pitch Saturation
A method for saturating the minimum blade pitch angle for a given wind speed estimate is also included in ROSCO.This has primarily been used for two purposes: to limit the rotor thrust through a peak shaving algorithm and to implement a minimum pitch angle at low wind speeds for power maximization in the presence of a minimum rotor speed constraint.The ROSCO controller simply defines a minimum blade pitch angle for a given wind speed as defined :::::::: specified by a lookup table in the DISCON.IN file. Figure 9 provides an example minimum pitch schedule for the IEA 15-MW wind turbine with a minimum rotor speed constraint and peak shaving, along with the corresponding rotor thrust that is expected with and without peak shaving.The following two subsections describe the two primary aspects of the minimum pitch schedule in more detail.

Peak Shaving
Thrust limiting, or peak shaving, is often used to reduce peak tower base loads.Generally, the largest rotor thrusts are seen near rated operation and have a strong affect on tower base loads.It is has also been shown that rotor thrust is correlated to the blade pitch actuation (Bossanyi, 2003;Fischer and Shan, 2013;Petrović and Bottasso, 2017).We impose a minimum blade pitch angle, β min (v), to "shave" the peak of the rotor thrust curve and subsequently reduce tower base loads near rated.The rotor thrust can be defined by: where C t is the rotor thrust coefficient.Given a maximum allowable rotor thrust, T r,max = a max(T r (v)), where a ≤ 1, the maximum allowable thrust coefficient is defined as:

Power Maximization in Low Wind
In certain wind turbine configurations, such as the IEA 15-MW wind turbine (Gaertner et al., 2020), minimum or maximum blade tip-speed limits might be imposed for reasons such as tower resonance avoidance or noise avoidance.If a minimum tip-speed constraint exists, the wind turbine cannot operate at λ opt in low wind speeds.A minimum pitch schedule can be implemented such that the power can be maximized in low wind speeds while the generator torque controller works to satisfy the minimum rotor speed constraints.The black dash-dotted line in Figure 4 provides insight into how the power output can be improved through a minimum pitch angle at low wind speeds by moving the turbine's expected operating point to the "top" of the C p surface for high TSRs.
Figure 11 shows an example of how the power can be increased.A 10-minute simulation was run in OpenFAST for an inflow wind with normal turbulence and a 5-m/s average wind speed.With the pitch saturation module turned on, the blade pitch angle is changed based on the wind speed estimate and the pitch saturation lookup table, resulting in a slightly increased power output.is set to the minimum rotor speed.This encourages the torque controller to help slow down the rotor initially.Once the blades are pitched such that very little lift is generated and the rotor is nearly stopped, the torque controller will saturate at zero in an unsuccessful attempt to speed up the rotor to the minimum rotor speed.

Shutdown
It is shown in Bottasso et al. (2014) that there are shutdown methods that could reduce possible design-driving loads during shutdown.Future work includes the investigation and inclusion of these methods in the ROSCO controller.Additionally, a number of events can trigger wind turbine shutdowns, such as generator overspeeds and yaw misalignment.Future work also includes the addition of improved shutdown event-detection and control methods for such cases.

Floating Offshore Wind Turbine Feedback
An additional control feedback term is included to account for FOWTs in a method referred to as "parallel compensation" (Van Der Veen et al., 2012).The tower-top acceleration is filtered, integrated, and multiplied times a proportional gain feedback, k βfloat .This modifies the blade pitch control signal to become: where φ :: x t is the tower-top pitch angle ::::::: position in the fore-aft direction.The block diagram in Figure 3 provides a visualization of how this signal is implemented.
Although some research suggests the use of a platform pitch feedback signal for FOWT control (Fleming et al., 2014(Fleming et al., , 2016)), the tower :::::: nacelle : fore-aft signal is used in ROSCO so that the overall controller implementation can maintain the structure of the bladed-style communication interface (DNV-GL, 2018).A first-order high-pass filter combined with a second-order low-pass filter are used to filter the nacelle fore-aft rotational acceleration signal.The ROSCO toolbox generically places highand low-pass filter cutoff frequencies at 0.01 rad/s ::: 0.01 ::::: rad/s and the platform's first fore-aft natural frequency, respectively.
Additionally, a notch filter is used to remove the tower fore-aft frequency component of the feedback signal for the floating controller.A Bode diagram of the final form of this filter is shown in Figure 12 for the IEA 15-MW wind turbine on the University of Maine (UMaine) semisubmersible platform ::::::::::::::: (Allen et al., 2020).After this nacelle fore-aft rotational acceleration signal is filtered and integrated, it is similar to a platform pitching velocity signal that is often used for FOWT control.For consistency with the theme of the ROSCO tool set, a generic tuning process has been developed for this floating-feedback term.We start by defining the simplified second-order equation of tower-top motion as: where J t is the total system inertia in the platform pitching direction, c t is a damping constant, k t is a restoring constant, l t is the tower height, and T r is the rotor thrust as defined by (50).The rotor effective wind speed is modified by tower motion such that: where dv w :::: ∆v w : is the change in freestream wind speed.Similar to the derivation of (4), we can linearize (50) to be: dT ∆T ::: r = Π ωg d∆ : ω g + Π β d∆ : β + Π v dv∆v :: , where Π ωg = ∂Tr ∂ωg , Π ω = ∂Tr ∂β , and Π ω = ∂Tr ∂v .For the controller, we have suggested that a proportional feedback term should be added to the standard blade pitch PI controller, such that the control input should be defined by ( 52).We also define the generator position as θ such that: After substituting ( 52) and ( 54)-( 56) in equations ( 53) and ( 5), we arrive at the equations of motion for the closed-loop tower-top pitching (57) and rotor (58) dynamics: If we then convert equations ( 57) and ( 58 x : = : [∆x t ∆ ẋt ∆θ ∆ θ ::::::::::::::: ] T , : we can define: Note that A(4, 2) is the state transition term from d φ to d θ:::: ∆ ẋt :: to ::: ∆ θ.This suggests that if Γ β k βfloat − Γ v l t = 0 :::::::::::::: then the tower-top pitching velocity will have no direct affect on the rotor acceleration.To attempt to achieve this, we define: Including the additional parallel-compensation term β float reduces the need to detune the standard blade pitch PI controller because of the infamous negative-damping problem (Larsen and Hanson, 2007).If tuned appropriately, the parallel compensation term can help negate the affect of tower-top motion and subsequent changes to the relative wind speed at the rotor.
Additionally, combining the use of this β float feedback term with a peak shaving routine from Section 5.3.1 can reduce the tower-top pitching transients and further stabilize the system.Though the peak shaving does, theoretically, reduce power output near rated operation, the tower-top stabilization benefits generally outweigh the power losses because less fore-aft tower motion can lead to increased power output.
In this section, we use ROSCO v2.2 : .3.0 and present results from both land-based and floating wind turbine simulations.First, the ROSCO controller, as tuned by the ROSCO toolbox, is compared to the NREL 5-MW wind turbine controller using the land-based NREL 5-MW wind turbine.Then, results from the IEA 15-MW atop the UMaine semisubmersible floating wind turbine configuration (Allen et al., 2020) are shown to illustrate the effect of the FOWT β float control feedback loop.The subset of the International Electrotechnical Commission (IEC) design load cases (DLCs) (DNV-GL, 2016) shown in Table 2 were run for both turbines to offer a comparison of controller performance.The land-based NREL 5-MW turbine with the the NREL 5-MW wind turbine controller is compared to ROSCO with the ROSCO toolbox generic tuning values and ROSCO with minimal manual tuning and peak shaving implemented.As previously stated, there are only four necessary tuning parameters when tuning ROSCO using the generic ROSCO toolbox tuning functionalities.For the NREL 5-MW configuration, the choices for ζ des and ω des are shown in Table 3.The controller tuning parameters used for ROSCO's pitch controller in the results presented in this section were chosen to be the same as those used for scheduling the gains of the NREL 5-MW reference controller.ROSCO's TSR tracking torque controller was tuned manually so that below-rated simulations resulted in consistent TSR tracking.The collective blade pitch controller gain schedules from the ROSCO tuning process are similar to those from the NREL 5-MW reference controller's tuning process, but they are not the same.The NREL 5-MW reference controller's gain schedule is based on the turbine's sensitivity of aerodynamic power to the collective blade pitch angle, a value that has generally been found using more computationally expensive aeroelastic solvers, whereas the ROSCO tuning process depends directly on the C p surface.
High-level comparison results of the ROSCO controller compared to the NREL 5-MW reference controller are shown in Figure 13.Results are shown from both the generic ROSCO controller and a "tuned" ROSCO controller ::::::: ROSCO :::::::: controller :::: with :::: peak ::::::: shaving.For the tuned controller ::::::: ROSCO :::::::: controller :::: with ::::: peak :::::: shaving, all controller tuning input parameters were kept the same as for the generic ROSCO controller with the exception of modifying the set point smoother gains to be k vs = 5 and k pc = 0.01 and implementing the standard peak shaving routine.The results from the generic ROSCO controller are consistent with the expected steady-state operating points shown in Figure 2. In the results from the generic ROSCO controller, there is a noticeable increase in rotor thrust compared to the NREL 5-MW reference controller.This is attributed to the difference in pitch controller gains, and it can be mitigated with slightly different controller tuning parameters.Also, note that the NREL 5-MW reference controller exhibits significantly higher TSRs because of the torque controller's linear transition between regions 1 and 2 (Jonkman et al., 2009) rather than the PI controller-based transition that is used in ROSCO.The ROSCO controller tracks the optimal TSR of 7.5 well during below-rated operation.Average Power (1.1)  shaving" refers to ROSCO with tuned set point smoother gains and peak shaving implemented.
The power output and subsequent annual energy production from the ROSCO controller is 0.4 :::::: without ::::: peak :::::: shaving :: is ::: 0.1% greater than that of the NREL 5-MW reference controllerwithout peak shaving.This is consistent with observations by Holley et al. (1999) andBossanyi (2000), who note that minor energy production gains :: are ::::::: possible : to be achieved through an optimal TSR-tracking controllerare possible, though at cost of more generator power fluctuations.The maximum standard deviations :: In ::: fact, ::: the ::::::::: maximum ::::::: standard :::::::: deviation : of the power output during DLC 1.1 are only 5% higher using ROSCO than when using :::::::: decreased ::: by :::: 1.5% ::::: when ::::: using :::::::: ROSCO :::::: instead ::: off the NREL 5-MW reference controller, so very minor power production increases can be expectedfor the controller tuning used in this study :: no ::::::::: significant :::::: power :::::::: increases ::: are :::::::: expected.The annual energy production from the ROSCO controller is 1.7% less than that of the NREL 5-MW reference controller when the peak shaving routine is implemented in ROSCO.This is expected because rotor thrust reductions reduce the wind turbine's power output as well.Notably, the maximum rotor thrust seen is slightly higher than the expected maximum rotor thrust (see Figure 10).This is attributed to the imperfect nature of a peak shaving routine based on a wind speed estimate, and it could likely be improved through an observer-based rotor thrust shaving algorithm or similar.The peak shaving also helps to both mitigate rotor thrusts introduced by the initial ROSCO tuning and reduce them further than those from the simulations using the NREL 5-MW reference controller.

IEA 15-MW on the UMaine Semisubmersible FOWT Results
We compare results from the IEA 15-MW wind turbine on a semisubmersible floating turbine platform for the ROSCO controller with and without the floating feedback and pitch saturation modules enabled (see Figure 3).Larsen and Hanson (2007) suggest that the tuned bandwidth of a rotor speed-regulating collective blade pitch controller should not be higher than the platform's first fore-aft eigenfrequency.This method of "derating" the blade pitch controller has traditionally been employed in baseline FOWT controllers, such as the NREL 5-MW OC3-and OC4-Hywind FOWT models (Jonkman, 2010;Robertson et al., 2014).Though derating the turbine can provide stable platform dynamics, generator overspeeds can generally be very high with this method of control.The standard distribution of the IEA 15-MW wind turbine on the UMaine semisubmersible platform (IEA Wind Task 37, 2021) employs ROSCO, and the pitch controller bandwidth is 0.2 rad/s ::: rad/s, which is already less than the UMaine semisubmersible's first platform eigenfrequency of ~0.21 rad/s :::: rad/s.Also, the IEA 15-MW wind turbine uses constant generator torque control in above-rated operation.For this comparison, the floating feedback and pitch saturation modules are either enabled or disabled, and the rest of the controller is not changed at all.
Figure 14 presents results from the DLC 1.1 and 1.3 simulations.With the pitch saturation enabled, slight decreases in power production are seen at near-rated wind speeds.This does, however, correlate to significant reductions of tower fore-aft bending moments and related loads near rated.The presented reduction in platform pitching motion of slightly more than 30 ::::: about :: 15% resulting from the floating-specific feedback term has a clear effect on the tower base bending moment as well.The aboverated maximum rotor speed is not expected to change significantly with and without the pitch saturation and floating controller because the standard pitch controller for rotor speed regulation is the same.Similarly, the average power output is expected to drop when peak shaving is introduced, as shown in the bottom right plot of Figure 14.
The maximum platform pitch motions are reduced by approximately 47%, from 7.61 to 3.56 ::::: 20%, :::: from :::: 6.64 :: to :::: 5.35 degrees, through use of the FOWT feedback term and pitch saturation routines.The annual energy production with complete FOWT tuning is 18.2% :::: 1.5% : less than that without the pitch saturation terms, though this is ::::: which : is :::::::: primarily : attributed to the near 20% rotor overspeeds that are seen without peak shaving and fairly aggressive (25%) peak shaving percentage :::: peak ::::::: shaving rotor speed versus mitigating platform pitch motions.In this work, no specific tuning of the floating feedback term or blade pitch controller gains was done outside of the methods presented in sections 5.5 and 2.5, so overall controller performance could certainly be tuned and improved.

Conclusions and Future Work
We have provided the research community with a reference open-source controller (ROSCO) for fixed and floating offshore wind turbines.The controller structure is similar to many controllers that are seen on industry turbines that function in the field.
Generic tuning methods have been developed for the ROSCO controller and made available through the Python-based ROSCO toolbox.The tuning methods can be implemented easily by the interested non-controls engineer or in a completely automated fashion for use in optimization routines.
On the NREL 5-MW land-based wind turbine, we have shown that the generically tuned ROSCO controller performs comparably to the NREL 5-MW reference controller.We have also shown that, through a small amount of additional controller tuning, ROSCO's performance can be further improved to reduce rotor thrusts without significant reductions in power generation.We have also provided the foundations of more modern, industry standard control methods, such as peak shaving and wind speed estimation.A TSR tracking controller is shown to generate below-rated turbine power outputs that are consistent with the expectation based on the literature without significant power fluctuation or increased tower-base loads.No significant differences have been made to the implementation of the above-rated collective blade pitch controller, but automated tuning Several other capabilities are also being incorporated in ROSCO and the ROSCO toolbox generic tuning logic.These capabilities and tuning methods are currently being developed, some of which include individual pitch control, distributed aerodynamic control, and improved FOWT feedback term tuning methods.A number of specific improvements for the control methods discussed in this paper will also be implemented.These include additional functionalities for the blade pitch and torque controller, such as power-reference tracking control and tower resonance-avoidance methods.Improved shutdown and yaw methods are also being actively investigated.
Finally, the authors would like to reiterate that ROSCO and the ROSCO toolbox are open-source tools.We invite the research community to download, use, and contribute to these codes in whichever ways they see fit.

Figure 1 .
Figure 1.The general workflow of the ROSCO tool chain.The orange squares denote ROSCO-related input files, the blue squares denote the ROSCO software tools themselves, and the green squares denote the OpenFAST wind turbine model and OpenFAST itself.

Figure 4 .
Figure 4. Cp surface for the IEA 15-MW wind turbine.The dash-dotted black line shows the below-rated steady-state operating points that result from a Cp-maximizing minimum pitch schedule at low wind speeds when the turbine has a minimum rotor speed constraint.The dashed blue line shows the expected steady-state operation points that are used to calculate the controller gain schedules.

Figure 6 .
Figure 6.Wind speed estimator results for the NREL 5-MW wind turbine with 10 minutes of simulation time and an average wind speed of 11 m/s.

Figure 7 .
Figure 7.A block diagram of the set point smoother logic defined in (48)-(49) is shown here.The term ∆ω shifts the blade pitch or generator torque controller to help avoid unwanted controller interactions.

Figure 8 .
Figure 8. Time-domain simulation results from the NREL 5-MW wind turbine near rated wind speeds.The rotor-averaged wind speed is plotted in the background as grey curves in each plot.

Figure 9 .
Figure9.Expected steady-state pitch saturation for the IEA 15-MW wind turbine, based on the Ct surface calculated with cc-blade.The blade pitch schedule (left) shows the expected steady-state value of the pitch angle along with the imposed minimum pitch angles with pitch saturation for both peak shaving and power maximization in low wind speeds.The righthand plot shows the expected rotor thrust with and without peak shaving.The grey region in the blade pitch schedule corresponds to the pitch angles that result in a rotor thrust above the maximum allowable thrust, shown as the grey region in the righthand plot.

Figure 10 .
Figure10.A sample 1-minute time series from a 10-minute turbulent simulation of the NREL 5-MW wind turbine to showcase the peak shaving routine in ROSCO.The peak shaving percentage was tuned to 20% for this simulation.The wind speed is shown in the background of each plot, and the maximum allowable thrust is denoted by the dash-dotted black line in the lower plot.

AFigure 11 .
Figure 11.A sample 2-minute time series from a 10-minute turbulent simulation of the IEA 15-MW wind turbine showing how increased blade pitch angles can increase power output at low wind speed.The rotor-averaged wind speeds are plotted in grey in the background.

Figure 12 .
Figure 12.A Bode plot showing the filter used for the tower-top motion feedback signal for the IEA 15-MW turbine on the UMaine semisubmersible platform.The first platform and tower fore-aft natural frequencies are shown in red and labeled accordingly.These natural frequencies are inputs to the ROSCO tuning process to shape this filter.

Figure 13 .
Figure 13.Results from simulations of the NREL 5-MW land-based wind turbine.Average power, maximum rotor speeds, average TSRs, and maximum rotor thrusts are shown for DLCs 1.1 and 1.3.The dynamic results from the ROSCO controller are comparable to those from the NREL 5-MW reference controller."ROSCO -generic" refers to ROSCO with the most generic tuning methods, and "ROSCO -tuned :::: peak ::::::

:Figure 14 .
Figure 14.Results from DLC 1.1 and 1.3 simulations for the IEA 15-MW wind turbine on the UMaine semisubmersible platform.Output statistics from the platform pitch angles, tower base fore-aft bending moments, rotor speed, and generator power are shown.Simulations using the FOWT feedback loop (βfloat) and pitch saturation are compared to those with the pitch saturation or FOWT feedback modules turned off.
methods have been developed to easily generate pitch-dependent gain schedules for the blade pitch controller based on the C p surface.A set point smoother has been implemented to improve the transition between the primary blade pitch and generator torque controller regions.A Kalman filter-based wind speed estimator is implemented in ROSCO to enable the TSR tracking and blade pitch saturation capabilities.Pitch saturation routines have been implemented to improve power output in low wind speeds and reduce rotor thrust rated wind speeds.A simple shutdown logic has also been implemented to facilitate more realistic wind turbine testing for the IEC DLCs.Additionally, a FOWT-specific feedback loop is included in ROSCO and has shown improvements over previously published open-source FOWT control methods.The combination of a FOWT-specific feedback loop and a peak shaving routine has been shown to significantly reduce platform pitch motions and maximum rotor speeds compared to a simple pitch controller with a bandwidth below the first fore-aft natural frequency of the platform.Notably, all the results shown for the IEA 15-MW on the UMaine semisubmersible are shown for the generalized ROSCO tuning values, and there is potential to further improve controller performance through additional fine-tuning of the input parameters to the ROSCO toolbox.

Table 2 .
Simulated DLCs to showcase the difference in controller performance.The wind speeds were separated by increments of 2 m/s, with normal and extreme turbulence models defined by the IEC et al. (2006) standards.The sea-state-related inputs are relevant only for the FOWT simulations.Simulations were run for codirectional waves (i.e., wind and waves are aligned) to isolate the negative-damping phenomena that is generally of interest to the control designer.

Table 3 .
ROSCO controller tuning values for the collective blade pitch and TSR tracking torque controllers for the DLC simulations of the NREL 5-MW wind turbine.