Closed Dwivedi07 closed 1 year ago
Dear @Dwivedi07 ,
Do you have the nacelle-yaw DOF enabled in ElastoDyn (YawDOF
= True)? If so, have you set the neutral yaw angle in ServoDyn equal to the initial yaw angle in ElastoDyn, i.e., YawNeut
= NacYaw
. If not, the nacelle-yaw angle will quickly snap back to 0deg and result in unrealistic loads and deflections. If you want to keep a nonzero yaw angle and keep the nacelle-yaw DOF enabled, then set both YawNeut
and NacYaw
to the same value.
Best regards,
Hi @jjonkman Thanks for your fast response. Yes, I had enabled YawDOF = True and previously the YawNeut was not equal to NacYaw . Now after making YawNeut = NacYaw, for the initial yaw greater than 8 degrees, I am getting sensible values for sway. Does this mean that if I want to implement my algorithm for Yaw Control? I need to update the Yaw neutral value at every call of the controller subroutine? As my final goal is to implement my own controller for Nacelle yaw so that I can reposition the turbine. Correct me if I am getting it wrong. If I am correct, I am not sure how will I update the YawNeut value once it is set in ElastoDyn file. Kindly guide me. Thanks and regards
Dear @Dwivedi07,
When active yaw control is enabled (YCMode
> 0 in ServoDyn), the nacelle-yaw angle command is defined by the yaw controller, overwriting what is specified via YawNeut
at times after TYCon
. YawNeut
is used for times before TYCon
and when active yaw control is not enabled (YCMode
= 0). See Figure 24 of the Old FAST v6 User's Guide (still generally applicable to OpenFAST) for more information: https://openfast.readthedocs.io/en/main/_downloads/d8bd014121d6505cb25cf49bee5eaa80/Old_FAST6_UsersGuide.pdf.
Best regards,
Thanks for your Reply @jjonkman, So If I am getting it correct you mean to say that if the YCMode>0 in SevoDyn which in my case is 5, then it YawNeut is automatically changed by openfast by using the value stored in YawPosCom. and similarly YawRateNeu by YawRateCom. In the yaw control subroutine I have assigned, at each call of the subroutine, YawRateCom to avrSWAP(48). But the terminal response I am getting is as:
OpenFAST--128-NOTFOUND Compile Info:
Time: 11:35:34+0530
OpenFAST input file heading: IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform
Running ElastoDyn. Running AeroDyn. Warning: Turning off Unsteady Aerodynamics because polar has constant data. (node 1, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 4, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 5, blade 1) Warning: Turning off Unsteady Aerodynamics because polar has constant data. (node 1, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 4, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 5, blade 2) Warning: Turning off Unsteady Aerodynamics because polar has constant data. (node 1, blade 3) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 3) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 4, blade 3) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 5, blade 3) Running InflowWind. Running HydroDyn. WARNING: The requested output channel is invalid: WavesF1xi WARNING: The requested output channel is invalid: WavesF1zi WARNING: The requested output channel is invalid: WavesM1yi WARNING: The requested output channel is invalid: WavesF2xi WARNING: The requested output channel is invalid: WavesF2zi WARNING: The requested output channel is invalid: WavesM2yi WARNING: The requested output channel is invalid: WavesF2xi WARNING: The requested output channel is invalid: WavesF2yi WARNING: The requested output channel is invalid: WavesF2zi WARNING: The requested output channel is invalid: WavesM2xi WARNING: The requested output channel is invalid: WavesM2yi WARNING: The requested output channel is invalid: WavesM2zi Generating incident wave kinematics and current time history. Calculating second order difference frequency wave kinematics. Calculating second order sum frequency wave kinematics. Reading in WAMIT output with root name "./HydroData/IEA-15-240-RWT-UMaineSemi". Computing radiation impulse response functions and wave diffraction forces. Calculating second order difference-frequency force using the full quadratic transfer function. Running MoorDyn (v2.0.0, 2022-12-08). This is MoorDyn v2, with significant input file changes from v1. Copyright: (C) 2022 National Renewable Energy Laboratory, (C) 2019 Matt Hall Parsing MoorDyn input file: ./IEA-15-240-RWT-UMaineSemi_MoorDyn.dat Warning: invalid output specifier FX. Must start with L, C, R, or B Warning: invalid output specifier FY. Must start with L, C, R, or B Warning: invalid output specifier FZ. Must start with L, C, R, or B Created mooring system: 3 lines, 6 points, 0 rods, 0 bodies. Finalizing initial conditions using dynamic relaxation.
t=1 FairTen 1: 3.68647E+06, 1, 2 t=2 FairTen 1: 1.84869E+06, 3.68647E+06, 1 t=3 FairTen 1: 2.63875E+06, 1.84869E+06, 3.68647E+06 t=4 FairTen 1: 2.44774E+06, 2.63875E+06, 1.84869E+06 t=5 FairTen 1: 2.30547E+06, 2.44774E+06, 2.63875E+06 t=6 FairTen 1: 2.58404E+06, 2.30547E+06, 2.44774E+06 t=7 FairTen 1: 2.29551E+06, 2.58404E+06, 2.30547E+06 t=8 FairTen 1: 2.58935E+06, 2.29551E+06, 2.58404E+06 t=9 FairTen 1: 2.37068E+06, 2.58935E+06, 2.29551E+06 t=10 FairTen 1: 2.49267E+06, 2.37068E+06, 2.58935E+06 t=11 FairTen 1: 2.37876E+06, 2.49267E+06, 2.37068E+06 t=12 FairTen 1: 2.46400E+06, 2.37876E+06, 2.49267E+06 t=13 FairTen 1: 2.37916E+06, 2.46400E+06, 2.37876E+06 t=14 FairTen 1: 2.50556E+06, 2.37916E+06, 2.46400E+06 t=15 FairTen 1: 2.38562E+06, 2.50556E+06, 2.37916E+06 t=16 FairTen 1: 2.49319E+06, 2.38562E+06, 2.50556E+06 t=17 FairTen 1: 2.41239E+06, 2.49319E+06, 2.38562E+06 t=18 FairTen 1: 2.44589E+06, 2.41239E+06, 2.49319E+06 t=19 FairTen 1: 2.44717E+06, 2.44589E+06, 2.41239E+06 t=20 FairTen 1: 2.40571E+06, 2.44717E+06, 2.44589E+06 t=21 FairTen 1: 2.48702E+06, 2.40571E+06, 2.44717E+06 t=22 FairTen 1: 2.36954E+06, 2.48702E+06, 2.40571E+06 t=23 FairTen 1: 2.51400E+06, 2.36954E+06, 2.48702E+06 t=24 FairTen 1: 2.37105E+06, 2.51400E+06, 2.36954E+06 t=25 FairTen 1: 2.48436E+06, 2.37105E+06, 2.51400E+06 t=26 FairTen 1: 2.41313E+06, 2.48436E+06, 2.37105E+06 t=27 FairTen 1: 2.43555E+06, 2.41313E+06, 2.48436E+06 t=28 FairTen 1: 2.46335E+06, 2.43555E+06, 2.41313E+06 t=29 FairTen 1: 2.40373E+06, 2.46335E+06, 2.43555E+06 t=30 FairTen 1: 2.47935E+06, 2.40373E+06, 2.46335E+06 t=31 FairTen 1: 2.38984E+06, 2.47935E+06, 2.40373E+06 t=32 FairTen 1: 2.48137E+06, 2.38984E+06, 2.47935E+06 t=33 FairTen 1: 2.40724E+06, 2.48137E+06, 2.38984E+06 t=34 FairTen 1: 2.46163E+06, 2.40724E+06, 2.48137E+06 t=35 FairTen 1: 2.42342E+06, 2.46163E+06, 2.40724E+06 t=36 FairTen 1: 2.44514E+06, 2.42342E+06, 2.46163E+06 t=37 FairTen 1: 2.42570E+06, 2.44514E+06, 2.42342E+06 t=38 FairTen 1: 2.45132E+06, 2.42570E+06, 2.44514E+06 t=39 FairTen 1: 2.43342E+06, 2.45132E+06, 2.42570E+06 t=40 FairTen 1: 2.44080E+06, 2.43342E+06, 2.45132E+06 t=41 FairTen 1: 2.43845E+06, 2.44080E+06, 2.43342E+06 t=42 FairTen 1: 2.42702E+06, 2.43845E+06, 2.44080E+06 t=43 FairTen 1: 2.45370E+06, 2.42702E+06, 2.43845E+06 t=44 FairTen 1: 2.42074E+06, 2.45370E+06, 2.42702E+06 t=45 FairTen 1: 2.46427E+06, 2.42074E+06, 2.45370E+06 t=46 FairTen 1: 2.40552E+06, 2.46427E+06, 2.42074E+06 t=47 FairTen 1: 2.46695E+06, 2.40552E+06, 2.46427E+06 t=48 FairTen 1: 2.41463E+06, 2.46695E+06, 2.40552E+06 t=49 FairTen 1: 2.45200E+06, 2.41463E+06, 2.46695E+06 t=50 FairTen 1: 2.43889E+06, 2.45200E+06, 2.41463E+06 t=51 FairTen 1: 2.42732E+06, 2.43889E+06, 2.45200E+06 t=52 FairTen 1: 2.45209E+06, 2.42732E+06, 2.43889E+06 t=53 FairTen 1: 2.41928E+06, 2.45209E+06, 2.42732E+06 t=54 FairTen 1: 2.45816E+06, 2.41928E+06, 2.45209E+06 t=55 FairTen 1: 2.42231E+06, 2.45816E+06, 2.41928E+06 t=56 FairTen 1: 2.44689E+06, 2.42231E+06, 2.45816E+06 t=57 FairTen 1: 2.43339E+06, 2.44689E+06, 2.42231E+06 t=58 FairTen 1: 2.43537E+06, 2.43339E+06, 2.44689E+06 t=59 FairTen 1: 2.44526E+06, 2.43537E+06, 2.43339E+06 t=60 FairTen 1: 2.43287E+06, 2.44526E+06, 2.43537E+06 Fairlead tensions did not converge within TMaxIC=60 seconds. MoorDyn initialization completed. Running ServoDyn. Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux). Using legacy Bladed DLL interface.
FAST_InitializeAll:HydroDyn_Init:HydroDynInput_ProcessInitData: A requested output channel is invalid HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the HydroDyn input file.
Time: 0 of 800 seconds.
ROSCO Warning: Did not find Echo in input file. Using default value of 0
ROSCO Warning: Did not find AWC_Mode in input file. Using default value of 0
ROSCO Warning: Did not find CC_Mode in input file. Using default value of 0
ROSCO Warning: Did not find StC_Mode in input file. Using default value of 0
ROSCO Warning: Did not find AWC_NumModes in input file. Using default value of 0
ROSCO Warning: Did not find correct size AWC_n in input file. Using default value of [ 0 ]
ROSCO Warning: Did not find correct size AWC_harmonic in input file. Using default value of [ 0 ]
ROSCO Warning: Did not find correct sizeAWC_freq in input file. Using default value of [ 0.0000000000000000 ]
ROSCO Warning: Did not find correct sizeAWC_amp in input file. Using default value of [ 0.0000000000000000 ]
ROSCO Warning: Did not find correct sizeAWC_clockangle in input file. Using default value of [ 0.0000000000000000 ]
ROSCO Warning: Did not find CC_Group_N in input file. Using default value of 0
ROSCO Warning: Did not find correct size CC_GroupIndex in input file. Using default value of [ 0 ]
ROSCO Warning: Did not find CC_ActTau in input file. Using default value of 0.0000000000000000
ROSCO Warning: Did not find StC_Group_N in input file. Using default value of 0
ROSCO Warning: Did not find correct size StC_GroupIndex in input file. Using default value of [ 0 ]
ROSCO Warning: Did not find correct size Ind_CableControl in input file. Using default value of [ 0 ]
ROSCO Warning: Did not find correct size Ind_StructControl in input file. Using default value of [ 0 ]
Generator speed: 7.6 RPM, Pitch angle: 1.0 deg, Power: 0.0 kW, Est. wind Speed: 12.0 m/s
Sway: -2.25703843E-05
Surge: -3.76833523E-05
Total Yaw: -4.2526378136045241E-003
Sway: 1.19104538E-04
Surge: -1.50621156E-04
Total Yaw: 0.40697543777164075
FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:AD_CalcOutput:RotCalcOutput:BEMT_CalcOut put(node 47, blade 2):UA_CalcOutput:Mach number exceeds 0.3. Theory is invalid. This warning will not be repeated though the condition may persist. BEMT_CalcOutput(node 3, blade 3):UA_CalcOutput:UA_BlendSteady:Temporarily turning off UA due to high angle of attack or low relative velocity. This warning will not be repeated though the condition may persist.
Sway: 3.26840091E-04
Surge: -3.45947017E-04
Total Yaw: 1.5054014535076916
Sway: -2.68358184E-04
Surge: -5.02954645E-04
Total Yaw: 2.2615640189830959
Sway: -1.06034556E-03
Surge: -5.95252088E-04
Total Yaw: 2.4093349494887142
Sway: -2.25230237E-03
Surge: -6.30341237E-04
Total Yaw: 2.1796871256117525
Sway: -3.02591501E-03
Surge: -5.06707234E-04
Total Yaw: 2.1553599125721306
Sway: -2.93639419E-03
Surge: -2.78355583E-04
Total Yaw: 2.6906488860076667
Sway: -2.11750576E-03
Surge: 2.41575581E-05
Total Yaw: 3.5655604810718446
Sway: -8.00900394E-04
Surge: 4.54969733E-04
Total Yaw: 4.2813551341055334
Sway: 5.30378486E-04
Surge: 9.99842887E-04
Total Yaw: 4.5085588174559179
Sway: 1.77815999E-03
Surge: 1.58992759E-03
Total Yaw: 4.3883560247786342
Sway: 2.98520364E-03
Surge: 2.19242554E-03
Total Yaw: 4.3640849473567309
Sway: 4.24100365E-03
Surge: 2.74392962E-03
Total Yaw: 4.7569945709085468
Sway: 5.48865274E-03
Surge: 3.19111813E-03
Total Yaw: 5.4940206537142400
Sway: 6.57935999E-03
Surge: 3.56893567E-03
Total Yaw: 6.2104652419416606
Sway: 7.48739811E-03
Surge: 3.89725482E-03
Total Yaw: 6.6033582169072327
Sway: 8.41886643E-03
Surge: 4.16583475E-03
Total Yaw: 6.6917344622159005
Sway: 9.75654088E-03
Surge: 4.38157748E-03
Total Yaw: 6.7650633737683297
FAST_Solution:FAST_AdvanceStates:ED_ABM4:ED_CalcContStateDeriv:SetCoordSy:Small angle assumption violated in SUBROUTINE SmllRotTrans() due to a large blade deflection (ElastoDyn SetCoordSy). The solution may be inaccurate. Simulation continuing, but future warnings from SmllRotTrans() will be suppressed. Additional debugging message from SUBROUTINE SmllRotTrans(): 0.475 s
Sway: 1.18122026E-02
Surge: 4.54392517E-03
Total Yaw: 7.0920633788166940
Sway: 1.46178007E-02
Surge: 4.66398615E-03
Total Yaw: 7.6761687818822262
Sway: 1.79084260E-02
Surge: 4.81489440E-03
Total Yaw: 8.2381294308099147
Sway: 2.09913701E-02
Surge: 5.14211506E-03
Total Yaw: 7.8218362275490163
Sway: 2.42134463E-02
Surge: 5.53738233E-03
Total Yaw: 6.8293982067678867
Sway: 2.93458980E-02
Surge: 5.90720959E-03
Total Yaw: 7.1778834258067610
Sway: 3.28437537E-02
Surge: 6.24309806E-03
Total Yaw: 8.4195025444400304
Sway: 3.65253873E-02
Surge: 6.74035493E-03
Total Yaw: 8.8866815112236139
Sway: 3.81513350E-02
Surge: 7.53147248E-03
Total Yaw: 7.3934552969017622
Sway: 4.17788364E-02
Surge: 7.74738006E-03
Total Yaw: 6.4709725010812287
Sway: 4.52419780E-02
Surge: 8.12679064E-03
Total Yaw: 7.5412119266986846
Sway: 4.85318154E-02
Surge: 8.10847152E-03
Total Yaw: 9.4641108312055469
Sway: 5.18103875E-02
Surge: 8.22166074E-03
Total Yaw: 10.058340709141195
Sway: 5.30648679E-02
Surge: 8.76981020E-03
Total Yaw: 8.0092421058148151
Sway: 5.68869747E-02
Surge: 8.61289911E-03
Total Yaw: 5.9642817433869837
Sway: 6.10544942E-02
Surge: 9.04119480E-03
Total Yaw: 6.2505260093115274
Sway: 6.68844804E-02
Surge: 8.60463735E-03
Total Yaw: 8.8145197082555296
Sway: 7.09287748E-02
Surge: 8.74125026E-03
Total Yaw: 10.392542721843720
Sway: 7.31046274E-02
Surge: 9.70590115E-03
Total Yaw: 8.9217494102677701
Sway: 7.48928115E-02
Surge: 9.92547255E-03
Total Yaw: 5.9775673152092104
Sway: 7.63136148E-02
Surge: 1.09282434E-02
Total Yaw: 4.7842683702698352
Sway: 8.02604929E-02
Surge: 1.15984948E-02
Total Yaw: 7.1799196759703756
Sway: 8.19521844E-02
Surge: 1.18825808E-02
Total Yaw: 10.506769098946453
Sway: 8.32613111E-02
Surge: 1.29459715E-02
Total Yaw: 11.390500816181600
Warning: SkewedWakeCorrection encountered a large value of chi (99.902 deg), so the yaw
correction will be limited. This warning will not be repeated though the condition may persist.
See the AD15 chi output channels, and consider turning off the Pitt/Peters skew model (set
SkewMod=1) if this condition persists.
Sway: 8.10849890E-02
Surge: 1.40747204E-02
Total Yaw: 8.3684793233591321
Sway: 8.07964131E-02
Surge: 1.44000929E-02
Total Yaw: 4.6148818118481341
Sway: 8.19551125E-02
Surge: 1.56229883E-02
Total Yaw: 4.0222040944145618
Sway: 8.68161917E-02
Surge: 1.54987909E-02
Total Yaw: 7.6848132401239875
Sway: 8.95774737E-02
Surge: 1.53443469E-02
Total Yaw: 11.718725559535921
Sway: 9.07608271E-02
Surge: 1.66182127E-02
Total Yaw: 12.057404761277438
Sway: 8.72079507E-02
Surge: 1.76699068E-02
Total Yaw: 7.8379768184685705
Sway: 8.46992880E-02
Surge: 1.83622800E-02
Total Yaw: 4.0195006201407315
Sway: 8.31174031E-02
Surge: 2.06318423E-02
Total Yaw: 4.4907226320604980
Sway: 8.30041990E-02
Surge: 2.10322198E-02
Total Yaw: 8.7767351014459134
Sway: 8.22377950E-02
Surge: 2.19959430E-02
Total Yaw: 12.125699823368787
Sway: 7.89301172E-02
Surge: 2.46544220E-02
Total Yaw: 10.828114987974464
Sway: 7.55772814E-02
Surge: 2.54071858E-02
Total Yaw: 6.6444524772846698
Sway: 7.24780783E-02
Surge: 2.74284519E-02
Total Yaw: 3.9438660928370060
Sway: 7.33039007E-02
Surge: 2.93260310E-02
Total Yaw: 5.7821820683777334
Sway: 7.31630325E-02
Surge: 2.98534408E-02
Total Yaw: 10.086010659477711
Sway: 7.24563897E-02
Surge: 3.15831564E-02
Total Yaw: 12.236429997360409
Sway: 6.73774928E-02
Surge: 3.43899503E-02
Total Yaw: 9.6023444696712499
Sway: 6.22100197E-02
Surge: 3.54566574E-02
Total Yaw: 5.1999378918768464
Sway: 5.72819971E-02
Surge: 3.81744765E-02
Total Yaw: 3.4197126757207514
Sway: 5.59781045E-02
Surge: 3.99549939E-02
Total Yaw: 6.4892295968878271
Sway: 5.36249615E-02
Surge: 4.05240655E-02
Total Yaw: 11.290387317571343
Sway: 5.06621376E-02
Surge: 4.27260697E-02
Total Yaw: 12.776913970034123
Sway: 4.42658328E-02
Surge: 4.51108329E-02
Total Yaw: 9.1835053133755924
Sway: 3.91677022E-02
Surge: 4.60478105E-02
Total Yaw: 4.3501155028380456
Sway: 3.58952209E-02
Surge: 4.88687456E-02
Total Yaw: 2.9390688446477058
Sway: 3.69678698E-02
Surge: 5.00247851E-02
Total Yaw: 6.7860892575332521
Sway: 3.66829038E-02
Surge: 5.01688682E-02
Total Yaw: 11.989218128440083
Sway: 3.48813385E-02
Surge: 5.28033227E-02
Total Yaw: 13.085072471210063
Sway: 2.84828302E-02
Surge: 5.50886877E-02
Total Yaw: 8.7982126314735414
Sway: 2.25844067E-02
Surge: 5.60202226E-02
Total Yaw: 3.5822447123652696
Sway: 1.84455998E-02
Surge: 5.92676699E-02
Total Yaw: 2.3624156049168108
Sway: 1.87412631E-02
Surge: 6.01405017E-02
Total Yaw: 6.8654389808902145
FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:AD_CalcOutput:RotCalcOutput:BEMT_CalcOut put(node 49, blade 1):UA_CalcOutput:Mach number exceeds 1.0. Equations cannot be evaluated.
OpenFAST encountered an error at simulation time 1.875 of 800 seconds. Simulation error level: FATAL ERROR
and this is the ElastoDyn file:
------- ELASTODYN v1.03.* INPUT FILE -------------------------------------------
IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform
---------------------- SIMULATION CONTROL --------------------------------------
False Echo - Echo input data to "
What can be the reason here? Kindly guide. Thanks and regards
Dear @Dwivedi07,
I agree with what you are saying regarding YawPosCom
and YawRateCom
. I would just add that when you specify YawRateCom
via avrSWAP(48)
with YCMode
= 5, that the YawPosCom
is found by time-integrating YawRateCom
.
I'm not familiar with all of the control options available in ROSCO nor all of the warnings regarding Surge, Sway, and Yaw you are getting, which presumably are coming from ROSCO. I would guess something in your model is not set up correctly, but I'm not sure what. I would suggest to simplifying the model (by systematically disabling features) to better isolate the problem.
Best regards,
Thanks for you response @jjonkman, I will simplify and try it out. Warm Regards
Hi, was this resolved here? https://github.com/NREL/ROSCO/discussions/249#discussioncomment-6201112
We sometimes see instabilities in the blades when there are large yaw angles. If you don't need realistic blade deflection, you can turn off the blade DOFs. Alternatively, you can increase the damping in the blade inputs.
Hello @dzalkind , Thanks for your response. Yes, it has been resolved. I had reduced the maximum allowable yaw rate and the system got stabilized. Thanks and Regards
Dear jjonkman,
I am trying to implement a nacelle yaw controller using measured yaw error(avrSWAP(24)) as indicator,and use Demanded nacelle yaw rate(avrSWAP(48)) to control the angle of yaw. My problem was that the yaw control I had set wasn't stable or even working.Is there a problem with my Settings? What should I do if I want to control the turbine yaw through discon.dll?
Best regards,
Dear @clun1,
Can you clarify why you have multiple yaw error signals; is that because you are simulating a three wind turbine farm in FAST.Farm?
Regarding why your yaw controller is not working:
YCMode
= 5 in ServoDyn to enable the Bladed-style DLL controller to regulate yaw?TYCOn
= 0.0 s in ServoDyn to ensure that the yaw controller is active during the simulation?YawSpr
and YawDamp
appropriately in ServoDyn for the yaw actuator?I'm also questioning your yaw control logic because the yaw will constantly toggle between positive and negative motion when the nacelle-yaw error is around 10 degrees. I would think you'd want an integral term and have some deadband around 10 degrees in your yaw controller.
Best regards,
Dear jjonkman,
Thank you for the response.I was use three discon.dll to control three turbine,they have distinct OpenFAST primary and distinct ServoDyn input files,but these input files are all the same,I made three copies; I already set YCMode = 5 and TYCOn = 0.0,and I don't kown how to set YawSpr and YawDamp,so i didn't change the number of YawSpr and YawDamp,and Keep it at its original value.Yes, my control logic is faulty, but the error in control is so large that it makes me wonder.
Best regards,
Dear @clun1,
The values of YawSpr
and YawDamp
you are using are appropriate for the NREL 5-MW baseline wind turbine.
The distinct OpenFAST primary and ServoDyn input files can be identical, except for DLL_FileName
in ServoDyn that should point to the specific DLL unique to the turbine, and ServoFile
in OpenFAST that should point to the specific ServoDyn input file where the specific DLL_FileName
is set. Is that what you've done?
Best regards,
Dear jjonkman,
Thank you for your patient guidance.The following is my setting. I think it is consistent with what you described,am I right?They correspond to their respective numbers.But this is still not enough to stabilize the yaw error around 10° that I want.I really appreciate for your guidance,thank you.
Best regards,
Dear @clun1,
Yes, that looks correct. Can you also share the results of the nacelle-yaw angle (rather than the nacelle-yaw error, which will fluctuate due to wind)? Are the nacelle-yaw angles moving positive and negatively following your yaw-rate commands?
Best regards,
Dear jjonkman,
These are the results of the nacelle-yaw angle.There is also the yaw rate(YawVzn) of the output of the wind turbine during operation.The yaw rate(YawVzn) of wind turbine is inconsistent with the set yaw rate(avrSWAP(48)).There's also a very strange phenomenon, when the yaw rate(avrSWAP(48)) is positive, the yaw Angle error(avrSWAP(24)) does not change with the yaw rate(avrSWAP(48)) I set, sometimes when I set the yaw rate(avrSWAP(48)) negative, The yaw error(avrSWAP(24)) becomes positive and gets larger over time. I'm curious if the yaw rate(avrSWAP(48)) is set to an absolute value?
Best regards,
Dear @clun1,
I don't see any absolute value used around the yaw rate commanded from the DLL controller in the source code. I do see the yaw rate command being integrated to find the commanded yaw position.
Both the commanded yaw rate and commanded yaw position (integrated from yaw rate) are passed through a yaw actuator model determined by ServoDyn inputs YawSpr
and YawDamp
in order to calculate the yaw moment, which actually yaws the nacelle. Given this actuator, I wouldn't expect the actual yaw position and yaw rate to exactly match the commanded value. How well the commanded and actual yaw rates and positions match will depend on the settings of YawSpr
and YawDamp
.
Best regards,
Dear jjonkman,
Thank you for your answer.
Best regards,
Dear @clun1,
Regarding (1), to understand how the nacelle-yaw actuator in OpenFAST works, see the section titled "Nacelle Yaw Control" in the old FAST v6 User's Guide: https://openfast.readthedocs.io/en/main/_downloads/d8bd014121d6505cb25cf49bee5eaa80/Old_FAST6_UsersGuide.pdf.
Regarding (2), I'm not familiar with these avrSWAP
parameters and I don't see them used in OpenFAST source code. To reveiw the full set of avrSWAP
parameters supported by OpenFAST, I suggest reviewing the BladedDLLInterface.f90 source file: https://github.com/OpenFAST/openfast/blob/main/modules/servodyn/src/BladedInterface.f90.
Best regards,
Dear jjonkman,
Thank you for your guidance,it really help me a lot!Thank you again.
Best regards,
Dear jjonkman,
The following is the alarm I encountered when running fast.farm. Is it related to the initial state of the turbine?
Best regards,
Dear @clun1,
You haven't stated what wind speed you are simulating, so, I can't say whether an initial rotor speed (RotSpeed
) of 9 rpm is set correctly.
Regardless, I see that you've set NacYaw
nonzero in the OpenFAST models of each wind turbine. Is the nacelle-yaw DOF enabled (YawDOF
= TRUE)? If so, you must also set YawNeut
in ServoDyn equal to NacYaw
or else the naccelle will quickly snap back to 0deg and result in unrealistic loads and deflections, as discussed above.
Best regards,
Dear jjonkman,
Thank you for your patience,I want to know whether the yaw Angle is relative to the north or the incoming wind direction. If I want to set it to the incoming wind direction, how should I set it?
I want to set the yaw of the turbine to change with the wind direction. Can I cancel the YawNeut so that it does not work?
Best regards,
Dear @clun1,
OpenFAST does not make use of compass directions. When the wind direction is zero, the inflow will propagate along the X axis of the global inertia frame. When the nacelle-yaw angle is zero, the rotor axis will also lie along the X axis of the global inertia frame (possibly tilted), and so, be aligned with the zero wind direction. See the following topic on our forum for more details: https://forums.nrel.gov/t/wind-wave-misalignment-in-openfast/2589.
If you are modeling a situation where the wind direction is changing and you want the rotor to actively follow the wind, you must implement active yaw control (with YCMode
nonzero in ServoDyn). YawNeut
is only used when YCMode
= 0 or when YCMode
/= 0 up until the time the yaw controller is enabled (time = TYCOn
).
Best regards,
Dear jjonkman,
I have encountered several problems recently, and I do not know how to solve them. I hope you can give me some tips.
Best regards,
Dear @clun1,
You haven't provided enough information to isolate the issue, but perhaps the warning about "large blade deflection" is triggering the errors about "outside the grid bounds" (i.e., the blades are deflecting unrealistic large such that the aerodynamic analysis nodes leave the wind domain)? I would guess that your OpenFAST model is numerically unstable. Are you using an OpenFAST / FAST.Farm model provided by NREL or one you made yourself? If you are using a model provided by NREL, what input parameters did you change?
Best regards?
Dear jjonkman,
Thanks for your reply.I used the fast.farm model provided by NREL.Here is my input.When i use the wind speed.When I use a wind speed of 10m/s, the program works fine, and when I use a wind speed of 16m/s, the above problem occurs.
Best regards,
Dear @clun1,
When you change the mean wind speed, are you also changing the initial conditions of the rotor speed and blade-pitch angles in each OpenFAST model to their expected (mean) values conditioned on the mean wind speed? Otherwise, the controller may not recover, resulting in an unstable solution. Setting proper initial conditions in OpenFAST has been discussed in many other posts.
Best regards,
Dear jjonkman,
Thank you, I finally know the reason, but when the simulation runs to 93 seconds, the following problem appears, is it related to the grid setting of the wind farm?
Best regards,
Dear jjonkman,
These are graphs of TSR, the complement to the first problem
Best regards,
Dear @clun1,
I'm not following everything.
The warning you are receiving refers to negative TSR, but the RtTSR
values you are plotting do not show such low values. Moreover, you refer to 93 s, but the x-axis of your plots extend to 1000; does the x-axis not have the units of s?
Regarding the "singular" error, ElastoDyn does not consider the inertia of the tower about its centerline. So, if both PtfmYDOF
and YawDOF
= TRUE, you must have some nonzero PtfmYIner
set (e.g., to represent the tower inertia about its centerline), otherwise the yaw inertia about the platform will be zero and ill conditioned, resulting in NaNs or a singularity. This is discussed more in online SubDyn documentation–see: 4.2.5.5. Modeling Considerations — OpenFAST v3.3.0 documentation.
Best regards,
Hello there! I am trying to implement a nacelle yaw controller for repositioning analysis for IEA-15MW wind turbine. My goal is to laterally reposition the turbine by changing the nacelle yaw angle and generating an aerodynamic thrust force to move the turbine. I am using ROSCO based controller and edited its YawRateControl SUBROUTINE to generate my required yaw rate at each call and then assign it with avrSWAP(48). The issue which I have encountered is that openfast abort in between when I run my controller with the error on the terminal as: FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:AD_CalcOutput:RotCalcOutput:BEMT_CalcOut put(node 48, blade 2):UA_CalcOutput:Mach number exceeds 1.0. Equations cannot be evaluated.
OpenFAST encountered an error at simulation time 33.075 of 1000 seconds. Simulation error level: FATAL ERROR
My yaw rate and max yaw are constrained also by 0.15 rad.sec and Yaw angle i have constrained by 20 degrees(later 8 degrees(reason for this is written below) but still same results)
I had first tried to switch off the Y_ControlMode(=0) and give initial nacelle yaw angle to the turbine. On simulating upto 800 seconds the turbine should sway significantly but the order of sway I am getting is 0.47m(nearly upto 8 degrees as initial nacelle yaw angle given in ElastoDyn) Which is very weird? One thing I observed is as the openfast starts for the given initial nacelle yaw(< 8degrees). The total yaw is negative but the turbine moves in a positive y direction which is against the dynamics later(after 200-300 sec) the sign are in agreement but it is very weird to get opposite results, which I am not sure why it is happening. If I give more than 8 degrees as initial Nacelle Yaw the openfast aborts:(below is the response when I put the initial nacelle yaw as 9 degrees):: ------------------------------------------------------------ELASTODYN FILE---------------------------------------------------------------------------------- ---------------------- INITIAL CONDITIONS -------------------------------------- 0 OoPDefl - Initial out-of-plane blade-tip displacement (meters) 0 IPDefl - Initial in-plane blade-tip deflection (meters) 1 BlPitch(1) - Blade 1 initial pitch (degrees) 1 BlPitch(2) - Blade 2 initial pitch (degrees) 1 BlPitch(3) - Blade 3 initial pitch (degrees) [unused for 2 blades] 0 TeetDefl - Initial or fixed teeter angle (degrees) [unused for 3 blades] 0 Azimuth - Initial azimuth angle for blade 1 (degrees) 7.55 RotSpeed - Initial or fixed rotor speed (rpm) 9 NacYaw - Initial or fixed nacelle-yaw angle (degrees) 0 TTDspFA - Initial fore-aft tower-top displacement (meters) 0 TTDspSS - Initial side-to-side tower-top displacement (meters) 0 PtfmSurge - Initial or fixed horizontal surge translational displacement of platform (meters) 0 PtfmSway - Initial or fixed horizontal sway translational displacement of platform (meters) 0 PtfmHeave - Initial or fixed vertical heave translational displacement of platform (meters) 0 PtfmRoll - Initial or fixed roll tilt rotational displacement of platform (degrees) 0 PtfmPitch - Initial or fixed pitch tilt rotational displacement of platform (degrees) 0 PtfmYaw - Initial or fixed yaw rotational displacement of platform (degrees)
---------------------------------------------------------------TERMINAL-------------------------------------------------------------------------------------------
OpenFAST
Copyright (C) 2023 National Renewable Energy Laboratory Copyright (C) 2023 Envision Energy USA LTD
This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY. See the "LICENSE" file distributed with this software for details.
OpenFAST--128-NOTFOUND Compile Info:
Time: 09:36:21+0530
OpenFAST input file heading: IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform
Running ElastoDyn. Running AeroDyn. Warning: Turning off Unsteady Aerodynamics because polar has constant data. (node 1, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 4, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 5, blade 1) Warning: Turning off Unsteady Aerodynamics because polar has constant data. (node 1, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 4, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 5, blade 2) Warning: Turning off Unsteady Aerodynamics because polar has constant data. (node 1, blade 3) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 3) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 4, blade 3) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 5, blade 3) Running InflowWind. Running HydroDyn. WaveTMax is less then the simulation time. Wave data will repeat every WaveTMax seconds. WARNING: The requested output channel is invalid: WavesF1xi WARNING: The requested output channel is invalid: WavesF1zi WARNING: The requested output channel is invalid: WavesM1yi WARNING: The requested output channel is invalid: WavesF2xi WARNING: The requested output channel is invalid: WavesF2zi WARNING: The requested output channel is invalid: WavesM2yi WARNING: The requested output channel is invalid: WavesF2xi WARNING: The requested output channel is invalid: WavesF2yi WARNING: The requested output channel is invalid: WavesF2zi WARNING: The requested output channel is invalid: WavesM2xi WARNING: The requested output channel is invalid: WavesM2yi WARNING: The requested output channel is invalid: WavesM2zi Generating incident wave kinematics and current time history. Calculating second order difference frequency wave kinematics. Calculating second order sum frequency wave kinematics. Reading in WAMIT output with root name "./HydroData/IEA-15-240-RWT-UMaineSemi". Computing radiation impulse response functions and wave diffraction forces. Calculating second order difference-frequency force using the full quadratic transfer function. Running MoorDyn (v2.0.0, 2022-12-08). This is MoorDyn v2, with significant input file changes from v1. Copyright: (C) 2022 National Renewable Energy Laboratory, (C) 2019 Matt Hall Parsing MoorDyn input file: ./IEA-15-240-RWT-UMaineSemi_MoorDyn.dat Warning: invalid output specifier FX. Must start with L, C, R, or B Warning: invalid output specifier FY. Must start with L, C, R, or B Warning: invalid output specifier FZ. Must start with L, C, R, or B Created mooring system: 3 lines, 6 points, 0 rods, 0 bodies. Finalizing initial conditions using dynamic relaxation.
t=1 FairTen 1: 3.68647E+06, 1, 2 t=2 FairTen 1: 1.84869E+06, 3.68647E+06, 1 t=3 FairTen 1: 2.63875E+06, 1.84869E+06, 3.68647E+06 t=4 FairTen 1: 2.44774E+06, 2.63875E+06, 1.84869E+06 t=5 FairTen 1: 2.30547E+06, 2.44774E+06, 2.63875E+06 t=6 FairTen 1: 2.58404E+06, 2.30547E+06, 2.44774E+06 t=7 FairTen 1: 2.29551E+06, 2.58404E+06, 2.30547E+06 t=8 FairTen 1: 2.58935E+06, 2.29551E+06, 2.58404E+06 t=9 FairTen 1: 2.37068E+06, 2.58935E+06, 2.29551E+06 t=10 FairTen 1: 2.49267E+06, 2.37068E+06, 2.58935E+06 t=11 FairTen 1: 2.37876E+06, 2.49267E+06, 2.37068E+06 t=12 FairTen 1: 2.46400E+06, 2.37876E+06, 2.49267E+06 t=13 FairTen 1: 2.37916E+06, 2.46400E+06, 2.37876E+06 t=14 FairTen 1: 2.50556E+06, 2.37916E+06, 2.46400E+06 t=15 FairTen 1: 2.38562E+06, 2.50556E+06, 2.37916E+06 t=16 FairTen 1: 2.49319E+06, 2.38562E+06, 2.50556E+06 t=17 FairTen 1: 2.41239E+06, 2.49319E+06, 2.38562E+06 t=18 FairTen 1: 2.44589E+06, 2.41239E+06, 2.49319E+06 t=19 FairTen 1: 2.44717E+06, 2.44589E+06, 2.41239E+06 t=20 FairTen 1: 2.40571E+06, 2.44717E+06, 2.44589E+06 t=21 FairTen 1: 2.48702E+06, 2.40571E+06, 2.44717E+06 t=22 FairTen 1: 2.36954E+06, 2.48702E+06, 2.40571E+06 t=23 FairTen 1: 2.51400E+06, 2.36954E+06, 2.48702E+06 t=24 FairTen 1: 2.37105E+06, 2.51400E+06, 2.36954E+06 t=25 FairTen 1: 2.48436E+06, 2.37105E+06, 2.51400E+06 t=26 FairTen 1: 2.41313E+06, 2.48436E+06, 2.37105E+06 t=27 FairTen 1: 2.43555E+06, 2.41313E+06, 2.48436E+06 t=28 FairTen 1: 2.46335E+06, 2.43555E+06, 2.41313E+06 t=29 FairTen 1: 2.40373E+06, 2.46335E+06, 2.43555E+06 t=30 FairTen 1: 2.47935E+06, 2.40373E+06, 2.46335E+06 t=31 FairTen 1: 2.38984E+06, 2.47935E+06, 2.40373E+06 t=32 FairTen 1: 2.48137E+06, 2.38984E+06, 2.47935E+06 t=33 FairTen 1: 2.40724E+06, 2.48137E+06, 2.38984E+06 t=34 FairTen 1: 2.46163E+06, 2.40724E+06, 2.48137E+06 t=35 FairTen 1: 2.42342E+06, 2.46163E+06, 2.40724E+06 t=36 FairTen 1: 2.44514E+06, 2.42342E+06, 2.46163E+06 t=37 FairTen 1: 2.42570E+06, 2.44514E+06, 2.42342E+06 t=38 FairTen 1: 2.45132E+06, 2.42570E+06, 2.44514E+06 t=39 FairTen 1: 2.43342E+06, 2.45132E+06, 2.42570E+06 t=40 FairTen 1: 2.44080E+06, 2.43342E+06, 2.45132E+06 t=41 FairTen 1: 2.43845E+06, 2.44080E+06, 2.43342E+06 t=42 FairTen 1: 2.42702E+06, 2.43845E+06, 2.44080E+06 t=43 FairTen 1: 2.45370E+06, 2.42702E+06, 2.43845E+06 t=44 FairTen 1: 2.42074E+06, 2.45370E+06, 2.42702E+06 t=45 FairTen 1: 2.46427E+06, 2.42074E+06, 2.45370E+06 t=46 FairTen 1: 2.40552E+06, 2.46427E+06, 2.42074E+06 t=47 FairTen 1: 2.46695E+06, 2.40552E+06, 2.46427E+06 t=48 FairTen 1: 2.41463E+06, 2.46695E+06, 2.40552E+06 t=49 FairTen 1: 2.45200E+06, 2.41463E+06, 2.46695E+06 t=50 FairTen 1: 2.43889E+06, 2.45200E+06, 2.41463E+06 t=51 FairTen 1: 2.42732E+06, 2.43889E+06, 2.45200E+06 t=52 FairTen 1: 2.45209E+06, 2.42732E+06, 2.43889E+06 t=53 FairTen 1: 2.41928E+06, 2.45209E+06, 2.42732E+06 t=54 FairTen 1: 2.45816E+06, 2.41928E+06, 2.45209E+06 t=55 FairTen 1: 2.42231E+06, 2.45816E+06, 2.41928E+06 t=56 FairTen 1: 2.44689E+06, 2.42231E+06, 2.45816E+06 t=57 FairTen 1: 2.43339E+06, 2.44689E+06, 2.42231E+06 t=58 FairTen 1: 2.43537E+06, 2.43339E+06, 2.44689E+06 t=59 FairTen 1: 2.44526E+06, 2.43537E+06, 2.43339E+06 t=60 FairTen 1: 2.43287E+06, 2.44526E+06, 2.43537E+06 Fairlead tensions did not converge within TMaxIC=60 seconds. MoorDyn initialization completed. Running ServoDyn. Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux). Using legacy Bladed DLL interface.
FAST_InitializeAll:HydroDyn_Init:HydroDynInput_ProcessInitData: A requested output channel is invalid HydroDyn_Init:Waves_Init:VariousWaves_Init: The random number generator in use differs from the original code provided by NREL. This pRNG uses 8 seeds instead of the 2 in the HydroDyn input file.
Time: 0 of 1000 seconds.
Running ROSCO-v2.8.0 A wind turbine controller framework for public use in the scientific field
Developed in collaboration: National Renewable Energy Laboratory
Delft University of Technology, The Netherlands
ROSCO Warning: Did not find Echo in input file. Using default value of 0 ROSCO Warning: Did not find AWC_Mode in input file. Using default value of 0 ROSCO Warning: Did not find CC_Mode in input file. Using default value of 0 ROSCO Warning: Did not find StC_Mode in input file. Using default value of 0 ROSCO Warning: Did not find AWC_NumModes in input file. Using default value of 0 ROSCO Warning: Did not find correct size AWC_n in input file. Using default value of [ 0 ] ROSCO Warning: Did not find correct size AWC_harmonic in input file. Using default value of [ 0 ] ROSCO Warning: Did not find correct sizeAWC_freq in input file. Using default value of [ 0.0000000000000000 ] ROSCO Warning: Did not find correct sizeAWC_amp in input file. Using default value of [ 0.0000000000000000 ] ROSCO Warning: Did not find correct sizeAWC_clockangle in input file. Using default value of [ 0.0000000000000000 ] ROSCO Warning: Did not find CC_Group_N in input file. Using default value of 0 ROSCO Warning: Did not find correct size CC_GroupIndex in input file. Using default value of [ 0 ] ROSCO Warning: Did not find CC_ActTau in input file. Using default value of 0.0000000000000000
ROSCO Warning: Did not find StC_Group_N in input file. Using default value of 0 ROSCO Warning: Did not find correct size StC_GroupIndex in input file. Using default value of [ 0 ] ROSCO Warning: Did not find correct size Ind_CableControl in input file. Using default value of [ 0 ] ROSCO Warning: Did not find correct size Ind_StructControl in input file. Using default value of [ 0 ] Generator speed: 7.6 RPM, Pitch angle: 1.0 deg, Power: 0.0 kW, Est. wind Speed: 18.0 m/s Warning: SkewedWakeCorrection encountered a large value of chi (95.799 deg), so the yaw correction will be limited. This warning will not be repeated though the condition may persist. See the AD15 chi output channels, and consider turning off the Pitt/Peters skew model (set SkewMod=1) if this condition persists.
FAST_Solution:FAST_AdvanceStates:ED_ABM4:ED_AB4:ED_RK4:ED_CalcContStateDeriv:SetCoordSy:Small angle assumption violated in SUBROUTINE SmllRotTrans() due to a large blade deflection (ElastoDyn SetCoordSy). The solution may be inaccurate. Simulation continuing, but future warnings from SmllRotTrans() will be suppressed. Additional debugging message from SUBROUTINE SmllRotTrans(): 3.75000E-02 s FAST_AdvanceStates:AD_UpdateStates:BEMT_UpdateStates(node 43, blade 1):UA_UpdateStates:UA_UpdateDiscOtherState:ComputeKelvinChain:Mach number exceeds 0.3. Theory is invalid. This warning will not be repeated though the condition may persist. FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:AD_CalcOutput:RotCalcOutput:BEMT_CalcOut put(node 3, blade 1):UA_CalcOutput:UA_BlendSteady:Temporarily turning off UA due to high angle of attack or low relative velocity. This warning will not be repeated though the condition may persist.
FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption2:AD_CalcOutput:RotCalcOutput:BEMT_CalcOut put(node 49, blade 3):UA_CalcOutput:Mach number exceeds 1.0. Equations cannot be evaluated.
OpenFAST encountered an error at simulation time 7.50000E-02 of 1000 seconds. Simulation error level: FATAL ERROR
Aborting OpenFAST.
Kindly look into the issue and help. Thanks and Regards