NREL / ROSCO_toolbox

A repository for generating ROSCO controller input files and more.
http://rosco-toolbox.readthedocs.io/
Apache License 2.0
23 stars 20 forks source link

Peak shaving and rotor speed #63

Open BenoitSchiltz opened 2 years ago

BenoitSchiltz commented 2 years ago

Hi all,

I am tuning my controller using ROSCO toolbox, and when I plot my operational points coming from steady wind simulations statistics, I see that when peak shaving applied (less than 20% load reduction) the TSR is changing (rotor speed slope lower than what should be) from where peak shaving is used, which is not desired. I reduced and increased my rated wind speed in the yaml file, but it did not change the controller behavior at operational points where there is peak shaving.

Is there a way to ensure that before reaching rated rotor speed the TSR is kept constant, so that peak shaving is applied only by changing the pitch angle? Cf picture image

Thanks Best regards

dzalkind commented 2 years ago

Hi, this looks like an issue with the ROSCO controller that we addressed here.

What version of the ROSCO controller are you using and what model/DISCON.IN file are you using?

BenoitSchiltz commented 2 years ago

Ok, why is this difference in rotor speed between Peak shaving / not Peak shaving occuring for some simulations only in the pdf from your link?

I am using the ROSCO 2.2.0 (libdiscon.dll), and I am using the DISCON.IN file created from the ROSCO toolbox (installed from the ROSCO 2.4.0) using the parameters I would like to have for my controller. The wind turbine is close to the IEA 15MW UMaine, but I am simulating it as onshore WT and with Orcaflex (which can read the .dll).

dzalkind commented 2 years ago

I think it's because the difference is not as pronounced in simulations with turbulence. I recommend you update to the 2.3.0 binaries or compile the latest main branch. We will be releasing 2.4.0 ROSCO binaries soon.

BenoitSchiltz commented 2 years ago

I was thinking of the simulations from the pdf, which are all with turbulence : some do not show rotor speed difference between peak shaving /no peak shaving, and some do.

Ok, so this issue should be solved in future releases?

I am also struggling a bit in tuning my frequencies/damping for the controller (pc and vs), some oscillations do not vanish close to cut in wind speed for the torque or rated wind speed for the blade pitch, when modifying little those from the IEA 15MW (my wind turbine is close to this one) controller parameter. This does not happen at low wind speed when i do not apply pitch saturation however. What would you recommend?

Another thing, for wind turbine having gearbox, I had to modify the controller.py code in the ROSCO toolbox to be able to apply a minimum rotor speed, it was :

-- Define some setpoints --

-- minimum rotor speed saturation limits

    if self.vs_minspd:
        self.vs_minspd = np.maximum(self.vs_minspd, (turbine.TSR_operational * turbine.v_min / turbine.rotor_radius) * Ng)

I changed it to self.vs_minspd = self.vs_minspd * Ng as TSR_operational is first calculated assuming there is no minimum rotor speed, which assigns too high value to self.vs_minspd, and in my case even higher than the rotor speed needed to maintain TSR to its optimum value.

dzalkind commented 2 years ago

I would recommend you use the latest version of ROSCO, where we have combined the ROSCO and the ROSCO_toolbox repositories and addressed all of these issues already.

dzalkind commented 2 years ago

Regarding the oscillations near rated: this is common with steady wind speeds and a floating model. You can reduce them by reducing omega_pc, but this isn't necessarily good for controller performance in turbulence, which is our primary goal.

BenoitSchiltz commented 2 years ago

I switched to ROSCO 2.3.0 and will wait for the ROSCO 2.4.0 binaries. With ROSCO 2.3.0 binary, my initial problem with too low rotor speed when using peak shaving is now fixed, thanks !

I see in your ROSCO latest version link that the same line I mentionned before, causing problems for minimum rotor speed when using wind turbine with gearbox is still present. It is line 278 of controller.py in the ROSCO toolbox.

Thanks for the advice near rated for oscillations, I am still modeling it as an onshore version, but I will remember that when I move to floating.

ptrbortolotti commented 2 years ago

This should fix the min rpm problem https://github.com/NREL/ROSCO_toolbox/pull/64/commits/d14964772831f26e961386775743140a5a257970

BenoitSchiltz commented 2 years ago

Thanks for the update.