MATLAB调用OpenDSS(三)之计算光伏一天内的输出功率
1. 已知参数
1.1电路参数
这一篇简单介绍通过MATLAB调用OpenDSS 进行光伏一天内的输出功率计算。对如图所示的电路进行潮流计算。图中4号节点接入光伏
1.2光伏参数:
温度:
xarray=[0 25 75 100] yarray=[1.01 1.01 1.0 0.99]
逆变器效率:
xarray=[.1 .2 .4 1.0] yarray=[.89 .9 .96 .98]
光照强度曲线:
温度系数曲线:
2. 电路OpenDSS模型
2.1光伏模型:
光伏系统由太阳能电池板、逆变器和控制器组成。太阳能电池板通过光电效应将太阳发出的光粒子能转换成直流电,然后通过逆变器转换成交流电,并且通过调压、变频等措施将其转变成适合并网的标准交流电。同时通过逆变器调节交流电的功角使其变成纯发有功的电源或有功无功混发的电源,因此通过此功能可实现用逆变器调压。图是OpenDSS提供的光伏系统架构,其参数的设置通过一些函数来提供输入变量。
在OpenDSS中的编辑过程:
//整体(通用)光伏参数:
New XYCurve.MyPvsT npts=4 xarray=[0 25 75 100] yarray=[1.01 1.01 1.0 0.99] //光伏功率—温度系数曲线
New XYCurve.MyEff npts=4 xarray=[.1 .2 .4 1.0] yarray=[.89 .9 .96 .98] //光伏逆变器效率曲线
New Loadshape.MyIrrad519 npts=96 minterval=15 mult=[file=pvdata519_12.csv] //光照强度曲线
New Tshape.MyTemp519 npts=96 minterval=15 temp=[file=pvtemp519_12.csv] //温度曲线
//单个光伏参数
New PVSystem.Pv1 phases=3 bus1=12 kV=10.00 kVA=14.37 irrad=1 Pmpp=14.37 Conn=LL temperature=25 pf=1 effcurve=Myeff P-TCurve=MyPvsT Daily=MyIrrad519 TDaily=MyTemp519
//PVSystem.Pv1 光伏编号,如PV1 ,PV2 ,PV3 ......
//phases=3 光伏并网的相数,有单相和三相
//bus1=12 kV=10.00 kVA=14.37 接入节点,电压等级,容量
//Pmpp=14.37 最大功率输出
//pf=1 功率因数
以上光伏具体的参数设置可在 OpenDSS命令手册 里查询
2.2电路模型:
Clear
New object=circuit.test11 BaseFreq=50
~ basekv=110 pu=1.00 MVAsc3=20000 MVAsc1=21000
New Transformer.SubXF Phases=3 Windings=2 Xhl=8
~ wdg=1 bus=sourcebus conn=Delta kv=110 kva=50000 %r=1
~ wdg=2 bus=2 conn=Delta kv=10 kva=15000 %r=1
New linecode.LGJ50 nphases=3 BaseFreq=50
~ rmatrix = (0.63 0 0 | 0 0.63 0 | 0 0 0.63 )
~ xmatrix = (0.498 0.195 0.195 | 0.195 0.498 0.195 | 0.195 0.195 0.498 )
~ units=km
//Line
//Line
New Line.L1 Phases=3 Bus1=2.1.2.3 Bus2=11.1.2.3 LineCode=LGJ50 Length=1.180 units=km
New Line.L2 Phases=3 Bus1=11.1.2.3 Bus2=12.1.2.3 LineCode=LGJ50 Length=0.075 units=km
New Line.L3 Phases=3 Bus1=12.1.2.3 Bus2=13.1.2.3 LineCode=LGJ50 Length=1.239 units=km
// spot loads_kW
New Load.LP01 Bus1=12.1.2.3 Phases=3 Conn=Delta Model=1 kV=10.00 kW= 59.62 kVAR= 0
New Load.LP02 Bus1=11.1.2.3 Phases=3 Conn=Delta Model=1 kV=10.00 kW= 10.66 kVAR= 0
New Load.LP03 Bus1=13.1.2.3 Phases=3 Conn=Delta Model=1 kV=10.00 kW= 28.34 kVAR= 0
// spot loads_kVAR
New Load.LQ01 Bus1=12.1.2.3 Phases=3 Conn=Delta Model=1 kV=10.00 kW= 0 kVAR= 5.21
New Load.LQ02 Bus1=11.1.2.3 Phases=3 Conn=Delta Model=1 kV=10.00 kW= 0 kVAR= 0.19
New Load.LQ03 Bus1=13.1.2.3 Phases=3 Conn=Delta Model=1 kV=10.00 kW= 0 kVAR= -4.16
//PV
New XYCurve.MyPvsT npts=4 xarray=[0 25 75 100] yarray=[1.01 1.01 1.0 0.99]
New XYCurve.MyEff npts=4 xarray=[.1 .2 .4 1.0] yarray=[.89 .9 .96 .98]
New Loadshape.MyIrrad519 npts=96 minterval=15 mult=[file=pvdata519_12.csv]
New Tshape.MyTemp519 npts=96 minterval=15 temp=[file=pvtemp519_12.csv]
New PVSystem.Pv1 phases=3 bus1=12 kV=10.00 kVA=14.37 irrad=1 Pmpp=14.37 Conn=LL temperature=25 pf=1 effcurve=Myeff P-TCurve=MyPvsT Daily=MyIrrad519 TDaily=MyTemp519
Set VoltageBases = "110,10"
CalcVoltageBases
//BusCoords Reality1_Bus_XY.csv
set casename=PVtest
set mode=Daily
set number=4
set hour=11
set stepsize=15m
set maxiterations=100
solve
3. MATLAB程序
clc
close all
tic
% ****************************************************
DSSObj = actxserver('OpenDSSEngine.DSS');
if ~DSSObj.Start(0)
disp('Unable to start the OpenDSS Engine')
return
end
% ****************************************************
DSSText = DSSObj.Text;
DSSCircuit = DSSObj.ActiveCircuit;
DSSSolution = DSSCircuit.Solution;
DSSText.Command = 'Compile "C:\Users\Administrator.HFJS-20181125FD\Documents\OpenDSS\test11000\Master.DSS"';
count=96; % 计算次数,每隔15分钟计算一次 96*15=1440 分钟=24小时
B=zeros(count,4);% 汇总文件
DSSText.command='set casename=test1';
DSSText.command='set mode=daily ';
DSSText.command='set stepsize=15m';
DSSText.command='set number=1';
DSSText.command='set hour=1';
DSSText.command='set maxiterations=100';
%进行潮流计算
for k=1:count
DSSText.command='New Loadshape.MyIrrad519 npts=96 minterval=15 mult=[file=pvdata519_12.csv]'; %光伏曲线设置(光伏曲线_1) (若在opendss的原代码中已设置,则在这里不用再次设置)
DSSSolution.Solve();
DSSText.Command = 'export powers phases=all';
power=xlsread('C:\Users\Administrator.HFJS-20181125FD\Documents\OpenDSS\test11000\test1_EXP_POWERS.CSV',1,'C2:D16'); %读取数据
%% 数据整理
B(k,1)=power(1,1);%变压器低压侧有功功率
B(k,2)=power(1,2);%变压器低压侧无功功率
B(k,3)=power(15,1);%PV有功
B(k,4)=power(15,2);%PV无功
end
disp(B)
xlswrite('C:\Users\Administrator.HFJS-20181125FD\Documents\OpenDSS\test3',B,1); 写入数据
4.计算结果
4.1光伏曲线一一1
第一种光伏光伏曲线如下:
///
由于本算例中使用固定负荷(不随时间变化而变化),并且光伏的功率因数为1,即只输出有功功率,因此系统的无功恒定。有功功率随光伏输出的变化而变化,而光伏输出与光照强度的变化而变化。
下图是一天内光伏出力与通过变压器的有功功率的比较图。
从图中可以看出光伏出力为零(无光照)的时间内通过变压器的功率等于系统总消耗功率(包括网损),而随着光伏出力的增大通过变压器的功率会减小,如果光伏出力容量大于系统总消耗功率,则会出现功率倒流现象,即功率从配电网流向大系统。
4.2光伏曲线一一2
第二种光伏光伏曲线如下:
首先在Matlab端改变光伏曲线,使用光伏曲线—2,其他条件都不变,只在matlab程序中加以下语句即可。
DSSText.command='New Loadshape.MyIrrad519 npts=96 minterval=15 mult=[file=pvdata5194_12.csv]';
以下是计算结果:
//
以下是一天内光伏出力与通过变压器的有功功率的比较图
`
PS:计算结果和光伏参数文已上传,请自行下载观看