Question about the generator torque- and pitch controller

Dear Jason,

currently I do my project work with the FAST Simulink Interface. The task is to design a generator torque- and a collective pitch controller for the NREL5MW Reference Wind turbine in Simulink.

In the Definition of the 5MW- Reference Wind Turbine there is no value for the transitional generator speed between region 2 and 2 1/2. In the Source Code for the Control System DLL you calculated the transitional generator speed between region 2 an 2 1/2 with the following equation:
VS_TrGnSp = ( VS_Slope25 - SQRT( VS_Slope25*( VS_Slope25 - 4.0VS_Rgn2KVS_SySp ) ) )/( 2.0*VS_Rgn2K )
Please can you explain where this equation comes from?

After implementing the generator torque controller in Simulink, it works fine. The most problems I have with the collective pitch controller.
When I use the Kp (Kp=0.01882681 s) and the Ki (Ki=0.008068634) values from the Definition of the 5MW- Reference Wind the pitch controller begins to oscillate.
The plot shows the oscillating pitch controller for a constant wind (WindVxi=11.4m/s) and a inetial rotor speed of 12.1 rpm.
I don’t know why, because I didn’t change the masses or inertia for the NREL5MW Windturbine.
So the Kp and the Ki values and the pitch sensitivity dP/d(theta) should be the same.

Thanks for your help,

Dear Lars,

That equation comes from solving for the point where the curve for the Region 2 control law (k*omega^2) intersects the curve for the Region 2.5 control law (linear). I’m sure you can rederive it with a bit of algebra.

I’m not sure why your Simulink model shows a different response. Here are a couple questions:
*Have you implemented the low-pass filter on the generator speed?
*Are you using the correct units for blade pitch (the gains you report assume blade pitch is in radians, not degrees)?

Best regards,

Dear Jason,

thank you for your fast reply. I have implemented the low- pass filter, which is described in the Defintion NREL5MW reference.
The incoming speed error for the pitch controller is in rad/s and I hope this is right.
These are the used values for the pitch controller, which I have defined in the Simsetup file.

PC_RefSpd = 122.9096; % (rad/s) Reference HSS speed for pitch
PC_MaxPit = pi/2; % (rad) Maximum pitch limit
PC_MinPit = 0; % (rad) Minimum pitch limit
PC_MaxRat = 8pi/180; % (rad) Maximum pitch rate limit (for NREL5MW wind turbine is the Maximum pitch rate limit equal to the minimum pitch rate)
PC_GainS = 6
pi/180; % (rad) Is the blade- pitch angle at which the sensitivity has doubled
PC_KP = 0.01882681; % - Proportional Gain
PC_KI = 0.008068634; % (s) Integration Gain

Mabye there is a mistake in the units.

Dear Lars,

I don’t see any obvious problems with your Simulink model. (Please note the units of PC_KP should be “s” and units of PC_KI should be “-” – you have these switched in your comments, but these are comments, so, won’t effect the solution.)

I don’t know where the problem is. I suggest you debug what your Simulink model is giving you versus what the DLL is computing in a very step-by-step process to identify the difference(s).

Best regards,

Dear Jason,

I found the problem for the oszillating pitch controller. You defined two conditions for Region 3 of the generator torque controller.
The first condition is that the filtered rotor speed is bigger than 1161.963 rpm and the second condition is that the pitch is bigger than 1°.
At first I neglected the second condition. The result was a oszillating pitch.
After implementing the second condition in the generator torque controller the pitch controller works without oszillation.

My last question regarding the pitch controller design. I compared your pitch controller
design with the design technique which is explained in the technical report “Advanced Control Design for Wind Turbines”.
In the technical report they calculated K_I and K_P for the CART wind turbine over the following equations (In the technical report equation 3.10):

K_I = (-omega^2*(1-B*K_D))/B

K _P= -A/B-(2Deltaomega(1-B*K_D))/B

The values for A and B they got from a linearization.

When I do the lineariziation for the NREL5MW reference wind turbine with a constant wind of 11.4 m/s and only one DOF (GenDOF)
I get the following values for A and B:

A=-3.823E-01 and B=-3.278E-01.

The values for K_I and K_P is calculted over equation 3.10 to:
K_I = 1.0982
K_P = 1.396
I used for omega 0.6 , delta 0.7 and K_D=0.

This is the linearization input file:

---------------------- FAST LINEARIZATION CONTROL FILE -------------------------
NREL 5.0 MW offshore baseline linearization input properties.
---------------------- PERIODIC STEADY STATE SOLUTION --------------------------
True CalcStdy - Calculate periodic steady state condition {False: linearize about initial conditions} (flag)
3 TrimCase - Trim case {1: find nacelle yaw, 2: find generator torque, 3: find collective blade pitch} (switch) [used only when CalcStdy=True and GenDOF=True]
0.0001 DispTol - Convergence tolerance for the 2-norm of displacements in the periodic steady state calculation (rad ) [used only when CalcStdy=True]
0.001 VelTol - Convergence tolerance for the 2-norm of velocities in the periodic steady state calculation (rad/s) [used only when CalcStdy=True]
---------------------- MODEL LINEARIZATION -------------------------------------
36 NAzimStep - Number of equally-spaced azimuth steps in periodic linearized model (-)
1 MdlOrder - Order of output linearized model {1: 1st order A, B, Bd, C, D, Dd; 2: 2nd order M, C, K, F, Fd, VelC, DspC, D, Dd} (switch)
---------------------- INPUTS AND DISTURBANCES ---------------------------------
1 NInputs - Number of control inputs [0 (none) or 1 to 4+NumBl] (-)
4 CntrlInpt - List of control inputs [1 to NInputs] {1: nacelle yaw angle, 2: nacelle yaw rate, 3: generator torque, 4: collective blade pitch, 5: individual pitch of blade 1, 6: individual pitch of blade 2, 7: individual pitch of blade 3 [unavailable for 2-bladed turbines]} (-) [unused if NInputs=0]
1 NDisturbs - Number of wind disturbances [0 (none) or 1 to 7] (-)
1 Disturbnc - List of input wind disturbances [1 to NDisturbs] {1: horizontal hub-height wind speed, 2: horizontal wind direction, 3: vertical wind speed, 4: horizontal wind shear, 5: vertical power law wind shear, 6: linear vertical wind shear, 7: horizontal hub-height wind gust} (-) [unused if NDisturbs=0]

Is there a mistake in the linearization file or is this technique not applicable for the calculation of the K_I and K_P values for the NREL5MW reference wind turbine?

Thanks for your help and regards

Dear Lars,

I’m glad to hear that you fixed the problem with your Simulink model.

I think you are getting different gains between those published for the NREL 5-MW turbine and those derived following the procedure described in the “Advanced Control Design for Wind Turbines” technical report for two reasons:

*The NREL 5-MW control gains are based on generator speed error whereas the “Advanced Control Design for Wind Turbines” technical report is based on rotor speed error. This leads to a factor of the gearbox ratio (97:1 for the NREL 5-MW turbine) between the gains using the two methods. With this factor, your results are within about 20% of the published values for the NREL 5-MW turbine.
*The remaining differences are likely the result of the fact that the gains for the NREL 5-MW turbine were derived using a customized version of FAST that employed a frozen wake assumption during linearization, which is described more in the following forum topic:

I hope that helps.

Best regards,

Dear Jason,

thanks for your fast reply. Now I can finish the controller design in Simulink :slight_smile:.

Best regards,