Gains for IPC controller for yaw-by-IPC by ROSCO for the 15 MW

Hi everyone

I am trying to implement a yaw-by-IPC controller for the 15 MW reference wind turbine mounted on a floater. My current attempts seem to work fine at a given wind speed but poorly at others (for example, I manage to have a good alignment between the RNA and the wind at rated speed, but pretty poor at around 25 ms).

Is anyone aware of published values for the yaw-by-IPC in ROSCO, or any work that has looked into this? I imagine the values would be floater specific, but values for the UMaine semisub or even the bottom-fixed version would be a good starting point.

Thanks,
Loup

Hi Loup,

We don’t yet have yaw-by-IPC set up in ROSCO for a generic turbine. I worked on it in the past for a partner with a single point mooring system and recall similar behavior: the yaw stiffness of the floating platform decreases at higher wind speeds.

You may want to try tuning the controller for adequate performance at 25 m/s, and seeing if the same gains will apply to near rated, or you could try implementing a gain scheduling mechanism.

I hope this helps.

Best, Dan

Thanks a lot Daniel. I have two follow-up question:

  1. about gain scheduling: I see that the latest version of ROSCO has, in the DISCON.IN input file, the possibility to input several values for KP and KI. Is that how gain scheduling would be implemented? How does ROSCO select which gain it uses?

  2. in my case I also had issues at very low wind speeds as well (3 - 4 ms). Did you experience that as well? My hypothesis was that somehow yaw-by-IPC was struggling to work properly when the controller is already doing collective pitch (i.e. very low speeds and above rated), do you think that can have anything do to with what I am describing?

In any case, I will try to tune for individual wind speeds, that would probably be good enough for now.

One last question: is the theory behind the yaw-by-IPC feature explained somewhere? I checked the User Manual but could not find it there.

Again, thanks for your time,
Loup

Hi Loup,

  1. ROSCO interpolates the gains provided by the DISCON.
  2. There’s going to be low thrust at both low wind speeds and high wind speeds (due to the high pitch angle), and I think that will contribute to the low yaw stiffness.

We haven’t published any theory, but here is a paper that explains some.

I hope this helps.

Best, Dan

Thanks Dan

About your 1st point: I am looking at this document: 4. ROSCO Structure: Controller — ROSCO 2.9.4 documentation

What I understand is that I will input an array for the P and I gains, but shouldn’t there be an input for the corresponding angles (which would then be an array the same length)?

Hi Loup,

Here is an example of that array: ROSCO/Examples/Test_Cases/IEA-15-240-RWT/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_DISCON.IN at cfda6af95cda15616b840199c24fbd208e63893c · NREL/ROSCO · GitHub

Best, Dan

Hi Dan

Apologies for the misunderstanding, I was talking about the array corresponding to the Y_IPC_KP parameter. In the latest ROSCO documentation, it seems like that parameter can be an array, but I am not sure how that array is then interpreted by the controller.

The input example you linked to (which is similar to the one I have been using) only takes one gain value for the yaw-by-IPC. I am happy to stick to that for now (and use different values for different wind speeds), but I was under the impression that the fact that it can take an array meant scheduling could be done within the yaw-by-IPC itself