資源簡介
基于陰影下串聯組件的最大功率追蹤技術。基于陰影下串聯組件的最大功率追蹤技術。基于陰影下串聯組件的最大功率追蹤技術。基于陰影下串聯組件的最大功率追蹤技術。

代碼片段和文件信息
clear;
clc;
t_count0=cputime;
n=3;%電池片數
Dot_regon=100;%初始點數
Speed1=0.5;%此處應測試不同參數下的影響
Speed2=0.5;
P_max_all=0;
I_max_all=0;
P_max_sig=zeros(1Dot_regon+1);
I_max_sig=zeros(1Dot_regon+1);
Temp_L=30;%運行于最低溫度的電池片環境溫度
S_H=0;%運行于最高光強的電池片光照強度
Select_1=0;
Select_redom=1;
Temp_in=[25252525252525252525];
S_in=[100060040010001000100060040010001000];
for?i=1:n
????if?(Temp_L>Temp_in(i))
????????Temp_L=Temp_in(i);
????end
????if?(S_H ????????S_H=S_in(i);
????end
end
I_sc=8.58;%此參數為廠家提供參數,無需修正
I_m=7.94;
U_oc=22;
U_ocnm=0;
I_scnm=0;
U_m=17.7;
T_b=25;???%標準條件
S_b=1000;
a=0.0025;%默認參數,可嘗試修正
b=0.5;
c=0.00288;
V_recal=0.05;
for?i=1:n
????d_T(1i)=Temp_in(1i)-T_b;
????d_S(1i)=S_in(1i)-S_b;
????I_scn(1i)=I_sc*(S_in(1i)/S_b)*(1+a*d_T(1i));
????I_mn(1i)=I_m*(S_in(1i)/S_b)*(1+a*d_T(1i));
????U_ocn(1i)=U_oc*((1-c*d_T(1i))*log(exp(1)+b*d_S(1i)/S_b));
????U_mn(1i)=U_m*((1-c*d_T(1i))*log(exp(1)+b*d_S(1i)/S_b));
????if?U_ocnm ????????U_ocnm=U_ocn(1i);
????end?
????if?I_scnm ???????I_scnm=I_scn(1i);
????end?
end
C2=(U_m/U_oc-1)/(log(1-I_m/I_sc));
C1=(1-I_m/I_sc)*exp(-U_m/(C2*U_oc));
Dump=U_ocnm/Dot_regon;
U_regon(11:Dot_regon+1)=[0:Dump:U_ocnm];
I_regon=I_scnm*(1-C1*(exp(U_regon/(C2*U_ocnm))-1));
???
for?j=1:200
????U_count=zeros(1Dot_regon+1);
????for?i=1:Dot_regon+1
????????for?m=1:n
????????????if(I_regon(1i)<=I_scn(1m))
????????????????U(mi)=log((1-I_regon(1i)/I_scn(1m))/C1+1)*(C2*U_ocn(1m));
????????????????U_count(1i)=U_count(1i)+U(mi);
????????????end
????????end
????????P(1i)=U_count(1i)*I_regon(1i);
????????if?(P(1i)>P_max_sig(1i))
???????? P_max_sig(1i)=P(1i);
????????????I_max_sig(1i)=I_regon(1i);
????????end
????????if?(P(1i)>P_max_all)
????????????P_max_all=P(1i);
????????????I_max_all=I_regon(1i);
????????????U_max_all=U_count(1i);
????????end??
????????Rand1=rand(13);
????????V_1=Rand1(1)*V_recal+Rand1(2)*Speed1*(I_max_all-I_regon(1i))+Rand1(3)*Speed2*(I_max_sig(1i)-I_regon(1i))*5/j+0.005*rand(11)*Select_redom;
????????I_regon(1i)=I_regon(1i)+V_1+0.005*rand(11);
????????V_recal=V_1;
????end
????
????plot(U_countP‘.‘);
????axis([0?65?0?P_max_all+5?]);
%??????pause(1);
????if?(j>8)
????????Select_1=1;
????????if?(j>20)
???????????Select_redom=0;?
????????end
????end
???if(Select_1)
????for?p_sx1=1:Dot_regon?%進行n次才可互換完
???? for?p_sx2=2:Dot_regon+1?%比較相鄰兩數的大小
???????? if(?P(1p_sx2-1)???????????? sx_TURN=P(1p_sx2);
???????????? P(1p_sx2)=P(1p_sx2-1);
???????????? P(1p_sx2-1)=sx_TURN;?%比較相鄰兩數的大小,若前大后小則互換位置
????????????????sx_TURN=I_regon(1p_sx2);
????????????????I_regon(1p_sx2)=I_regon(1p_sx2-1);
????????????????I_regon(1p_sx2-1)=sx_TURN;?%比較相鄰兩數的大小,若前大后小則互換位置
????????????end
????????end
????end
????if((P(11)-P(1101))<1)?
????????t_count1=cputime-t_count0;
????????disp([‘程序經過‘num2str(j)‘步達到精度要求‘]);
????????disp([‘此時最佳功率控制點電壓為‘num2str(U
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3583??2018-09-11?18:44??finish_V1_1.m
評論
共有 條評論