NREL / ROSCO

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

The controller doesn't work in SIMA software #284

Open ChaojunYan opened 12 months ago

ChaojunYan commented 12 months ago

no matter the ROSCO controller version, it doesn't work in SIMA software, e.g., in rate wind speed, the blade pitch is around 3.4°. I tried to modify the DISCON file, change the ROSCO version, and import the DISCON and .dll files from GitHub or FAST, but they are all failed, the blade pitch, and rotor speed all not the same as the documentation (IEA-15-240-RWT_tabular.xlsx). PS: If I fix the blade pitch to the right value corresponding to the wind speed, the rotor speed and thrust are all right, so I believe the blade foils are all right.

dzalkind commented 12 months ago

Hi,

Can you explain a bit more what your setup is like and what behavior you are expecting to see? We are not familiar with the SIMA software and how ROSCO interacts with it. I would also recommend contacting SIMA for support. I would be happy to also be included so we can better support ROSCO with SIMA. My email is dzalkind (at) nrel (dot) gov.

To debug your issue further, you can use a LoggingLevel of 3 in the DISCON input. Please use the latest version of ROSCO (v2.8.0). ROSCO will output a .dbg3 file that outputs the avrSWAP. The avrSWAP is part of the standard Bladed interface for controllers. In avrSWAP(48) the blade pitch command is sent to the modeling software. Sensor signals from the modeling software are read here. Verifying the avrSWAP entry for GenSpeed may also help.

I hope this helps.

Best, Dan

ChaojunYan commented 12 months ago

Dear Dan, Thanks for your time! The attachments are my detailed question description and controller input files. sima controller question.zip

dzalkind commented 12 months ago

For the floating turbine you are using, blade pitch is not 0 unless you disable peak shaving with PS_Mode of 0. However, it is not recommended to disable peak shaving for this model. A more detailed description of this controller can be found here.

Generally, it looks like the pitch angle command is being sent to SIMA without issue. Reviewing the avrSWAP entries would confirm this.

dzalkind commented 12 months ago

Also, I heard from a SIMA developer that the wind speed estimator doesn't always work with SIMA. Try disabling the WSE with WE_Mode of 0.

dzalkind commented 12 months ago

Alternatively, the develop branch of ROSCO should address this issue, but you will need to compile from source and update your DISCON inputs.

ChaojunYan commented 11 months ago

Hy, I'm sorry bother you again, I tired to disabling the WSE with WE_Mode of 0, it still not works. I was wondering which controller version was employed in the NREL report (IEA Wind TCP Task 37 Definition of the IEA Wind 15-Megawatt Offshore Reference Wind Turbine Technical Report) to get this blade pitch controll results? image002 In the ROSCO v2.6 controller, the MINIMUM PITCH SATURATION in IN file is given as the curve below. As I understand, this curve is responsible for the minimum pitch angle in the analysis. Then when the wind speed is 10m/s, the pitch angle cannot go down to 0 deg. Image_2023-12-06_15-28-02 And I tried with ROSCO v2.8 still can not get the same blade pitch results as the report. So, could you pls tell me which controller version could get that results, thanks a lot!

dzalkind commented 11 months ago

I'm not sure exactly which version of the controller was used in the report. We recommend using the latest version of ROSCO and test updates regularly on the IEA-15MW with the VolturnUS platform.

Please share the results you are seeing so we can help you debug the issue. At 10 m/s, the minimum pitch should be saturated at 1-2 degrees. You can disable that with PS_Mode of 0 in the DISCON.

ChaojunYan commented 11 months ago

Thanks for your reply! The below is my short test results, from 5 m/s to 12 m/s stationary wind, and rate wind 10.59m/s turbulent wind. For ROSCO V2.8, WE_mode=0, the results are as below: image 1701935505485 For ROSCO V2.8, WE_mode=0 and PS_mode=0, the results are as below: image image For turbulent wind of 10.59m/s, the results are as below: image

dzalkind commented 11 months ago

What issue in these results are you trying to resolve? The results in your last plot look as expected. Perhaps the SIMA inputs have more turbulence? The rotor average wind speed might highlight this difference.

ChaojunYan commented 11 months ago

Thanks for your reply!

  1. My stationary rate wind of 10.59 m/s results are as below, the results still have little difference but acceptable, how can i improve this? image
  2. I used the same turbulence wind input file in sima and fast, the blade pitch controll not well, the wind speed quite the same actually. image image
dzalkind commented 11 months ago

Are you using the same turbsim grid in both simulators? Does SIMA use a full-field turbulence like OpenFAST or does it take the turbulence and apply it uniformly across the rotor disk?

You can use the dbg2 files generated by ROSCO to debug this further. They are generated when LoggingLevel = 2 in the DISCON. You will see WE_Vw (the wind speed estimate) and PC_MinPit (the minimum pitch saturation limit) there. PC_MinPit is a function of WE_Vw that you can fine-tune in the peak shaving section of the DISCON. I suspect there are slight offsets in WE_Vw that you will need to account for to match the response. The inputs to the WSE are in the dbg files. They are WE_*. Ideally, given the same inputs, the WSE should produce the same output (WE_Vw) regardless of the simulator. However, if you disable the WSE with WE_Mode of 0, the WSE is just a filtered hub height wind speed.

ChaojunYan commented 11 months ago

Thanks for your reply, I used the same turbsim grid in both simulators. I didn't find the notes for the turbulence field in Sima, but I think SIMA also use full-field turbulence like OpenFAST. Following your suggestion, I ran two conditions. For WE_Mode=2, the results of dbg2 files are as below, wind speed estimator not work in Sima indeed. image image For WE_Mode=0, the results of dbg2 files are as below, there are slight offsets in WE_Vw indeed, what is the reason for this? Can you help me answer it. And why does PCMinPit seem to not change over time in Sima, regardless of WE Is MODE 0 or 2. image image

dzalkind commented 11 months ago

Can you confirm that the DISCON inputs are identical? There should be a mapping from B to C in your plots. There may be another setting interfering with the peak shaving.

ChaojunYan commented 11 months ago

Yes, I used the same DISCON inputs

dzalkind commented 11 months ago

This doesn't really make sense to me. PC_MinPit is determined here and here.

Could you share the exact DISCON.IN files used in each set up and the .dbg2 files generated by each set up?

ChaojunYan commented 11 months ago

Thanks for your reply, the attachment is my detail discon.in and .dbg2 files, and the .docx is my test between sima and fast using two rosco controll version, seems wind speed greater than rate speed, controll works differents. DISCON.IN & dbg2.zip

dzalkind commented 11 months ago

The dbg2 files are not included in this zip file. Can you please include them for both OpenFAST and SIMA?

dzalkind commented 11 months ago

In the meantime, please also try this file: DISCON-UMaineSemi.IN.txt

In your attachment, it looks like the issue with the minimum pitch is resolved.

ChaojunYan commented 11 months ago

fast.zip sima.zip Thanks, the minimum pitch much imporved, but the still not very well when wind speed greater than rate speed