基于PSD-BPA的计算分析辅助程序的设计及实现

2019-09-19 11:54何蓥伟旭2林3何枭峰4
重庆电力高等专科学校学报 2019年3期
关键词:字典潮流语句

何蓥伟,文 旭2,艾 林3,陈 卓,何枭峰4,焦 晓

(1. 国电重庆能源销售有限公司,重庆 401100;2.国家电网公司西南分部,四川 成都 610041;3.重庆电力交易中心有限公司,重庆 400014;4.国电重庆恒泰发电有限公司,重庆 401100)

PSD-BPA(以下简称“BPA”)是中国电力科学研究院推出的一款电力系统综合仿真软件,包含潮流、短路电流、小扰动、机电暂态分析等多种功能[1-2]。该软件具有设备模型丰富、计算性能稳定等优点,在国内电力规划、调度运行部门和教学科研院所得到了广泛应用[3-5]。然而,由于开发时间早,PSD-BPA的集成应用环境在数据可读性、易用性等方面还有待进一步增强,具体体现在以下几个方面[6-11]。

1)输入数据可读性不佳。潮流和稳定仿真数据中,除潮流控制命令外,元件模型参数等网络数据均用固定格式的数据卡片来表示,1张数据卡对应于数据文本文件中的1行,构成数据卡的各个数据栏(也可称为字段或属性)在文本行中的位置和字符长度都是固定不变的。比如,平衡节点表示为“BS”卡,其节点名称、基准电压分别在数据行的第8-14列、15-18列,显然,这种格式的文本数据在查询、浏览、编辑等方面,不够直观。

2)同输入数据类似,潮流和短路计算结果的可读性也需加强。这两种计算结果被软件保存为文本文件,尽管文件中也采用列表形式来展示信息,但未达到一目了然的效果,对于计算结果中的关键信息,还需要手工进行查找分析,比较耗时耗力。

3)易用性不足。机电暂态仿真所需的故障集主要依靠软件用户手工生成,自动化程度不高,难以应对仿真分析多类故障、多个故障的情况。

目前,已有文献对如何提升BPA软件的使用效率进行了研究[6-11],这些研究成果均有各自适用的工作场景。但对于电力系统仿真的课程教学,文献中提出的计算工具、软件平台或过于厚重,或不太适用。为帮助初学者高效地运用仿真软件,使其更专注于仿真模型的建立和仿真结果的分析,笔者运用Python语言[12],设计并开发了基于BPA的计算分析辅助程序,该程序功能清晰、使用简单。

1 辅助程序的功能

输入数据的表格展示和回存:将文本格式的仿真输入数据导入Excel,1个潮流或稳定数据文件对应于1个Excel表格,潮流控制语句、各种数据卡片以及注释等均被分门别类地转换为相应的工作簿;可在Excel表格中对仿真数据进行新增、删除、修改等操作,然后回存为BPA格式的数据文件。

计算结果的表格展示:将潮流和短路电流的计算结果进行文本解析,其中的关键信息被转化为Excel表格,并用多个工作簿来表示不同的结果数据。

故障集的快捷生成:根据故障模拟配置信息、用户选取的故障类型以及故障元件,快速形成模拟故障的数据卡片。

2 辅助程序的设计思路和实现方案

2.1 输入数据的表格展示和回存

由于BPA潮流数据和稳定数据具有一致的数据卡片格式,因此,这两种数据的表格展示和回存功能的实现方式是相似的。下面,主要针对BPA潮流数据进行论述。

首先以一个九节点系统为例,对BPA潮流数据的格式予以说明。图1展示了该系统BPA潮流数据的片段[1]。数据包括潮流控制语句、注释信息和模型数据。潮流控制语句包括三级,表示一级、二级、三级控制语句的文本行分别以字符“(”“/”“>”开头,并以“)”“”“<”结尾。注释信息用“.”开头的文本行表示。模型数据又被称作数据卡片,用特定字符或字符串开头的文本行表示,比如,以“BS”“B”“L”“T”开头的文本行分别表示平衡节点、交流节点、线路、两绕组变压器数据卡,这些字符或字符串表示数据卡片的类型,通常为1~3个字符;各类数据卡均有固定的文本格式,数据卡中包含了描述模型的各个字段,各字段值在文本行中所占的位置是固定的,相应的格式定义文件为“BPAPFCard.CSV”(稳定数据的格式定义文件则为“BPASWCard.CSV”),它被软件开发者放置在软件安装目录下。以节点“B”卡为例,其部分字段的格式定义如表1所示。从表1可见,BPA共用8列对卡片各字段进行设定,其中,本文需用到Start、End、Format、Comment这4列,其分别表示字段在文本行中的开始列号、结束列号、字段格式和字段注释。

图1 BPA潮流数据示例

1)输入数据的表格展示

根据BPA潮流数据生成的Excel表格中,共有控制语句、数据卡和其他数据3类工作簿。

控制语句被存入单独的1个工作簿,共包含4列,依次为语句在潮流文件中的行号和一级、二级、三级控制语句,三级语句放在其所属的二级语句之下,二级语句又被放置在其所属的一级语句之下,每个控制语句被存入1个单元格。以图1所示的控制语句为例,生成的工作簿如表2所示。

数据卡片被分类存入相应的工作簿,比如B卡被存入命名为“B卡”的工作簿。以表1中的B卡为例,生成的工作簿样式如表3所示,其数据列包括数据卡片在潮流文件中的行号、数据卡片中除卡片类型(CARD TYPE)之外其余各字段的值,表1中的最后1列(字段注释)被用作表3中相应列的标题。

表2 程序生成的“控制语句”工作簿样式

表3 程序生成的“B卡”工作簿样式

注释和空行等其他数据被存入1个单独的工作簿,共包含2列,依次为文本行在潮流文件中的行号、文本行内容。以图1为例,生成的工作簿样式如表4所示。

表4 程序生成的“其他数据”工作簿样式

从表2至表4可见,表中第1列均为文本行在BPA潮流文件中的行号,保存这列,是为了便于将Excel表格数据回存为BPA潮流文件。另外,程序生成“其他数据”这一工作簿也是为了同样的目的。

利用Python语言实现潮流数据的展示功能时,运用字典类型的数据结构,可将解析潮流文件得到的信息,很方便地转换为形如表2至表4所示的工作簿。程序的具体工作流程如下:

①创建描述数据卡片格式定义的字典;

②逐行解析数据卡片格式定义文件“BPAPFCard.CSV”,将各类卡片格式定义信息存入步骤(1)创建的字典;

③新建Excel表格;

④新建存储数据卡片信息的字典、存储控制语句信息的字典以及存储其他语句信息的字典;

⑤逐行解析BPA潮流文件;

⑥若已读至文件末行,则转步骤(13);

⑦若文本行分别以字符“(”“/”“>”开头,并以“)”“”“<”结尾,则该行为控制语句,根据控制语句所在行号及文本内容,填充控制语句字典;

⑧若文本行前3列或前2列或第1列代表的字符串是数据卡片格式定义字典中已有的卡片类型,则该行为数据卡片,根据数据卡片所在行号及文本内容,填充数据卡片字典;

⑨若文本行不属于控制语句或数据卡片,则根据文本所在行号及文本内容,填充存储其他语句信息的字典;

⑩执行步骤(5);

2.1.2 输入数据的表格回存

当用户在Excel中对表格形式的输入数据执行修改、新增等操作后,可将表格数据回存为BPA格式的数据文件。程序实现时,需注意的一个关键问题是:回存生成的文件中各文本行的相对位置应与原文件保持一致。以潮流数据的表格回存为例,程序的具体工作流程为:

①创建用于保存原文件已有数据和新增数据的字典,以下简称为字典1和字典2;

②根据数据卡片格式定义文件BPAPFCARD.CSV,生成描述数据卡片格式定义的字典;

③变量n=0,它表示工作簿的某行数据在BPA原文件中所对应的行号;

④按行读取Excel表格中的控制语句工作簿;

⑤若该行数据不全为空并且第1列(表示在BPA原文件中所对应的行号)不为空,将该值赋予n,并填充字典1,其中,键为该行第1列的值,值为根据该行其他列非空数据组合生成的文本;

⑥若该行数据不全为空并且该行第1列为空,表明是新增数据,则填充字典2,其中,键为n,这个值实际上代表的是一个已有数据在BPA原文件中的对应行号。在工作簿中,这个已有数据排在该新增数据之前且距其最近,值的生成方式与步骤(5)中值的生成方式一样;

⑦若控制语句工作簿已读完,则将变量n置0,否则转至步骤(4);

⑧按行读取Excel表格中的其他语句工作簿,执行步骤(5)和步骤(6);

⑨若未读完其他语句工作簿,转至步骤(8);

⑩变量n置0;

2.2 计算结果的表格展示

2.2.1 潮流计算结果的表格展示

BPA潮流计算结果是1个后缀名为pfo的文本文件。它具有固定的格式,概要性的结果,比如潮流计算迭代过程和平衡节点相关信息等,其文本行通常以“*”开头;列表类的信息,比如展示节点和线路计算结果的“详细输出列表”等,列表开头行通常包括4列,从左至右依次为潮流方式名、工程名、形如“* * * * 列表标题 * * * *”的字符串以及计算时间。利用这些格式的特点,可以把文本结果转化为更为清晰直观的Excel表格。以结果文件中的“详细输出列表”为例,图2中,第1行展示了1个节点的计算结果,第2行展示了该节点所连变压器的计算结果。程序实现时,将这两行分别转化为形如表5、表6所示的工作簿。

图2 某节点及其相连变压器的潮流计算结果

表6 程序生成的“变压器计算结果”工作簿样式

2.2.2 短路电流计算结果的表格展示

BPA短路计算结果是1个后缀名为lis的文本文件。其也具有固定的格式,表格展示的实现方式和2.2.1节所述方式类似,在此不再赘述。

2.3 故障集的快捷生成

用户按照程序提供的故障模板填写信息后,就可快速生成暂态仿真所需的故障集合。定制的故障模板包含两种工作簿,一种包含故障类型和故障对象,另一种包含故障设置信息。以线路三相短路故障和三相短路跳双回为例,这两类工作簿形如表7和表8所示。表7中,除首行标题栏外,其他行第1~2列均为包含是、否两个选项的下拉列表,第3~7列表示需要施加故障的线路。比如,第2行第1列选择“是”,意味着对该行描述的线路施加三相短路这种N-1故障;第2行和第3行第2列均选择“是”,程序则默认对第2行所描述线路施加三相短路故障,并切除第3行所对应的线路。需要说明的是,程序在生成故障集时,会把表7和表8按基准电压进行匹配,也即是默认基准电压一致的故障对象采用相同的故障设置。在实际的电网计算分析中,通常也是如此,比如,模拟500 kV线路三相短路故障时,一般都假定故障发生后0.09 s线路近故障侧开关动作,0.1 s远故障侧开关动作切除线路。

表7 “故障类型和故障对象”工作簿样式

表8 “三相短路故障设置”工作簿样式

3 结论

为提升BPA软件的数据可读性和易用性,运用Python语言,设计开发了一个用于BPA计算分析的辅助程序,程序功能包括BPA输入数据的表格展示和表格回存,输出数据的表格展示及故障集的敏捷生成。初学者在基于BPA开展电力系统仿真分析时,使用该程序,可加深对仿真建模的认知和理解,提高BPA软件的使用效率。

猜你喜欢
字典潮流语句
重点:语句衔接
字典的由来
大头熊的字典
潮流
潮流
潮流
正版字典
从2014到2015潮流就是“贪新厌旧”
我喜欢
作文语句实录