PSIM入门实例

  • 格式:doc
  • 大小:1.12 MB
  • 文档页数:6

PSIM入门实例
-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN
PSIM9.0编写模型入门实例
今天看了看PSIM9.0里面的光伏板模型,顺带测试了一下,感觉非常简单
实用,以后要做光伏这方面研究的童鞋就不用纠结怎么建光伏电池板的模型
了,直接拿来用就可以了。1.光伏板模型就在PSIM9.0的elements-power-
renewable energy里面,有两种,一种是物理模型的,一种是功能模块的,物理
模型更接近于真实的板子,有两个输入,分别对应照度和温度,正负输出端,
还有一个可以观测最大功率的接口,如下图所示

功能模块顾名思义就是只用来实现光伏板电池功能的模块了,只有正负端
输出,只需要给定他的开路电压,短路电流,最大功率点电压和电流即可,那
么在不要看光照温度影响的条件下可以简单的来用,如下图所示

我个人觉得要研究光伏电池特性,最大功率跟踪,以及更实际一点儿的研
究的时候就用物理模块,而光伏板只是最为一个输入电压来看的话那就用功能
模块应该就能满足了……当然我还没往后做,仅仅是感觉哈……

同时PSIM9.0里面还有一个计算光伏板物理参数的工具,叫solar
module,可以通过电池板的参数,也就是一般电池板所提供的最大功率,开路
电压那些参数,计算出那些光伏板等效电路里面的诸如串联电阻、饱和电流,
温度系数之类的值,同时能够看到该参数下的电流电压和功率电压关系曲线,
方便我们使用物理模块时对参数进行设置,如上图所示
那么基于以上,我把我用的电池板参数填上去,用物理模块测试,同时光
强由400-1000每200变化一次做了一下仿真,以下就是测试电路和测试波形。

输出波形
以上就是我刚对PSIM9.0里面的光伏板做的学习,当然只是很简单的学习
并且用了一下,各位大侠们看了之后不要鄙视哈……如果有有错的或者理解不
对的地方还请各位大侠帮忙指正!后续继续做MPPT实验和逆变器的实验. 终于
把MPPT调成功了,还是C语言编程能力不足啊,找了几天才找出问题,不过现
在也不是很确定是完全正确还是碰巧波形能够跟需要结果相似。在这里呢就还
是先介绍一下,然后劳请各位大侠们指正。首先随便搭了一个Boost电路的测
试模型,用的是前面介绍过的PSIM9.0自带的光伏板模型
4

其中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
{
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;
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三个值.