I have some trouble with the pitch behavior in openFASTv1. As far as I understand the (measured/actual) pitch angle should be the same as the demanded pitch angle. In my case the actual pitch angle oscillates around the demanded pitch angle.
As background knowledge to my problem might be said, the the main controller-DLL (from third party) has a pitch communication interval that differs to the controller step size. To change this I have created a wrapper-DLL which gives one output per controller step. (problem also occurs without wrapper-DLL)
The demanded pitch angle has the correct (favored) behavior. Nevertheless the actual pitch angle shows unfavored oscilations.
Has anyone experienced similar behavior and can suggest a solution?
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.
Thanks for the information. The first approach works perfectly for me. Now the commanded and the actual pitch angle is identical.