Generator torque as a control input in full load region. possible?

Dear Dr.Jonkman

Does inspecting some of outputs during time interval of [0,80] certify that solution has reached a quasi-steady state solution?
These figures are values of rotor speed, Generator Power and Generator Torque over this time period.

Nevertheless, I still have some doubts. Maybe I’ve missed some necessary conditions that have to be met during initialization of input files? Although everything seems correct, Is there any condition that must be met when we’re going to utilize the “Generator Torque” as the control Input?

Sincerely
Hooman Asgari



Dear Hooman,

Yes, plotting the time-series is a way to determine if you solution is in quasi-steady state; your solution does appear to be in a qausi-steady state. You could also check other outputs such as pitch angle, blade deflection, and tower deflection.

One potential problem I see in your solution is that the rated rotor speed of the WindPACT 1.5-MW turbine is 20.463 rpm = 1800 rpm generator speed. I see that your rotor speed is a bit lower than this, meaning that you variable-speed controller is operating in Region 2, not Region 3, where you trying to linearize at. This may be adversly effecting your linearized solution. To ensure that the variable-speed controller is operating in Region 3, you can lower the value of VS_RtGnSp to be less much less than the target generator speed (e.g. change 1800 to 1 rpm). Does that help?

Best regards,

Dear Dr.Jonkman,

Linearizations around different rotor speeds had been achieved formerly by decreasing blade initial pitches in the Elastodyn.dat input file. But the nyquist plot and amount of B matrix in all of them were similar, which showed that Generator Torque doesn’t affect tower and blade variables. The previous figure showed rotor speed when BlPitch was 20.72 deg. I I’ve attached here the rotor speed plot corresponding to some other situations:

Although I have not changed the default input files in Test13 (unless some minor changes, for example in Outlist routine), I wonder why these results are such unexpected?
Could you please inform me that whether you get the correct values of state-space matrices(the column corresponding to the Generator Torque is is of main focus) with the same input files I’ve used?

Sincerely
Hooman Asgari

Dear Hooman,

So in the cases where you’ve linearized with GenSpeed > VS_RtGnSpd, do you see a change in the linear system matrices and resulting control authority relative to the case where GenSpeed < VS_RtGnSpd? I would expect that you’d see a substantive change in the linear system matrices because the variable-speed torque controller is in Region 3 in the former (with a torque versus speed slope of zero) and is in Region 2 in the latter (with a nonzero torque versus speed slope).

Best regards,

Dear Dr.Jonkman,

No, The resulting matrices are very similar.

This figure shows B matrix in a case in which initial blade pitches were equal to 19.8 deg; resulting in a Generator speed of 1860 rpm which is larger than nominal generator speed(1800 rpm):

And this one represents B matrix in another test, where initial blade pitches were equal to 20.72 deg; and thus makes generator to rotate with a velocity of nearly 1762 rpm which is lower than rated value:

Sincerely,
Hooman Asgari

Dear Hooman,

You now have 6 more states than you did before; did you include addition blade modes in these results? Regardless, I would guess rows 13-14 correspond to the drivetrain rotation and torsion? Your results clear show that generator torque has far more control sensitivity to the drivetrain than to other modes (by several orders of magnitude, which is what I expect to see.

Overall, I believe you are following the correct linearization procedure.

Best regards,

Dear Dr.Jonkman

Yes, in order to know how the Generator torque affects edgewise bending of the blades, I enabled their respective DOF in the elastodyn file , which resulted in the addition of 6 states. The rows 13 and 14 show First time derivative of Variable speed generator and First time derivative of Drivetrain rotational-flexibility, respectively.

   Row/  Rotating Frame?     Description
   ----------                          --------------- 
          1     F        ED 1st tower fore-aft bending mode DOF (internal DOF index = DOF_TFA1), m
          2     F        ED 1st tower side-to-side bending mode DOF (internal DOF index = DOF_TSS1), m
          3     F        ED Variable speed generator DOF (internal DOF index = DOF_GeAz), rad
          4     F        ED Drivetrain rotational-flexibility DOF (internal DOF index = DOF_DrTr), rad
          5     T        ED 1st flapwise bending-mode DOF of blade 1 (internal DOF index = DOF_BF(1,1)), m
          6     T        ED 1st flapwise bending-mode DOF of blade 2 (internal DOF index = DOF_BF(2,1)), m
          7     T        ED 1st flapwise bending-mode DOF of blade 3 (internal DOF index = DOF_BF(3,1)), m
          8     T        ED 1st edgewise bending-mode DOF of blade 1 (internal DOF index = DOF_BE(1,1)), m
          9     T        ED 1st edgewise bending-mode DOF of blade 2 (internal DOF index = DOF_BE(2,1)), m
         10    T        ED 1st edgewise bending-mode DOF of blade 3 (internal DOF index = DOF_BE(3,1)), m
         11    F        ED First time derivative of 1st tower fore-aft bending mode DOF (internal DOF index = DOF_TFA1), m/s
         12    F        ED First time derivative of 1st tower side-to-side bending mode DOF (internal DOF index = DOF_TSS1), m/s
         13    F        ED First time derivative of Variable speed generator DOF (internal DOF index = DOF_GeAz), rad/s
         14    F        ED First time derivative of Drivetrain rotational-flexibility DOF (internal DOF index = DOF_DrTr), rad/s
         15    T        ED First time derivative of 1st flapwise bending-mode DOF of blade 1 (internal DOF index = DOF_BF(1,1)), m/s
         16    T        ED First time derivative of 1st flapwise bending-mode DOF of blade 2 (internal DOF index = DOF_BF(2,1)), m/s
         17    T        ED First time derivative of 1st flapwise bending-mode DOF of blade 3 (internal DOF index = DOF_BF(3,1)), m/s
         18    T        ED First time derivative of 1st edgewise bending-mode DOF of blade 1 (internal DOF index = DOF_BE(1,1)), m/s
         19    T        ED First time derivative of 1st edgewise bending-mode DOF of blade 2 (internal DOF index = DOF_BE(2,1)), m/s
         20    T        ED First time derivative of 1st edgewise bending-mode DOF of blade 3 (internal DOF index = DOF_BE(3,1)), m/s

It is true that generator torque has more control sensitivity over these two states with respect to other state variables. However, its order of magnitude is e-4 , which is negligible compared to other control inputs such as 9th column (commulative blade pitch). Also, it has not any considerable effect on the edgewise bending of the blades(rows 18 to 20) and side-side bending of the tower(row 12).

So why is still reasonable to consider it as one of the control inputs?

Sincerely,
Hooman Asgari

Dear Hooman,

You shouldn’t compare the magnitude of the elements of the B matrix between columns 8 and 9 because they don’t have the same units. Column 8 is per Nm (for generator torque) and column 9 is per radian (for collective blade-pitch angle).

Best regards,

Dear Dr’Jonkman

Yes, it was a mistake to compare these values. Many thanks for your hint.
But the nyquist diagram corresponding to the transfer function of “edgewise tip acceleration of blade 1” to “generator power” also shows that it has not any effect on these parameters.

Why generator power is such insensitive to generator torque?
Is the use of nyquist diagram as a basis of comparison a wrong manner to do a comparison between the impact of generator torque and commulative blade pitch on these parameters, too?

Yours Sincerely,
Hooman Asgari

Dear Hooman,

In the FAST linearization process, the generator torque control perturbation is applied directly to the ElastoDyn input, and does not pass through ServoDyn, so does not have a direct effect on the generator power in the linearization process.

I’m not sure I understand your point about edgewise tip acceleration. Neither am I too familiar with the use of Nyquist diagrams to comment.

Best regards,

Dear Dr.Jonkman,
I was reading this forum on FAST linearized model :[url]Fast Linearized Models] and I saw this reply from you:

According to 2nd paragraph, does this means that I can obtain the real effect of generator torque by using this method? If so, what is the correct way to do this? Or how should the generator torque be defined?
I’ve inserted my ServoDyn file below:

------- SERVODYN v1.05.* INPUT FILE --------------------------------------------
FAST certification Test #13: WindPACT 1.5 MW Baseline with many DOFs with VS and VP and FF turbulence. Model properties from "InputData1.5A08V07adm.xls" (from C. Hansen) with bugs removed.
---------------------- SIMULATION CONTROL --------------------------------------
False         Echo         - Echo input data to <RootName>.ech (flag)
      0.001   DT           - Communication interval for controllers (s) (or "default")
---------------------- PITCH CONTROL -------------------------------------------
          0   PCMode       - Pitch control mode {0: none, 3: user-defined from routine PitchCntrl, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
          5   TPCOn        - Time to enable active pitch control (s) [unused when PCMode=0]
     9999.9   TPitManS(1)  - Time to start override pitch maneuver for blade 1 and end standard pitch control (s)
     9999.9   TPitManS(2)  - Time to start override pitch maneuver for blade 2 and end standard pitch control (s)
     9999.9   TPitManS(3)  - Time to start override pitch maneuver for blade 3 and end standard pitch control (s) [unused for 2 blades]
          2   PitManRat(1) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 1 (deg/s)
          2   PitManRat(2) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 2 (deg/s)
          2   PitManRat(3) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 3 (deg/s) [unused for 2 blades]
        2.6   BlPitchF(1)  - Blade 1 final pitch for pitch maneuvers (degrees)
        2.6   BlPitchF(2)  - Blade 2 final pitch for pitch maneuvers (degrees)
        2.6   BlPitchF(3)  - Blade 3 final pitch for pitch maneuvers (degrees) [unused for 2 blades]
---------------------- GENERATOR AND TORQUE CONTROL ----------------------------
          1   VSContrl     - Variable-speed control mode {0: none, 1: simple VS, 3: user-defined from routine UserVSCont, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
          1   GenModel     - Generator model {1: simple, 2: Thevenin, 3: user-defined from routine UserGen} (switch) [used only when VSContrl=0]
        100   GenEff       - Generator efficiency [ignored by the Thevenin and user-defined generator models] (%)
True          GenTiStr     - Method to start the generator {T: timed using TimGenOn, F: generator speed using SpdGenOn} (flag)
True          GenTiStp     - Method to stop the generator {T: timed using TimGenOf, F: when generator power = 0} (flag)
     9999.9   SpdGenOn     - Generator speed to turn on the generator for a startup (HSS speed) (rpm) [used only when GenTiStr=False]
          0   TimGenOn     - Time to turn on the generator for a startup (s) [used only when GenTiStr=True]
     9999.9   TimGenOf     - Time to turn off the generator (s) [used only when GenTiStp=True]
---------------------- SIMPLE VARIABLE-SPEED TORQUE CONTROL --------------------
       1800   VS_RtGnSp    - Rated generator speed for simple variable-speed generator control (HSS side) (rpm) [used only when VSContrl=1]
    8376.58   VS_RtTq      - Rated generator torque/constant generator torque in Region 3 for simple variable-speed generator control (HSS side) (N-m) [used only when VSContrl=1]
   0.002585   VS_Rgn2K     - Generator torque constant in Region 2 for simple variable-speed generator control (HSS side) (N-m/rpm^2) [used only when VSContrl=1]
 9.9999E-06   VS_SlPc      - Rated generator slip percentage in Region 2 1/2 for simple variable-speed generator control (%) [used only when VSContrl=1]
---------------------- SIMPLE INDUCTION GENERATOR ------------------------------
     1.5125   SIG_SlPc     - Rated generator slip percentage (%) [used only when VSContrl=0 and GenModel=1]
     1800.0   SIG_SySp     - Synchronous (zero-torque) generator speed (rpm) [used only when VSContrl=0 and GenModel=1]
     9999.9   SIG_RtTq     - Rated torque (N-m) [used only when VSContrl=0 and GenModel=1]
     9999.9   SIG_PORt     - Pull-out ratio (Tpullout/Trated) (-) [used only when VSContrl=0 and GenModel=1]
---------------------- THEVENIN-EQUIVALENT INDUCTION GENERATOR -----------------
     9999.9   TEC_Freq     - Line frequency [50 or 60] (Hz) [used only when VSContrl=0 and GenModel=2]
       9998   TEC_NPol     - Number of poles [even integer > 0] (-) [used only when VSContrl=0 and GenModel=2]
     9999.9   TEC_SRes     - Stator resistance (ohms) [used only when VSContrl=0 and GenModel=2]
     9999.9   TEC_RRes     - Rotor resistance (ohms) [used only when VSContrl=0 and GenModel=2]
     9999.9   TEC_VLL      - Line-to-line RMS voltage (volts) [used only when VSContrl=0 and GenModel=2]
     9999.9   TEC_SLR      - Stator leakage reactance (ohms) [used only when VSContrl=0 and GenModel=2]
     9999.9   TEC_RLR      - Rotor leakage reactance (ohms) [used only when VSContrl=0 and GenModel=2]
     9999.9   TEC_MR       - Magnetizing reactance (ohms) [used only when VSContrl=0 and GenModel=2]
---------------------- HIGH-SPEED SHAFT BRAKE ----------------------------------
          0   HSSBrMode    - HSS brake model {0: none, 1: simple, 3: user-defined from routine UserHSSBr, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
     9999.9   THSSBrDp     - Time to initiate deployment of the HSS brake (s)
     9999.9   HSSBrDT      - Time for HSS-brake to reach full deployment once initiated (sec) [used only when HSSBrMode=1]
     9999.9   HSSBrTqF     - Fully deployed HSS-brake torque (N-m)
---------------------- NACELLE-YAW CONTROL -------------------------------------
          0   YCMode       - Yaw control mode {0: none, 3: user-defined from routine UserYawCont, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
          0   TYCOn        - Time to enable active yaw control (s) [unused when YCMode=0]
          0   YawNeut      - Neutral yaw position--yaw spring force is zero at this yaw (degrees)
          0   YawSpr       - Nacelle-yaw spring constant (N-m/rad)
          0   YawDamp      - Nacelle-yaw damping constant (N-m/(rad/s))
     9999.9   TYawManS     - Time to start override yaw maneuver and end standard yaw control (s)
          2   YawManRat    - Yaw maneuver rate (in absolute value) (deg/s)
          0   NacYawF      - Final yaw angle for override yaw maneuvers (degrees)
---------------------- TUNED MASS DAMPER ---------------------------------------
False         CompNTMD     - Compute nacelle tuned mass damper {true/false} (flag)
"unused"      NTMDfile     - Name of the file for nacelle tuned mass damper (quoted string) [unused when CompNTMD is false]
False         CompTTMD     - Compute tower tuned mass damper {true/false} (flag)
"unused"      TTMDfile     - Name of the file for tower tuned mass damper (quoted string) [unused when CompTTMD is false]
---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface]
"unused"      DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface]
"DISCON.IN"    DLL_InFile   - Name of input file sent to the DLL (-) [used only with Bladed Interface]
"DISCON"      DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface]
"default"     DLL_DT       - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface]
false         DLL_Ramp     - Whether a linear ramp should be used between DLL_DT time steps [introduces time shift when true] (flag) [used only with Bladed Interface]
     9999.9   BPCutoff     - Cuttoff frequency for low-pass filter on blade pitch from DLL (Hz) [used only with Bladed Interface]
          0   NacYaw_North - Reference yaw angle of the nacelle when the upwind end points due North (deg) [used only with Bladed Interface]
          0   Ptch_Cntrl   - Record 28: Use individual pitch control {0: collective pitch; 1: individual pitch control} (switch) [used only with Bladed Interface]
          0   Ptch_SetPnt  - Record  5: Below-rated pitch angle set-point (deg) [used only with Bladed Interface]
          0   Ptch_Min     - Record  6: Minimum pitch angle (deg) [used only with Bladed Interface]
          0   Ptch_Max     - Record  7: Maximum pitch angle (deg) [used only with Bladed Interface]
          0   PtchRate_Min - Record  8: Minimum pitch rate (most negative value allowed) (deg/s) [used only with Bladed Interface]
          0   PtchRate_Max - Record  9: Maximum pitch rate  (deg/s) [used only with Bladed Interface]
          0   Gain_OM      - Record 16: Optimal mode gain (Nm/(rad/s)^2) [used only with Bladed Interface]
          0   GenSpd_MinOM - Record 17: Minimum generator speed (rpm) [used only with Bladed Interface]
          0   GenSpd_MaxOM - Record 18: Optimal mode maximum speed (rpm) [used only with Bladed Interface]
          0   GenSpd_Dem   - Record 19: Demanded generator speed above rated (rpm) [used only with Bladed Interface]
          0   GenTrq_Dem   - Record 22: Demanded generator torque above rated (Nm) [used only with Bladed Interface]
          0   GenPwr_Dem   - Record 13: Demanded power (W) [used only with Bladed Interface]
---------------------- BLADED INTERFACE TORQUE-SPEED LOOK-UP TABLE -------------
          0   DLL_NumTrq   - Record 26: No. of points in torque-speed look-up table {0 = none and use the optimal mode parameters; nonzero = ignore the optimal mode PARAMETERs by setting Record 16 to 0.0} (-) [used only with Bladed Interface]
 GenSpd_TLU   GenTrq_TLU
 (rpm)          (Nm)
---------------------- OUTPUT --------------------------------------------------
True          SumPrint     - Print summary data to <RootName>.sum (flag) (currently unused)
          1   OutFile      - Switch to determine where output will be placed: {1: in module output file only; 2: in glue code output file only; 3: both} (currently unused)
True          TabDelim     - Use tab delimiters in text tabular output file? (flag) (currently unused)
"ES10.3E2"    OutFmt       - Format used for text tabular output (except time).  Resulting field should be 10 characters. (quoted string) (currently unused)
          0   TStart       - Time to begin tabular output (s) (currently unused)
              OutList      - The next line(s) contains a list of output parameters.  See OutListParameters.xlsx for a listing of available output channels, (-)
"BlPitchC1"      -Blade 1 pitch angle command
"BlPitchC2"      -Blade 2 pitch angle command
"BlPitchC3"      -Blade 3 pitch angle command
"GenTq"             -Electrical generator torque
"GenPwr"      -Electrical generator power
END of input file (the word "END" must appear in the first 3 columns of this last OutList line)
---------------------------------------------------------------------------------------

Yours sincerely,
Hooman Asgari

Dear Hooman,

Yes. You can include the effect of the linearized torque controller in your linearized model by enabling VSContrl = 1 (for the simple variable-speed controller) or VSContrl = 0 with GenModel = 1 (simple induction generator model) or 2 (Thevenin-equivalent induction generator model) and setting the appropriate torque inputs for the selected model in the ServoDyn input file.

Best regards,

Dear Dr.Jonkman,
Thanks for your reply.
A clarification: َAs my aim is to design a controller for the system, I don’t want to see any of the internal controllers of the system enabled, Instead, what I must see is the operation of the open loop system itself.
I’d already set 1 = VSContrl and 1 = GenModel. Now I’ve changed VSControl = 0 and did the linearization process again. Then, based on MBC_Avg matrices, I constructed a system in Matlab. Below figures show the step responses of this system:

Obviously these results can’t represent an open-loop wind turbine system, because, as what these figures are showing, a step change of 1 radian has no steady-state effect neither on the rotor speed nor the power. The story is the same for the horizontal wind speed and other inputs. So it is clear that this system is somehow being controlled to tune the parameters and this is not what I’m looking for.
In an open loop system, a step change in the horizontal wind speed logically increases the rotor speed. How can I achieve this model?

Sincerely Yours,
Hooman Asgari

Dear Hooman,

I’m a bit surprised that a step response input to the linear model results in the rotor speed returning to the optimization point. I would not expect the simple induction generator (SIG) model that you’ve selected to do this, because while the SIG introduces a damping, it does not introduce a stiffness. What happens if you fix the generator torque by setting VSContrl = 1, VS_RtTq to the desired (fixed) generator torque, and VS_RtGnSp = VS_Rgn2K = VS_SlPc = 0.0001 (or small nonzero value)?

Best regards,

Dear Dr.Jonkman,

By

Do you mean the below settings?

     0.0001   VS_RtGnSp    - Rated generator speed for simple variable-speed generator control (HSS side) (rpm) [used only when VSContrl=1]
    8376.58   VS_RtTq      - Rated generator torque/constant generator torque in Region 3 for simple variable-speed generator control (HSS side) (N-m) [used only when VSContrl=1]
     0.0001   VS_Rgn2K     - Generator torque constant in Region 2 for simple variable-speed generator control (HSS side) (N-m/rpm^2) [used only when VSContrl=1]
     0.0001   VS_SlPc      - Rated generator slip percentage in Region 2 1/2 for simple variable-speed generator control (%) [used only when VSContrl=1]

I applied the above changes and simulated the “.fst” file again using command prompt. After passing the resulting “.lin” files to Matlab using GetMats_f8.m, applied the “mbc.m” to the resulting matrices and finally constructed the system based on the MBC_Avg marices. However, Step response of this system was unusual too!

Sincerely Yours,
Hooman Asgari

Dear Hooman,

Yes, your variable-speed-torque-control section of the ServoDyn input file looks correct.

You eliminated the generator-azimuth state from your linearized model (as discussed e.g. in the following forum topic: FAST linearization V7), correct?

Best regards,

Dear Dr.Jonkman
No, I didn’t know that such removal must be done. However, removing that state was a breakthrough . Thanks for your kind advice!

These are the new results:

In comparison with earlier plots, they seem reasonable, don’t they? But I wonder why the effect of generator torque is so negligible?

Another question: As my control inputs are only commulative blade pitch and generator torque, do I till need to apply mbcInverse transform to the model?

Sincerely Yours,
Hooman Asgari

Dear Hooman,

Yes, your results now look more reasonable. Could the small magnitude of the generator torque step response be related to the units?

I’m not sure I understand your last question, but the MBC transformation only needs to be applied to inputs, outputs, and states in the rotating frame i.e. for those inputs, outputs, and states that are set uniquely for each blade. The MBC transformation should not effect collective blade-pitch or generator torque.

Best regards,

Dear Dr.Jonkman,
Using Simulink, I applied a 300 N.m step input to the model (i.e 300*u(t-15)), and got the below results:

Looks unusual, doesn’t? Furthermore, as was shown my previous post, a step change in the commulative blade pitch results in the 80 rpm decreasement of rotor speed, while the rated rotro speed is only 20 rpm!!!

Sincerely Yours,
Hooman Asgari

Dear Hooman,

I’m having a hard time understanding enough about what you are doing to comment. Please explain what you are doing and clarify your question if you want me to answer.

Best regards,