questions about reference control input

Dear all,

I have a very basic question about FOWT control.
The objectives of the control system are to regulate the power and platform pitch.
One needs to actuate the blade pitch to achieve the control objectives, but how to get the reference blade pitch?

Thank you in advance!

Dear Cheng Zhang,

What do you mean by the “reference blade pitch”?

Best regards,

Dear Jason,
Assume that I want to regulate the platform motion and power(e.g. platform pitch). If wind increases, I need to actuate the blade pitch angle to make a restoring moment to reduce the motion of the platform, and maintain the turbine at rated power. So there should have a blade pitch angle in a given situation(a certain wind speed and wave) can make the wind turbine minimize the platform motion and regulate the power.
How could I have this blade pitch angle?
(sorry for my English, hope you can understand!)

Thank you,
Cheng

Dear Cheng,

Mitigating platform motion and regulating power likely require different pitch-angle commands. Normally the mean pitch angle at a given mean wind speed will be determined such that rated torque and speed are maintained. Mitigating platform motion likely requires reduced pitch-control gains or pitch and torque oscillations about their mean values. Please consult the literature on floating offshore wind control e.g. as discussed recently in the following forum topic: Negative Damping - FOWT.

Best regards,

Dear Jason,

First, thank you for your advice.
I have read the forum topic and read some paper about floating wind turbine control. I already solved the problem I posted.

But I meet another question in reading Namik’s paper ‘‘Individual blade pitch control of floating offshore wind turbines’’.

In this paper, the linearized states are platform pitch φ (rad), rotor azimuth ψ (rad), and their respective first derivatives in rad/s, and the state matrice is Δx = [Δφ; Δψ; Δφ_d; Δψ_d]. And he wants to control rotor speed and platform pitching.

What I can not understand is, why he used state rotor azimuth ψ. In my understanding, the Δψ_d refers to rotor speed, but if the control law track the rotor azimuth ψ, it will be let the blade to a certain position(operating point), the rotor will not rotation, so how to regulate the rotor speed.

Thank you in advance!
Best regards,
Cheng

Dear Cheng,

I’m not a coauthor on this paper, and so, I’m not sure I can answer your question anyway, but I’m not sure I understand what your question. Please clarify.

Best regards,

Dear Jason,

Sorry I didn’t express it clearly.

In this paper(you are coauthor), I have the same question, ‘‘State-Space Control of Tower Motion for Deepwater Floating Offshore Wind Turbines’’

A linear model was obtained using FAST linearization about a specified operating point using collective blade pitch, Namik got the state space equation:
Δx_d = AΔx + BΔu
x = Δx + x_op
u = Δu + u_op
where Δx = [Δφ; Δψ; Δφ_d; Δψ_d]
The control objectives are regulate the rotor speed and platform pitch.
If I’m right, when the Δx and converge to zero, the control purpose achieved. It means the platform pitch φ converge to φ_op, rotor azimuth ψ converge to ψ_op, also their respective first derivatives will converge to the operating point.

Here is my question, in order to control the rotor speed, why rotor azimuth ψ need to converge to a specific angle ψ_op, in my understanding, if ψ converge to ψ_op, the rotor will not rotation.

If I’m wrong, could you please tell me where I’m wrong.
Thank you!

Best regards,
Cheng

Dear Cheng,

In the paper you refer to that I coauthored with Namik and Stol, you can see that in the azimuth-averaged A matrix, the column associated with the rotor-azimuth state perturbation is zero, meaning that this state can effectively be eliminated from the state-space model, resulting in a 3-state model consisting of Δφ; Δφ_d; Δψ_d. The elimination of the azimuth state from the azimuth-averaged state matrix has been discussed several times on this forum.

Best regards,

Dear Jason,

Thank you for your help and patience!

I’m sorry I did not notice the value of A matrix!
And I will read the topic about the elimination of azimuth state.

Thank you again!
Best regards,
Cheng

Dear Jason,
I want to apply individual blade pitch (IBP) control in FOWT.
After reading the topics about linearization and MBC, I have concluded some my understandings. If I have some misunderstanding, could you correct me?

1 By linearizing the nonlinear model in operating point, I can get period state space matrix.
1.1 If there have the states in the rotating frame, I need to apply the GetMats and mbc3.m to get MBC_AvgA, which is the matrix in nonrotating frame and already averaged. But the mbc3.m does not include the MBC_AvgB, MBC_AvgC. etc. I need to add the code myself. So I can get the LTI state space matrix.
1.2 If there haven’t rotating states, I can get the LTI state space matrix by using the GetMats only, where the state matrix are AvgAMat AvgAMat, AvgBMat etc.

2 In order to use IBP control to the LTI system,
In the situation 1.1, I need MBC transform the inputs (blade pitch angle) θ1, θ2, θ3. to θ0, θc, θs, to design the control law, when I want to apply the designed control law to the FAST nonlinear system(nearby the operating point), I need inverse MBC transform input θ0, θc, θs to θ1, θ2, θ3.
In the situation 1.2, there are no rotating states, if I want to use LTI control, do I need to transform the input θ1, θ2, θ3. to θ0, θc, θs too?

3 I still confused with the Variable speed generator DOF (ψ), this state is the generator rotor azimuth or the blade rotor azimuth? How to define this DOF.
As the topics in this forum, for the purpose of control, I need to eliminate this state and retain the derivative(ψ_d), but sometimes, the column of MBC_AvgA corresponding to φ is not zero(even far from zero), I still need to eliminate ψ? Just remove the relevant row and column?

Thank you for your time and kind help.
Best regards,
Cheng

Dear Cheng,

Yes, your understanding is correct.

Regarding your specific questions:
2.2 If you don’t have rotating states, then there is no need to apply MBC3 to the states. However, if you have control inputs θ1, θ2, θ3, then you have inputs in the rotating frame, so, MBC3 should be applied to these (to get θ0, θc, θs).

3The variable-speed generator DOF in ElastoDyn is modeled as the rigid-body rotational motion of the low-speed shaft on the gearbox end of the shaft (the drivetrain torsion DOF is added to this to get the rotational motion of the hub). I would expect that the azimuth-averaged column of the A and C matrices associated with the generator DOF would be zero. If this column is not close to zero, I would expect an error in how the model was linearized (e.g. the solution is not in steady state or the periodic state matrices do not involve a full period of the rotor, or the azimuth step in the periodic state matrices is too coarse).

I hope that helps.

Best regards,

Dear Jason,

Thank you!
But I still can’t sure about DOF_GeAz. The first derivative of it is RotSpeed? If not, what is the first derivative of DOF_GeAz

Best regards,
Cheng

Dear Cheng,

The first derivative of DOF_GeAz is reported as output LSSGagVxa from the ElastoDyn module of FAST.

Best regards,

Dear Jason,
Thank you for your reply.
I linearized the FAST model and applied the MBC transformation, then I got MBC_AvgA, MBC_AvgB, MBC_AvgBd, MBC_AvgC, MBC_AvgD, MBC_AvgDd.
Here is my linearize condition

[code]Order of States in Linearized State Matrices:

Row/column 1 = Platform pitch tilt rotation DOF (internal DOF index = DOF_P)
Row/column 2 = 1st tower fore-aft bending mode DOF (internal DOF index = DOF_TFA1)
Row/column 3 = Variable speed generator DOF (internal DOF index = DOF_GeAz)
Row/column 4 = 1st flapwise bending-mode DOF of blade 1 (internal DOF index = DOF_BF(1,1))
Row/column 5 = 1st flapwise bending-mode DOF of blade 2 (internal DOF index = DOF_BF(2,1))
Row/column 6 = 1st flapwise bending-mode DOF of blade 3 (internal DOF index = DOF_BF(3,1))
Row/column 7 to 12 = First derivatives of row/column 1 to 6.

Order of Control Inputs in Linearized State Matrices:

Column 1 = individual pitch of blade 1 (rad) 1.49925E-01 op
Column 2 = individual pitch of blade 2 (rad) 1.49925E-01 op
Column 3 = individual pitch of blade 3 (rad) 1.49925E-01 op[/code]
and I applied MBC in input (blade pitch angleθ1, θ2,and θ3) and invers MBC to the output which in the rotating frame.

[code]%MBC
function [o,c,s] = MBC(a,b,c,azi_psi)

t_bar = [1 cos(azi_psi) sin(azi_psi);
1 cos(2pi/3+azi_psi) sin(2pi/3+azi_psi);
1 cos(4pi/3+azi_psi) sin(4pi/3+azi_psi)];
T_bar = inv(t_bar);

o = T_bar(1,:slight_smile:[a;b;c];
c = T_bar(2,:slight_smile:
[a;b;c];
s = T_bar(3,:)*[a;b;c];[/code]

[code]%invMBC
function [a,b,c] = invMBC(o,c,s,azi_psi)

t_bar = [1 cos(azi_psi) sin(azi_psi);
1 cos(2pi/3+azi_psi) sin(2pi/3+azi_psi);
1 cos(4pi/3+azi_psi) sin(4pi/3+azi_psi)];

a = t_bar(1,:slight_smile:[o;c;s];
b = t_bar(3,:slight_smile:
[o;c;s];
c = t_bar(3,:)*[o;c;s];[/code]
Also, I removed rotor azimuth from the state matrix(the third row of the states), as well as the relevant row and colume of MBC_AvgA, MBC_AvgB, MBC_AvgBd.
Then, from the Simulink, I got the linear model result compared with the FAST nonlinear model(the figure below), and I found it looks reasonable(the step is because of I increased the wind speed).

Here is my question.
I found in User’s Guide to MBC3, the states space model after MBC3 is :
Xdot_nr = A_nrX_nr+B_nru_nr (nr means no rotating frame)
in my understanding the A_nr = MBC_AvgA, if my understanding is right, one should apply MBC to state variable X(only the states in rotating frame) and transform X to X_nr.
I found that when I apply MBC to the states which in rotating frame, the Simulink result is completely wrong.
But if I do not apply MBC to the state variable, the result looks reasonable(like the figure below).
So where I am wrong?

Thank you very much!
Best regards,
Cheng

Dear Cheng,

I’m sorry, but I’m not sure I understand enough about what you’ve have done to know what you have done wrong.

Best regards,

Dear Jason,
Thank you for your reply!

First, I linearized the FAST model with 4 active DOF, including a rotating DOF (1st flapwise bending-mode DOF).
Then, I used mbc3.m got the MBC_AvgA, MBC_AvgB, MBC_AvgBd, MBC_AvgC, MBC_AvgD, MBC_AvgDd.
Meanwhile, I removed the 3th row and column of MBC_AvgA, 3th row of MBC_AvgB, MBC_AvgBd, and the 3th column of MBC_AvgC.(because 3th state is the rotor azimuth)
And I used MBC transform the input to the fixed frame, I used inverse MBC3 transform the outputs which are in the rotating frame.

At last, I did 2 different things, (the only difference is the manipulate with state vector X)

  1. I found in User’s Guide to MBC3, the states space model after MBC3 is :
    Xdot_nr = A_nrX_nr+B_nru_nr (nr means no rotating frame).
    in my understanding the A_nr = MBC_AvgA, so I also use MBC transform the state vector X to X_nr. But after I compared the linear result with the FAST nonlinear model, I found the result is completely wrong.

  2. I did not transform the state and used it directly, then I got a result seems reasonable.(the figure I attached previously)

I confused about is the A_nr = MBC_AvgA? Do I need to MBC transform state X or not?
(I attached the MBC transform of state X)

Best regards,
Cheng

Dear Jason,

Sorry about my English. :blush:

If there has rotating states,
1.I can use mbc3.m get MBC_AvgA, MBC_AvgB, MBC_AvgBd, MBC_AvgC, MBC_AvgD, MBC_AvgDd.
2. I need to transform input blade pitch angle θ1, θ2, θ3. to θ0, θc, θs.
3. In order to compare with the FAST’s reslut. I need to inverse transform outputs y0, yc, ys to y1, y2, y3
4. Do I need MBC transform the state vector X(assume this state vector only has 3 states x1, x2, x3, which in rotating frame), transform x1, x2, x3 to x0, xc, xs ?

Best regards,
Cheng

Dear Cheng,

Yes, I agree that A_nr = MBC_AvgA.

But I’m confused by what you are asking. By using A_nr = MBC_AvgA in place of the periodic AMat, you’ve already transformed the states from the rotating to the nonrotating frame. Likewise using B_nr = MBC_AvgB in place of the periodic BMat, you’ve already transformed the inputs from the rotating to the nonrotating frame etc.

To compare to the nonlinear FAST solution, you can solve/integrate the linear system:

dxdot_nr = A_nrdx_nr + B_nrdu_nr
dy_nr = C_nrdx_nr + D_nrdu_nr

and then calculate the global states, inputs, and outputs used by FAST by transforming the nonrotating state, input, and output perturbations to the rotating frame i.e.:

x = x_op + T_1dx_nr
u = u_op + T_1c
du_nr
y = y_op + T_1o*dy_nr

See the MBC3 documentation for a description of T_1, T_1c, and T_1o. Please note that I’m using dx, du, and dy here to be explicit that the linear solution applies to perturbations of the states, inputs, and outputs about the nonlinear operating point (x_op, u_op, and y_op).

Best regards,

Dear Jason,

Thank you for your patience! It seems that I fell into a wrong thinking!

I thought I need to use dx_nr = inv(T_1)*dx to calculate the dx_nr, actually, it has tramsformed already by MBC_AvgA.

Thank you very much!
Best regards,
Cheng

Dear Jason,

I used FAST linearization got linear model of floating wind turbine, and designed some controller based on linearized model.
Now, I want to design some controllers based on nonlinear model. Could you please tell me where can I find a nonlinear model for floating wind turbine controller design?

I’m also confused about the baseline GSPI control. In regin 3, it is a constant power controller, the generator torque is calculated by T_gen =P_rated/(w_gen*n) . So the output generator power should be a constant value equals P_rated, but after I run the .ddl file with FAST, the result shows that the output power is not a constant value. Why? Is there anything wrong with my understanding ?

Thank you
Best regards,
Cheng