基于许继路线的高压直流控保程序智能校核软件设计
2023-03-29吴梓阳郑炯光李东阳韩丰收郑星星
吴梓阳 郑炯光 李东阳 韩丰收 郑星星
(中国南方电网有限责任公司超高压输电公司广州局,广东广州 510000)
0 引言
目前,高压直流控制保护系统(以下简称“直流控保系统”)庞大的规模、丰富的功能以及复杂的程序逻辑[1],给直流控保系统的现场程序调试、版本管理和定值校核等运维工作带来了一定的困难,若程序数据或版本管理不当,直流系统保护可能误动,造成电力安全事故事件,主要问题如下:
(1)由于技改、消缺、反措等原因,换流站运维人员会定期对直流控保系统程序进行升级优化,但因程序数据信息量庞大,且程序逻辑和结构复杂,现场往往只能校核修改段程序的正确性,而无法校核非修改程序段是否与原程序一致,若中间某一环节出现疏忽,则有可能造成现场需要更新的程序存在错误。
(2)直流控制保护程序普遍采用可视化编程工具(VIGET)进行图形化开发,该工具的优点是极大地提高了程序开发人员的效率,使程序的逻辑调整简单、灵活[2],但同时给现场运维造成了一些不便,如无法对可视化页面自动进行差异分析,仅能靠人工校核程序的正确性,核对效率较低,准确度不高,网内曾发生过由控保程序修改错误造成的直流闭锁事件。
(3)目前,广州局基于许继路线的直流控保程序仍无法通过提取字段、管脚等方式自动生成直流保护定值单,检修后需通过人工比对定值,耗费了大量的人力资源。
1 技术原理分析
针对上述现状和问题,本文将基于许继路线的HCM3000控保系统,研究设计一套高压直流控保程序智能校核软件,其技术路线如下:
(1)该控保系统程序的源代码为指令表语言(又称“IL语言”),通过比对两套不同版本的程序源代码,输出存在差异的字段,按照IL语言结构判别出存在差异的功能块名称、类型、管脚及管脚连线等,并开发差异性分析报告导出功能。
(2)通过提取控保程序源代码信息,按照IL语言结构判别出高压直流保护各保护功能定值,并开发保护定值比对和保护报告导出功能。
2 软件方案设计
2.1 控保系统程序源代码结构
HCM3000平台是许继路线的高压直流系统的保护层设备,其程序汇集大量逻辑功能块,此类功能块可实现各类复杂运算。在程序源代码中,按照IL语言结构,将功能块定义成变量,再给各变量赋值,则能实现数据运算,其在工程图形界面内涵为“读取数据、运算数据和输出数据”的过程,数据运算由功能块承担,数据读取和输出由赋值完成。HCM3000平台程序源代码结构如下:
(1)定义变量区:分为定义全局变量、定义外部变量和定义内部变量,定义全局变量以VAR_GLOBAL开始,以END_VAR结束;定义外部变量以VAR_EXTERNAL开始,以END_VAR结束,将接收(发送)外部的数据定义为外部变量;定义内部变量以VAR 开始,以END_VAR结束,将各功能块定义为内部变量。
(2)赋值区:对功能块的管脚进行赋值,当赋值为数值时,则将该数值赋到该功能块的管脚,当赋值为其他功能块管脚时,则相当于两个功能块之间的管脚连接。如程序段“LD 1.7 ST DUMY_8F_0009.X1”的含义为:将DUMY_8F_0009功能块的X1管脚赋值为1.7;再如程序段“LD PDF_0036.Q ST AND2_0013.I1”的含义为:PDF_0036功能块的Q管脚与AND2_0013功能块的I1管脚相连。
2.2 智能校核软件框架设计
本控保程序智能校核软件的运行环境为Windows系统,使用了基于.Net Framework的Windows Forms开发[3],通过读取控保程序CFC工程文件源代码,使用Sqlite数据库作为存储配置文件和数据的载体,按照IL语言结构对源代码进行分析,通过分析对比、提取需求信息实现功能块信息比对和定值提取的功能,最后使用Nuget包NPOI操作将分析结果导出成Excel报告文件[4]。软件框架设计图如图1所示。
图1 智能校核软件框架设计图
2.3 校核软件对比功能开发
读取两个版本程序的CFC工程文件信息,通过比对两个程序源代码中各变量属性、数据及连接关系差异性,定性分析出图形化界面的差异,并展示差异内容和所在程序页码,便于运维人员在图形界面中核实相关信息。主要对比方法如下:
(1)功能块的增加或删除:提取所有变量(含全局、外部和内部变量)信息,变量提取的方法为从VAR_GLOBAL、VAR_EXTERNAL以及VAR语句开始提取,在各段END_VAR语句结束提取,提取的变量保存至数据库中并作对比分析,实现查找增加或减少的变量的功能。
(2)功能块名称的改变:提取方法与(1)相同,通过比对变量名称差异性,实现功能块名称改变情况的查找。
(3)功能块管脚值的改变:基于(1)的提取变量数据,逐一分析变量对应的所有管脚赋值情况,提取管脚数值的方法为:检索CAL语句,定位相应变量(功能块)的位置,按照“LD数值/功能块.管脚ST 功能块.管脚”的固定语句分析各功能块的管脚情况,若发现不一致,则输出管脚差异情况。
(4)功能块管脚连线的改变:实现方法与(3)相同,当发现管脚信息不一致后,可返回图形界面中核实管脚连线改变情况。
(5)功能块类型的改变:依据(1)方法查找所有内部变量范围,按照“变量:变量类型;”的固定语句,提取各变量(功能块)的类型,若发现不一致,则输出功能块类型差异情况。
2.4 校核软件定值提取功能开发
在Sqlite数据库中新建config配置表,其按照用户需求维护了各功能块管脚和保护定值的对应关系,Data表存储了某个保护中某个配置项的定值。config配置表和data是一对多的关系,即查一类配置可提供给多套同类型保护使用。通过数据库的config配置表提取配置项,配置项包含了CFC文件名、功能块名称和管脚名称等。
已知“87CSY Ⅰ段定值”在“O3_FUNC1DCP2”工程文件中DUMY_8F_0001功能块的X1管脚中,那么搜索“O3_FUNC1DCP2”定位相应CFC工程文件,读取该工程文件的所有行,设置while循环语句,每次读取两行文本,若开头为LD和ST开头的则开始处理,否则跳过。使用以下两个正则表达式提取并校验需求保护名称和定值:
(1)保护定值:LD(?
(2)保护名称:ST(?
第一个正则表达式的含义为:LD开头,接一个空格,再接数字字符串,则把数字存放到名为value的变量中。第二个正则表达式的含义为:ST开头,接一个空格,再接一个由大小写字母、数字、下划线和一个点构成的字符串,把除了ST和空格以外的字符串放到名为pin的变量中。将所有存放至value和pin中的变量与config配置表相匹配,匹配正确则把定值插入到data表中,供软件显示使用。逻辑流程图如图2所示。
图2 定值提取流程图
3 软件应用案例
3.1 比对功能应用
通过比对修改前后的程序,验证智能校核软件的比对功能是否可用。运维人员将DUMY_8F_0002功能块X1管脚定值从3.5修改为2.0,删除DUMY_2F_0002功能块,如图3所示。
图3 修改前后程序配置情况
通过智能校核软件进行对比分析,输出结果如表1所示,与程序修改情况相符。
表1 程序差异信息
3.2 定值提取功能应用
通过提取6套直流极保护定值,验证智能校核软件的定值提取功能是否可用。运维人员将极保护所在文件夹导入,并导入预先按需求设置好的配置文件,点击提取定值后,软件能够正常导出相关保护定值,与换流站的定值单定值一致,如图4所示。
图4 智能校核软件定值提取功能
此外,由于该配置文件可以灵活编辑,故运维人员可查询图形界面,按照个人需求进行个性化定制,快速导出其他需求的定值信息。
4 结语
本文介绍了一套适用于许继路线的高压直流控保程序的智能校核软件的设计,利用提取工程文件源代码,并对源代码进行定性定量分析,实现两段程序的快速比对和定值提取功能,可有效防止程序误修改的问题,极大地减轻现场运维工作量。据统计,某换流站的14套保护定值核对工作,需耗费约10人·时的工作量,采用该智能软件可实现一键导出定值,一键比对定值,可节省9人·时的人力成本,起到降本增效的作用,提高高压直流输电工程的运维能力和数字化水平。