WISDEM / WEIS

Wind Energy with Integrated Servo-controls Toolset
https://weis.readthedocs.io/en/latest/
Apache License 2.0
53 stars 39 forks source link

ServoDyn Control from Modeling Options fails partly #249

Open ausdemschneider opened 11 months ago

ausdemschneider commented 11 months ago

Description

I'm trying to run a pitch override, controlled from the modeling_options.yaml file. Currently, only the final pitch position is written correctly to the ServoDyn.dat file while the other parameters as TPitManS1 are not transferred.

Steps to reproduce issue

  1. Take the example 05 from WEIS
  2. Add the pitch control override to the Level3 section of the modeling_options.yaml file:
    ServoDyn:
        BlPitchF(1): 80.
        TPitManS1: 1.
        PitManRat(1): 10.
  3. Check the ServoDyn.dat file in the temp folder

Current behavior

Only the value for the final pitch position is transferred, the others are not touched when the ServoDyn.dat file is generated.

---------------------- PITCH CONTROL -------------------------------------------
5                      PCMode      - Pitch control mode {0: none, 3: user-defined from routine PitchCntrl, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
0.0                    TPCOn       - Time to enable active pitch control (s) [unused when PCMode=0]
9999                   TPitManS(1) - Time to start override pitch maneuver for blade 1 and end standard pitch control (s)
9999                   TPitManS(2) - Time to start override pitch maneuver for blade 2 and end standard pitch control (s)
9999                   TPitManS(3) - Time to start override pitch maneuver for blade 3 and end standard pitch control (s) [unused for 2 blades]
7.0                    PitManRat(1) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 1 (deg/s)
7.0                    PitManRat(2) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 2 (deg/s)
7.0                    PitManRat(3) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 3 (deg/s) [unused for 2 blades]
80.0                   BlPitchF(1) - Blade 1 final pitch for pitch maneuvers (degrees)
90.0                   BlPitchF(2) - Blade 2 final pitch for pitch maneuvers (degrees)
90.0                   BlPitchF(3) - Blade 3 final pitch for pitch maneuvers (degrees) [unused for 2 blades]

Expected behavior

All parameters defined should be transferred to the ServoDyn.dat file.

dzalkind commented 11 months ago

Hi,

In a commit of a feature branch of WEIS that we have, the modeling options will override all other inputs. We will leave this open until that's added to develop.

For a quicker workaround:

We are re-starting development on this project, and hope to address these issues in the coming weeks.

Best, Dan

ausdemschneider commented 11 months ago

Hello Dan,

thanks for your support. I modified my current installation of WEIS to reflect the feature branch that you are mentioning. Now, all parameters are transferred to the ServoDyn.dat file except of TPitManS1. Do I HAVE to do this via the DLC or is there another possibility to also apply this since at least it's a possible Level3 parameter?

---------------------- PITCH CONTROL -------------------------------------------
5                      PCMode      - Pitch control mode {0: none, 3: user-defined from routine PitchCntrl, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
0.0                    TPCOn       - Time to enable active pitch control (s) [unused when PCMode=0]
9999                   TPitManS(1) - Time to start override pitch maneuver for blade 1 and end standard pitch control (s)
9999                   TPitManS(2) - Time to start override pitch maneuver for blade 2 and end standard pitch control (s)
9999                   TPitManS(3) - Time to start override pitch maneuver for blade 3 and end standard pitch control (s) [unused for 2 blades]
10.0                   PitManRat(1) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 1 (deg/s)
7.0                    PitManRat(2) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 2 (deg/s)
7.0                    PitManRat(3) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 3 (deg/s) [unused for 2 blades]
80.0                   BlPitchF(1) - Blade 1 final pitch for pitch maneuvers (degrees)
90.0                   BlPitchF(2) - Blade 2 final pitch for pitch maneuvers (degrees)
90.0                   BlPitchF(3) - Blade 3 final pitch for pitch maneuvers (degrees) [unused for 2 blades]

Thanks in advance!

Best regards, Jannic

dzalkind commented 10 months ago

Hi Jannic,

The quickest way to meet your needs would be to comment out these lines of code where TPitManS(*) is set for various "cases" based on the DLCs. Then, it should overwrite with your level 3 inputs.

Developers note: it is unclear which inputs are determined by cases and which are determined by the turbine model (fst_vt) and can be overwritten. You probably don't want to overwrite that input for all cases. Perhaps we allow users to overwrite inputs for specific DLC cases. Or, we let users manually edit their DLC cases before running them. I'm just brainstorming here because we are currently taking a closer look at the software surrounding DLC generation. Please feel free to provide any feedback on what method might work best in your workflow.

It's good to know that users might want to start their blades moving toward shutdown at different times. This could be an easy update to the dlc_generator, but we are also considering what features (e.g., shutdown, startup) the controller, ROSCO, can also provide in addition to ServoDyn.

Thanks for the feedback. Good luck!

Best, Dan

ausdemschneider commented 10 months ago

Hi Dan,

the workaround that you proposed commenting the lines is working now, thanks!

Regarding the workflow, I think the option to be able to overwrite the inputs for specific DLC cases would be nice. Especially in the failure DLCs - where also I'm currently experimenting - users will have custom needs depending on the specific turbine. Maybe there could also be something like a "developer" DLC, where all parameters can be overwritten. Another alternative that I would find attractive is the following, also just brainstorming. I would define DLCs in the modeling_options.yaml (instead of only using the predefined cases defined in dlc_generator.py) including the definition of Level3 parameters for each DLC. For the DLCs with several varying subcases like different failure modes for specific turbines, I would for example define several DLCs called "2.1.1" and so on. This workflow would give me the possibility to run a full certification setup with one start of WEIS while having a full overview of all case definitions in one input file.

Best regards, Jannic