Dear Marvin,
You are correct that there is no blade-pitch actuator model currently in OpenFAST, so, the commanded / demanded blade pitch should be the actual blade pitch. But because of the solution approach implemented in the OpenFAST glue code, the ElastoDyn module effectively uses extrapolated values of the blade-pitch command as its actual blade-pitch input (the extrapolation is linear with InterpOrder=1 or quadratic with InterpOrder=2). This extrapolation tends to work without problems if the input is smooth / continuous, but can cause problems e.g. overshoots if the input is not smooth e.g. if the blade-pitch command contains steps. I suspect this is what is happening in your case because you said that the controller operates at different time steps. You can reduce or eliminate the error between the command and actual blade pitch angle using a few approaches:
- Add a correction step to the solver (NumCrctn>0) in the OpenFAST primary input file.
- Use linear (InterpOrder=1) instead of quadratic extrapolation in the OpenFAST primary input file.
- Ensure the blade-pitch command output from ServoDyn is smooth (linear) by setting DLL_Ramp=True.
- Low-pass filter the blade-pitch command output from ServoDyn by setting BPCutoff to a small value (typically 1 Hz or less).
I hope that helps.
Best regards,