IEA-15MW Turbine - ROSCO Controller Oscillations


First of all I just wanted to say thanks to all involved in the IEA-15MW turbine project for developing such a great resource for the industry! It must have taken a lot of hard work.

I have modelled the 15MW turbine in Bladed, using the ROSCO controller. Whilst running some NTM power production simulations for a range of wind speeds, I have noticed significant oscillations in the turbine control parameters (demanded pitch, torque, rotor speed) and corresponding oscillations in the loads. This appears to affect wind speeds around and just above rated (8m/s to 16m/s inclusive). I have attached a word document containing several figures showing this (hopefully the attachment works ok). Oscillations in pitch.docx (1.95 MB)

I was wondering if anyone has any suggestions for what may be causing these oscillations?

The set-up I have used is as follows:

  • Bladed model built from documents provided in IEA-15-240-RWT git repository, change set 9aa6ce4
  • ROSCO controller release v2.2.0, compiled from source to produce the Bladed external dll
  • Used the following controller parameter file: … onopile.IN
    Used the associated rotor performance file: … EA15MW.txt
  • Performed 66 time history simulations with NTM, 11 wind speeds, 6 seeds for each. 500s + 100s initialisation (neglected for comparisons)

Please let me know if any further information is required. Thanks in advance for any help that can be offered.

Kind regards,
Atkins Offshore Wind (UK)

Hi David,
This is certainly an unexpected result that you are seeing here.

I have a few questions that may help figure out what is going on here:

  1. Does your Bladed Model include an actuator model for the blade pitch actuator?
  2. Have you compared these results from Bladed to OpenFAST results for similar (or the same) inflow wind conditions? ROSCO has not been extensively tested in Bladed yet, so I am curious if there may be something here…
  3. Out of curiosity - do you know if these behaviors can be attributed to certain degrees of freedom being enabled? For instance, if drivetrain flexibility is removed, are these sorts of oscillations still seen?
  4. What do you mean by “demanded” in these signals? Are you plotting the signals coming out of ROSCO in the AvrSWAP array? How do these compare to the actual blade pitch, generator torque, etc. On a related note - I am a surprised by the large, sharp drop of “demanded generator speed” in the second plot on the third page of your attached document - what exactly are you plotting here?

Hopefully this points to some possible solutions!


Hi Nikhar,

Thanks for your reply and suggestions. Please see responses to your questions below, with figures in the new attachment.
ROSCO_control_Figures.docx (534 KB)

  1. The details of the pitch actuator in my Bladed model are in Figure 1 of the attached.

  2. Unfortunately I haven’t been able to compare against any other simulations. I have never used OpenFAST myself. My other post on the forum was in some ways related to these oscillations as I was hoping there were some similar results from other simulations that I could compare against.

  3. Following your suggestion on this, I discovered that if I turned off blade flexibility these oscillations disappeared. Looking into it further, I identified that including edgewise flexibility but increasing the flapwise stiffness by a factor of 1,000 had the same effect as turning the blade flexibility completely off.

Figure 2 in the attached shows some more comparisons on the demanded pitch rate. For these I simplified my simulations as much as possible, so they are for a constant wind speed of 12m/s (no turbulence) and I have turned off all sources of periodicity (no wind shear, tower shadow, yaw error etc). The 4 simulations compared are:

a) Powprod_rosco_flapflex: normal blade flexibility using the rosco controller, as per my initial post;
b) Powprod_rosco_flaprigid: identical to a) except with blade flapwise stiffness x1000
c) Powprod_bc_flapflex: identical to a) except using built in Bladed control instead of ROSCO
d) Powprod_bc_flaprigid: identical to c) except with blade flapwise stiffness x1000

In simulation b), the demanded pitch angle settles after some initial oscillation to a steady state, whereas in a) the oscillations continue throughout the simulation (although with a gradually decreasing amplitude)
I’m stumped as to what is happening here to be honest. I’ve checked the mass and stiffness properties of the blade, and the edgewise + flapwise 1st natural frequencies are very close to the values in the NREL report (Table 2-1 in

  1. The demanded signals are all from the Bladed outputs, not the AvrSWAP array, but I believe “demanded” is what the controller is telling a parameter (pitch etc) to be at any instance, as opposed to what it actually is. For example, Figure 3 in the attached shows the same plot as Figure 2 (for the first 50s, excluding the bladed in-built control data for clarity) with the actual pitch angle added. You can see the slight lag of the pitch behind the demanded pitch.

Regarding the generator speed in my first post, I’ve added the measured speed to the demanded speed shown previously in Figure 4 in the attached (note that this simulation is for turbulent wind with tower shadow included).

Thanks again,

Hi David,

Thanks for the response - I think this is helpful. I have a few thoughts here:

First, I don’t believe this specific ROSCO tuning has been tested extensively for an IEA15MW turbine model with a blade pitch actuator model included (unless I am not aware of someone testing this). Do you still see this sort of instability if the pitch actuator model is either removed, or made to be extremely fast? Although small, the phase delay introduced by the actuator model could be causing some problems here.

Second, do you get the same errors if the blade is made stiffer in the edge-wise direction, but kept the same in the flap-wise direction? Traditionally the edge-wise modes can cause pitch controller instabilities, though this oscillation is at an especially low frequency.

Finally, your explanation of the “demanded” signal makes sense for the actuator signals, but I am still unclear as to what exactly the “demanded generator speed” from Bladed might be, as ROSCO calculates those values internally and does not pass them out.

For the 12m/s steady wind simulation - could you please share results from the simplest example that displays this sort of behavior? For example, maybe this occurs with, all DOFs other than the blade edge-wise modes disabled and the pitch actuator model enabled. Could you also share the measured rotor speed for these examples?


Hi Nikhar,

Apologies for the delay in responding - I was awaiting a response from Bladed software support.

It is not possible to completely “turn off” the actuator model in Bladed, however by making it act extremely fast (with no acceleration or rate limits), these oscillations I was seeing in the pitch do go away. An unfortunate side effect of this however is some high frequency variation in the pitch and hence in rotor speed, power etc. This may be a workable solution for the tower/support structure nodes however, as the inertia of the RNA effectively damps out these high frequency variations.

With the blade stiffer in the edge-wise direction, but with nominal flap wise stiffness, the oscillations still occur. Having normal edge wise stiffness with high flap-wise stiffness gets rid of them, which is indeed strange. I should point out that I am not modelling the torsional or axial stiffness and these are set as rigid in Bladed - I don’t think that would make a difference however.

Another solution I found was making the generator rotor inertia very high, which removes the pitch oscillations without giving the high frequency variation I get when making the actuator model very fast. This solution may lead to other problems however so probably not something to pursue.

Thanks again,

Hi David,

Thanks for the reply. Unfortunately, I don’t have a simple cure-all solution for you as I am not familiar with the particulars of Bladed and how ROSCO behaves with it. To me, it sounds like the tuning of ROSCO for the IEA15MW might need to be improved for a model implemented in Bladed, or maybe even just a turbine with a pitch actuator model included. That said, hopefully we can find some ROSCO-based solutions, rather than needing to change the turbine model itself.

I think the easiest thing to do might be tweaking the low-pass filter corner frequency, or F_LPFCornerFreq here: … ile.IN#L22. It is hard for me to say exactly what this value should be, though. Increasing this value a little bit might “compensate” for the phase lag introduced by the pitch actuator model. On the contrary, decreasing this value might slow down the controller a bit and help prevent it from exciting one of the modes that you mentioned in your previous message. Just so you know, that value is generically defined to be 1/4 of the blade’s first edge-wise natural frequency in the ROSCO toolbox, so there is certainly room for fine tuning it within reason. I am not certain that changing this value will solve the issue, but I think it is an easy test worth trying.

A slightly more complicated (and maybe rigorous?) way to try to address this would be to alter the tuning of the pitch controller. This is most easily done through the ROSCO toolbox ( If you are interested in this, both example 4 and /Tune_Cases/ provide some code that should help you re-tune the controller, perhaps with a slightly lower natural frequency or damping. If you do go down this route, I recommend starting with the IEA15MW-Monopile.yaml file provided in the ServoData folder of the IEA15MW OpenFAST model, and changing omega_pc and zeta_pc accordingly.

To help with this a little more, you can find some specific user-documentation here:
and you can find a Wind Energy Science Discussion paper that gives a more in-depth review of the theory here:

Hopefully this helps!


Hi Nikhar,

Thanks for the suggestions - I’ll give them a go and see how I get on. I’ll post back here if I find a solution.

Kind regards,

Dear NREL team or Dear Nikhar

Thanks for the kind response and useful information about the ROSCO controller here.

Could I make an query as below ?

Due to the lack of the control files (like obtaining the specific controller models for the turbine generator and blade pitch), is it possible to tune the NREL 15MW control files by equalising the generic load cases such as the DLC 1.1 with a combination of the maximum loads under certain Vref.

In another way to say, is it possible to calibrate another controller to achieve the same behaviour by comparing the modelled turbine response against published performance data ?

Could you give me any advice based on which direction that I can do in order to achieve this goal, thanks

Really appreciating your efforts.

Best regards
Shuo-Ting Chiang

Hi Shuo-Ting Chiang,

You can tune the ROSCO controller to mimic a wide variety of behaviors by changing the tuning inputs. , omega_pc, zeta_pc, and ps_percent have a large effect on thrust-based turbine loading. Some automated tools exist for optimally tuning these values: WEIS/examples/02_control_opt at master · WISDEM/WEIS · GitHub .

Best, Dan

Thanks Dan,

I will have a look based on your suggestions here, really appreciating.