Pitch Control Before Rated Speed


I’m trying to come up with a sensible model for the rotor aerodynamics of a wind turbine and an appropriate control system given the thrust and power curves (both functions of binned wind-speed) and some limited information regarding the overall geometry. I’m acutely aware this inversion is not unique - I’m trying to determine something representative.

I have a working understanding of wind-turbine control systems now, greatly improved by many of the papers the NREL team have published and made available which I’m very grateful for.

The power curve I’m looking at has a very rounded transition from the constant-tsr region 2 to rated wind speed (start of region 3) over a wind speed range of perhaps 4 m/s. I’ve attached a mock-up where I’ve drawn on a rounded transition for clarity. I’m aware region 2.5 can be modelled with some linear torque-angular velocity relationship however I can’t understand how such a decrease of power coefficient could be obtained without some kind of pitching - in a region (2.5) I’d previously understood to be entirely torque controlled.

Because I had assumed these curves below rated wind-speed are entirely torque controlled, I thought it would be reasonable for me to determine some appropriate possible chord and twist-distributions with the view to matching the thrust and power and rated wind speed, where I know the TSR, and then, given I’d assumed no pitching before rated wind speed (and thus constant geometry), find appropriate functions of rotational speed as a function of wind speed such that I was best matching the curves between the centre of region 2 and rated wind speed.

This failed, although I was careful to ensure my parameter sweep was robust and always produced sensible twist and chord-distributions.

I may now do the reverse and determine a sensible planform and twist distribution based on the constant Cp region and then see if I can get the Cp to drop off at the rated wind speed. And then perhaps add some pitch at rated if required.

I’d like to understand if it is possible for me to model what I suspect to be a some pitching before rated wind speed with ROSCO.

Edit: For clarity, the power coefficient has a maximum of around 0.5 and is considerably lower at rated wind speed. The trust coefficient has a peak of around 0.8 before also falling off considerably at rated to around 0.45.

Best wishes,
Image 27-04-2020 at 20.46.jpg

Dear Sam,

The “rounded” transition between below and above rated operation is not a characteristic of the rotor chord/twist/airfoil design, but rather, based on the turbine controller. Yes, the ROSCO Toolbox (github.com/nrel/rosco_toolbox) can be used to generate the appropriate controller. The ROSCO Toolbox supports setpoint smoothing and peak shaving, both of which will “round” the transition.

Best regards,

Dear Jason,

Thanks for your reply, I’ll give it a whirl. The Python toolbox looks very helpful for this.


Hi Jason,

Further to my question above, after finding an appropriate twist distribution for the constant-cp region using just Aerodyn (TSR=9), I’ve evaluated some appropriate controller gains using the ROSCO_toolbox and have begun to simulate the wind turbine under a time-dependent wind environment. However, my rotor power far exceeds rated power.

Prior to doing this controller simulation, I had run a steady state analysis of my turbine at the rated wind-speed, TSR (7.5) and I found that I required a pitch angle of 6 degrees to move the thrust coefficient and power coefficient towards what it should be.

I was wondering if you could explain how set-point smoothing could achieve this. My understanding is that it simply moves the target rotational velocity. Also, can you explain roughly what the peak shaving algorithm is doing? I couldn’t find any information on it in the ROSCO paper (nrel.gov/docs/fy20osti/75433.pdf), only a couple of brief mentions.

My interpretation of this is that, unless my modelling of the aerodynamics is completely unrealistic, the controller of the true turbine must on average be pitching a rated wind-speed by around this amount (6 degrees). My evaluated twist-distribution compares very well to the DTU 10MW and the NREL15MW and I’m using the same airfoil series.

One thing I should mention is the turbine has been designed, from an aerodynamic perspective, to be operating at a considerably lower power than it could do. I found an option in DISCON.in file to set minimum pitch angles as a function of wind speed. Is this form of pitch control common for wind turbines which have larger aerodynamic capacity than required? Perhaps to maximise the “capacity factor”.

Best wishes,

Hi Sam,
I might be able to answer your questions in a little bit more detail here. You are correct, the setpoint smoothing simply shifts the reference generator speed for the generator torque and blade pitch PI controllers so that they do not “fight” each other. If I understand your problem correctly, it sounds like the peak shaving capabilities are what you are looking for.

The “pitch saturation” implementation in ROSCO imposes a minimum blade pitch angle given the wind speed estimate. This can, functionally, clip the rotor thrust (and subsequently power) curve near rated operation by moving the thrust coefficient off of the maximum of the Ct/Cp-Lambda surfaces. The figures below show the expected behavior from the peak shaving implementation on the NREL 5MW wind turbine. In order to implement the peak shaving, you will need to set ps_mode = 1 in the tuning input .yaml file, and prescribe a desired peak shaving percentage with ps_percent. If ps_percent is undefined in the yaml, the tuning processes will default to 75% peak shaving. Separately, you could apply this schedule to be anything you prefer by directly modifying the “pitch saturation” inputs to DISCON.IN accordingly. Hopefully this implementation achieves what you’re looking for.

Figure 1.png
Figure 2.png

Hi Nikhar,

Thank you very much for replying, I really appreciate it. I ended up having a look at the source code in the NREL_toolbox to find out what it was doing. To evaluate my peak shaving parameter all I had to do was evaluate the thrust coefficient in steady-state at rated conditions with no pitching and then calculate the appropriate ratio against my target thrust coefficient at rated. Subsequently, the ROSCO_toolbox was able to set pitch(speed) accordingly. This will likely need a bit of adjustment but it’s doing more than enough for the time being.

Best wishes,