Hi Mike,
I wont tease you for being a new user of FAST. Better late than never I say!
Without modification, the existing interface between FAST and Bladed-style DLL controllers cannot accept pitch rate demands. This is because the user-defined pitch control routines in FAST expect a pitch angle demand to be returned, not a pitch rate demand.
In order to get around this limitation, you will have to integrate the pitch rate demand to obtain the pitch angle demand. The logic for the integration could be as simple as:
PitchAngle = PitchAngle + PitchRate*( CurrentTime - LastTime )
LastTime = CurrentTime
There are two places you could perform this integration: (1) put the integration in a modified version of the DLL or (2) put the integration in a modified version of the interface between FAST and the Bladed-style DLL.
I suspect you would want to pursue option (2) because than both FAST and Bladed could use the same DLL. If youâve read the FAST Userâs Guide, you will already know that the interface between FAST and the Bladed-style DLL is contained in source file BladedDLLInterface.f90. You will have to make three changes to this source file as follows:
(2a) In MODULE BladedDLLParameters(), set PARAMETER Ptch_Cntrl to 0. This tells FAST to accept collective pitch demands from the DLL.
(2b) In SUBROUTINE BladedDLLInterface(), set avrSWAP(10) to 1.0. This tells both FAST and the DLL to accept the return value of collective pitch rate demand.
(2c) In SUBROUTINE BladedDLLInterface(), replace the line of code that says âBlPitchCom_SAVE = avrSWAP(45)â, with something like this: âBlPitchCom_SAVE = BlPitchCom_SAVE + avrSWAP(46)*( AllOuts(Time) - LastTime )â. Here, avrSWAP(46) is the collective pitch rate demand returned by the DLL and the rest of the variables in the integration are already defined in the SUBROUTINE.
Please let me know if this works.
Also, please remember when performing the integration that is often beneficial to saturate the integral term in order for to keep from exceeding the min and max pitch angles. Perhaps you have already done this in your DLL.
Best regards,