基于事件驱动的电网CIM/E模型解析方法与流程

文档序号:12177487阅读:1735来源:国知局
基于事件驱动的电网CIM/E模型解析方法与流程

本发明属于电力调度自动化领域,具体涉及一种电力系统CIM/E模型文件解析方法,采用事件驱动模型实现对CIM/E模型文件高速解析,同时对模型语法规范性进行校验。



背景技术:

基于IEC6190标准CIM模型作为电网模型描述的载体在电力系统调度自动化领域广泛使用。CIM模型描述方式在规范中使用XML标准为载体IEC61970-552,业界称之为CIM/XML标准。基于E格式的CIM模型描述方式被提出后业界称之为CIM/E标准,CIM/E标准正在逐步推广使用并进入IEC61970国际标准体系IEC61970-555。CIM/E相较与CIM/XML格式有描述效率高的优势,相同大小的模型用CIM/E描述文件大小明显小于CIM/XML,目前CIM/XML遵循XML格式标准在计算机领域有大量的开发包支持对XML文件的解析处理,在工程实施方面有丰富的技术支撑。CIM/E格式的模型解析一般由各个厂商定制开发。



技术实现要素:

针对上述问题,本发明提出一种基于事件驱动的电网CIM/E模型解析方法,该方法基于事件驱动,分类处理CIM/E规范中的各类保留字、标签、引导符,将其作为回调的触发事件,通过触发回调应用层的处理接口将CIM/模型中对象、属性数据传递给应用程序,由应用程序根据需要实现存储逻辑,只存储需要的内容形成对象内存库,采用状态迁移机制监测CIM/E模型文件的语法规范性,实现模型文件的高效解析。

实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:

一种基于事件驱动的电网CIM/E模型解析方法,包括以下步骤:

步骤一、将模型解析过程中出现的各类信息定义为对应的各个状态;

步骤二、将CIM/E模型规范中的保留字符、引导符定义为与各个状态相对应的驱动事件字符;

步骤三、将模型解析过程中各个状态之间的迁移定义为状态迁移路径,状态迁移路径包括:正常路径、告警路径、未定义路径;

步骤四、对每条状态迁移路径定义状态转移函数、回调函数;

步骤五、模型解析过程以“开始”作为初始状态,判断驱动事件字符,得到当前的状态迁移路径,然后执行相应的状态转移函数和回调函数;

步骤六、以文件结束符EOF作为模型解析完成标志,实现基于事件驱动的电网CIM/E模型解析。

所述步骤一中的各类信息包括:开始、头信息、头结束、类信息、属性、对象、类结束、完成。

所述步骤二具体为:定义“<!”为头信息驱动符、“!>”为头结束标志符、“<”为类信息引导符、“@”为属性引导符、“#”为对象引导符、“</”为类结束标志符、“EOF”为完成标识符,“开始”状态为模型解析的初始状态,表示打开模型文件准备读取,无特殊字符。

所述步骤三中,正常路径为符合CIM/E模型语义的状态迁移路径;告警路径为符合CIM/E模型格式不影响后续解析,但缺失部分信息的状态迁移路径;未定义路径为其他状态之间的迁移,出现未定义路径,说明文件不符合CIM/E模型规范。

所述步骤四中,状态转移函数用于监测模型错误,包括属性名唯一性校验、属性个数和对象个数一致性校验;回调函数用于对CIM对象及属性进行筛选、分配和保存。

所述步骤五具体为:按行读取CIM/E模型文件,将一行内容作为字符串传递给状态转移函数,状态转移函数根据CIM/E规范保留字符判断该数据含义,根据引导符判断是否为属性行,解析所有属性并判断属性名是否重复,记录该类的所有属性,在读取到对象引导符时,解析对象的属性值并和上次读到的属性声明个数进行比较,如果不一致,说明模型文件有错误;状态转移函数将读取到内容传递给回调函数,并执行回调函数,回调函数判断当前状态获知该数据含义并进行解析,分配内存,形成设定的内存结构保存模型对象及属性,最终生成全模型对象内存库。

本发明的有益效果:

1、高速解析,读取一遍文件即完成了模型文件的解析,CIM/E模型文件以“行”为单位读取。

2、基本校验,通过状态迁移过程中定义的正常迁移、异常迁移实现模型文件基本语法的校验。

3、随机访问,解析模块通过回调函数将对象信息传输给应用程序,应用程序根据需要筛选信息,将模型对象保存在计算机内存中,应用程序可从内存中随机访问任意对象的任意属性,理论时间复杂度为O(1)。

4、内存小,文件解析过程没有预读取过程,回调函数形成的对象内存为应用程序需要的最小集无冗余数据。

附图说明

图1为本发明模型解析状态切换示意图。

图2为本发明模型对象内存存储结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明的应用原理作详细的描述。

一种基于事件驱动的电网CIM/E模型解析方法,包括以下步骤:

步骤一、将模型解析过程中出现的各类信息定义为对应的各个状态;

步骤二、将CIM/E模型规范中的保留字符、引导符定义为与各个状态相对应的驱动事件字符;

步骤三、将模型解析过程中各个状态之间的迁移定义为状态迁移路径,状态迁移路径分为正常路径、告警路径、未定义路径;

优选地,正常路径为符合CIM/E模型语义的状态迁移路径,如图1中用实线箭头表示;告警路径为符合CIM/E模型格式,不影响后续解析但缺失部分信息的状态迁移路径,如图1中用虚线箭头表示;未定义路径为图1中没有标识出的其他状态之间的迁移,出现这种情况,说明文件不符合CIM/E模型规范;

步骤四、对每条状态迁移路径定义状态转移函数和回调函数;

步骤五、模型解析过程以“开始”作为初始状态,判断驱动事件字符,得到当前的状态迁移路径,然后执行相应的状态转移函数和回调处理函数;

步骤六、以文件结束符EOF作为模型解析完成标志,实现基于事件驱动的电网CIM/E模型解析。

在本发明的一种实施例中,所述步骤一中的各类信息包括:开始、头信息、头结束、类信息、属性、对象、类结束、完成。

在本发明的一种实施例中,所述步骤二具体为:定义“<!”为头信息驱动符、“!>”为头结束标志符、“<”为类信息引导符、“@”为属性引导符、“#”为对象引导符、“</”为类结束标志符、“EOF”为完成标识符,“开始”状态为模型解析的初始状态,表示打开模型文件准备读取,无特殊字符。

在本发明的一种实施例中,所述步骤四中,状态转移函数用于监测模型错误,包括属性名唯一性校验、属性个数和对象个数一致性校验;回调函数用于对CIM对象及属性进行筛选、分配和保存;

具体地,状态转移函数用于判断模型文件中的保留字符或者引导符,并记录解析过程的状态;回调函数接收状态转移函数提交的模型数据片段,形成模型对象及其属性,并能够将原始片段提供给应用程序使用,即回调函数用于将模型对象提交给应用程序,回调函数还用于形成模型内存库;

更具体地:状态转移函数对读取模型信息根据保留字符或者引导符判断是类信息、属性声明信息还是属性值信息,将一个CIM对象提交给回调函数,回调函数判断当前状态获知该数据含义(即回调函数检查属性声明信息、属性值信息),并进行解析,分配内存,形成设定的内存结构保存模型对象及属性,最终得到对象内存库。

在本发明的一种实施例中,所述步骤五具体为:按行读取CIM/E模型文件,将一行内容作为字符串传递给状态转移函数,状态转移函数根据CIM/E规范保留字符判断该数据含义,根据引导符判断是否为属性行,解析所有属性并判断属性名是否重复,记录该类的所有属性,在读取到对象引导符时,解析对象的属性值并和上次读到的属性声明个数进行比较,如果不一致,说明模型文件有错误;状态转移函数将读取到内容传递给回调函数,并执行回调函数,回调函数判断当前状态获知该数据含义并进行解析,分配内存,形成设定的内存结构保存模型对象及属性,最终生成全模型对象内存库。

实施例一

(1)将CIM/E模型解析过程定义成8个状态,包括开始、头信息、头结束、类信息、属性、对象、类结束、完成;

(2)定义CIM/E模型解析过程中的驱动事件,头信息驱动符“<!”、头结束标志符“!>”、类信息引导符“<”、属性引导符“@”、对象引导符“#”、类结束标志符“</”;

(3)形成状态切换表,状态迁移路径分为正常、告警、未定义,未定义的迁移路径作为错误状态迁移路径;

(4)执行状态转移函数,读取模型文件中的一行,检测其中的驱动字符,判断需切换到哪个状态,形成状态迁移路径,判断状态迁移路径是否合理,如果不合理,表示模型文件有语法错误;状态转移函数监测模型是否错误,根据引导符判断是否为属性声明行,解析所有属性并判断属性名是否重复,如果重复说明模型文件有错误,则形成错误报告并终止模型解析过程;如果不重复,则记录该类的所有属性声明;在读取到对象引导符时,解析对象的属性值并和上次读到的属性声明个数进行比较,如果不一致说明模型文件有错误则形成错误报告并终止模型解析过程,如果一致,则执行下一步骤;

(5)状态转移函数将读取到内容传递给回调函数,并执行回调函数,回调函数判断当前状态获知该数据含义并进行解析,分配内存形成如图2的结构保存模型对象及属性;

(6)读取文件下一行重复执行步骤(4)~(5)直到读取文件完毕。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1