NREL / ROSCO

A Reference Open Source Controller for Wind Turbines
https://rosco.readthedocs.io/en/latest/
Apache License 2.0
106 stars 92 forks source link

ROSCO wind speed estimation differs from the input by a significant amount #326

Closed James-Ilosta closed 4 months ago

James-Ilosta commented 6 months ago

Hi,

I've been trying to run rosco to optimise my controller. I have set: InflowWind WindType = 1 InflowWind HWindSpeed = 12.5

I've tried running rosco with all 3 options selected for the wind speed estimator and I get the same result every time.

I have a few questions. What does the wind speed estimator do?

does it provide the controller with an estimation for the wind speed so that the controller then optimises the pitch angle for this wind speed to produce the optimum power generated. If this is the case, can the wind speed estimation be set to the true value as stated in the InflowWind File?

Why is the value quite different compared to my set value?

I guess this may be a silly question, but do I need to modify the DISCON.IN file after using ROSCO to generate it using the turbine parameters? Do I need to modify the Servodyn file either?

here is the message I get:


OpenFAST

Copyright (C) 2024 National Renewable Energy Laboratory Copyright (C) 2024 Envision Energy USA LTD

This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY. See the "LICENSE" file distributed with this software for details.


OpenFAST-v3.5.2 Compile Info:

OpenFAST input file heading: Generated with AeroElasticSE FAST driver

Running ElastoDyn. Running AeroDyn. Running InflowWind. Running ServoDyn. Running ServoDyn Interface for Bladed Controllers (using Intel Visual Fortran for Windows). Using legacy Bladed DLL interface.

Running ROSCO-v2.9.0 A wind turbine controller framework for public use in the scientific field Developed in collaboration: National Renewable Energy Laboratory Delft University of Technology, The Netherlands

ROSCO Warning: Did not find correct size F_NotchFreqs in input file. Using default value of [ 0.0000000000000000 ] ROSCO Warning: Did not find correct size F_NotchBetaNum in input file. Using default value of [ 0.0000000000000000 ] ROSCO Warning: Did not find correct size F_NotchBetaDen in input file. Using default value of [ 0.0000000000000000 ] Generator speed: 600.0 RPM, Pitch angle: 0.0 deg, Power: 0.0 kW, Est. wind Speed: 11.5 m/s Generator speed: 537.3 RPM, Pitch angle: 18.5 deg, Power: 373.4 kW, Est. wind Speed: 36.3 m/s Generator speed: 483.8 RPM, Pitch angle: 18.5 deg, Power: 275.6 kW, Est. wind Speed: 26.1 m/s Generator speed: 441.2 RPM, Pitch angle: 16.5 deg, Power: 209.5 kW, Est. wind Speed: 20.7 m/s Generator speed: 407.1 RPM, Pitch angle: 12.3 deg, Power: 164.8 kW, Est. wind Speed: 17.7 m/s Generator speed: 380.1 RPM, Pitch angle: 9.7 deg, Power: 134.4 kW, Est. wind Speed: 16.0 m/s Generator speed: 359.2 RPM, Pitch angle: 8.2 deg, Power: 113.8 kW, Est. wind Speed: 15.1 m/s

I also tried setting my blade degrees of freedom in the elastodyn file to False which seems to just reduce my power output significantly, but it stabilises my generator speed at about 339RPM:

ROSCO Warning: Did not find correct size F_NotchFreqs in input file. Using default value of [ 0.0000000000000000 ] ROSCO Warning: Did not find correct size F_NotchBetaNum in input file. Using default value of [ 0.0000000000000000 ] ROSCO Warning: Did not find correct size F_NotchBetaDen in input file. Using default value of [ 0.0000000000000000 ] Generator speed: 600.0 RPM, Pitch angle: 0.0 deg, Power: 0.0 kW, Est. wind Speed: 11.5 m/s Generator speed: 339.1 RPM, Pitch angle: 18.5 deg, Power: 7.3 kW, Est. wind Speed: 34.8 m/s Generator speed: 338.6 RPM, Pitch angle: 18.5 deg, Power: 13.5 kW, Est. wind Speed: 24.7 m/s Generator speed: 338.5 RPM, Pitch angle: 15.4 deg, Power: 18.7 kW, Est. wind Speed: 19.9 m/s Generator speed: 338.8 RPM, Pitch angle: 11.5 deg, Power: 25.4 kW, Est. wind Speed: 17.1 m/s Generator speed: 339.2 RPM, Pitch angle: 9.1 deg, Power: 33.6 kW, Est. wind Speed: 15.5 m/s Generator speed: 339.5 RPM, Pitch angle: 7.6 deg, Power: 43.0 kW, Est. wind Speed: 14.6 m/s

dzalkind commented 6 months ago

Details of the wind speed estimator (WSE) can be found in this article: https://wes.copernicus.org/articles/7/53/2022/

In short, the wind speed estimate is used to determine the minimum pitch limit for peak shaving (and optimizing power at very low wind speeds) and to determine the rotor speed set point in below rated tip speed ratio tracking.

Setting the WE_Mode to 0 in the DISCON will use the hub height wind speed to override the estimate. However, if you are seeing these issues, there is likely another issue with your model and/or DISCON.

You can use the various examples to create a DISCON. You should be sure that the DISCON is pointing to the Cp_Ct_Cq table you have generated; this is important for the WSE performance. Then the ServoDyn input should point to the DISCON input you have generated.