基于IEC 61850MMS客户端日志服务的实现

2016-10-25 10:30谢民樊瑞李嘉孙月琴王海港邵庆祝
电气自动化 2016年2期
关键词:数据结构日志报文

谢民, 樊瑞, 李嘉, 孙月琴, 王海港, 邵庆祝

(1.国网安徽省电力公司,安徽 合肥 230022; 2.国网电力科学研究院/南京南瑞集团公司,江苏 南京 211000)



基于IEC 61850MMS客户端日志服务的实现

谢民1, 樊瑞2, 李嘉2, 孙月琴1, 王海港1, 邵庆祝1

(1.国网安徽省电力公司,安徽合肥230022; 2.国网电力科学研究院/南京南瑞集团公司,江苏南京211000)

日志服务是IEC 61850标准提出的一项重要通信服务,其在客户端的实现对工程调试和变电站自动化均具有重要意义。在实现IEC 61850MMS客户端调试工具的基础上,采用客户端/服务器模式实现了日志服务。通过服务,客户端实现了高效率的对日志按照时间及条目方式在线与离线两种方式的查询、导出、存储等功能。在日志显示时,首次引入了“分组”及“关键字检索”方式,满足工程人员故障定位等调试需求。日志服务的工具软件已在实际工程得到很好的应用。

IEC 61850;日志服务;日志查询;日志存储;分组显示

0 引 言

IEC 61850标准是智能变电站网络通信的基础,已在国内变电站中获得广泛应用。由于IEC 61850本身不能够制造报文,因此站控层采用了MMS(Manufacturing Message Specification)即制造报文规范[1],将通信采用抽象通信服务接口ACSI(Abstract Communication Service Interface)映射到MMS的方式实现[2]。MMS客户端调试工具是基于站控层的调试工具,通过建立客户端与装置之间的通信连接[3],获取装置中的ICD模型信息,实现数据集查看、遥控、定值修改、录波下载、报告查看等功能。

日志服务是IEC 61850服务中的重要内容[4],装置中的一般内部事件都以日志记录的方式存储,与报告相比,日志数据的记录与存储是相互独立的,不依赖于外部客户端的连接和检索[5],在装置断电等突发情况下仍然能够保持原来记录,对装置的历史故障追忆与定位有着指导意义。本文在分析日志相关标准及关键技术的基础上,采用客户端/服务器模式,从日志解析、日志查询、日志处理应用等方面阐述了客户端日志服务的实现,并对其进一步封装处理,在提高日志检索效率的同时实现了日志的离线脱机查询功能。

1 客户端日志服务的实现

客户端主要实现日志的解析、查询等功能,包括以下三个模块:日志状态管理、日志解析、日志查询。日志查询模块主要实现获取符合条件的日志信息并保持到本地内存中,因此需要调用日志解析模块对日志进行解析;同时日志状态信息的修改影响日志的检索结果。

1.1日志模型

日志模型包括日志数据集及日志控制块两部分[6],其中两者以相对应的方式进行配置,即一个数据集对应一个控制块。本文日志控制块LCB采用以lcb为前缀,以逻辑设备名为尾缀作为控制块名称,日志控制块配置及属性如图1所示。

图1 日志控制块

1.2日志数据结构设计

日志属性包括LogName(日志名称)、LogRef(日志路径名)、OldEntrTm(旧入口时间)、NewEntrTm(新入口时间)、OldEntr(旧日志条目ID)、NewEntr(新日志条目ID)[7]。因此客户端将日志定义为以下数据结构,以方便对日志的操作。

日志参数数据结构如下所示。

typedef struct

{

TimeStamp starttime_bytime;TimeStamp starttime_byid;

TimeStamp endtime_bytime;EntryIdid_byid;

TimeStamp temp_time; //用于后续包EntryIdtemp_id;//用于后续包

int fallow_flag;//是否有后续包的标志}LOGQUERYPARA;

1.3日志状态管理模块

日志状态管理模块主要是获取日志状态值,同时可以修改相关状态值并下装到装置中,实现对日志的修改。根据日志属性及配置信息,客户端通过调用函数read_logstate(void)获取日志状态并显示。

首先,在建立客户端与装置的通信连接后,从获取到的装置模型信息中得到日志数据结构LOG_INFO,根据选择需要查看的日志块名称检索日志数据结构获得LogName、LogRef、LogDatSet属性值及其余状态信息的名称lnRef,根据各名称lnRef调用ACSI函数Acsi_GetDataValue(int ld, char * szDataRef, AcsiVariant * var)获取对应的值,从而得到所有的日志状态信息,如图2所示。

图2 日志状态信息

用户可以根据需要,通过调用ACSI函数Acsi_SetDataValue(int ld, char * szDataRef, AcsiVariant * var)修改日志触发选项与完整性周期,同时下装到装置中,实现对日志状态信息的修改。

1.4日志解析模块

日志解析模块主要实现对日志信息的解析并将其显示到客户端界面中。模块首先将返回的日志信息保存到本地内存数据结构AcsiEntry中,如下所示。

typedef struct{typedef struct{

char * ref;TimeStamp time;

MTree * val; EntryId id; ......

unsigned char reason[4];AcsiEntryData data[1];

}AcsiEntryData;}AcsiEntry;

其中id为日志唯一标识号,time为日志记录时间,ref为日志名称,日志内的数据val以树MTree数据结构形式存储,结构不直观,无法直接得到日志的具体数据,因此需要进行解析处理。

日志解析模块将每一条日志内容val转换为树CMTree结构,CMTree是对MTree的进一步封装。采用深度遍历的方式遍历树中的所有数据,并根据其结构组成判定各数据的含义,同时将叶子数值保存到相应的日志结构中(如上1.2所示),如日志名称、描述、记录时间、ID、品质等。

1.5日志查询模块

日志查询模块主要实现根据查询条件检索符合条件的日志数据,日志查询具有两种方式:按时间方式查询、按条目方式查询,两种查询方式的区别在于输入条件的不同,前者查询条件为日志的起始时间、终止时间,后者为日志的起始时间、起始条目号。

首先,在客户端界面根据查询方式获取查询条件,调用客户端查询日志函数asklog(void)获取日志信息,并根据参数采用消息响应的方式,调用ACSI中相应函数,若为按时间方式查询调用Acsi_QueryLogByTime(int ld, char * szLogRef, TimeStamp * start, TimeStamp * stop),否则调用Acsi_QueryLogAfter(int ld, char * szLogRef, TimeStamp * sa_time, EntryId * entry_id),ACSI通过底层与MMS的映射关系,产生查询日志发送报文。按时间方式查询发送报文部分内容如下所示。

ReadJournal

Object Name

Domain Specific

DomainName:

DomainName: TEMPLATEPROT

ItemName:

ItemName: PROT

Range Start Specifictaion

Time 2000-01-01 00:00:0.000 (days=5844 msec= 0)

Range Stop Specifictaion

Time 2013-11-08 00:00:0.000 (days=10904 msec= 0)

当服务器端收到发送报文消息后,根据报文中的日志检索条件调用服务器端的日志检索模块对日志进行查询,并将符合条件的日志信息按照报文格式打包并发送响应消息,同时,客户端自动调用日志消息响应函数OnLog(BOOL bMorefollow,AcsiEntry ** entry, int iEntryNum),将ACSI中的日志内容entry、是否有后续日志信息标识变量bMorefollow及日志条目传送给日志解析模块进行解析处理,并将解析数据保存到本地日志数据结构中。按时间查询日志响应报文部分内容如下所示。

ReadJournal ……

TEMPLATEPROT/WarnGGIO1$ST$Alm1

ValueSpecification

STRUCTURE

BOOLEAN:FALSE

BITSTRING:

BITSTRING:

BITS 0000 - 0015: 0 0 0 0 0 0 0 0 0 0 0 0 0……

TEMPLATEPROT/WarnGGIO1$ST$Alm1|reasonCode

ValueSpecification

BITSTRING:

BITSTRING:

BITS 0000 - 0015: 0 1 0 0 0 0……

2 客户端日志服务的应用

在客户端实现日志服务的基础上,本文对日志信息进行了进一步的处理,实现日志服务的高级应用。按照实现功能,将其分为客户端日志本地存储与客户端日志应用处理两个模块。

2.1客户端日志本地存储

为了提高日志的检索效率,实现日志的脱机离线查询功能,本文采用将日志以文件的方式存储到客户端本地内存中,避免每次查询都要建立与服务器端的连接与查询请求,以及重复性的报文解析工作。

IEC 61850报告与日志处理方式不同,IEC 61850报告采用主动上送方式,即当有触发事件产生报文时,服务器端会主动将其上送至客户端进行处理。而日志是不主动上送的,当有触发事件产生时,服务器端将日志信息进行记录存储,只有当客户端主动查询才能得到历史记录。因此由于日志上送方式的特殊性导致了日志本地存储的困难。

通过对日志服务实现方式的分析,本文采用主动查询的方式获取日志记录。客户端日志本地存储分为两个子模块:日志控制模块、日志文件存储模块。

图3 日志控制模块流程图

日志控制模块实现了当日志为使能状态时,定时查询日志,将所有的日志历史记录保存到本地内存数据结构中。具体流程如图3所示。

日志文件存储模块实现日志的离线保存功能。通过比较与分析,XML为轻量级的数据储存文件,存在互操作性强、可扩展性好等优点,同时XML的解析与查询效率高,因此本文采用XML文件存储的方式对日志历史记录进行存储。在建立客户端与装置连接的同时解析日志存储文件,并将日志信息保存到本地内存数据结构中,同时从服务器端获取日志起始条目号及结束条目号,判断日志数据结构中的条目号是否与服务器端相同,如不同,更新数据结构,同步本地日志与服务器端日志数据,如相同,启动日志控制模块对日志进行控制处理。当客户端与装置断链时,自动将本地内存的日志信息保存到日志文件中进行存储。

2.2客户端日志应用处理

客户端日志应用处理模块主要实现日志应用操作的一些辅助功能,如日志显示、日志关键字检索、日志导出、日志清除等。

客户端日志显示可分为通用显示与分组显示两种。通用显示将查询结果逐条直接显示到客户端界面中,分组显示则将日志查询结果按照分组的形式进行显示。为了实现报文结果显示清晰,103规约提出了“分组显示”的概念,即将某些信息以组别的形式进行显示,以方便调试人员的查看与分析,而IEC 61850报文采用逐条主动上送的方式,因此目前还没有分组显示的概念。本文在分析日志特点的基础上,结合客户端日志服务的实现,将分组的概念引用到日志显示上,提高日志历史记录显示的清晰性,方便调试人员的定位与调试。日志处理模块采用增加日志触发选项标志位,在解析日志报文的同时,跟据日志产生原因设置其标志位,在对日志查询时,通过对标志位的过滤处理实现日志查询结果的分组,从而实现日志分组显示的效果。

日志关键字检索是客户端日志应用的另一个重要功能,对具体错误信息的定位有着重要作用。通过设置检索关键字与显示条目N,客户端在已保存的日志记录中对所有的日志信息进行关键字完全匹配检索,当检索到匹配信息时对其进行标识,并将该条日志记录的前后N条记录进行保存,通过处理以通用显示的方式显示到日志界面中。日志关键字检索在工程应用中有着重要作用,特别是对于查询定位特定信息,如装置断链等,能够方便快速的调取相关日志记录,避免了逐条查看分析的过程,对于装置调试有着重要指导意义。

日志导出将查询获取到的日志信息按照文本的方式导出的外部文件中,以方便调试人员外部的使用。

日志清除将客户端界面日志显示信息进行清理,提高显示的清晰度。

3 结束语

日志服务是IEC 61850中的一项重要通信服务,对装置的调试及电能质量后台数据持续性保证等方面都有指导意义。本文通过对日志模型及控制块的分析,在服务器端实现日志服务的基础上,在客户端实现日志的解析、查询、日志的本地存储及离线查询功能,同时,首次将关键字检索和103规约中分组显示的概念引入到日志服务中,实现日志的精确查询和分组显示功能,对故障追溯与定位分析有着指导意义。现MMS客户端日志服务功能已在实际的工程中投入应用并取得了良好的效果。

[1] 董科, 关彬, 王巍. IEC61850与MMS的映射的研究[J]. 电力系统保护与控制, 2010, 38(10) :92-95.

[2] 中华人民共和国国家经济贸易委员会. IEC 61850, Communication networks and systems in substations - Part 8-1 (First edition)[S]. 中华人民共和国, 2004.

[3] 任希广. 基于IEC61850的MMS客户端软件设计[J]. 华北电力技术,2013,43(11) : 44-48.

[4] 韩明峰,郑永志,唐永建,等. IEC 61850日志服务的实现策略[J]. 电力系统自动化, 2007, 31(18): 54-56.

[5] 中华人民共和国国家经济贸易委员会. IEC 61850, Communication networks and systems in substations-Part 6 (First edition)[S]. 中华人民共和国, 2004.

[6] 韩法玲,黄润长,张华,等. 基于IEC61850标准的IED建模分析[J]. 电力系统保护与控制, 2010, 36(10): 87-90.

[7] 何卫,唐成虹,张祥文. 基于IEC 61850的IED数据结构设计[J]. 电力系统自动化, 2007, 31(1): 57-61.

Implementation of Log Service Based on IEC 61850MMS Client Side

XIE Min1, FAN Rui2, LI Jia2, SUN Yue-qin1, WANG Hai-gang1, SHAO Qing-zhu1

(1. State Grid Anhui Electric Power Corporation,Hefei Anhui 230022, China;2. State Grid Electric Power Research Institute /Nanjing NARI Group Corporation, Nanjing Jiangsu 211000, China)

Log service is an important communication service specified in IEC 61850, and its implementation at the client side is vital to both engineering debugging and substation automation. Based on the development of an IEC 61850MMS client-side debugging tool, log service is implemented in the client-side/server mode. At the client side, this service realizes highly efficient query, derivation and storage of logs by time and item on and off the line. For the log display, the concepts of grouping and query by key words are introduced for the first time so as to meet the demand of fault location on the part of engineering personnel. The software tool using the log service has been applied to practical engineering with good result.

IEC 61850;log service; log query; log storage; group display

10.3969/j.issn.1000-3886.2016.02.006

TM73;TM761:TP391

A

1000-3886(2016)02-0015-03

谢民(1975-),男,安徽淮南人,工程师,主要研究方向:电力系统继电保护。樊瑞(1985-),女,山东泰安人,工程师,主要研究方向:电力系统自动化。李嘉(1981-),男,上海青浦人,工程师,主要研究方向:电力系统自动化。孙月琴(1964-),男,安徽休宁人,高级工程师,主要研究方向:电力系统继电保护。王海港(1977-),男,安徽阜阳人,工程师,主要研究方向:电力系统继电保护。邵庆祝(1988-),男,安徽阜阳人,工程师,主要研究方向:电力系统继电保护。

定稿日期: 2015-05-27

猜你喜欢
数据结构日志报文
基于J1939 协议多包报文的时序研究及应用
一名老党员的工作日志
数据结构线上线下混合教学模式探讨
CTCS-2级报文数据管理需求分析和实现
扶贫日志
为什么会有“数据结构”?
浅析反驳类报文要点
雅皮的心情日志
游学日志
ATS与列车通信报文分析