Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ServoDyn Control from Modeling Options fails partly #249

Open
ausdemschneider opened this issue Nov 8, 2023 · 4 comments
Open

ServoDyn Control from Modeling Options fails partly #249

ausdemschneider opened this issue Nov 8, 2023 · 4 comments
Assignees

Comments

@ausdemschneider
Copy link

ausdemschneider commented Nov 8, 2023

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.
  1. 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
Copy link
Collaborator

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:

  • The geometry input max_pitch_rate will set PitManRat(*)
  • TPitManS(1) depends on the DLC that is being run. The logic for shutdown_time is around here.

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

Best, Dan

@ausdemschneider
Copy link
Author

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
Copy link
Collaborator

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
Copy link
Author

ausdemschneider commented Nov 20, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants