Unusual 'actual pitch' values on Simulink (FAST8)


I am trying to design a VS-VP controller of Windpact 1.5 MW turbine through the Simulink interface. I was able to replicate the VS controller satisfactorily; for pitch control, I opted to modify the parameters of the 5 MW baseline controller (over Craig Hansen’s control, since it isn’t well-documented). I’ve taken the current blade pitch and current generator speed as the inputs for calculating pitch.

I’ve been repeatedly getting error messages like: There is no valid value of phi for these operating conditions! Vx = 6.1793, Vy= -43.868, rlocal = 22.811, theta = 0.81047
The reason is straightforward: the pitch values are shooting to even 200 degrees, -150 degrees, etc (although I’ve taken utmost care in using filter for generator speed and saturation blocks for the integral speed error, pitch command, pitch rate). For example, this is a portion of the output:

Actual Pitch Pitch Command
-4.9 degrees 52.4 degrees
-98.8 degrees 52.4 degrees
82.7 degrees 52.4 degrees
52.4 degrees -97.1 degrees
-36.4 degrees 52.4 degrees
141.3 degrees 2.5 degrees
113.2 degrees 2.5 degrees
52.4 degrees 2.5 degrees
2.5 degrees 264.7 degrees
69.2 degrees 2.5 degrees

I think the central problem leading to these errors is: the failure of the actual pitch to converge to the pitch command. The actual pitch seems to swing violently around the pitch command instead of converging to it. This is happening although I’m sending the pitch command every 0.005 seconds to give sufficient time for the pitch to converge (the actual simulation rate is 0.001 seconds).

So my doubt is: once the pitch command is sent from Simulink, what is the mechanism by which that command becomes the actual pitch? As far as I’m aware, FAST doesn’t include an internal pitch actuator, so the actual pitch should be fairly in sync with the pitch command. However, it doesn’t seem so. Are there any parameters which control pitch actuation?



Dear Sarat,

There is no internal pitch actuator within FAST, but the FAST S-Function will use extrapolated values of the inputs from Simulink (linear or quadratic extrapolation, depending on your setting of InterpOrder).

It is hard to know what is going on, but here are a few questions that may help us understand:

  1. What outputs of FAST are you referring to when you say “actual pitch” and “pitch command”
  2. Is your initial pitch command from Simulink close to the initial pitch set within ElastoDyn?
  3. Do you get the response you expect if you change your Simulink model to command constant pitch?

Best regards,