MATLAB调用OpenDSS(一)

一.COM 接口简介

由于开发者并不能预测使用者的所有需求,所以给OpenDSS还提供了组建对象模型 (Component Object Model )(COM))接口。 通过 COM 接口,用户可以用其他程序执行不同的客户解决方案和执行仿真计算,换句话说用户通过不同的软件控制OpenDSS 进行配电网的潮流计算及分析。例如,用户很普遍的用 Mathworks MATLAB ,Python, C#, R, 还有其他软件语言来驱动 DSS。这个特性提供了一个强大的外部分析功能和很好的结果图形展示。换句话说就是用其他程序控制OpenDSS达到潮流计算或其他目的。

二. COM 口基础指令

一. Text接口

Text 接口是最简单的, 但是也是最有用的接口。你可以借助它在 COM 接口中执行任何一个OpenDSS命令。什么意思呢?
简单来说就是,你可以将OpenDSS里的命令在matlab使用(opendss 使用的主要命令,在上一篇已经介绍过了)。有什么意思呢?看例题你就明白了。

DSSText = DSSObj.Text;
DSSText.command='set casename=Feeder519';   %设置casename
DSSText.Command = 'Compile "C:\Users\Administrator.HFJS-20181125FD\Documents\OpenDSS\feeder519000\Master.DSS"';  % opendss的存储模型路径
DSSText.command=’New Line.L1 Phases=3 Bus1=2.1.2.3   Bus2=11.1.2.3  LineCode=LGJ50  Length=1.180  units=km ‘   %% 创建一条线路

2. 电路接口

电路接口(circuit interface)可以被用来编辑电路中不同元件的属性。几乎所有 OpenDSS
的元件类(比如 Lines, Loads, Capacitors, CapControls, 等)在电路接口中都有一个子对象。
这些子对象还有一些便利的函数可以使用户在循环中遍历所有的成员元件。什么意思呢?
简单来说,这里说的电路接口专门针对电路元件,比如你想改变某个负荷的功率,或想改变线路长度,你先声明其类型,比如负荷、线路;然后时具体到想改哪个负荷或线路,上面说的子对象就是指这个具体的元件。还不明白?请看例子。

DSSCircuit = DSSObj.ActiveCircuit;  % 将电路模型赋给DSSCircuit
DSSCircuit.Load. Load 2.  kW =1.2    %增大负荷 Load 2 的功率1.2倍
DSSCircuit.PVSystem.Pv1.kVA=20         %降光伏容量设为 20kVA

但是以上的语句也可以用Text接口来实现,结果都一样的

DSSText.command=’ Load. Load 2 . kW =1.2’
DSSText.command=’ PVSystem.Pv1.kVA=20

如果还想要编辑一个具体的元件,使用 SetActiveElement 方法,如:

DSSCircuit.SetActiveElement("PVSystem.Pv1")  %选取想编辑的元件
DSSCircuit.ActiveDSSElement.Properties("kVA ").Val = 20  %光伏容量设为 20kVA
Pvpower = DSSCircuit.ActiveCktElement.Powers  % 将选取元件的功率赋到Pvpower变量

3. 算法接口

算法接口(Solution Interface)被用来查看和控制 OpenDSS 的计算过程和控制过程。
直接上例题

DSSSolution.StepSize = 1   %仿真步长为1小时(默认为小时)
DSSSolution.Number = 30
DSSSolution.Solve()  %进行仿真

与下面的语句有一样的效果

DSSText.command='set  stepsize=1';
DSSText.command='set  number=30 ';
DSSText.Command='solve';

三.举例

下面是通过MATLAB调用OpenDSS的具体案例:

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\example519\Master.DSS"';  % OpenDSS建模文件的路径
for i=1:5
DSSSolution.Solve(); 
if DSSSolution.Converged  
   disp('The Circuit Solved Successfully') 
   DSSText.Command = 'export powers phases=all';
   Filename = DSSText.Result; 
  disp(['File saved to: ' Filename]) 
end
end

程序作用是,对模型进行5次潮流计算,并且输出潮流计算结果
(主要输出功率)。

更多有关OpenDSS 的文章
OpenDSS 编程基础及程序结构
MATLAB调用OpenDSS(二)之简单潮流计算

你可能感兴趣的:(OpenDSS学习笔记,matlab,开发语言,经验分享)