曹寅翔,李俊达
(南京国电南自电网自动化有限公司,南京 211153)
国家电网公司(以下简称国网)2017版《配电自动化系统主站功能规范(试行)》(以下简称《主站规范》)中指出,主站内部生产控制大区(I区)和管理信息大区(III区)的应用数据流,包括采集监控类、故障处理类、分析应用类等10类数据,需按照特定模式、频率和流向进行交换同步。遵循IEC 61968标准的信息交换总线,其基于主题定制的、可跨隔离信息交互的功能,以及在容量、效率和并发方面的技术规范表明,恰好支撑主站I,III区之间的数据交互需求。本文从配电自动化信息交换总线的功能规范出发,针对主站双区应用数据流交互要求,完成数据流传输通道的设计与实现,并进行了功能测试和性能测试[1-4]。
基于IEC 61968 标准的信息交换总线(以下简称总线),本身就是国网《主站规范》中系统构架的一部分。在满足规范要求的前提下,基于现有的总线产品(包括软硬件),本节给出了主站双区数据流交互通道的软件设计方案[5-6]。
配电自动化系统中,总线作为中间件实现各应用的解耦与消息透传。根据总线在国网技术规范中固有的信息交换机制,并结合主站 I,III 区数据流交互的应用场景,得出主站数据流跨区交互模型图如图1所示。
总线中间件包括应用适配器、中间件适配器和总线服务器。应用适配器负责对应用数据进行封装和转换,采用基于IEC 61968标准的格式,以“动词+名词”方式标志数据交换模式和内容,称为“主题”。中间件适配器通过访问总线服务器接口,将封装好的消息以指定的信息交换模式发送给总线服务器,并由其执行跨隔离传输和动态路由。应用适配器和中间件适配器共同构成标准接口适配器,对外开放数据传输接口(客户端)和接收接口(服务端)。
总线共支持3种信息交换模式,包括同步请求/应答模式、异步请求/应答和发布/订阅模式。
图1 主站数据流跨区交互模型Fig.1 Interaction model of data stream in the master station
总线对外提供图形化的、人机交互友好的流程编排功能。适配器可在线注册,总线基于主题机制统一分配适配器的发送/接收权限,适配器跨区部署形成交互通道。本文正是通过总线静态编排与动态路由特性,实现主站数据流跨区交互通道的灵活搭建。
1.2.1 消息格式结构
IEC 61968定义的消息格式如图2所示。消息体可选,用来承载消息数据内容;消息信封至少包含消息头、请求组件和应答组件中的一种,用来封装请求消息、应答消息、发布消息和异常消息的标志信息。
图2 消息格式结构Fig.2 Message format structure
1.2.2 消息头HeaderType
消息头封装了包括主题、异步标志、关联ID在内的一些重要信息。其中,主题动词Verb必须选自IEC 61968标准定义的范畴,如请求消息通常选用get,应答消息只能用reply,发布消息通常是created;名词Noun可自定义,但不可为空。
1.2.3 消息体PayloadType
消息体包含4种数据格式供选择封装:字符数组容器、OperationSet集合、字符串、ID集合容器,如图3所示。丰富的数据格式可满足配电主站数据流包括字符串、二进制数据和文献数据类型的封装,文件数据类型由二进制数据包结合位置标志组装而成,从而支持跨区交互的主站数据流的承载。
图3 PayloadType结构Fig.3 PayloadType structure
配电主站图、模型、权限等配置数据可以通过请求/应答模式进行双向跨区传输,而Ⅰ,Ⅲ区的终端遥信、遥测等实时数据,选择发布/订阅模式[7]。基于信息交换总线的功能特性,支持双机主备的数据流跨区双向同步通道搭建如图4(配置数据)和图5(实时数据)所示。
图4 配置数据流跨区交互通道Fig.4 Cross-area interactive channels for configuration data stream
图5 实时数据流跨区交互通道Fig.5 Cross-area interactive channels for real-time data stream
本节以Ⅰ区往Ⅲ区异步请求/应答的模式为例,将信息交换过程序列化,如图6所示。
表1 跨区单向传输测试数据Tab.1 Test data of cross-area transmission (one way)
图6 Ⅰ到Ⅲ区异步请求/应答过程Fig.6 Asynchronous request/response process(Ⅰ to Ⅲ)
虚线箭头表示返回消息,_CallBack()表示服务端回调。在异步模式下,Ⅰ区和Ⅲ区应用既是总线客户端,又是服务端,需要同时向总线注册初始化;发送Request请求共经历2次应答。
基于总线各信息交换模式的序列化结果,本文自主设计了通用访问接口,涵盖了客户端初始化、请求发送、发布主题消息,以及服务端初始化,回调注册、应答发送、订阅主题消息等功能。同样以请求/应答模式为例,给出总线访问接口函数如图7所示。结构体BS_MSG_INFO为消息体,涵盖消息类型、内容数据和消息长度。
图7 总线访问接口函数Fig.7 Interface function of bus
总线对外提供统一的、基于WebService的交换服务接口,以及相应描述文件(.wsdl)。本文采用gSoap工具生成C++封装的总线客户端和适配器服务端,共同构成图1中标准接口适配器。gSoap指令如图8所示,通过gSoap工具先将wsdl文件转化为接口描述头文件,继而生成C++包装的客户端和服务端文件。
图8 gSoap指令Fig.8 gSoap Command
本文共设计出3种试验方案,对基于信息交换总线的跨区交互通道进行效率、容量和并发测试,具体如下。
3.1.1 跨区单向传输性能测试
从Ⅰ区向Ⅲ区发送为例,在Ⅰ区测试程序中开辟多线程使用同一个发送通道,检测并发性能;设置不同的发送消息体积和消息数量,检测稳定性能。统计消息发送数和接收数,检测是否丢包;统计每条消息从Ⅰ区到Ⅲ区、再从Ⅲ区返回Ⅰ区各自时间,检测传输效率。
3.1.2 多通道正反向并行测试
同时使用请求/响应(同步)和发布/订阅模式的通道,且双向部署,观察4个通道同时运行时的性能是否与3.1.1单向传输一致。增加通道数量,检测总线系统可接入数量。在同一方向、同一模式的不同通道中,检验总线主题优先级功能。
3.1.3 大单体消息跨区传输测试
设置单体消息大小分别为100,200和1 000 MB,统计大消息分别在正向和反向传输所需时间。
以3.1.1试验为例,给出测试结果数据(部分)见表1。
可以发现,反向跨隔离传输时间>2 s,消息大小对总线传输速率会产生少许影响,在单线程运行下总线运行稳定;而客户端采用多线程并发调用同一传输通道,则产生了丢包、总线阻塞的异常。
对跨区交互通道的性能测试分析,是同时对信息交换总线和自设计适配器性能的检验。通过试验数据客观反映各环节运行结果,从而准确定位总线或者适配器的异常和缺陷,为性能优化提供参考。
本文从信息交换总线的功能出发,遵循总线规范设计出与总线兼容的、可扩展的标准接口适配器,灵活搭建配电主站跨区交互通道,供配置/实时数据双向传输。详细给出了适配器的软件实现过程,给实际工程应用的落地提供参考。最后详细设计出一套性能检测试验方案,能够客观、完整的检测出总线和适配器的各项性能数据,为整个跨区传输通道的稳定运行和性能优化提供数据支撑。