Source Documentation¶
dtu_we_controller¶
Description
Main module of the Basic DTU Wind Energy Controller. Interface for HAWC2.
Quick access
| Variables: | ctrlstatus, time_old, dump_array |
|---|---|
| Routines: | init_regulation_advanced(), update_regulation(), init_regulation() |
Needed modules
dtu_we_controller_fcns: Module with general function that are specific of the DTU Wind Energy Controller. Types are also defined in this module.safety_system_modturbine_controller_mod: Module containing the main subroutines for the wind turbine regulation.
Variables
-
dtu_we_controller/dump_array(50) [real]¶
-
-
dtu_we_controller/ctrlstatus[integer]¶
-
-
dtu_we_controller/time_old[real]¶
-
Subroutines and functions
-
subroutine
dtu_we_controller/init_regulation(array1, array2)¶ DEC$ IF .NOT. DEFINED(__MAKEFILE__) DEC$ ATTRIBUTES DLLEXPORT :: init_regulation DEC$ END IF
Parameters: - array1 (100) [real,inout]
- array2 (1) [real,inout]
Called from:
-
subroutine
dtu_we_controller/init_regulation_advanced(array1, array2)¶ DEC$ IF .NOT. DEFINED(__MAKEFILE__) DEC$ ATTRIBUTES DLLEXPORT::init_regulation_advanced DEC$ END IF
Parameters: - array1 (100) [real,inout]
- array2 (1) [real,inout]
Call to:
-
subroutine
dtu_we_controller/update_regulation(array1, array2)¶ - Controller interface.
- sets DLL inputs/outputs.
- sets controller timers.
- calls the safety system monitor (higher level).
DEC$ IF .NOT. DEFINED(__MAKEFILE__) DEC$ ATTRIBUTES DLLEXPORT :: update_regulation DEC$ END IF
Parameters: - array1 (100) [real,inout]
- array2 (100) [real,inout]
Call to:
turbine_controller_mod¶
Description
Module containing the main subroutines for the wind turbine regulation.
Quick access
Needed modules
dtu_we_controller_fcns: Module with general function that are specific of the DTU Wind Energy Controller. Types are also defined in this module.
Variables
-
turbine_controller_mod/kopt_dot[real]¶
-
-
turbine_controller_mod/genspeedrefmin[real]¶
-
-
turbine_controller_mod/gearratio[integer]¶
-
-
turbine_controller_mod/perated[real]¶
-
-
turbine_controller_mod/ttfa_pwr_lower[real]¶
-
-
turbine_controller_mod/dt_mode_filt[tnotch2order,save]¶
-
-
turbine_controller_mod/errdot0[real]¶
-
-
turbine_controller_mod/pitchcolrefold[real]¶
-
-
turbine_controller_mod/partialloadcontrolmode[integer]¶
-
-
turbine_controller_mod/gentorquerated[real]¶
-
-
turbine_controller_mod/deltat[real]¶
-
-
turbine_controller_mod/timerexcl[real]¶
-
-
turbine_controller_mod/timerstartup[real]¶
-
-
turbine_controller_mod/addedpitchrate[real]¶
-
-
turbine_controller_mod/timershutdown2[real]¶
-
-
turbine_controller_mod/stepno[integer]¶
-
-
turbine_controller_mod/switchfirstordervar[tfirstordervar,save]¶
-
-
turbine_controller_mod/gentorqueref0[real]¶
-
-
turbine_controller_mod/pitchstopang[real]¶
-
-
turbine_controller_mod/gentorquerefold[real]¶
-
-
turbine_controller_mod/w_region[integer]¶
-
-
turbine_controller_mod/monivar[tsafetysystem,save]¶
-
-
turbine_controller_mod/genspeedrefmax[real]¶
-
-
turbine_controller_mod/wspfirstordervar[tfirstordervar,save]¶
-
-
turbine_controller_mod/excl_flag[real]¶
-
-
turbine_controller_mod/generator_cutin[logical]¶
-
-
turbine_controller_mod/const_power[logical]¶
-
-
turbine_controller_mod/timergencutin[real]¶
-
-
turbine_controller_mod/ttfa_pwrfirstordervar[tfirstordervar,save]¶
-
-
turbine_controller_mod/pitnonlin1[real]¶
-
-
turbine_controller_mod/stoptype[integer]¶
-
-
turbine_controller_mod/pitchcolref0[real]¶
-
-
turbine_controller_mod/err0[real]¶
-
-
turbine_controller_mod/kopt[real]¶
-
-
turbine_controller_mod/vcutout[real]¶
-
-
turbine_controller_mod/timershutdown[real]¶
-
-
turbine_controller_mod/pwr_dt_mode_filt[tnotch2order,save]¶
-
-
turbine_controller_mod/genspeed_at_stop[real]¶
-
-
turbine_controller_mod/omega2ordervar[tlowpass2order,save]¶
-
-
turbine_controller_mod/gentorque_at_stop[real]¶
-
-
turbine_controller_mod/tsr_opt[real]¶
-
-
turbine_controller_mod/pitchgsvar[tpitchgsvar,save]¶
-
-
turbine_controller_mod/r[real]¶
-
-
turbine_controller_mod/gentorquemax[real]¶
-
-
turbine_controller_mod/rel_limit[real]¶
-
-
turbine_controller_mod/pitchfirstordervar[tfirstordervar,save]¶
-
-
turbine_controller_mod/ttfa_pwr_upper[real]¶
-
-
turbine_controller_mod/vstorm[real]¶
-
Subroutines and functions
-
subroutine
turbine_controller_mod/turbine_controller(ctrlstatus, gridflag, genspeed, pitchvect, wsp, pe, ttaccvect, gentorqueref, pitchcolref, dump_array)¶ Parameters: - ctrlstatus [integer,inout] :: Integer indicating the status of the controller. ! (0: Normal operation, <0: Start-up., >0: Shutdown)
- gridflag [integer,inout] :: Integer indicating the status of the grid.
- genspeed [real,in] :: Measured generator speed [rad/s].
- pitchvect (3) [real,in] :: Measured pitch angles [rad].
- wsp [real,in] :: Measured wind speed [m/s].
- pe [real,in] :: Measured electrical power [W].
- ttaccvect (2) [real,in] :: Measured tower top acceleration. Longitudinal and ! lateral components [m/s**2].
- gentorqueref [real,out] :: Generator torque reference [Nm].
- pitchcolref [real,out] :: Reference collective pitch [rad].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to:
-
subroutine
turbine_controller_mod/normal_operation(genspeed, pitchvect, wsp, pe, ttfa_acc, gentorqueref, pitchcolref, dump_array)¶ - Controller for normal operation.
Parameters: - genspeed [real,in] :: Measured generator speed [rad/s].
- pitchvect (3) [real,in] :: Measured pitch angles [rad].
- wsp [real,in] :: Measured wind speed [m/s].
- pe [real,in] :: Measured electrical power [W].
- ttfa_acc [real,in] :: Measured tower top longitudinal acceleration.
- gentorqueref [real,out] :: Generator torque reference [Nm].
- pitchcolref [real,out] :: Reference collective pitch [rad].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to: lowpass2orderfilt(),lowpass1orderfilt(),getoptipitch(),torquecontroller(),drivetraindamper(),switch_spline(),pitchcontroller(),towerdamper()
-
subroutine
turbine_controller_mod/start_up(ctrlstatus, genspeed, pitchvect, wsp, gentorqueref, pitchcolref, dump_array)¶ - Start-up procedures.
Parameters: - ctrlstatus [integer,inout] :: Integer indicating the status of the controller. ! (0: Normal operation, <0: Start-up., >0: Shutdown)
- genspeed [real,in] :: Measured generator speed [rad/s].
- pitchvect (3) [real,in] :: Measured pitch angles [rad].
- wsp [real,in] :: Measured wind speed [m/s].
- gentorqueref [real,out] :: Generator torque reference [Nm].
- pitchcolref [real,out] :: Reference collective pitch [rad].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to: lowpass2orderfilt(),lowpass1orderfilt(),getoptipitch(),pid2(),pid()
-
subroutine
turbine_controller_mod/shut_down(ctrlstatus, genspeed, pitchvect, wsp, gentorqueref, pitchcolref, dump_array)¶ - Shut-down procedures.
Parameters: - ctrlstatus [integer,in] :: Integer indicating the status of the controller. ! (0: Normal operation, <0: Start-up., >0: Shutdown)
- genspeed [real,in] :: Measured generator speed [rad/s].
- pitchvect (3) [real,in] :: Measured pitch angles [rad].
- wsp [real,in] :: Measured wind speed [m/s].
- gentorqueref [real,out] :: Generator torque reference [Nm].
- pitchcolref [real,out] :: Reference collective pitch [rad].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to:
-
subroutine
turbine_controller_mod/monitoring(ctrlstatus, gridflag, genspeed, ttacc, dump_array)¶ - Lower level system monitoring. It changes the controller status to: - (1) if filtered GenSpeed is higher than the overspeed limit. - (2) if GridFlag is not 0. - (3) if filtered TTAcc is higher than the safety limit. - (6) if GenSpeed is negative.
Parameters: - ctrlstatus [integer,inout] :: Integer indicating the status of the controller. ! (0: Normal operation, <0: Start-up., >0: Shutdown)
- gridflag [integer,inout] :: Integer indicating the status of the grid.
- genspeed [real,in] :: Measured generator speed [rad/s].
- ttacc [real,in] :: Tower top acceleration [m/s**2].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to:
-
subroutine
turbine_controller_mod/torquecontroller(genspeed, genspeedfilt, dgenspeed_dtfilt, pitchmean, wspfilt, pitchmin, genspeedref_full, pe, gentorqueref, dump_array)¶ Parameters: - genspeed [real,in] :: Measured generator speed [rad/s].
- genspeedfilt [real,in] :: Filtered generator speed [rad/s].
- dgenspeed_dtfilt [real,in] :: Filtered generator acceleration [rad/s**2].
- pitchmean [real,in] :: Mean pitch angle [rad].
- wspfilt [real,in] :: Filtered wind speed [m/s].
- pitchmin [real,in] :: Minimum pitch angle [rad].
- genspeedref_full [real,in] :: Reference generator speed [rad/s].
- pe [real,in] :: Measured electrical power [W].
- gentorqueref [real,out] :: Generator torque reference [Nm].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to: switch_spline(),lowpass1orderfilt(),rotorspeedexcl(),pid()
-
subroutine
turbine_controller_mod/pitchcontroller(genspeedfilt, dgenspeed_dtfilt, pitchmeanfilt, pe, pitchmin, genspeedref_full, pitchcolref, dump_array)¶ Parameters: - genspeedfilt [real,in] :: Filtered generator speed [rad/s].
- dgenspeed_dtfilt [real,in] :: Filtered generator acceleration [rad/s**2].
- pitchmeanfilt [real,in] :: Filtered mean pitch angle [rad].
- pe [real,in] :: Measured electrical power [W].
- pitchmin [real,in] :: Minimum pitch angle [rad].
- genspeedref_full [real,in] :: Reference generator speed [rad/s].
- pitchcolref [real,out] :: Reference collective pitch angle [rad].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to:
-
subroutine
turbine_controller_mod/rotorspeedexcl(genspeedfilt, gentorque, qg_min_partial, gentorquemax_partial, genspeedfilterr, outmax, outmin, dump_array)¶ Parameters: - genspeedfilt [real,in] :: Filtered measured generator speed [rad/s].
- gentorque [real,in] :: Measured generator torque [Nm].
- qg_min_partial [real,in] :: Generator torque lower limit [Nm].
- gentorquemax_partial [real,in] :: Generator torque upper limit [Nm].
- genspeedfilterr [real,inout] :: Filtered generator speed error [rad/s].
- outmax [real,inout] :: Generator torque maximum value [Nm].
- outmin [real,inout] :: Generator torque minimum value [Nm].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to:
-
subroutine
turbine_controller_mod/drivetraindamper(genspeed, qdamp_ref, dump_array)¶ - Drivetrain damper.
Parameters: - genspeed [real,in] :: Measured generator speed [rad/s].
- qdamp_ref [real,out] :: Generator torque reference component from the drivetrain ! damper [Nm].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to:
-
subroutine
turbine_controller_mod/towerdamper(ttfa_acc, theta_dam_ref, dump_array)¶ - Longitudinal tower damper.
Parameters: - ttfa_acc [real,in] :: Measured tower top longitudinal acceleration [m/s**2].
- theta_dam_ref [real,out] :: Reference pitch angle component from longitudinal tower ! damper [rad].
- dump_array (50) [real,inout] :: Array for output.
Called from: Call to:
safety_system¶
Quick access
| Variables: | safetysystemvar |
|---|---|
| Routines: | safety_system() |
Needed modules
dtu_we_controller_fcns: Module with general function that are specific of the DTU Wind Energy Controller. Types are also defined in this module.
Variables
-
safety_system_mod/safetysystemvar[tsafetysystem]¶
-
Subroutines and functions
-
subroutine
safety_system_mod/safety_system(stepno, deltat, omega, ttaccvect, emergpitchstop, activemechbrake, dump_array)¶ - Safety system. Higher level of system monitoring. It activates the emergency pitch stop and the mechanical brake if the rotor speed or the tower top acceleration exceed certain levels.
Parameters: - stepno [integer,in] :: Time step number.
- deltat [real,in] :: Time step size.
- omega [real,in] :: Measured rotor speed.
- ttaccvect (2) [real,in] :: Measured tower top acceleration. Longitudinal and ! lateral components [m/s**2].
- emergpitchstop [integer,out] :: Flag for emergency pitch stop.
- activemechbrake [integer,out] :: Flag for emergency brake activation.
- dump_array (50) [real,inout]
Called from: Call to:
dtu_we_controller_fcns¶
Description
Module with general function that are specific of the DTU Wind Energy Controller. Types are also defined in this module.
Quick access
| Types: | tcutin, tcutout, tdamper, texclzone, tpid2var, tpidvar, tpitchgsvar, tsafetysystem, tswitch, twpdata |
|---|---|
| Variables: | maxwplines, excluzone, opdatavar |
| Routines: | pid(), pid2(), damper(), getoptipitch(), switch_spline(), interpolate() |
Needed modules
misc_mod: Module where filters and the corresponding types are defined.
Types
-
type
dtu_we_controller_fcns/tpidvar¶ Type fields: %outset[real]%kpro[real]%outpro[real]%outdif[real]%outres1[real]%outres1_old[real]%outmax[real]%error1[real]%velmax[real]%outmin[real]%kdif[real]%kint[real]%error1_old[real]%stepno1[integer]%outset1_old[real]%outset1[real]%outres[real]
-
type
-
type
dtu_we_controller_fcns/tpid2var¶ Type fields: %outset[real]%kpro(2) [real]%outpro[real]%outdif[real]%outres1[real]%outres1_old[real]%outmax[real]%error1(2) [real]%velmax[real]%outmin[real]%kdif(2) [real]%kint(2) [real]%error1_old(2) [real]%stepno1[integer]%outset1_old[real]%outset1[real]%outres[real]
-
type
-
type
dtu_we_controller_fcns/twpdata¶ Type fields: %wpdata(maxwplines,2) [real]%lines[integer]
-
type
-
type
dtu_we_controller_fcns/tdamper¶ Type fields: %delay[ttdelay]%td[real]%notch[tnotch2order]%gain[real]%bandpass[tbandpassfilt]
-
type
-
type
dtu_we_controller_fcns/texclzone¶ Type fields: %notch[tnotch2order]%hwr_tg[real]%lwr[real]%lwr_tg[real]%hwr[real]%time_excl_delay[real]
-
type
-
type
dtu_we_controller_fcns/tcutin¶ Type fields: %delay[real]%time[real]
-
type
-
type
dtu_we_controller_fcns/tcutout¶ Type fields: %torquedelay[real]%pitchdelay2[real]%pitchvelmax2[real]%pitchvelmax[real]%time[real]%stoptype[integer]%pitchdelay[real]
-
type
-
type
dtu_we_controller_fcns/tswitch¶ Type fields: %rel_sp_open_qg[real]%pitang_upper[real]%pitang_lower[real]
-
type
-
type
dtu_we_controller_fcns/tsafetysystem¶ Type fields: %rystevagtfirstordervar[tfirstordervar]%omega2ordervar[tlowpass2order]%overspeed[real]%rystevagtlevel[real]
-
type
-
type
dtu_we_controller_fcns/tpitchgsvar¶ Type fields: %invkk2_speed[real]%invkk1_speed[real]%invkk2[real]%invkk1[real]%kp_speed[real]
-
type
Variables
-
dtu_we_controller_fcns/maxwplines[integer,parameter=100]¶
-
Subroutines and functions
-
function
dtu_we_controller_fcns/switch_spline(x, x0, x1)¶ A function that goes from 0 at x0 to 1 at x1
Parameters: - x [real]
- x0 [real]
- x1 [real]
Return: switch_spline [real]
Called from:
-
function
dtu_we_controller_fcns/interpolate(x, x0, x1, f0, f1)¶ Linear interpolation of x through the points (x0, f0) and (x1, f1)
Parameters: - x [real]
- x0 [real]
- x1 [real]
- f0 [real]
- f1 [real]
Return: interpolate [real]
Called from:
-
function
dtu_we_controller_fcns/getoptipitch(wsp)¶ Computes pitch angle from look-up table based on wind speed input
Parameters: wsp [real] Return: getoptipitch [real] Called from: start_up(),normal_operation()Call to: interpolate()
-
function
dtu_we_controller_fcns/pid(stepno, dt, kgain, pidvar, error)¶ PID controller with one input.
Parameters: - stepno [integer]
- dt [real]
- kgain (3) [real]
- pidvar [tpidvar]
- error [real]
Return: pid [real]
Called from:
-
function
dtu_we_controller_fcns/pid2(stepno, dt, kgain, pidvar, error, added_term)¶ PID controller with two inputs. Used for the pitch angle with feebacks from generator speed and power errors.
Parameters: - stepno [integer]
- dt [real]
- kgain (3,2) [real]
- pidvar [tpid2var]
- error (2) [real]
- added_term [real]
Return: pid2 [real]
Called from:
misc_mod¶
Description
Module where filters and the corresponding types are defined.
Quick access
| Types: | tbandpassfilt, tfirstordervar, tlowpass2order, tnotch2order, ttdelay |
|---|---|
| Variables: | degrad, pi, raddeg, mk, vertext32 |
| Routines: | timedelay(), bandpassfilt(), lowpass2orderfilt(), notch2orderfilt(), lowpass1orderfilt() |
Types
-
type
misc_mod/tfirstordervar¶ Type fields: %tau[real]%stepno1[integer]%y1[real]%y1_old[real]%x1[real]%x1_old[real]
-
type
-
type
misc_mod/tlowpass2order¶ Type fields: %f0[real]%x1[real]%x2_old[real]%y2_old[real]%x1_old[real]%x2[real]%stepno1[integer]%y1[real]%zeta[real]%y2[real]%y1_old[real]
-
type
-
type
misc_mod/tnotch2order¶ Type fields: %f0[real]%x1[real]%x2_old[real]%zeta2[real]%zeta1[real]%y2_old[real]%x2[real]%stepno1[integer]%y1[real]%x1_old[real]%y2[real]%y1_old[real]
-
type
-
type
misc_mod/tbandpassfilt¶ Type fields: %f0[real]%tau[real]%x1[real]%x2_old[real]%y2_old[real]%x1_old[real]%x2[real]%stepno1[integer]%y1[real]%zeta[real]%y2[real]%y1_old[real]
-
type
-
type
misc_mod/ttdelay¶ Type fields: %xz(40) [real]%stepno1[integer]
-
type
Variables
-
misc_mod/raddeg[real]¶
-
-
misc_mod/pi[real]¶
-
-
misc_mod/vertext32[character]¶
-
-
misc_mod/mk[integer,parameter=kind(1.0d0)]¶
-
-
misc_mod/degrad[real]¶
-
Subroutines and functions
-
function
misc_mod/lowpass1orderfilt(dt, stepno, filt, x)¶ First order low-pass filter.
Parameters: - dt [real]
- stepno [integer]
- filt [tfirstordervar]
- x [real]
Return: lowpass1orderfilt [real]
Called from: torquecontroller(),monitoring(),shut_down(),safety_system(),start_up(),normal_operation()
-
function
misc_mod/lowpass2orderfilt(dt, stepno, filt, x)¶ Second order low-pass filter.
Parameters: - dt [real]
- stepno [integer]
- filt [tlowpass2order]
- x [real]
Return: lowpass2orderfilt (2) [real]
Called from: lowpass2orderfilt(),monitoring(),shut_down(),safety_system(),start_up(),normal_operation()Call to:
-
function
misc_mod/notch2orderfilt(dt, stepno, filt, x)¶ Second order notch filter.
Parameters: - dt [real]
- stepno [integer]
- filt [tnotch2order]
- x [real]
Return: notch2orderfilt [real]
Called from:
-
function
misc_mod/bandpassfilt(dt, stepno, filt, x)¶ Second order band-pass filter.
Parameters: - dt [real]
- stepno [integer]
- filt [tbandpassfilt]
- x [real]
Return: bandpassfilt [real]
Called from: