【MATLAB调用OpenDSS】MATLAB调用OpenDSS(三)之计算光伏一天内的输出功率

发布于:2022-11-02 ⋅ 阅读:(1011) ⋅ 点赞:(0)

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:计算结果和光伏参数文已上传,请自行下载观看