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 variable-speed, variable blade-pitch-to-feather configuration wind turbine and consists of two basic control systems: a generator torque controller and a full span rotor-collective blade-pitch controller. The two control systems are designed to work independently. The objective of generator-torque controller is to maximize power capture below the rated operation point. The goal of the blade-pitch 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, single-pole low-pass 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.k-1}+(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 low-pass 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 cut-in wind speed, where the generator torque is zero and no power is extracted. Instead, the wind is used to accelerate the rotor for start-up. 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) tip-speed 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 gain-scheduled proportional-integral (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. The defaults gain scheduling law Collective Blade Pitch Angle Correction Factor \(\mathrm {[deg]}\) \(\mathrm {[1]}\) 0.0 1.00 5.0 0.56 10.0 0.39 15.0 0.30 20.0 0.24 90.0 0.05 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 low-speed 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 Controller sample interval DTSAMP DTSAMP: real > 0: Controller sample interval \(\mathrm {[T]}\) 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 'pc-minpit pc-maxpit pc-maxrat 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.2.2. Description of control system interface See Java Based Controller Interface. 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 rate YawRate YawRate: real > 0: Rotational velocity for yaw engine \(\mathrm {[deg/T]}\) 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]}\) Figure 1. Definition of (positive) yaw misalignment between wind direction and shaft orientation 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.1. Airfoil identifier CHAIRF CHAIRF: character(32): Airfoil identifier 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 user-defined dynamic stall initialization parameters = 1: User-defined dynamic stall initialization parameters will be given below = 0: No user-defined 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 angle-of-attack 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. Figure 2. Illustration of dynamic stall initialization parameters. Aerodynamic coefficients NAOA input lines AOA CL CD CM AOA: real: angle of attack \(\mathrm {[deg]}\) CL: real: non-dimensional lift coefficient \(\mathrm {[1]}\) CD: real: non-dimensional drag coefficient \(\mathrm {[1]}\) CM: real: non-dimensional moment coefficient \(\mathrm {[1]}\) 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.