4.2.11.2. Extended Bladed Interface
The Bladed style DLL controller interface was extended to allow for a significant number of new channels arranged in channel groups in reserved ranges. This is shown in Fig. 4.51 below.
The ServoDyn summary file contains a summary of all DLL inteface channels in use, as well as blocks of channels that are reserved.
Legacy Bladed DLL interface channel usage by SrvD:
--> indicates from SrvD to DLL
<-- indicates from DLL to SrvD
<-> indicates from bidirectional
Record # Description
-------- -----------
1 --> Status flag set as follows: 0 if this is the first call, 1 for all subsequent time steps, -1 if this is the final call at the end of the simulation (-)
2 --> Current time (sec) [t in single precision]
3 --> Communication interval (sec)
4 --> Blade 1 pitch angle (rad) [SrvD input]
5 --> Below-rated pitch angle set-point (rad) [SrvD Ptch_SetPnt parameter]
6 --> Minimum pitch angle (rad) [SrvD Ptch_Min parameter]
7 --> Maximum pitch angle (rad) [SrvD Ptch_Max parameter]
8 --> Minimum pitch rate (most negative value allowed) (rad/s) [SrvD PtchRate_Min parameter]
9 --> Maximum pitch rate (rad/s) [SrvD PtchRate_Max parameter]
10 --> 0 = pitch position actuator, 1 = pitch rate actuator (-) [must be 0 for ServoDyn]
11 --> Current demanded pitch angle (rad) [I am sending the previous value for blade 1 from the DLL, in the absence of any more information provided in Bladed documentation]
12 --> Current demanded pitch rate (rad/s) [always zero for ServoDyn]
13 --> Demanded power (W) [SrvD GenPwr_Dem parameter from input file]
14 --> Measured shaft power (W) [SrvD input]
15 --> Measured electrical power output (W) [SrvD calculation from previous step; should technically be a state]
16 --> Optimal mode gain (Nm/(rad/s)^2) [if torque-speed table look-up not selected in input file, use SrvD Gain_OM parameter, otherwise use 0 (already overwritten in Init routine)]
17 --> Minimum generator speed (rad/s) [SrvD GenSpd_MinOM parameter]
18 --> Optimal mode maximum speed (rad/s) [SrvD GenSpd_MaxOMp arameter]
19 --> Demanded generator speed above rated (rad/s) [SrvD GenSpd_Dem parameter]
20 --> Measured generator speed (rad/s) [SrvD input]
21 --> Measured rotor speed (rad/s) [SrvD input]
22 --> Demanded generator torque above rated (Nm) [SrvD GenTrq_Dem parameter from input file]
23 --> Measured generator torque (Nm) [SrvD calculation from previous step; should technically be a state]
24 --> Measured yaw error (rad) [SrvD input]
25 --> Start of below-rated torque-speed look-up table (Lookup table not in use)
26 --> No. of points in torque-speed look-up table (-) [SrvD DLL_NumTrq parameter]:
27 --> Hub wind speed (m/s) [SrvD input]
28 --> Pitch control: 0 = collective, 1 = individual (-) [SrvD Ptch_Cntrl parameter]
29 --> Yaw control: 0 = yaw rate control, 1 = yaw torque control (-) [must be 0 for ServoDyn]
30 --> Blade 1 root out-of-plane bending moment (Nm) [SrvD input]
31 --> Blade 2 root out-of-plane bending moment (Nm) [SrvD input]
32 --> Blade 3 root out-of-plane bending moment (Nm) [SrvD input]
33 --> Blade 2 pitch angle (rad) [SrvD input]
34 --> Blade 3 pitch angle (rad) [SrvD input]
35 <-- Generator contactor (-) [sent to DLL at the next call]
36 <-> Shaft brake status (-) [sent to DLL at the next call; anything other than 0 or 1 is an error]
37 --> Nacelle yaw angle from North (rad)
41 <-- demanded yaw actuator torque [this output is ignored since record 29 is set to 0 by ServoDyn indicating yaw rate control]
45 <-- Demanded pitch angle (Collective pitch) (rad)
47 <-- Demanded generator torque (Nm)
48 <-- Demanded nacelle yaw rate (rad/s)
49 --> Maximum number of characters in the "MESSAGE" argument (-) [size of ErrMsg argument plus 1 (we add one for the C NULL CHARACTER)]
50 --> Number of characters in the "INFILE" argument (-) [trimmed length of DLL_InFile parameter plus 1 (we add one for the C NULL CHARACTER)]
51 --> Number of characters in the "OUTNAME" argument (-) [trimmed length of RootName parameter plus 1 (we add one for the C NULL CHARACTER)]
53 --> Tower top fore-aft acceleration (m/s^2) [SrvD input]
54 --> Tower top side-to-side acceleration (m/s^2) [SrvD input]
55 <-- UNUSED: Pitch override [anything other than 0 is an error in ServoDyn]
56 <-- UNUSED: Torque override [anything other than 0 is an error in ServoDyn]
60 --> Rotor azimuth angle (rad) [SrvD input]
61 --> Number of blades (-) [SrvD NumBl parameter]
62 --> Maximum number of values which can be returned for logging (-) [set to 300]
63 <-- Number logging channels
64 --> Maximum number of characters which can be returned in "OUTNAME" (-) [set to 12601 (including the C NULL CHARACTER)]
65 <-- Number of variables returned for logging [anything greater than MaxLoggingChannels is an error]
69 --> Blade 1 root in-plane bending moment (Nm) [SrvD input]
70 --> Blade 2 root in-plane bending moment (Nm) [SrvD input]
71 --> Blade 3 root in-plane bending moment (Nm) [SrvD input]
73 --> Rotating hub My (GL co-ords) (Nm) [SrvD input]
74 --> Rotating hub Mz (GL co-ords) (Nm) [SrvD input]
75 --> Fixed hub My (GL co-ords) (Nm) [SrvD input]
76 --> Fixed hub Mz (GL co-ords) (Nm) [SrvD input]
77 --> Yaw bearing My (GL co-ords) (Nm) [SrvD input]
78 --> Yaw bearing Mz (GL co-ords) (Nm) [SrvD input]
82 --> Nacelle roll acceleration (rad/s^2) [SrvD input] -- this is in the shaft (tilted) coordinate system, instead of the nacelle (nontilted) coordinate system
83 --> Nacelle nodding acceleration (rad/s^2) [SrvD input]
84 --> Nacelle yaw acceleration (rad/s^2) [SrvD input] -- this is in the shaft (tilted) coordinate system, instead of the nacelle (nontilted) coordinate system
95 --> Reserved (SrvD customization: set to SrvD AirDens parameter)
96 --> Reserved (SrvD customization: set to SrvD AvgWindSpeed parameter)
109 --> Shaft torque (=hub Mx for clockwise rotor) (Nm) [SrvD input]
110 --> Thrust - Rotating low-speed shaft force x (GL co-ords) (N) [SrvD input]
111 --> Nonrotating low-speed shaft force y (GL co-ords) (N) [SrvD input]
112 --> Nonrotating low-speed shaft force z (GL co-ords) (N) [SrvD input]
117 --> Controller state [always set to 0]
120 <-- Airfoil command, blade 1
121 <-- Airfoil command, blade 2
122 <-- Airfoil command, blade 3
129 --> Maximum extent of the avrSWAP array: 3300
Legacy Bladed DLL interface with Extended avrSWAP
channel usage by SrvD:
--> indicates from SrvD to DLL
<-- indicates from DLL to SrvD
Record # Requested by Description
-------- --------------------- -----------
1000 --> Version of extended avrSWAP: 1
1001 --> General channel group -- Platform motion -- Displacement TDX (m)
1002 --> General channel group -- Platform motion -- Displacement TDY (m)
1003 --> General channel group -- Platform motion -- Displacement TDZ (m)
1004 --> General channel group -- Platform motion -- Displacement RDX (rad)
1005 --> General channel group -- Platform motion -- Displacement RDY (rad)
1006 --> General channel group -- Platform motion -- Displacement RDZ (rad)
1007 --> General channel group -- Platform motion -- Velocity TVX (m/s)
1008 --> General channel group -- Platform motion -- Velocity TVY (m/s)
1009 --> General channel group -- Platform motion -- Velocity TVZ (m/s)
1010 --> General channel group -- Platform motion -- Velocity RVX (rad/s)
1011 --> General channel group -- Platform motion -- Velocity RVY (rad/s)
1012 --> General channel group -- Platform motion -- Velocity RVZ (rad/s)
1013 --> General channel group -- Platform motion -- Acceleration TAX (m/s^2)
1014 --> General channel group -- Platform motion -- Acceleration TAY (m/s^2)
1015 --> General channel group -- Platform motion -- Acceleration TAZ (m/s^2)
1016 --> General channel group -- Platform motion -- Acceleration RAX (rad/s^2)
1017 --> General channel group -- Platform motion -- Acceleration RAY (rad/s^2)
1018 --> General channel group -- Platform motion -- Acceleration RAZ (rad/s^2)
2000 --> Ending index for the non-lidar measurements channel block
2001 --> Starting index for the lidar measurements channel block
2500 --> Ending index for the lidar measurements channel block
2501 <-- Starting index for the lidar control channel block
2600 <-- Ending index for the lidar control channel block
2601 <-- MoorDyn Cable control channel group 1 -- DeltaL
2602 <-- MoorDyn Cable control channel group 1 -- DeltaLdot
2603 <-- Cable control channel group 2 -- DeltaL
2604 <-- Cable control channel group 2 -- DeltaLdot
2605 <-- MoorDyn Cable control channel group 3 -- DeltaL
2606 <-- MoorDyn Cable control channel group 3 -- DeltaLdot
2800 <-- Ending index for the cable control channel block
2801 --> StC control channel group 1 -- StC_Disp_X
2802 --> StC control channel group 1 -- StC_Disp_Y
2803 --> StC control channel group 1 -- StC_Disp_Z
2804 --> StC control channel group 1 -- StC_Vel_X
2805 --> StC control channel group 1 -- StC_Vel_Y
2806 --> StC control channel group 1 -- StC_Vel_Z
2807 <-- StC control channel group 1 -- StC_Stiff_X (override spring constant)
2808 <-- StC control channel group 1 -- StC_Stiff_Y (override spring constant)
2809 <-- StC control channel group 1 -- StC_Stiff_Z (override spring constant)
2810 <-- StC control channel group 1 -- StC_Damp_X (override damping constant)
2811 <-- StC control channel group 1 -- StC_Damp_Y (override damping constant)
2812 <-- StC control channel group 1 -- StC_Damp_Z (override damping constant)
2813 <-- StC control channel group 1 -- StC_Brake_X (braking force)
2814 <-- StC control channel group 1 -- StC_Brake_Y (braking force)
2815 <-- StC control channel group 1 -- StC_Brake_Z (braking force)
2816 <-- StC control channel group 1 -- StC_Force_X (additional force)
2817 <-- StC control channel group 1 -- StC_Force_Y (additional force)
2818 <-- StC control channel group 1 -- StC_Force_Z (additional force)
2819 <-- StC control channel group 1 -- Reserved for future
2820 <-- StC control channel group 1 -- Reserved for future
2821 --> SStC2 StC control channel group 2 -- StC_Disp_X
2822 --> SStC2 StC control channel group 2 -- StC_Disp_Y
2823 --> SStC2 StC control channel group 2 -- StC_Disp_Z
2824 --> SStC2 StC control channel group 2 -- StC_Vel_X
2825 --> SStC2 StC control channel group 2 -- StC_Vel_Y
2826 --> SStC2 StC control channel group 2 -- StC_Vel_Z
2827 <-- SStC2 StC control channel group 2 -- StC_Stiff_X (override spring constant)
2828 <-- SStC2 StC control channel group 2 -- StC_Stiff_Y (override spring constant)
2829 <-- SStC2 StC control channel group 2 -- StC_Stiff_Z (override spring constant)
2830 <-- SStC2 StC control channel group 2 -- StC_Damp_X (override damping constant)
2831 <-- SStC2 StC control channel group 2 -- StC_Damp_Y (override damping constant)
2832 <-- SStC2 StC control channel group 2 -- StC_Damp_Z (override damping constant)
2833 <-- SStC2 StC control channel group 2 -- StC_Brake_X (braking force)
2834 <-- SStC2 StC control channel group 2 -- StC_Brake_Y (braking force)
2835 <-- SStC2 StC control channel group 2 -- StC_Brake_Z (braking force)
2836 <-- SStC2 StC control channel group 2 -- StC_Force_X (additional force)
2837 <-- SStC2 StC control channel group 2 -- StC_Force_Y (additional force)
2838 <-- SStC2 StC control channel group 2 -- StC_Force_Z (additional force)
2839 <-- SStC2 StC control channel group 2 -- Reserved for future
2840 <-- SStC2 StC control channel group 2 -- Reserved for future
3000 <-- Ending index for the StC control channel block