PI controller Gain scheduling for 5MW Reference Wind Turbine via BeamDyn

Hello all,

I’m trying to first: tune a PI collective pitch controller for the 5MW reference Wind Turbine using beamdyn module to regulate rotor speed in the 3 Region, following “Advanced Control Design for Wind Turbines; Part I” Control Design/42437.pdf".
The idea is to use scalar values of A,B to calculate the Kp,Ki gains through Eq(3.10).
The procedure ran smoothly, enabling only 1 DOF: GenSpeed during linearization with Elastodyn.
yet when repeating the process using Beamdyn, with the same settings except for the linearization tolerances and step size in the primary input file )in the MBC transformation generated 290*290 AvgA states (again: only enabling generator speed DOF) so I picked the scalar value of:
A to be Avg(146,146) which corresponds to 'ED First time derivative of Variable speed generator DOF),
B as Avg(146,9) which is the collective pitch angle input corresponding to generator speed state.
The obtained Kp, Ki gains were unfortunately not optimum and gave poor responses.

I also noticed while trying to do gain scheduling (also following the 42437.pdf Reference) by linearizing with various wind speeds to obtain the double value of B that the change of the chosen scalar B change only slightly with different wind speeds (B at a wind speed of 18 m/s = -65.3/ B = -64.7 at wind speed 30 m/s ).

Any help is appreciated. Thank you so much for your attention and participation.

Dear @Abdelrhman.Hamed,

When BeamDyn is enabled, there is no way to make the blades rigid, so, all of the BeamDyn DOFs show up as states in the linearized model derived from OpenFAST. If you want to model a rigid rotor, I would use ElastoDyn to model the blades (with the blade DOFs disabled in ElastoDyn) instead of enabling BeamDyn.

Best regards,

Dear Professor Jonkman,

Thank you for your swift answer.
I’m writing my Bachelor thesis about a comparative Analysis of Blade modeling using Beamdyn and Elastodyn so I am repeating the same steps once with Beamdyn and once with Elastodyn.

I have enabled the 1st flap-wise blade mode. yet it did not solve the mentioned issue regarding tuning the PI controller and gain scheduling its gains, is the procedure mentioned in “Advanced Control Design for Wind Turbines; Part I” Control Design/42437.pdf” possible using Beamdyn?
what do you think about the cause of the issue/ the mistake in my approach ?.

Dear @Abdelrhman.Hamed,

I’m not really understanding what you want to do. The paper you reference describes the approach for deriving the baseline controller gains with a rigid rotor model. Do you want to expand this approach to account for rotor flexibility?

Best regards,

Exactly. I’m trying to tune the baseline PI controller to achieve good response running modeling the blades using Beamdyn.
Then to schedule the obtained Kp, Ki gains to expand the operating range of that PI controller over a wide range of wind speed (step and stochastic wind inflow conditions).

Basically, the same approach as the baseline pitch controller in the paper but with the flexible blades modeled using Beamdyn. ( I don’t believe anymore that the procedure detailed in the paper is valid for flexible blades modeled using Beamdyn)
Any hints on the ideal way to achieve that ?

Best regards,

Dear @Abdelrhman.Hamed,

The baseline controller you are referencing is designed for a rigid rotor, but the controller is likely quite applicable for a flexible rotor, whether modeled in ElastoDyn or BeamDyn. Typically blade flexibility would not need to be included in the linear model used by the controller unless an objective of the controller is minimize blade loading.

For more advanced controls implementation, I would recommend that you look at ROSCO: GitHub - NREL/ROSCO: A Reference Open Source Controller for Wind Turbines.

Best regards,

1 Like

hi Mr Jonkman
I have a question
How can we ensure the correctness of the controller (for pitch control) that we have set in Simulink?
Should the values ​​of overshoot or settling time or rise time have specific values?

In continuation of the above question
What should be the maximum step we choose for the wind?

Dear @Ali.Rouhbakhsh,

I’m not sure I understand your question. Are you referring to the design of your own controller or implementation of a controller in Simulink that is meant to mimic another controller used as reference?

Best regards,

I am referring to my own controller design
I first started with simple and steady winds and then tried some step winds
I want to know according to which wind I should adjust Kp and Ki coefficients in my controller
In other words, my turbine works between 3 and 25 m/s wind speed and its nominal wind speed is 11 m/s. Now I want to know the Kp and Ki coefficients in my controller should be adjusted according to which wind speed? For example, if I want to reduce overshoot, should I set Kp and Ki in the nominal wind or in the cut-out wind or in the unit step wind?

thanks

Hi Ali,

Generally, we try to tune controllers to have the lowest possible tower loads and generator transients within 20% of the rated generator speed in the worst-case DLC simulations (usually DLC 1.3). However, there are many different ways to tune controllers. I suggest you review some of the literature and see what suits your needs.

This is my own paper, but several tuning methods are discussed in the introduction:

You can also try an openly available case that we consider well-tuned and compare your results to it: ROSCO/Test_Cases/NREL-5MW at main · NREL/ROSCO · GitHub

Best, Dan

1 Like

Hi Mr Zalkind
How can I design a controller for turbulent winds(NTM) ?

I have a problem that I have described in the following posts

https://forums.nrel.gov/t/behavier-of-rotor-speed-of-turbine-in-different-types-of-winds/4027?u=ali.rouhbakhsh

https://forums.nrel.gov/t/behavier-of-rotor-speed-of-turbine-in-different-types-of-winds/4027/3?u=ali.rouhbakhsh

Hi Ali,

Here is a standard wind turbine controller we use as a reference: WES - A reference open-source controller for fixed and floating offshore wind turbines.

The latest version of the code is here: GitHub - NREL/ROSCO: A Reference Open Source Controller for Wind Turbines. Please visit the readthedocs page for more information about the various examples you can use to get started. It is regularly tested in NTM winds.

The links you provided don’t seem to work for me.

Best, Dan

I invited you to a topic and my question is there

Hi Mr Zalkind

I went to readthedocs about ROSCO and found that I need to install it first
Then when I went to the installation guide, there were explanations that were unclear to me (like picture bellow)

For example, what does “create a conda environment” mean and what should we do with the codes given in the boxes below?