OpenFAST / openfast

Main repository for the NREL-supported OpenFAST whole-turbine and FAST.Farm wind farm simulation codes.
http://openfast.readthedocs.io
Apache License 2.0
675 stars 455 forks source link

Pitch Control Simulink #1953

Open vicemora opened 9 months ago

vicemora commented 9 months ago

Hello, I'm using the SFunction block to integrate OpenFAST and Simulink. I have a question: Should the pitch angle command I send to the SFunction be the same as the ServoDyn Output (BlPitchCX)? I mean, I'm sending, for example, 18.00 deg in t1 and 18.01 in t2 to the SFunction block. But the servodyn output is: 18.00 in t1, 18.03 in t2, 18.00 in t3, then 18.01 in t4. It is pretty weird. I have some hypotheses. I need to know first if this behavior is not correct in order to get a solution. Should the pitch angle command I send to the SFunction and the ServoDyn Output (BlPitchCX) at each t have the same value?

jjonkman commented 9 months ago

Dear @vicemora,

A similar question was asked and answered on our forum: https://forums.nrel.gov/t/s-function-input-output-signal-mismatch/1502.

Best regards,

vicemora commented 9 months ago

Ok, thank you. I have reviewed it, and now I have another doubt: image I'm sending as a pitch command the same pitch angle for 1 second, then I send another pitch angle, and so on.

The actual pitch angle of the turbine is as follows: image Ok, this overshoot happens because of what is stated in the answer in the forum.  My WT model has a max pitch rate of 7 deg/s. I'm sending the pitch command, taking this into account. But is it expected that the WT blade pitch angle will change too fast? I mean: If the setpoint of the pitch angle command is zero, then I send the command of 7 degrees. Is it expected that the WT's blade pitch angle will be set to 7° in the next time step? There is no transient emulating the physical pitch actuation.

jjonkman commented 9 months ago

Dear @vicemora,

I'm not sure I fully understand your question. I'll just clarify that:

  1. OpenFAST does not currently have any internal pitch actuator dynamics, so, the commanded pitch instantaneously become the actual pitch angle. If you want to consider pitch actuator dynamics, this should be coded within your user-specified pitch controller.
  2. When commanding pitch from Simulink, because of the internal extrapolation of the pitch command mentioned on the forum, we recommend that the pitch command from Simulink be a smooth function rather than pitch steps.
  3. I would not expect a pitch controller to change the pitch at the maximum pitch rate for every pitch angle change.

Best regards,