For my research I am trying to see how a passive blade pitching mechanism would fare in wind turbines, and I’ve been wanting to implement this in OpenFAST. I’ve been running fixed-point simulations on the IEA 15 MW turbine and my results seem to agree with the turbine specifications, so at least I feel ok about running basic simulations.
Now I’m intending on implementing the passive pitching mechanism into the model and would appreciate if someone could help me by maybe pointing out a good starting point.
My main problem is not knowing how to control blade pitches during runtime. The system I’m interesting in implementing is very simple: a torsional spring system which arrives at a blade pitch by reaching an equilibrium between forces of the spring and blade loading. I want to increment blade pitches at each timestep, given corresponding aero-loading and spring reaction forces.
I know that turbine controls can be handled by ROSCO - I have that downloaded, I know that it comes with a nice Simulink interface, and I am prepared to learn how it works to try to implement my mechanism.
However, ROSCO is a a complex tool with a lot of optimisation control mechanisms, and from outside it seems like it could be overkill for what I want to do. Could someone please shed some light whether trying to achieve this through ROSCO or any other controller (say, DTU) would be a good way, or whether there’s a simpler method. I am aware that ServoDyn has a user-defined PitchCntrl method in its source code, and that it’s somehow possible to communicate with the module using Simulink, but I don’t know FORTRAN to write my own method there and I can’t seem to find in-depth information about the Simulink interface. Happy to learn it if needed.
If the information is easily findable, apologies for taking up your time but I’ve spent a few weeks (months evens) skimming through documentation for relevant information but am not getting anywhere. And with how big of a system FAST is, I’d prefer to avoid spending a disproportionate amount of time going down the documentation rabbit hole for modules that might not be relevant, hence me finally posting this question here.
Thanks in advance,