Tracking wind-speed dependent target TSR value in ROSCO

The wind turbine I would like to model operates in Region 2 at a tip speed ratio that depends (significantly) on the wind speed.
After looking in the ROSCO code it seems feasible to include such an extension but I am wondering if I overlook issues or someone has already attempted to implement this and can share his/her experiences.
Thank you in advance, Duncan

Hi Duncan,

In this PR, we are developing a feature to change the rotor speed set point with wind speed: Power Reference Tracking by dzalkind · Pull Request #170 · NREL/ROSCO · GitHub

You should be able to convert your desired TSR vs. wind speed to the desired rotor speed vs. wind speed.

This tuning yaml should produce an input that tracks a given rotor speed vs. wind speed: ROSCO/IEA15MW_PRC.yaml at power_ref_tracking · dzalkind/ROSCO · GitHub

Please note that this feature is still in the development stage. Feel free to contribute or add comments to the PR on GitHub.

Best, Dan

Hello Daniel,
That is exactly what I need! Thank you so much.

Hello Daniel,
I prescribed the rpm for a set of wind speeds in the DISCON file and imposed a stepwise incrementing uniform wind field. The controller
behaves exactly like I expected:

Best regards,

Thanks for the positive feedback, Duncan!

Hello Daniel,
I performed more experiments and when I compare the response of my turbine tracking a prescribed rpm or tracking a given TSR I observe quite different behavior.
The results are shown below.
I simulate a transition from 6 m/s to 7 m/s wind, using a short ramp of 20 sec.
Both with TSR and with rpm tracking, both the target rpm and the target pitch angle are different before and after the change in wind speed.

However, with the rpm tracking there is a significant overshoot in the pitch angle at the start of the ramp. This is not the case with the TSR tracking.

On the other hand there is negligible overshoot in the thrust with the rpm tracking while this is considerable in the case of the TSR tracking.

Can you tell me why there is a large overshoot in pitch angle when tracking the rpm and how I can avoid this? I would like to get a response very similar to what happens with the TSR tracking.

Thank you in advance and best,

Hello Daniel,
I have established that PC_State is 0 in the case of the TSR tracking but PC_State is 1 when PCR is activated. If I overrule the value of PC_State in Subroutine StateMachine (set it to 0) than the pitch angle follows the fine pitch.

It is not clear to me yet how PC_State = 1 is set when PRC is active and operating in Region 2.
Best, Duncan

Hi Duncan,

I think PC_State should be 1 if PC_ControlMode is 1. That’s what the control logic looks like here: ROSCO/ControllerBlocks.f90 at 51629665d22f92770f861daeebcebd47ab32abb1 · NREL/ROSCO · GitHub

It’s best to look at the reference generator speed for the torque and pitch controllers (VS_RefSpd, PC_RefSpd, as well as the torque and pitch signals.

Make sure that SS_Mode = 1. The SS_VSGain and SS_PCGain may need to be re-worked for this kind of control.

This is still a work in progress. Thank you for looking into this. It helps with our development.

Best, Dan