我的PV P&O跟踪算法的Matlab代码有一个错误

56意见(过去30天)
Jirada Gosumbonggot.
Jirada Gosumbonggot. 2017年11月23日
你好
我正在编写p&o跟踪的代码,因为我希望输出是最大点位于最大点的电源和电压。从该图中,我预计最大功率为51.53 W,16.32 V.
但是当我运行代码时,它总是给出结果到不正确的开路电压(曲线的最后一点),它给了我30.01W的结果为19 V.
我写的代码在这里,不确定我已经做错了什么(我很漂亮的Matlab)。输出是p和vmpp
功能[vmpp,p] = pando(v,i)
执着的vold pold iold dv di dp电源;
如果Isempty(vold)
vold = 0;iold = 0;
pold = 0;dv = 0;di = 0;dp = 0;POWER =零(1000,1);
结尾
deltav = 0.0001;%初始化
为了i = 1:尺寸(v,1)
权力(i)= v(i)。* i(i);
dv = v(i) - vold;
di = i(i) - iold;
DP = Power(i) - 庞德;
如果dp〜= 0
如果DP <0.
如果DV <0.
vmpp = v(i)+ deltav;
别的
vmpp = v(i) - deltav;
结尾
别的
如果DV <0.
vmpp = v(i) - deltav;
别的
vmpp = v(i)+ deltav;
结尾
结尾
别的
VMPP = V(i);
p = power(i);
休息
结尾
vold = v(i);
iold = i(i);
pold = v(i)。*我(i);
结尾
结尾
对我有什么建议吗?非常感谢你

答案(3)

Roshan Reji.
Roshan Reji. 2019年10月21日
你找到了解决方案吗?请尽快回复。我也有同样的问题。

Mehmet Salih Fidaner.
Mehmet Salih Fidaner. 于20月9日
你找到了解决方案吗?请尽快回复。我也有同样的问题。
1条评论
Venkata aravinda satvik muvvala
Venkata aravinda satvik muvvala 10月10日2020年1月10日
如果您找到任何解决方案,请尽快在此评论。我也有同样的问题。

登录评论。


M.Saud Khan.
M.Saud Khan. 20月26日
我认为问题是 德拉夫 。出于某种原因,我的模拟与 deltav = 0.04 。减少以下值,导致 VMPP. =开路电压。我在求解器设置中禁用了“零点”并模拟系统使用 ODE23T. 求解器(我的系统使用电力电子块; ODE23T. ODE23TB. 主要与电力电子块一起使用)。
我不是在Simulink Matlab功能块内使用数组索引和循环的粉丝。万博1manbetx这就是我使用以下代码的原因:
功能[步,标志,VMPP] = FCN(v,v_old,p,p_old)
标志= 5;% 随意的
VMPP = 35;% 随意的
dv = 0.04;
%持久性Pold Vold DV
如果isempty(v_old)||Isempty(P_old)
v_old = 30;p_old = 800;% 初始条件
结尾
delta_p = p - p_old;
delta_v = v - v_old;
如果delta_p> 0.
标志= 1;
如果delta_v> 0.
VMPP = V + DV;%增加电压
eleesifdelta_v <0.
VMPP = V - DV;%降低电压
结尾
eleesifdelta_p <0.
标志= -1;
如果delta_v> 0.
VMPP = V - DV;%降低电压
eleesifdelta_v <0.
VMPP = V + DV;%增加电压
结尾
eleesifdelta_p == 0.
标志= 0;
VMPP = V;
结尾
步= DV;
结尾
为了 v_old. P_OLD. ,我使用延迟块并产生MOSFET / IGBT的栅极信号(占空比),我使用了PI控制器。PI收益由击中和试验选择。所有这些都在图中:
capture.png.
我用过一个 旗帜 变量记录的状态 delta_p. 。结果不是很准确,但是,它为我工作..
希望这有助于某人..
8评论

登录评论。

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!