1. Additional Input Files
1.1. Specification of internal control system for blade pitch and electrical power
1.1.1. Description of internal control system
The implemented control system is based on the choice of a conventional variablespeed, variable bladepitchtofeather configuration wind turbine and consists of two basic control systems: a generator torque controller and a full span rotorcollective bladepitch controller. The two control systems are designed to work independently. The objective of generatortorque controller is to maximize power capture below the rated operation point. The goal of the bladepitch controller is to regulate generator speed above the rated operation point.
Control measurement filter
Both the generator torque and blade pitch controllers use the generator speed as the sole feedback input. A recursive, singlepole lowpass filter exponential smoothing to reduce the high frequency excitation of the control systems is provided. The discrete time recursion equation for this filter is
\(\mathrm {\omega _{f.k}=\alpha \omega _{f.k1}+(1\alpha )\omega _K}\)
where
\(\mathrm {\alpha =exp((\Delta t)/(TC))}\)
where \(\mathrm {\Delta t}\) is the discrete time step, \(\mathrm {TC}\) is the filter time constant, \(\mathrm {\alpha }\) is the lowpass filter coefficient \(\mathrm {\omega _f}\) is low pass filtered generator speed and \(\mathrm {k}\) indicates the time step. The relation between the filter time constant and the cut off (corner) frequency \(\mathrm {f_C}\) is given by:
\(\mathrm {TC=\frac{1}{2\pi f_C}}\)
Generator torque controller
The generator torque is computed as a tabulated function of the filtered generator speed, incorporating five control regions: 1, 1 1/2, 2, 2 1/2 and 3 as illustrated in the figure `Illustration of the variable speed controller  Generator torque versus generator speed' below. Region 1 is a control region before cutin wind speed, where the generator torque is zero and no power is extracted. Instead, the wind is used to accelerate the rotor for startup. Region 2 is a control region for optimizing power capture. Here, the generator torque is proportional to the quare of the filtered generator speed to maintain a constant (optimal) tipspeed ratio. In region 3, the generator torque or the generator power is held constant. In case of constant power the generator torque is inversely proportional to the filtered generator speed.
Blade pitch controller
In region 3, the collective blade pitch angle commands are computed using a gainscheduled proportionalintegral (PI) control on the speed error between the filtered generator speed and the rated generator speed. The PI regulator is represented by the Laplace transform: \(\mathrm {(K(s+a))/s}\) where \(\mathrm {K}\) and \(\mathrm {a}\) are the proportional gain and the integrator gain. The corresponding and simple regulator algorithm is given by
\(\mathrm {R(t+\Delta t)=R(t)+\Delta \omega \Delta t}\)
\(\mathrm {\theta =K_P\Delta \omega aK_PR(t\Delta t)=K_P\Delta \omega K_IR(t\Delta t)}\)
where \(\mathrm {\Delta t}\) is the regulator time step, \(\mathrm {\Delta \omega }\) is the rotor speed error, i.e. the difference between filtered rotor speed and rated rotor speed. \(\mathrm {R}\) is accumulated time integrated speed error which is set to zero for filtered generator speed less than rated generator speed. \(\mathrm {\theta }\) is the instructed/required collective blade pitch angle.
Gain scheduling
Gain scheduling is introduced because the optimal proportional and integrator gains are dependent of the blade pitch angle. At each step the gain will be corrected based on the pitch angle applied in the previous step. The user may specify a gain scheduling law or choose to apply the default law presented in the table `The defaults gain scheduling law'. For intervening generator speeds, linear interpolation is used.
Illustration of the variable speed controller  Generator torque versus generator speed.
1.1.2. Input description
Engine Data, Generator, One input line
GBRATIO GNS_RATE TRQ_RATE RGN3MP

GBRATIO: real >= 1
: Gear box ratio. Number of rotations of the high speed shaft for one rotation of the low speed shaft, i.e. generator versus rotor 
GNS_RATE: real > 0
: Rated generator speed \(\mathrm {[rad/T]}\) 
TRQ_RATE: real > 0
: Rated generator torque \(\mathrm {[FL]}\) 
RGN3MP: real
: Minimum pitch angle for which electrical torque versus generator speed will stay in region 3 \(\mathrm {[deg]}\)
Engine Data, Generator One input line
RGN15SP RGN20SP RGN25SP RGN30SP TRQRGN2

RGN15SP: real > 0
: Transitional generator speed between region 1 and 1 1⁄2. Start speed for extracting power. \(\mathrm {[rad/T]}\) 
RGN20SP: real > RGN15SP
: Transitional generator speed between region 1 1⁄2 and 2. \(\mathrm {[rad/T]}\) 
RGN25SP: real > RGN20SP
: Transitional generator speed between region 2 and 2 1⁄2 \(\mathrm {[rad/T]}\) 
RGN30SP: real > RGN25SP
: Transitional generator speed between region 2 1⁄2 and 3 \(\mathrm {[rad/T]}\) 
TRQRGN2: real > 0
: Generator torque constant in region 2\(\mathrm {[FL/(rad/T)^2]}\)
Engine Data, Generator One input line
METRGN3

METRGN3: character(6)
: Method for power extraction in region 3
POWER
: Constant Power 
TORQUE
: Constant Torque

Engine Data, Generator actuator One input line
TRQ_MAXRAT TRQ_MAX

TRQ_MAXRAT: real > 0
: Maximum torque rate \(\mathrm {[FL/T]}\) 
TRQ_MAX: real > 0
: Maximum electrical torque \(\mathrm {[FL]}\)
Blade pitch Controller/actuator One input line
PC_MINPIT PC_MAXPIT PC_MAXRAT

PC_MINPIT: real
: Minimum pitch setting in pitch controller \(\mathrm {[deg]}\) 
PC_MAXPIT: real
: Maximum pitch setting in pitch controller \(\mathrm {[deg]}\) 
PC_MAXRAT: real
: Maximum pitch rate \(\mathrm {[deg/T]}\)
Controller Data (PI regulator : K(s+a)/s One input line
KP KI G_SHEDULE TC

KP: real
: Proportional gain at zero pitch angle 
KI: real
: Integral gain 
G_SHEDULE: character
: Gain scheduling; Default or Tabulated
= D
: Default 
= T
: Tabulated


TC: real
: Time constant for first order low pass filter, \(\mathrm {TC=1/\omega }\) \(\mathrm {[s/rad]}\)
Input refer to lowspeed shaft
Gain scheduling (G_SHEDULE=T) One input line
GSNumber

NOP_GST: integer > 0
: Number of points in gain scheduling table. The maximum is currently 30.
Gain Scheduling; Gain correction factors. NOP_SGST input lines
BPITCH GCF

BPITCH: real
: Blade pitch angle \(\mathrm {[deg]}\) 
GCF: real
: Gain correction factor
Example input for control system
‘ 'gbratio gnsrate trq_rate rgn3mp 97 122.911 43.09355 1.0 'rgn15sp rgn20sp rgn25sp rgn30sp trqrgn2 70.16 91.208 119.0137 121.6805 0.002332288 'metrgn3 TORQUE 'trq_maxrat trq_max 15.0 43.09355 'pcminpit pcmaxpit pcmaxrat 1. 90. 8. 'kp ki g_shedule TC 0.006275604 0.000896514 D 0.6366 ‘ ‘dtsamp 0.0125
1.2. Interface for external wind turbine blade pitch, electrical power and optionally nacelle yaw control system
1.2.1. Control system files needed for RIFLEX simulation
The input to RIFLEX for the external wind turbine control system requires the (path and) name of the executable .jar file, the class to be used within that .jar file, and the (path and) name of a file which may contain input data for the external control. See Wind turbine specification. For example, the input may be:
'jarName MyController.jar 'className no.marintek.wind.control.WindTurbineController 'config ControlInput.txt
Bladed style DLL controller:
A Bladed style external controller may alternatively be used. See Bladed style controller. Note that currently only the measurements and feedback specified in the interface description will be available in the DLL.
A DLL (or Linux .so file) may be specified by giving ";" as the .jar file and "no.marintek.wind.control.bladed.BladedController" as the class name. The third line is used to specify a file containing additional inputs to the wrapper; e.g. DLL (or .so) name, gear box ratio. For example, the input may be:
'jarname ; 'classname no.marintek.wind.control.bladed.BladedController 'config file controller.properties
An example configuration file:
#Properties configFilePath=DISCON.IN controllerDllPath=DISCON.dll gearBoxRatio=50.0 elementNum=1 elementEnd=2
This configuration file will be generated by Sima.
If running without SIMA, the configuration file must be created by the user. To pass the "Yaw bearing My" signal to the controller, specify the tower top element as the only additional element measurement and specify at which end the bending moment is taken; i.e. elementEnd=1 or elementEnd=2. Currently the tower top must be the only additional element measurement and elementNum, the index to the measured element, is not used.
1.3. Specification of internal control system for nacelle yaw
1.3.1. Description of internal control system
Only internal yaw control is currently available. See Wind turbine specification for a description of how to set up the model to use yaw control.
The yaw error is found as the relative angle between the instantaneous wind at the hub and the orientation of the shaft. The controller starts aligning the rotor nacelle assembly when a user defined threshold of the integral of the squared yaw error is reached. This gives more active response to fast changes in the yaw misalignment. The controller uses a constant, user defined yaw rate to get back to zero misalignment, or to a user defined yaw error.
The input yaw error and the output yaw angle are low pass filtered with a fast and a slow corner frequency, respectively.
The yaw controller logics follow the yaw rate controller described by Mulders and van Wingerden (2018).
Yaw controller configuration input version number
yawconfinput_ver

yawconfinput_ver: integer > 0
: Yaw controller configuration input version number. Current version is 1.
Yaw controller time step
DT_yawcontrol

DT_yawcontrol: real > 0
: Yaw controller sample interval \(\mathrm {[T]}\)
Yaw set point
YawErrSetPoint

YawErrSetPoint: real [180, 180]
: Specified nacelle yaw misalignment \(\mathrm {[deg]}\)
Yaw misalignment threshold
YawErrThresh

YawErrThresh: real > 0
: Integral threshold for activation of yaw engine \(\mathrm {[deg^2T]}\)
Fast filter corner period for low pass filtering
T_LPfiltFast

T_LPfiltFast: real > 0
: Fast filter corner period for input signal \(\mathrm {[T]}\)
Slow filter corner period for low pass filtering
T_LPfiltSlow

T_LPfiltSlow: real > 0
: Slow filter corner period for output signal \(\mathrm {[T]}\)
Example input for internal yawcontrol system
'yawconfinput_ver 1 'DT_yawcontrol Yaw controller time step (s) 0.005 'YawErrSetPoint Yaw set point (deg) 0. 'YawRate Controller yaw rate, (deg) 0.5 'YawErrThresh Yaw misalignment threshold, (deg^2 s) 1.0 'T_LPfiltFast Fast filter corner period for low pass filtering (s) 1.0 'T_LPfiltSlow Slow filter corner period for low pass filtering (s) 60.0
1.4. Airfoil library file
The airfoil library file contains the coefficient data required for aerodynamic calculations. All of the airfoils which are referred to must be included in a single file; i.e. whether or not they are part of a wind turbine. The airfoils may be listed in any order. Airfoils which are not referred to will be ignored.
Comment lines may be included on any line, as in other input files. Blank lines between airfoils will at present be ignored, but it is recommended to use comment lines instead. Blank lines at other locations in the file will be interpreted as input lines and the default values will be used.
For each airfoil, the following data groups must be given.
1.4.2. Airfoil table extension parameters
IATEXT ATAIL1 ATAIL2 ANOSE1 ANOSE2 RNOSEC

IATEXT: integer
: Flag for extending the table to deep stall regime
= 1
: Extend the table 
= 0
: Do not extend the table


ATAIL1: real
: tail angle between a line perpendicular to the flow and the line from the tip of the wedge, low (negative) angles of attack \(\mathrm {[deg]}\) 
ATAIL2: real
: as ATAIL1, but for high (positive) angles of attack \(\mathrm {[deg]}\) 
ANOSE1: real
: nose angle between a line perpendicular to the flow and the line from the tip of the wedge, low (negative) angles of attack \(\mathrm {[deg]}\) 
ANOSE2: real
: as ANOSE1, but for high (positive) angles of attack \(\mathrm {[deg]}\) 
RNOSEC: real
: ratio of the nose radius to the chord of the airfoil \(\mathrm {[1]}\)
1.4.3. Airfoil table size parameters
NRE NGEO DSIN

NRE: integer
: Number of Reynolds numbers with coefficient data 
NGEO: integer, default: 0
: number of points describing the airfoil geometry 
DSIN: integer, default: 0
: flag for userdefined dynamic stall initialization parameters
= 1
: Userdefined dynamic stall initialization parameters will be given below 
= 0
: No userdefined dynamic stall initialization parameters will be given

1.4.4. Airfoil data
One block per Reynolds number, i.e. NRE data blocks
If only one block is given, the data will be used for all Reynolds numbers. For Reynolds numbers outside the range of Reynolds numbers given, the data for the closest Reynolds number will be used; i.e. flat extrapolation.
Reynolds number
RE NAOA

RE: real
: Reynolds number for this block \(\mathrm {[1]}\) 
NAOA: integer
: number of angleofattack points for this data block
Dynamic stall initialization parameters
To be given only if DSIN
=1
AOA0 DCLDA1 DCLDA2 AOAFS1 AOAFS2

AOA0: real
: the angle of attack where there is zero lift, upcrossing \(\mathrm {[deg]}\) 
DCLDA1: real
: maximum slope of the lift curve in the linear region above AOA0 \(\mathrm {[1/deg]}\) 
DCLDA2: real
: maximum slope of the lift curve in the linear region below AOA0 \(\mathrm {[1/deg]}\) 
AOAFS1: real
: angle of attack corresponding to full separation above AOA0 \(\mathrm {[deg]}\) 
AOAFS2: real
: angle of attack corresponding to full separation below AOA0 \(\mathrm {[deg]}\)
The dynamic stall initialization parameters are shown in the figure `Illustration of dynamic stall initialization parameters' below.
1.4.5. Normalized airfoil geometry
NGEO input lines, to be given only if NGEO > 0
.
Airfoil coordinates are normalized by the chord length, with the origin
at the aerodynamic reference point. Points around the full airfoil
should be given, i.e. several lines may have the same XGEO
and
different values for YGEO
.
XGEO YGEO

XGEO: real
: x coordinate of geometry point, normalized by chord length. 
YGEO: real
: y coordinate of geometry point, normalized by chord length.