PSIM9.0_光伏MPPT仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PSIM9.0学习笔记2——光伏MPPT测试和DLL模块的使用
终于把MPPT调成功了,还是C语言编程能力不足啊,找了几天才找出问题,不过现在也不是很确定是完全正确还是碰巧波形能够跟需要结果相似。在这里呢就还是先介绍一下,然后劳请各位大侠们指正。首先随便搭了一个Boost电路的测试模型,用的是前面介绍过的PSIM9.0自带的光伏板模型,以下就是模型电路图
其中MPPT是一个DLL模块,进行MPPT计算并产生PWM波的,最下面一个DLL模块就拿来测试一下效率,是输出功率与最大功
率的比。
对于DLL模块的使用,非常简单,首先打开VC++6.0,然后新建一个Win32 Dynamic-Link Library工程,再新建一个C文件,就可以编程了。编好之后在组建里面选择全部重建,完了之后就可以在你所建的工程文件夹Debug里面找到相应的dll文件了,最后在DLL模块里面选择用
该dll文件就可以了。
对于编程来讲,首先在c文件里面包含如下语句:
#include
#include
__declspec(dllexport) void simuser (double t, double delt, double *in, double *out)
{
}
那么在括号内就可以根据自己的需要编写程序了,t是指时间,delt是仿真步长,这两个都在你的仿真电路的时钟控制里面设置,编程不用管。
in和out分别对应输入输出,用的时候直接用用数组形式赋值,比如a=in[0],out[0]=b;就行了,DLL模块有小圆圈的一头从上往下依次是
in[0],[1],[2]……out[0],[1],[2]……
那么我编写的MPPT程序如下:
Vi=in[0];
Ii=in[1];
Pi=Vi*Ii;
dv=Vi-Vl; //采样电压电流,获得电压,功率增量
dp=Pi-Pl;
if (dp==0)
{
err=0;
}
else
{
if (dp>0)
{
if (dv>0)
{err=0.1;}
else //MPPT
{err=-0.1;}
}
else
{
if (dv>0)
{err=-0.1;}
else
{err=0.1;}
}
}
我用的是最简单的PO法,然后设每次Vref=Vin+0.1或者-0.1,所以上面err就是一次计算完了之后的误差值,送入下面的增量型PI控制
dVout=20*(err-errf)+err;
if (fabs(dVout)>4.1)
{
if ((dVout)>0)
{dVout=4.1;}
else
{dVout=-4.1;}
}
Vtemp=Vout+dVout; //PI
if (Vtemp>10)
{Vtemp=10;}
else
{
if (Vtemp<0)
{Vtemp=0;}
else
{Vtemp=Vtemp;}
}
Vout=Vtemp;
errf=err;
用来得到比较值的变化,最后跟锯齿波比较之后输出占空比。
以上程序跑完之后的仿真结果如下所示:
感觉还是蛮精确的,效率算下来大概在99.87%,但是我总觉得哪儿有问题,不是太对,上面误差输出的值就只有0.1,-0.1,0三个值
不过