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包