InterPSS常用类和Jar包

3.1基本类

InterPSS 使用面向对象技术对电力系统进行建模,内部是基于Eclipse项目组提出的EMF建模框架实现。从最基本的Eobject类到具体类型的实现类(Implementation Class)的架构如下。另外,从该图可知,InterPSS内部包括三大模型,即Bus, Branch和Network。根据目前项目的研究和开发情况,具体实现类包括了潮流(Aclf),短路(Acsc)和稳定(Dstab)三大类.

InterPSS 类结构图

3.1.1NameTag

该类介于EObject与三大模型类之间,可看做为根据三大模型的公用属性(如名字,Id,状态等)而构建的类。详细的方法列表包括:

3.1.2三大基本类

目前电力系统仿真软件都是以节点Bus为基础,通过节点-支路(Bus-Branch)关系构成电网拓扑结构,最后形成电网network。 根据面向对象建模、编程的思想,InterPSS也是以这三大类作为基本类。

InterPSS中节点、支路和网络的组成关系示意图

Bus

节点类除了有NameTag的属性和方法为,还具有以下方法

Branch

支路类除了有NameTag的属性和方法为,还具有以下方法:

Net

网络类主要方法包括:1)对节点和支路进行操作(add/remove/list操作)2)基本属性操作baseKva, frequency 设置;3)判断网络数据完整性和正确性、某些排序操作是否进行

3.1.3CoreObjectFactory

InterPSS广泛采用了工厂模式(设计模式的一种),为方便核心对象、仿真情景对象和算法核心对象的实例化,分别创建了CoreObjectFactory、SimuObjectFactory和AlgorithmFactory。此处,创建了CoreObjectFactory以产生核心类的实例,其具体方法如下:

3.1.4仿真情景类 simuContex

进行潮流、短路和暂态仿真都在仿真情景类下进行,simuContex主要涉及网络参数、采用算法和故障设置等。

3.2潮流类(Aclf-)

潮流类主要牵涉到的模型和对象在Package com.interpss.core.aclf 下面,是进行潮流计算建模和仿真的主要类。主要分AclfBus/AclfBranch/AclfNet

实例——搭建2节点测试网络

该实例主要是为了让大家加深对这些类的了解,并熟悉如何利用潮流计算常用类搭建一个2节点测试网络,然后进行潮流计算。

你未曾使用InterPSS的API写过代码? Please try it .

public static void simpleLoadflow(IPSSMsgHub msg) {

// 创建一个 AclfNetwork 实例

AclfNetwork net = CoreObjectFactory.createAclfNetwork();

double baseKva = 100000.0;

// 设置系统基准容量,以100000kVA,即100MVA为基准

net.setBaseKva(baseKva);

// 创建一个AclfBus 实例,内部已经加入到net,无需额外的//net.addBus(bus1)

AclfBus bus1 = CoreObjectFactory.createAclfBus("Bus1", net);

// 设置名字和描述熟悉

bus1.setAttributes("Bus 1", "");

// 设置基准电压,单位是V

bus1.setBaseVoltage(4000.0);

// 设置该节点属性为平衡节点, 注意AclfGenCode.SWING

bus1.setGenCode(AclfGenCode.SWING);

// 通过适配器转换为平衡节点 SwingBusAdapter

SwingBusAdapter swingBus = bus1.toSwingBus();

// 设置平衡节点的电压幅值和功角

swingBus.setVoltMag(1.0, UnitType.PU);

swingBus.setVoltAng(0.0, UnitType.Deg);

AclfBus bus2 = CoreObjectFactory.createAclfBus("Bus2", net);

bus2.setAttributes("Bus 2", "");

bus2.setBaseVoltage(4000.0);

// set the bus to a non-generator bus

bus2.setGenCode(AclfGenCode.NON_GEN);

// set the bus to a constant power load bus

bus2.setLoadCode(AclfLoadCode.CONST_P);

// adapt the bus object to a Load bus object

LoadBusAdapter loadBus = bus2.toLoadBus();

// set load to the bus

loadBus.setLoad(new Complex(1.0, 0.8), UnitType.PU);

//net.addBus(bus2);

// 创建一个线路对象

AclfBranch branch = CoreObjectFactory.createAclfBranch();

// set branch name, description and circuit number

branch.setAttributes("Branch 1", "", "1");

// 线路类型为一般支路(区别于变压器或移相器支路)

branch.setBranchCode(AclfBranchCode.LINE);

// 通过适配器转换为一般支路Line

LineAdapter lineBranch = branch.toLine();

// 设置线路阻抗

lineBranch.setZ(new Complex(0.05, 0.1), UnitType.PU, 4000.0);

// 将该支路加入网络,即完成该2节点(单机无穷大)系统的搭建

net.addBranch(branch, "Bus1", "Bus2");

// 创建算法对象实例

LoadflowAlgorithm algo = CoreObjectFactory.createLoadflowAlgorithm(net);

// 运行潮流计算

algo.loadflow();

// 输出潮流结果

System.out.println(AclfOutFunc.loadFlowSummary(net));

}

通过这个简单的算例,你应该对InterPSS的潮流计算类有一定了解。当然,其实你无需通过代码创建系统,我们可以通过数据接口导入系统参数。

3.3短路计算类(Acsc-)

3.4稳定分析类(Dstab-)

Dstab类是Acsc的子类(当然也是Aclf-的子类)主要牵涉到的网络对象在Package com.interpss.core.dstab 下面,是进行暂态稳定模型建模和仿真的主要类。

Dstab的网络对象包含DstabBus和DstabBranch; DstabBusWapper是发电机和动态控制器的父类,提供了与网络和仿真算法的接口。

DynamicSimuAlgorithm是进行暂态仿真的算法类。主要进行仿真中算法、步长、仿真时长等设置。

DynamicSimulation是动态仿真类接口,所有动态节点和控制器模型都实现该接口。包括了状态初始化、状态输出等方法。

3.5 主要Jar包

目前进行开发所使用的Jar包主要分5大类(分别对应ipss.lib下的文件夹),如下:

InterPSS开发常用JAR包