Skip to content

Commit

Permalink
Updates documentation, defined NREL5MW ServoDyn constants for Bladed …
Browse files Browse the repository at this point in the history
…interface and solved a switching issue between pitch and torque control
  • Loading branch information
Sebastiaan Mulders committed Aug 29, 2017
1 parent 79be70f commit 16a7566
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
Binary file modified README.docx
Binary file not shown.
20 changes: 20 additions & 0 deletions ServoDynBladedInterface_NREL5MW.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface]
"ServoData/DISCON_gwin32.dll" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface]
"DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface]
"DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface]
"default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface]
false DLL_Ramp - Whether a linear ramp should be used between DLL_DT time steps [introduces time shift when true] (flag) [used only with Bladed Interface]
9999.9 BPCutoff - Cuttoff frequency for low-pass filter on blade pitch from DLL (Hz) [used only with Bladed Interface]
0 NacYaw_North - Reference yaw angle of the nacelle when the upwind end points due North (deg) [used only with Bladed Interface]
1 Ptch_Cntrl - Record 28: Use individual pitch control {0: collective pitch; 1: individual pitch control} (switch) [used only with Bladed Interface]
0 Ptch_SetPnt - Record 5: Below-rated pitch angle set-point (deg) [used only with Bladed Interface]
-5.0 Ptch_Min - Record 6: Minimum pitch angle (deg) [used only with Bladed Interface]
90.0 Ptch_Max - Record 7: Maximum pitch angle (deg) [used only with Bladed Interface]
-8.0 PtchRate_Min - Record 8: Minimum pitch rate (most negative value allowed) (deg/s) [used only with Bladed Interface]
8.0 PtchRate_Max - Record 9: Maximum pitch rate (deg/s) [used only with Bladed Interface]
2.332287 Gain_OM - Record 16: Optimal mode gain (Nm/(rad/s)^2) [used only with Bladed Interface]
0 GenSpd_MinOM - Record 17: Minimum generator speed (rpm) [used only with Bladed Interface]
0 GenSpd_MaxOM - Record 18: Optimal mode maximum speed (rpm) [used only with Bladed Interface]
1173.70 GenSpd_Dem - Record 19: Demanded generator speed above rated (rpm) [used only with Bladed Interface]
43093.55 GenTrq_Dem - Record 22: Demanded generator torque above rated (Nm) [used only with Bladed Interface]
0 GenPwr_Dem - Record 13: Demanded power (W) [used only with Bladed Interface]
5 changes: 3 additions & 2 deletions Source/DISCON.f90
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ SUBROUTINE DISCON ( avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG ) BIND (C, N
REAL(4), PARAMETER :: VS_Rgn2Sp = 91.21091 ! Transitional generator speed (HSS side) between regions 1 1/2 and 2, [rad/s].
REAL(4), PARAMETER :: VS_Rgn3MP = 0.01745329 ! Minimum pitch angle at which the torque is computed as if we are in region 3 regardless of the generator speed, [rad]. -- chosen to be 1.0 degree above PC_MinPit
REAL(4), PARAMETER :: VS_RtGnSp = 121.6805 ! Rated generator speed (HSS side), [rad/s]. -- chosen to be 99% of PC_RefSpd
REAL(4), PARAMETER :: VS_RtTq = 43773.63 ! Rated torque, [Nm].
REAL(4) :: VS_RtTq ! Rated torque, [Nm].
REAL(4), PARAMETER :: VS_RtPwr = 5296610.0 ! Rated generator generator power in Region 3, [W]. -- chosen to be 5MW divided by the electrical generator efficiency of 94.4%
REAL(4), SAVE :: VS_Slope15 ! Torque/speed slope of region 1 1/2 cut-in torque ramp , [Nm/(rad/s)].
REAL(4), SAVE :: VS_Slope25 ! Torque/speed slope of region 2 1/2 induction generator, [Nm/(rad/s)].
Expand Down Expand Up @@ -152,6 +152,7 @@ SUBROUTINE DISCON ( avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG ) BIND (C, N
rootMOOP (3) = avrSWAP(32)
Time = avrSWAP( 2)
Y_MErr = avrSWAP(24)
VS_RtTq = avrSWAP(22)

!print *, 'from_sc: ', from_sc(1:4)
!to_sc(1) = 5.0;
Expand Down Expand Up @@ -452,7 +453,7 @@ SUBROUTINE DISCON ( avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG ) BIND (C, N
! Compute the generator torque, which depends on which region we are in:

IF ( ( GenSpeedF >= VS_RtGnSp ) .OR. ( PitCom(1) >= VS_Rgn3MP ) ) THEN ! We are in region 3 - power is constant
GenTrq = VS_RtPwr/GenSpeedF
GenTrq = VS_RtTq
ELSEIF ( GenSpeedF <= VS_CtInSp ) THEN ! We are in region 1 - torque is zero
GenTrq = 0.0
ELSEIF ( GenSpeedF < VS_Rgn2Sp ) THEN ! We are in region 1 1/2 - linear ramp in torque from zero to optimal
Expand Down

0 comments on commit 16a7566

Please sign in to comment.