저작자표시-비영리-변경금지 2.0 대한민국 이용자는 아래의 조건을 따르는 경우에 한하여 자유롭게 l 이 저작물을 복제, 배포, 전송, 전시, 공연 및 방송할 수 있습니다. 다음과 같은 조건을 따라야 합니다: l 귀하는, 이 저작물의 재이용이나 배포의 경우, 이 저작물에 적용된 이용허락조건 을 명확하게 나타내어야 합니다. l 저작권자로부터 별도의 허가를 받으면 이러한 조건들은 적용되지 않습니다. 저작권법에 따른 이용자의 권리는 위의 내용에 의하여 영향을 받지 않습니다. 이것은 이용허락규약(Legal Code)을 이해하기 쉽게 요약한 것입니다. Disclaimer 저작자표시. 귀하는 원저작자를 표시하여야 합니다. 비영리. 귀하는 이 저작물을 영리 목적으로 이용할 수 없습니다. 변경금지. 귀하는 이 저작물을 개작, 변형 또는 가공할 수 없습니다.
印 印 印
··· ⅱ ··· ⅳ
ii
iv
2
-
6 -
_max
_max
-
10
-
﹡
﹡
12
-
_ _
_
_ _ _
_ _
_
_
14 - ′
_
_ 16
-
_
_
_max
_
≥
18 -
20
22 -
∼
24
-L_d = 2E-3; %d-axis synchronous inductances of the generator L_q = 2E-3; %q-axis synchronous inductances of the generator R_s = 0.18; %stator resistance on the d, q axis
npp = 4; %number of pole pair number J = 0.0048; %equivalent rotational inertia B = 3E-3; %equivalent damping coefficient lambda_m = 0.123; %permanent magnetic flux rho = 1.225; %air density
R = 2.4; %rotor radius G = 5; %gearing Ratio
30
32
-K_P_T = 100; %proportional gain for current controller K_I_T = 9000; %integration gain for current controller K_P_S =3.256097561; %proportional gain for speed controller K_I_S =325.6097561; %integration gain for speed controller
34 -Ac = [-B/J 1/J ; 0 0] Bc = [-1/J; 0] Cc = [1 0] Dc = 0; sys = ss(Ac,Bc,Cc,Dc) sysd = c2d(sys,0.0001) [Ad,Bd,Cd,Dd] = ssdata(sysd)
function xout = Newton_Raphson(P_gen,w_rot) rho = 1.225; %air density
R = 2.4; %rotor radius x=5.5; %initial value iter=10; for ii=1:iter a=(1/x)^3*(116*(1/x)-9.06)*exp((-21)*(1/x))-(P_gen/(0.5*(0.5*exp(0.7 35))*rho*pi*(R^5)*(w_rot^3))); d=(21*exp(-21/x)*(116/x - 453/50))/x^5 - (3*exp(-21/x)*(116/x - 453/50))/x^4 - (116*exp(-21/x))/x^5; x=x-(a)/(d); end xout=x; end
36 -
function [lam_out, count] = MPPT(P_g,P_g_b,w_gen,
w_gen_b,v_in,v_in_b,TSR_NR, lam_out_in,lam_out_b,count_b,alpha_b) step = 0.05; % lambda step
E_v=1/34000; % parameter for Wind speed change checking
P_diff = P_g-P_g_b; % difference between P(n) and P(n-1) w_diff = w_gen - w_gen_b; % difference between ω(n) and ω(n-1) v_diff_abs=abs(v_in-v_in_b); % absolute value of difference between v_est(n) and v_est(n-1)
V_err=E_v*v_in^3*(1/alpha_b); % calculation of allowable error
if abs(TSR_NR-(7.954+step*count_b))<=0.00018
& v_diff_abs<=V_err ; % Constant wind speed if P_diff >=0 ; % start of hill climbing search if w_diff >=0;
lam_out = lam_out_b + step; count=count_b+1;
else
lam_out = lam_out_b - step; count=count_b-1;
end else
if w_diff >=0;
lam_out = lam_out_b - step; count=count_b-1; else
lam_out = lam_out_b + step; count=count_b+1;
end
end % end of Hill climbing search else % changed wind speed
lam_out=lam_out_in; % setting reference lambda to optimal lambda count=0; % initialization of count
end end
38 -
function [alpha,c_add,k,V_err] = Kextractor(v_in,v_in_b,TSR_NR, lam_b, alpha_b, c_add_b,count_b)
step=0.05; % lambda step
E_v=1/34000; % parameter for Wind speed change checking v_diff_abs=abs(v_in-v_in_b); % absolute value of difference between v_est(n) and v_est(n-1)
V_err=E_v*v_in^3*(1/alpha_b); % calculation of allowable error
if abs(TSR_NR-(7.954+step*count_b))<=0.00018 & v_diff_abs<=V_err % constant wind speed
alpha=alpha_b;
c_add=(lam_b/7.954)^3-1; k=0;
else % changed wind speed if abs(count_b)>=2; % applying alpha alpha=alpha_b+c_add_b; % updating alpha
c_add=0; % initialization of C_add k=1;
else % not applying alpha
alpha=alpha_b; % setting alpha to previous alpha c_add=0; % initialization of C_add
k=1.1; end end end