Commit 8cfc4a4d authored by Alan Wai Hou Lio's avatar Alan Wai Hou Lio
Browse files

Unifying derating strategies. Tidying up.

parent 97834034
Pipeline #17753 failed with stage
in 26 seconds
......@@ -412,8 +412,10 @@ subroutine init_regulation_advanced(array1, array2) bind(c,name='init_regulation
Deratevar%strat = array1(79)
if (Deratevar%strat > 0) then
Deratevar%dr = array1(80)/100.0_mk
Deratevar%deltaK = array1(83)
endif
Deratevar%deltaK = array1(83)
deratevar%drAt90 = deratevar%deltaK*Kopt*(GenSpeedRefMax_Nom*0.9)**3/PeRated ! derating percentage when RotSpeed at 0.9 rated, governed by deltaK*Kopt*Omega**3
deratevar%Grad = (GenSpeedRefMax_Nom - GenSpeedRefMax_Nom*0.9)/(1 - deratevar%drAt90) ! Linear Gradient
! Read the additional control commands and parameters file
if (Deratevar%strat == 3) then
! Set initial mean wind speed from type2_dll init block
......@@ -709,6 +711,39 @@ subroutine update_regulation(array1, array2) bind(c,name='update_regulation')
TimerShutdown = 0.0_mk
TimerShutdown2 = 0.0_mk
endif
derating by Alan
! if (time.gt.200) then
! deratevar%strat = 4
! deratevar%dr = 1.05_mk
! endif
! if (time.gt.250) then
! deratevar%strat = 0
! deratevar%dr = 1.0_mk
! endif
! if (time.gt.300) then
! deratevar%strat = 4
! deratevar%dr = 1.10_mk
! endif
! if (time.gt.350) then
! deratevar%strat = 0
! deratevar%dr = 1.0_mk
! endif
! if (time.gt.400) then
! deratevar%strat = 4
! deratevar%dr = 0.9_mk
! endif
! if (time.gt.450) then
! deratevar%strat = 0
! deratevar%dr = 1.0_mk
! endif
! if (time.gt.500) then
! deratevar%strat = 4
! deratevar%dr = 0.8_mk
! endif
! if (time.gt.550) then
! deratevar%strat = 0
! deratevar%dr = 1.0_mk
! endif
!***********************************************************************************************
! Wind turbine controller
!***********************************************************************************************
......@@ -764,6 +799,9 @@ subroutine update_regulation(array1, array2) bind(c,name='update_regulation')
array2(44) = dump_array(40) ! 44: Estimated rotor-effecitve wind speed [m/s]
array2(45) = Deratevar%strat ! 46: Derating mode [-]
array2(46) = Deratevar%dr ! 45: Derating percentage [-]
array2(47) = GenSpeedRefMax ! 46 : rotor speed set point [rad/s]
array2(48) = Deratevar%drAt90 !
array2(49) = Deratevar%Grad
return
end subroutine update_regulation
!**************************************************************************************************
......
......@@ -321,14 +321,11 @@ subroutine derate_operation(GenSpeed, PitchVect, wsp, Pe, TTfa_acc, GenTorqueRef
case(4) ! unifying const-Omega and max-Omega Strategies, enabled uprating
deratevar%drAt90 = deratevar%deltaK*Kopt*(GenSpeedRefMax_Nom*0.9)**3/PeRated ! derating percentage when RotSpeed at 0.9 rated, governed by deltaK*Kopt*Omega**3
deratevar%Grad = (GenSpeedRefMax_Nom - GenSpeedRefMax_Nom*0.9)/(1 - deratevar%drAt90) ! Linear Gradient
GenSpeedRefMax= min(max(GenSpeedRefMax_Nom*0.9 + deratevar%Grad*(deratevar%dr - deratevar%drAt90),GenSpeedRefMin),GenSpeedRefMax_Nom*1.2_mk) ! Linear relationship between dr and RotSpeed
GenSpeedRefMax= GenSpeedRefMax_Nom*0.9 + deratevar%Grad*(deratevar%dr - deratevar%drAt90) ! Linear relationship between dr and RotSpeed
if (deratevar%dr < deratevar%drAt90) then ! When RotSpeed is below 0.9 rated, the RotSpeed is governed by Kopt law
GenSpeedRefMax = min(max((PeRated*deratevar%dr/(Kopt*deratevar%deltaK))**(1/3),GenSpeedRefMin),GenSpeedRefMax_Nom*1.2_mk)
GenSpeedRefMax = PeRated*deratevar%dr/(Kopt*deratevar%deltaK)**(1/3)
endif
GenSpeedRefMax = min(max(GenSpeedRefMax,GenSpeedRefMin),GenSpeedRefMax_Nom*1.2_mk) ! limit on RotSpeed set-point
GenTorqueRated = min(PeRated*deratevar%dr/GenSpeedRefMax,GenTorqueMax)
end select
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment