Skip to content

Commit 3c5a91c

Browse files
committed
Updated-new yaml with extra tuning parameters
1 parent b28fc4a commit 3c5a91c

File tree

12 files changed

+95
-29
lines changed

12 files changed

+95
-29
lines changed

Examples/34_AEPS_Simulation.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
Adaptive Envelope Protection System (AEPS) for Wind Turbines
55
66
This example demonstrates the Adaptive Envelope Protection System (AEPS) for a wind turbine. It presents simulation results with the AEPS system disabled (ASO = 0) and enabled (ASO = 1).
7-
The AEPS is designed to protect turbines from excessive loads, i.e., excessive thrust force. It is an adaptive algorithm that learns the turbine’s operating conditions in real time and ensures its safe operation within a predefined thrust limit. By monitoring wind and turbine states such as wind speed, thrust force, and rotor speed, AEPS online adapts to the turbine’s operational conditions through an adaptive neural network (LPNN) and predicts the near-future thrust response.
8-
When the predicted thrust response is about to exceed the predefined thrust limit, AEPS collectively changes the turbine blade pitch angles to ensure safe operation. This is achieved by calculating a theoretical wind speed, referred to as the envelope wind speed, and comparing it with the actual wind speed to determine whether the turbine is operating under excessive thrust or not. If the actual wind speed is lower than the envelope wind speed, the turbine operates safely; otherwise, it experiences excessive thrust force.
7+
The AEPS is designed to protect turbines from excessive loads, i.e., excessive thrust force. It is an adaptive algorithm that learns the turbine’s operating conditions in real time and ensures its safe operation within a predefined thrust limit. By monitoring wind and turbine states such as wind speed, thrust force, and rotor speed, AEPS adapts online to the turbine’s operational conditions through an adaptive neural network (LPNN) and predicts the near-future thrust response.
8+
When the thrust response is about to exceed the predefined thrust limit, AEPS collectively changes the turbine blade pitch angles to ensure safe operation. This is achieved by calculating a theoretical wind speed, referred to as the envelope wind speed, and comparing it with the actual wind speed to determine whether the turbine is operating under excessive thrust or not. If the actual wind speed is lower than the envelope wind speed, the turbine operates safely; otherwise, it experiences excessive thrust force.
99
When the thrust is close to exceeding the predefined limit, AEPS generates an additional blade pitch reference signal through a limit avoidance design parameter based on the offset between the actual and envelope wind speeds. This additional signal is added to the blade pitch controller output, thereby collectively increasing the blade pitch angles. This avoidance action reduces thrust force and keeps the turbine within the predefined safe limit, ensuring continued safe operation of the turbine.
1010
More information on AEPS can be found in:
1111
Sahin, M., Yavrucuk, I., Adaptive envelope protection control of wind turbines under varying operational conditions, Energy, Volume 247, 2022, 123544, ISSN 0360-5442, https://doi.org/10.1016/j.energy.2022.123544.
@@ -14,20 +14,21 @@
1414
Current AEPS Design and Implementation
1515
1616
In the current implementation, different from the above reference, thrust and wind speed estimates, and filtered rotor speed are used in AEPS rather than their actual values. In addition, since blade pitch response exhibits a lag when AEPS applies an avoidance signal, the system is activated earlier: when the actual wind speed approaches the calculated envelope wind speed. Also, a squashing function is used for the NN inputs.
17-
Finally, the predefined thrust force is calculated based on the maximum thrust force of the turbine using an eps_percent parameter. When the user selects an eps_percent value and activates the AEPS system (ASO = 1), the algorithm determines whether the turbine will operate under excessive thrust conditions and changes the blade pitch controller output, only when necessary, thereby keeping the thrust force within the selected limit.
17+
Finally, the predefined thrust force is calculated based on the maximum thrust force of the turbine using an eps_percent parameter. When the user selects an eps_percent value and activates the AEPS system (ASO = 1), based on the selected AEPS activation time t_act for avoidance, the algorithm determines whether the turbine will operate under excessive thrust conditions and starts changing the blade pitch controller output, only when necessary, thereby adjusting the blade pitch angles and keeping the thrust force within the selected limit. AEPS is not recommended to be activated during learning phase, i.e at initial seconds or aggressive thrust behavior possibly occurring at the beginning of simulations.
1818
1919
AEPS Tuning Procedure
2020
21-
The AEPS implementation is realized such that the user can tune the following three parameters:
21+
The AEPS implementation is realized such that the user can tune the following parameters:
2222
• Observer gain (Kc)
2323
• Neural network learning rate (Γ / Gamma)
24-
• e-modification term gain (k)
24+
• e-modification term gain (ke)
25+
• wind margin (Um)
2526
• Effective limit avoidance parameter (e_dp)
26-
AEPS tuning can be started with selecting the observer gain (Kc) and neural network (NN) learning rate (Γ) when AEPS is disabled (ASO = 0). The key purpose is to obtain an AEPS-predicted thrust force (Thrst_est) that is very close to the turbine thrust force (Thrst). The designer can compare these two parameters (Thrst_est and Thrst). For ease of comparison, the designer can also check the error between them (T_error = Thrst – Thrst_est), which should be close to zero.
27+
AEPS tuning can be started with selecting the observer gain (Kc) and neural network (NN) learning rate (Γ) when AEPS is disabled (ASO = 0). The key purpose is to obtain an AEPS-predicted thrust force (Thrst_est) that is very close to the estimated turbine thrust force (Thrst). The designer can compare these two parameters (Thrst_est and Thrst). For ease of comparison, the designer can also check the error between them (T_error = Thrst – Thrst_est), which should be close to zero.
2728
Greater emphasis can be first placed on tuning the observer gain Kc, which controls the convergence rate of the algorithm. Values such as 2, 3, 4, 5 and so on can be tested, with the goal of minimizing T_error. Once a suitable Kc is chosen, the NN learning rate Γ can be adjusted to further reduce the error. The e-modification term gain (ke) is usually a small number such as 0.01, 0.02, etc. Nevertheless, it might take higher values such as 0.5, or 1. Small numbers such as 0.02 are recommended for ke.
28-
The learning rate Γ determines how quickly the neural network adapts to turbine operating conditions, i.e., predicting the turbine thrust force. A higher learning rate Γ results in faster learning but high oscillations in the AEPS-predicted thrust force. Once adaptation is achieved, the AEPS-predicted thrust (Thrst_est) should closely track the turbine thrust force (Thrst). Here, it should be also noted that the adaptation/learning is satisfied for a range of these tuning values. Therefore, the designer should decide all of these values based on the satisfied error.
29-
When the observer gain, learning rate and e-modification term gain are tuned as desired, AEPS can be activated (ASO = 1) to tune the effective limit avoidance parameter (e_dp). This parameter is highly sensitive to the turbine actuator. If the actuator model changes, e_dp may need to be re-tuned. It should be tuned such that the turbine thrust stays within the predefined thrust limit value. It should be kept in mind that choosing a high value for e_dp might cause oscillations in simulations.
30-
Finally, if desired, after AEPS activation, the designer may fine-tune the observer gain and learning rate, again by comparing AEPS-predicted thrust with the turbine thrust and monitoring the resulting error and also the limit avoidance parameter, e_dp by checking the turbine thrust force whether staying within the limit or riding the turbine approximately at the limit.
29+
The learning rate Γ determines how quickly the neural network adapts to turbine operating conditions, i.e., predicting the turbine thrust force. A higher learning rate Γ results in faster learning but high oscillations in the AEPS-predicted thrust force. Once adaptation is achieved, the AEPS-predicted thrust (Thrst_est) should closely track the estimated turbine thrust force (Thrst). Here, it should be also noted that the adaptation/learning is satisfied for a range of these tuning values. Therefore, the designer should decide all of these values based on the satisfied error.
30+
When the observer gain, learning rate and e-modification term gain are tuned as desired, AEPS can be activated (ASO = 1) to tune the effective limit avoidance parameter (e_dp). This parameter is highly sensitive to the turbine actuator. If the actuator model changes, e_dp may need to be re-tuned. It should be tuned such that the turbine thrust stays within the predefined thrust limit value. It should be kept in mind that choosing a high value for e_dp might cause oscillations in simulations. Also, the lag in the blade pitch response can also be compensated by the parameter Um, which helps AEPS generate an earlier avoidance signal in order to keep the turbine thrust within the limit. Um is just a wind margin showing how much close the wind speed estimate to the envelope wind speed.
31+
Finally, if desired, after AEPS activation, the designer may fine-tune the observer gain and learning rate, again by comparing AEPS-predicted thrust with the estimated turbine thrust and monitoring the resulting error and also the limit avoidance parameter, e_dp , wind margin Um by checking the turbine thrust force whether staying within the limit or riding the turbine approximately at the limit.
3132
3233
"""
3334

Examples/35_BEPS_Simulation.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22
35_BEPS_Simulation
33
------------------
44
Basic Envelope Protection System (BEPS) for Wind Turbines
5-
This example demonstrates a basic Envelope Protection System for wind turbines. Compared to the AEPS system in Example 34, this system does not include any Neural Network or Observer and can be considered a simplified version.
6-
As in AEPS, an eps_percent parameter is defined in this algorithm, and the predefined thrust limit is calculated based on the turbine’s maximum thrust using this parameter. The offset between the predefined thrust limit (PreDf_Thrst) and the turbine thrust (Thrst) is used to calculate an avoidance signal through a limit avoidance design parameter, e_dp. This avoidance signal is then applied to modify the blade pitch controller output, i.e., the blade pitch reference, collectively increasing the blade pitch angles when the turbine approaches the limit. This avoidance action allows the turbine to operate safely within the defined thrust limit.
7-
The BEPS system generates an avoidance signal when the turbine thrust approaches within five percent of the predefined limit, accounting for the delay in blade pitch response after the avoidance signal is applied. In this system, the user only needs to tune the limit avoidance design parameter, e_dp. A value around 0.5 or less might be choosen for this parameter. A high value might cause oscillation in simulations.
5+
This example demonstrates a Basic Envelope Protection System for wind turbines. It presents simulation results with the BEPS system disabled (ASO = 0) and enabled (ASO = 2). Compared to the AEPS system in Example 34, this system does not include any Neural Network or Observer components and can be considered a simplified version.
6+
As in AEPS, an eps_percent parameter is defined in this algorithm, and the predefined thrust limit is calculated based on the turbine’s maximum thrust using this parameter. The offset between the predefined thrust limit (PreDf_Thrst) and the estimated turbine thrust (Thrst) is used to calculate an avoidance signal through a limit avoidance design parameter, e_dp. This avoidance signal is then applied to modify the blade pitch controller output, i.e., the blade pitch reference, collectively increasing the blade pitch angles when the turbine approaches the thrust limit. This avoidance action allows the turbine to operate safely within the defined thrust limit.
7+
The BEPS system starts generating an avoidance signal when the estimated turbine thrust approaches within a specified percentage (Tm) of the predefined thrust limit, accounting for the lag in blade pitch response when the avoidance signal is applied.
8+
9+
BEPS Tuning Procedure
10+
11+
In this system, the user needs to tune the limit avoidance design parameter, e_dp. A value around 0.5 or less might be choosen for this parameter as higher values might cause oscillation in simulations. Another paramater to tune might be thrust margin parameter Tm, which is defined in percent and indicates how close the estimated turbine thrust is to the predefined thrust limit. The parameter Tm just decides when BEPS starts generating the avoidance signal and helps compensate for the lag in blade pitch response by applying the avoidance signal earlier to keep the turbine within the limit.
812
913
"""
1014

Examples/Tune_Cases/IEA15MW_AEPS.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ controller_params:
6161
Kc: 2 # AEPS Observer Gain
6262
gamma: 2400 # AEPS Learning Rate
6363
ke: 0.02 # AEPS e-modification term gain
64+
Um: 1.0 # Wind margin for AEPS avoidance
6465
e_dp: 0.032 # AEPS design parameter for effective avoidance
65-
66+
t_act: 80 # AEPS activation time for avoidance
6667

Examples/Tune_Cases/IEA15MW_BEPS.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ controller_params:
5858
#Adaptive Safe Operation
5959
#BEPS Parameters
6060
eps_percent: 0.8 # Percent Peak Reduction [%, <= 1 ], {default = 80%}
61+
Tm: 0.05 # Thrust margin for BEBS avoidance [%]
6162
e_dp: 0.4 # BEPS design parameter for effective avoidance
6263

6364

docs/source/toolbox_input.rst

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -424,22 +424,42 @@ controller_params
424424
:code:`Kc` : Float
425425
AEPS Observer Gain
426426

427-
*Default* = 50 *Maximum* = 70
427+
*Default* = 2 *Minimum* = 1
428428

429429
:code:`gamma` : Float
430430
AEPS Learning Rate
431431

432-
*Default* = 20 *Maximum* = 150
432+
*Default* = 2400
433+
434+
:code:`ke` : Float
435+
AEPS e-modification term gain
436+
437+
*Default* = 0.02
438+
439+
:code:`Um` : Float
440+
Wind margin for AEPS avoidance
441+
442+
*Default* = 1.0
443+
444+
:code:`Tm` : Float
445+
Thrust margin for BEBS avoidance [%]
446+
447+
*Default* = 0.05
433448

434449
:code:`e_dp` : Float
450+
AEPS/BEPS design parameter for effective avoidance
451+
452+
*Default* = 0.032
453+
454+
:code:`t_act` : Float
435455
AEPS design parameter for effective avoidance
436456

437-
*Default* = 0.1 *Maximum* = 5
457+
*Default* = 80 *Minimum* = 5
438458

439459
:code:`PreDf_Thrst` : Float
440460
AEPS Pre-Defined Thrust Limit [MN]
441461

442-
*Default* = 0.5 *Maximum* = 5
462+
*Default* = 2.04356174e+00
443463

444464
:code:`sd_maxpit` : Float, rad
445465
Maximum blade pitch angle to initiate shutdown [rad], {default =

rosco/controller/rosco_registry/rosco_types.yaml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,9 +495,18 @@ ControlParameters:
495495
ke:
496496
<<: *real
497497
description: AEPS e-modification term gain
498+
Um:
499+
<<: *real
500+
description: Wind margin for AEPS avoidance
501+
Tm:
502+
<<: *real
503+
description: Thrust margin for BEBS avoidance [%]
498504
e_dp:
499505
<<: *real
500-
description: AEPS design parameter for effective avoidance
506+
description: AEPS/BEPS design parameter for effective avoidance
507+
t_act:
508+
<<: *real
509+
description: AEPS activation time for avoidance
501510
PreDf_Thrst:
502511
<<: *real
503512
description: AEPS Pre-Defined Thrust Limit [MN]

rosco/controller/src/ControllerBlocks.f90

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -229,24 +229,22 @@ SUBROUTINE AdaptiveEnvelopeProtectionSystem(LocalVar, CntrPar, objInst, PerfData
229229
if (CntrPar%ASO_Mode == 0) then
230230
LocalVar%Del_Beta = 0
231231

232-
!else if (CntrPar%ASO_Mode == 1) then
233-
!else if ((CntrPar%ASO_Mode == 1) and (LocalVar%time >= 80)) then
234-
else if (CntrPar%ASO_Mode == 1 .and. LocalVar%time >= 80) then
232+
else if (CntrPar%ASO_Mode == 1 .and. LocalVar%time >= CntrPar%t_act) then
235233

236234
! Detecting the Excessive Thrust Force and Generating Extra Blade Pitch Output
237235
!if (LocalVar%We_Vw - LocalVar%Uenv >= 0) then
238-
if (LocalVar%We_Vw - LocalVar%Uenv >= -1.0) then
236+
if (LocalVar%We_Vw - LocalVar%Uenv >= -CntrPar%Um) then
239237
!LocalVar%Del_Beta = CntrPar%e_dp * (LocalVar%We_Vw - LocalVar%Uenv)
240-
LocalVar%Del_Beta = CntrPar%e_dp * abs(LocalVar%We_Vw - (LocalVar%Uenv-1.0))
238+
LocalVar%Del_Beta = CntrPar%e_dp * abs(LocalVar%We_Vw - (LocalVar%Uenv-CntrPar%Um))
241239

242240
else
243241
LocalVar%Del_Beta = 0
244242
end if
245243

246244
else if (CntrPar%ASO_Mode == 2) then
247245

248-
if (LocalVar%Thrst - CntrPar%PreDf_Thrst >= -0.05*CntrPar%PreDf_Thrst) then
249-
LocalVar%Del_Beta = CntrPar%e_dp * abs(LocalVar%Thrst - (CntrPar%PreDf_Thrst-0.05*CntrPar%PreDf_Thrst))
246+
if (LocalVar%Thrst - CntrPar%PreDf_Thrst >= -CntrPar%Tm*CntrPar%PreDf_Thrst) then
247+
LocalVar%Del_Beta = CntrPar%e_dp * abs(LocalVar%Thrst - (CntrPar%PreDf_Thrst-CntrPar%Tm*CntrPar%PreDf_Thrst))
250248
else
251249
LocalVar%Del_Beta = 0
252250
end if

rosco/controller/src/ROSCO_Types.f90

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,10 @@ MODULE ROSCO_Types
128128
REAL(DbKi) :: Kc ! AEPS Observer Gain
129129
REAL(DbKi) :: gamma ! AEPS Learning Rate
130130
REAL(DbKi) :: ke ! AEPS e-modification term gain
131-
REAL(DbKi) :: e_dp ! AEPS design parameter for effective avoidance
131+
REAL(DbKi) :: Um ! Wind margin for AEPS avoidance
132+
REAL(DbKi) :: Tm ! Thrust margin for BEBS avoidance [%]
133+
REAL(DbKi) :: e_dp ! AEPS/BEPS design parameter for effective avoidance
134+
REAL(DbKi) :: t_act ! AEPS activation time for avoidance
132135
REAL(DbKi) :: PreDf_Thrst ! AEPS Pre-Defined Thrust Limit [MN]
133136
CHARACTER(1024) :: OL_Filename ! Input file with open loop timeseries
134137
INTEGER(IntKi) :: OL_Mode ! Open loop control mode {0 - no open loop control, 1 - open loop control vs. time, 2 - open loop control vs. wind speed}

0 commit comments

Comments
 (0)