CN114328528A - 一种发电机励磁系统运维事件知识库的编写方法及分析方法 - Google Patents
一种发电机励磁系统运维事件知识库的编写方法及分析方法 Download PDFInfo
- Publication number
- CN114328528A CN114328528A CN202111632103.6A CN202111632103A CN114328528A CN 114328528 A CN114328528 A CN 114328528A CN 202111632103 A CN202111632103 A CN 202111632103A CN 114328528 A CN114328528 A CN 114328528A
- Authority
- CN
- China
- Prior art keywords
- node
- value
- entity
- basic
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明公开了一种发电机励磁系统运维事件知识库的编写方法及分析方法,所述编写方法包括:定义基础节点、运算节点、信号节点、原因节点和事件节点;以基础节点为第一层、运算节点为第二层、信号节点为第三层、原因节点为第四层、事件节点为第五层通过XML文档的形式编写所述知识库;其中,所述基础节点用于描述系统输入的遥信信号、遥测量及字面量;所述运算节点用于计算中间变量;所述信号节点用于获取自定义的运维事件信号;所述原因节点用于计算获取运维事件出现的原因;所述事件节点用于描述运维事件。本发明有助于降低发电机励磁系统运维事件的分析对运维人员经验积累的依赖、提高分析效率及准确性。
Description
技术领域
本发明涉及一种发电机励磁系统运维事件知识库的编写方法及分析方法,属于电力系统技术领域。
背景技术
发电机励磁设备是发电厂主要的二次设备,其健康稳定运行直接关系电力系统的安全稳定运行。但励磁设备复杂昂贵,涉及多项复杂技术。励磁运维有较高的技术门槛,普通运维人员较难掌握。当出现励磁相关的异常工况时,常陷入难以处理的窘境。同时随着运维经验的增长,又难以将这些经验知识传授给年轻员工。目前尚无在电厂实际运行的发电厂智能运维事件分析方法。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种发电机励磁系统运维事件知识库的编写方法及分析方法,有助于降低发电机励磁系统运维事件的分析对运维人员经验积累的依赖、提高分析效率及准确性。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供一种发电机励磁系统运维事件知识库的编写方法,包括:
定义基础节点、运算节点、信号节点、原因节点和事件节点;
以基础节点为第一层、运算节点为第二层、信号节点为第三层、原因节点为第四层、事件节点为第五层通过XML文档的形式编写所述知识库;
其中,所述基础节点用于描述系统输入的遥信信号、遥测量及字面量;所述运算节点用于计算中间变量;所述信号节点用于获取自定义的运维事件信号;所述原因节点用于计算获取运维事件出现的原因;所述事件节点用于描述运维事件。
结合第一方面,进一步的,所述定义基础节点、运算节点、信号节点、原因节点和事件节点的方法包括:
定义各类节点的主要标签:所述基础节点的主要标签包括:名称name、描述desc、建议advic、数据来源dataSource、数据类型dataType、编号id、值value、值addr;所述运算节点的主要标签包括:名称name、描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、运算符opr、编号id、子节点列表ids;所述信号节点的主要标签包括:名称name、描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、运算符opr、编号id、子节点列表ids;原因节点的主要标签包括:名称name,描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、运算符opr、编号id、子节点列表ids;所述事件节点的主要标签包括:名称name、描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、编号id、信号子节点signalId、原因子节点reasonId;
对上述各节点的主要标签进行归类,并分别对各类的主要成员变量进行说明:
Node类:name为节点名称,不可为空;desc为对本实体的描述,可为空;advice为给出的运行建议,可为空;dataSource为数据来源,不可为空;dataType为数据类型,可为空;value为本节点的值,默认为0;id为本节点的id,不可为空。
基础节点BasicNode类:dataSource值为下列三种之一,"yc","yx","literal";
等于"yc”或"yx"时,类根据addr值查询获得值,用来更新value值;等于"literal"时,value值为常数直接给出;
运算节点CalNode、信号节点SignalNode、原因节点ReasonNode类:opr值代表操作符;ids为list<string>数据结构,用于存储其子节点的id;dataSource的值为下列之一:"basic","cal",当dataSource的值为"basic“时,代表本节点的子节点由BasicNode类构成,则无需迭代;当dataSource的值为"cal"时,代表本节点的子节点由CalNode类构成,需要递归调用,直到子节点的dataSource为"basic”为止。
结合第一方面,进一步的,opr属性字符串对应的操作符意义如表1所示:
表1:
结合第一方面,进一步的,通过XML文档的形式编写所述知识库的方法包括:
建立维护各层实体的map类型数据结构map<string,BasicNode>,map<string,CalNode>,map<string,SignalNode>,map<string,ReasonNode>,map<string,FaultNode>分别存储各类所有的节点信息。
结合第一方面,进一步的,通过XML文档的形式编写所述知识库的方法还包括:
查询自定义事件的信号是否出现,若出现,则继续计算原因是否匹配:若匹配,则给出相关的描述和建议;否则,查明原因并获得解决方法后,完善所述知识库。
第二方面,本发明提供一种发电机励磁系统运维事件的分析方法,包括:
获取用于描述发电机励磁系统运维事件知识库的XML文档;
解析XML文档并遍历其中的事件节点,获取事件节点的信号节点实体;
计算信号节点实体的value属性值:若信号节点实体的value属性值为0,则继续遍历下一事件节点;否则,获取当前事件节点的原因节点实体;
计算原因节点实体的value属性值:若原因节点实体的value属性值为0,则继续遍历下一原因节点;否则,获取对应的事件原因、运行建议以及子节点信息;
其中,所述发电机励磁系统运维事件知识库采用第一方面任一项所述的方法编写。
结合第二方面,进一步的,节点value属性值计算方法:
S0:针对给定的节点实体,判断是否属于SignalNode、ReasonNode、CalNode类型的实体,若是进入S1,否则进入S3;
S1:获取该实体属性:数据类型dataType、数据来源dataSource、操作符opr、子节点信息chIds;
S2:判断dataSource值为basic或cal:若为basic,进入A1,否则进入B1;
A1:chIds为list数据结构,存储基础节点BasicNode实体对应的id,遍历chIds;
A2:判断是否完成遍历chIds,若否进入A3,否则进入A7;
A3:获得id,根据mBasicNode,获得对应的基础节点BasicNode实体basicNode;
A4:判断dataSource是否为literal,若是进入A5,否则进入A6;
A5:获取basicNode节点value属性值,用list数据结构values存储value值;返回A2;
A6:获取其查询地址addr,根据addr,查询得到的值更新basicNode节点value属性,用list数据结构values存储value值;返回A2;
A7:根据操作符opr对values展开运算,获得值value,更新该实体的value属性;
A8:判断dataSource值为basic或cal:若为cal进入B2;若为basic进入S3;
B1:chIds为list数据结构存储CalNode实体对应的id,遍历chIds;
B2:是否完成遍历chIds:若否进入B3;否则,进入B4;
B3:获得id,根据mCalNode,获得对应的CalNode实体calNode;返回S1;
B4:根据操作符opr对values展开运算,获得值value,更新该实体的value属性进入S3;
S3:本实体的value属性值计算结束。
结合第二方面,进一步的,所述事件节点的遍历方法包括:
S0:判断事件节点是否属于SignalNode、ReasonNode、CalNode类型的实体之一,若是进入S1,否则进入S10;
S1:获取该实体的value属性值:判断该值是否为0,若为0进入S9,否则进入S2;
S2:获取该实体属性:dataSource数据来源、desc故障描述、advice运行建议、子节点信息chIds;判断dataSource值为basic或cal:若为basic进入S3;否则,进入S6;
S3:chIds为list数据结构,存储BasicNode实体对应的id,遍历chIds;判断,是否完成遍历chIds;若未完成,进入S4;否则,进入S5;
S4:获得id,根据mBasicNode,获得对应的BasicNode实体basicNode,获取其值desc及advice,用list数据结构descs存储desc,advices存储advice;
S5:返回该实体故障描述值desc、建议值advice、及子节点的故障描述值descs、建议值advices;判断:判断dataSource值为basic或cal;若为basic,进入S9;否则,进入S7;
S6:chIds为list数据结构存储CalNode实体对应的id,遍历chIds;
S7:判断是否完成遍历chIds,若是则进入S8;否则,进入S1;
S8:返回该实体故障描述值desc,建议值advice,及子节点的故障描述值descs,建议值advices;
S9:遍历结束;
S10:事件节点类型错误提示,遍历结束。
与现有技术相比,本发明所达到的有益效果:
通过XML文档的形式编写发电机励磁系统运维事件知识库,只需编写五层节点的标签和子元素值即可高效拓展事件分析规则,对于工作经验丰富的运维人员而言,可按照本知识库的编写格式方便地将知识经验标准化录入保存;有助于提高发电机励磁系统运维事件分析效率及准确性;
对于新情况以及处理经验,可以自行拓展知识库,能够更好的发挥知识库的分析建议功能,对资历较浅的运维人员而言,不再依赖于经验的口耳相传,可对励磁系统的深层逻辑快速掌握,有助于降低发电机励磁系统运维事件的分析对运维人员经验积累的依赖;
对技术开发人员而言,标准化的知识库可方便加载于程序模块中,结合特定电厂的测点及采集量可快速获得个性化定制的故障诊断及事件分析模块。
附图说明
图1是本发明实施例提供的从XML文档提取的五层节点属性及子节点示意图;
图2是本发明实施例提供的事件节点树状子节点的结构示意图;
图3是本发明实施例提供的五个节点对应类UML图;
图4是本发明实施例提供的运维事件分析方法的流程图;
图5是本发明实施例提供的节点value属性计算方法的流程图;
图6是本发明实施例提供的节点遍历方法的流程图。
具体实施方式
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
实施例一:
本发明实施例提供一种发电机励磁系统运维事件知识库的编写方法,包括:
定义基础节点、运算节点、信号节点、原因节点和事件节点;
以基础节点为第一层、运算节点为第二层、信号节点为第三层、原因节点为第四层、事件节点为第五层通过XML文档的形式编写所述知识库;
如图1、图2所示,其中,所述基础节点用于描述系统输入的遥信信号、遥测量及字面量,主要标签包括:名称name、描述desc、建议advic、数据来源dataSource、数据类型dataType、编号id、值value、值addr;
所述运算节点用于计算中间变量,主要标签包括:名称name、描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、运算符opr、编号id、子节点列表ids;
所述信号节点用于获取自定义的运维事件信号,主要标签包括:名称name、描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、运算符opr、编号id、子节点列表ids;
所述原因节点用于计算获取运维事件出现的原因,主要标签包括:名称name,描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、运算符opr、编号id、子节点列表ids;
所述事件节点用于描述运维事件,主要标签包括:名称name、描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、编号id、信号子节点signalId、原因子节点reasonId。
在本发明实施例中,采用五个类对上述五种节点进行建模,如图3所示,是本发明实施例提供的五个节点对应类UML图,下面对各类的主要成员变量进行说明:
Node类:name为节点名称,不可为空;desc为对本实体的描述,可为空;advice为给出的运行建议,可为空;dataSource为数据来源,不可为空;dataType为数据类型,可为空;value为本节点的值,默认为0;id为本节点的id,不可为空。
基础节点BasicNode类:dataSource值为下列三种之一,"yc","yx","literal".若为"yc”或"yx"时,类根据addr值查询获得值,用来更新value值;若为"literal"时,则value值为常数需直接给出。
运算节点CalNode、信号节点SignalNode、原因节点ReasonNode类:opr值代表操作符;ids为list<string>数据结构,用于存储其子节点的id;dataSource的值为下列之一:"basic","cal",当dataSource的值为"basic“时,代表本节点的子节点由BasicNode类构成,则无需迭代;当dataSource的值为"cal"时,代表本节点的子节点由CalNode类构成,需要递归调用,直到子节点的dataSource为"basic”为止。
opr属性字符串对应的操作符意义如表1所示:
表1:
建立维护各层实体的map类型数据结构map<string,BasicNode>,map<string,CalNode>,map<string,SignalNode>,map<string,ReasonNode>,map<string,FaultNode>分别存储各类所有的节点信息。如 mBasicNode["b1"]=basicNode;表示BasicNode类实体basicNode,其成员id值为"b1",即将实体的Id值和实体本身作为键-值存入map数据类型。通过map字典,根据id快速查询对应的实体。同理:
mCalNode,mCalNode["c1"]=calNode;
mSignalNode,mSignalNode["s1"]=signalNode;
mReasonNode,mReasonNode["r1"]=reasonNode;
mFaultNode,mFaultNode["f1"]=faultNode。
通过本发明实施例编写的知识库可在线识别当前励磁系统的状态,当自定义事件的信号出现时,若能匹配出给定的原因,则给出事件的描述以及可能的解决方法;若不能匹配,则在查明原因并解决后,自行拓展知识库。拓展后的知识库更加丰富,可以更好的发挥其分析建议功能,保证分析结果的准确性,提高分析效率,同时能够解决发电厂励磁系统对运维人员技术经验水平要求较高的难题。
实施例二:
如图4所示,本发明实施例提供一种发电机励磁系统运维事件的分析方法,该方法可以基于实施例一所述的知识库实现,包括如下步骤:
开始:解析XML文件,并初始化mBasicNode, mCalNode, mSignalNode,mReasonNode, mFaultNode,假设设置的轮询间隔时间为Ts;
S0:开始遍历mFaultNode;
S1:判断是否遍历完mFaultNode,若否进入S2;若是进入S9;
S2:获取当前的事件节点faultNode,获取成员signalChId,该值存储着SignalNode节点的id值,可通过mSignalNode获得faultNode的信号节点实体sigalNode;调用方法一:节点value属性的计算方法,得到并更新signlNode的value属性值;
S3:判断value属性值是否为0,若不为0进入S4,否则S8;
S4:当前的事件节点faultNode,获取成员reasonChId,该值存储着ReasonNode节点的id值,可通过mReasonNode获得faultNode对应的原因节点实reasonNode。调用方法一:节点value属性的计算方法,得到并更新reasonNode的value属性值;
S5:判断value属性值是否为0,若不为0进入S6,否则S8;
S6:对reasonNode调用方法二:节点的遍历方法,获取该实体对应的事件原因、运行建议以及子节点信息;进入S8;
S7:返回:未查询到事件原因,请通过其他原因解决,并将原因和措施添加进本知识库;第一个事件结点查询完成;进入S8;
S8:第一个事件结点查询完成;返回S1;
S9:本来事件查询完毕,经过轮询间隔时间Ts后,返回S0。
下面结合图5,给出节点value属性值的计算方法:
S0A:针对给定的节点实体,判断是否属于SignalNode、ReasonNode、CalNode类型的实体,若是进入S1A,否则进入S3A;
S1A:获取该实体属性:数据类型dataType,数据来源dataSource,操作符opr,子节点信息chIds;
S2A:判断dataSource值,为basic或cal。若为basic,进入S2A-01,否则进入S2B-01;
S2A-01:chIds为list数据结构,存储BasicNode实体对应的id,遍历chIds;
S2A-02:判断是否完成遍历chIds,若否进入S2A-03,否则进入S2A-07;
S2A-03:获得id,根据mBasicNode,获得对应的BasicNode实体basicNode,
S2A-04:判断dataSource是否为literal,若是进入S2A-05,否则进入S2A-06;
S2A-05:获取basicNode节点value属性值,用list数据结构values存储value值;进入S2A-02;
S2A-06:获取其查询地址addr,根据addr,查询得到的值更新basicNode节点value属性,用list数据结构values存储value值;进入S2A-02;
S2A-07:opr为算术或逻辑运算符,根据opr对values展开运算,获得值value,更新该实体的value属性;
S2A-08:判断dataSource值,为basic或cal。若为cal进入S2B-02,若basic进入S3A;
S2B-01:chIds为list数据结构存储CalNode实体对应的id,遍历chIds;
S2B-02:是否完成遍历chIds,若否进入S2B-03,否则进入S2B-04;
S2B-03:获得id,根据mCalNode,获得对应的CalNode实体calNode;转入S1A;
S2B-04:opr为算术或逻辑运算符,根据opr对values展开运算,获得值value,更新该实体的value属性进入S3A;
S3A:本实体的value属性值计算结束。
下面结合图6,说明节点的遍历方法:
S0-0:判断事件节点是否属于SignalNode、ReasonNode、CalNode类型的实体之一,若是进入S0-1,否则进入S0-9;
S0-1:获取该实体value属性值,判断该值是否为0:若为0进入S0-9,否则进入S0-2;
S0-2:获取该实体属性:dataSource数据来源,desc故障描述,advice运行建议,子节点信息chIds。判断dataSource值为basic或cal:若为basic进入S0-3,否则进入S0-6;
S0-3:chIds为list数据结构,存储BasicNode实体对应的id,遍历chIds;判断是否完成遍历chIds:若未完成,进入S0-4,否则进入S0-5;
S0-4:获得id,根据mBasicNode,获得对应的BasicNode实体basicNode,获取其值desc及advice,用list数据结构descs存储desc,advices存储advice;
S0-5:返回该实体故障描述值desc,建议值advice,及子节点的故障描述值descs,建议值advices。判断:判断dataSource值为basic或cal:若为basic,进入S0-9;否则,进入S0-7;
S0-6:遍历chIds,chIds为list数据结构存储CalNode实体对应的id;
S0-7:判断是否完成遍历chIds:若是,则进入S0-8;否则进入S0-1;
S0-8:返回该实体故障描述值desc、建议值advice、及子节点的故障描述值descs,建议值advices;进入S0-9;
S0-9:遍历结束。
如下文所示,是本发明实施例提供的一种类的统一建模语言UML:
<BasicNodes>
<basicNode name="PT断线" desc="" addr="开出9:PT断线" value="" dataSource="yx" dataType="bool" id="b1"> </basicNode>
<basicNode name="机端1路电压百分值" desc="模拟遥测量,机端1路电压" advice=" " dataSource="yc" addr="Vg1_p" value="" dataType="double" id="b2"></basicNode>
<basicNode name="机端2路电压百分值" desc="模拟遥测量,机端2路电压" advice=" " dataSource="yc" addr="Vg2_p" value="" dataType="double" id="b3"> </basicNode>
<basicNode name="空载状态" desc="" advice=" " dataSource="yx" addr="开出21:空载状态" value="" dataType="bool" id="b5"> </basicNode>
</BasicNodes>
<CalNodes>
<calNode name="两路电压之差" dataSource="basic" value='0'desc="两路电压之差" advice="" dataType="double" retType="double" opr="min" id="c1">
<childID> b2 </childID>
<childID> b3 </childID> </calNode>
<calNode name="负序电压门槛百分值" dataSource="basic" value='0' desc="负序电压门槛值" advice="" dataType="double" retType="double" opr="as" id="c2">
<childID> b4 </childID> </calNode>
<calNode name="PT断线判据1:两路电压差值较大" dataSource="cal" value='1' dataType="double" retType="bool" opr="gr" desc="两路电压之差是否大于电压门槛值" advice="两路电压出现较大偏差,请检查两路电压" id="cc3">
<childID> c1</childID>
<childID> c2</childID>
</calNode>
<calNode name="2路电压小于10%" dataSource="basic" value=""dataType="double" retType="bool" opr="gt" id="c5">
<childID> b3</childID>
<childID> b8</childID>
</calNode>
</CalNodes>
<SignalNodes>
<signalNode name="PT断线产生" datasource="basic" datatype="bool" value="" opr="as" desc="PT断线信号开出" advice="" id="s1">
<chId>b1</chId>
</signalNode>
</SignalNodes>
<ReasonNodes>
<reansonNode name="PT断线" value="0" datasource="cal" opr="or" desc="发生了PT断线" advice="有三种可能,进一步判断" id="r1">
<chId>cc3</chId>
<chId>cc8</chId>
<chId>cc12</chId>
</reansonNode>
</ReasonNodes>
<FaultNodes>
<faultNode name="PT断线" value="0" desc="励磁系统的机端电压采集出现异常" advice="请检查机端电压采集回路" id="f1">
<signalChId> S1</signalChId>
<reasonChId> r1 </reasonChId>
</faultNode>
</FaultNodes>
下面结合上述UML对运维事件分析方法做进一步详细描述:
加载XML文件,解析并获得各层实体存入mBasicNode、mCalNode、mSignalNod、mReasonNode、mFaultNode中;
遍历mFaultNode节点,获得第一个FaultNode实体faultNode,name属性为"PT断线",其signalChid值为s1,表明其对应的SignalNode实体的id属性为s1,根据mSignalNode获得SignalNode实体signlaNode;
计算signalNode的value属性值,调用方法一,该实体的操作符opr为"as",即赋值操作符,dataSource为"basic",遍历其子元素<chId>,个数为1,为b1。其对应BasicNode层实体的id属性,根据mBasicNode获得实体basicNode,其dataSource属性为yx,addr属性为"开出9:PT断线",据此查询获得该值为1,将basicNode的value属性更新为1,values的存储value属性值1,根据操作符opr为as,即可获得signalNode的值为1,更新该实体的属性value为1。
继续计算:faultNode的<reasonChId>元素值为r1,其对应ReasonNode实体的id属性,根据mReasonNode获得ReasonNode实体reasonNode。
0)计算reasonNode的value属性值,调用方法二,该实体的操作符opr为'or',或逻辑操作符;dataSource属性值为"cal",遍历其子元素<chId>,个数为3,分别为cc3,cc8,cc12其对应CalNode层实体的id。创建list数据结构values;
1)chId值为cc3对应的实体calNode。调用方法二,计算其value值。该实体的操作符为"gr"即大于等于关系操作符;dataSource属性值为"cal",遍历其子元素<chId>,个数为2,分别c1,c2为其对应CalNode层实体的id。创建list数据结构values。
1.1)c1对应的实体calNode,调用方法二,计算value值。该实体的操作符为“min",即减操作符;dataSource属性值为"basic",遍历其子元素<chId>,个数为2,分别为b2,b3,其对应BasicNode层实体的id。创建list数据结构values。
1.1.1)b2对应的实体basicNode,其dataSource属性值为"yc",即遥测值,addr值为"Vg1_p",根据该地址查询获得值,用该值更新basicNode实体的value属性值。用1.1中创建的list数据结构values存储value值;
1.1.2)b3对应的实体basicNode,其dataSource属性值为"yc",即遥测值,addr值为"Vg2_p",根据该地址查询获得值,用该值更新basicNode实体的value属性值。用1.1中创建的list数据结构values存储value值;
1.1.3)使用1.1中的min即减操作符,用1.1中创建的values数据结构展开操作,获得值valuetemp用该值更新1.1中的value属性值。用1中创建的list数据结构values存储valuetemp。对c1的计算结束。
1.2)c2对应的实体calNode,调用方法二,计算value值。该实体的操作符为"as",即赋值操作符;dataSource属性值为"basic",遍历其子元素<chId>,个数为1,分别为b4,其对应BasicNode层实体的id。创建list数据结构values。
1.2.1)b4对应的实体basicNode,其dataSource属性值为"literal",即字面量值,直接读取该实体的value属性值为12.5。用1.2中list数据结构values存储该value值;
1.2.2)使用1.2中as操作符对1.2中list数据结构values展开操作,获得值valuetemp,用该值更新1.2中实体的value属性值;用1中创建list数据结构values存储valuetemp。对c2的计算结束。
1.3)使用1中gr关系操作符,对1中创建的values展开操作,获得值valuetemp,用该值更新1中实体value属性值。用0中创建的list数据结构vaues存储valuetemp。cc3的计算结束。
2)chId值为cc8对应的实体calNode。调用方法二,计算其value值。该实体的操作符为"and"即和逻辑操作符;dataSource属性值为"cal",遍历其子元素<chId>,个数为4,分别c4,c5,c6,c7为其对应CalNode层实体的id。创建list数据结构values。
2.1)c4对应的实体calNode,调用方法二,计算value值。该实体的操作符为"lt",即小于等于关系操作符;dataSource属性值为"basic",遍历其子元素<chId>,个数为2,分别为b6,b7,其对应BasicNode层实体的id。创建list数据结构values。
2.1.1)b6对应的实体basicNode,其dataSource属性值为"yc",即遥测值,addr值为"Il",根据该地址查询获得值,用该值更新basicNode实体的value属性值。用2.1中的list数据结构values存储value值;
2.1.2)b7对应的实体basicNode,其dataSource属性值为"literal",即字面量值,直接读取该实体的value属性值为10。用2.1中的list数据结构values存储该value值;
2.1.3)使用2.1中lt关系操作符,对2.1中的values展开操作,获得值valuetemp,用该值更新2.1中实体value属性值。用2中的list数据结构vaues存储valuetemp。c4的计算结束。
2.2)c5对应的实体calNode,调用方法二,计算value值。该实体的操作符为"gt",即大于等于关系操作符;dataSource属性值为"basic",遍历其子元素<chId>,个数为2,分别为b3,b8,其对应BasicNode层实体的id。创建list数据结构values。
2.2.1)b3对应的实体basicNode,其dataSource属性值为"yc",即遥测值,addr值为"Vg2_p",根据该地址查询获得值,用该值更新basicNode实体的value属性值。用2.2中的list数据结构values存储value值。
2.2.2)b8对应的实体basicNode,其dataSource属性值为"literal",即字面量值,直接读取该实体的value属性值为10。用2.2中的list数据结构values存储该value值。
2.2.3)使用2.2中gt关系操作符,对2.2中的values展开操作,获得值valuetemp,用该值更新2.2中实体value属性值。用2中的list数据结构vaues存储valuetemp。c5的计算结束。
2.3)c6对应的实体calNode,调用方法二,计算value值。该实体的操作符为"gt",即大于等于关系操作符;dataSource属性值为"basic",遍历其子元素<chId>,个数为2,分别为b2,b8,其对应BasicNode层实体的id。创建list数据结构values。
2.3.1)b2对应的实体basicNode,其dataSource属性值为"yc",即遥测值,addr值为"Vg1_p",根据该地址查询获得值,用该值更新basicNode实体的value属性值。用2.3中的list数据结构values存储value值。
2.3.2)b8对应的实体basicNode,其dataSource属性值为"literal",即字面量值,直接读取该实体的value属性值为10。用2.3中的list数据结构values存储该value值。
2.3.3)使用2.2中gt关系操作符,对2.3中的values展开操作,获得值valuetemp,用该值更新2.2中实体value属性值。用2中的list数据结构vaues存储valuetemp。c6的计算结束。
2.4)c7对应的实体calNode,调用方法二,计算value值。该实体的操作符为"as",即赋值操作符;dataSource属性值为"basic",遍历其子元素<chId>,个数为1,分别为b5,其对应BasicNode层实体的id。创建list数据结构values。
2.4.1)b5对应的实体basicNode,其dataSource属性为yx,addr属性为"开出21:空载状态",据此查询获得该值value,用2.4中的list数据结构values存储该value值。
2.4.2)使用2.4中as操作符对2.4中的values展开操作,获得值valuetemp,用该值更新2.4中实体的value属性值。用2中的list数据结构values存储valuetemp.对c7的计算结束。
2.5)用2中and操作符符,对2中创建的values展开操作,获得值valuetemp。用0中创建的list数据结构values存储valuetemp。对cc8的计算结束。
3)chId值为cc12对应的实体calNode。调用方法二,计算其value值。该实体的操作符为"and"即和逻辑操作符;dataSource属性值为"cal",遍历其子元素<chId>,个数为4,分别c10,c11为其对应CalNode层实体的id。创建List类型的数据结构values。
3.1)c10对应的实体calNode,调用方法二,计算value值。该实体的操作符为"gt",即大于等于操作符;dataSource属性值为"basic",遍历其子元素<chId>,个数为1,分别为b9,10,其对应BasicNode层实体的id。创建List类型的数据结构values。
3.1.1)b9对应的实体basicNode,其dataSource属性值为"yc",即遥测值,addr值为"Ilr",根据该地址查询获得值,用该值更新basicNode实体的value属性值。用3.1中list数据结构values存储value值。
3.1.2)b10对应的实体basicNode,其dataSource属性值为"literal",即字面量值,直接读取该实体的value属性值为12.5。用3.1中list数据结构values存储该value值。
3.1.3)用3.1的gt操作符,对3.1中创建的values展开操作,获得值valutetemp,更新3.1中value属性值。用3中创建的values存储valuetemp.c10的计算结束。
3.2)c11对应的实体calNode,调用方法二,计算value值。该实体的操作符为"gt",即赋值操作符;dataSource属性值为"basic",遍历其子元素<chId>,个数为2,分别为b11,b12,其对应BasicNode层实体的id。创建List类型的数据结构values。
3.2.1)b11对应的实体basicNode,其dataSource属性值为"yc",即遥测值,addr值为"Vgr",根据该地址查询获得值,用该值更新basicNode实体的value属性值。用3.2中list数据结构values存储value值。
3.2.2)b12对应的实体basicNode,其dataSource属性值为"literal",即字面量值,直接读取该实体的value属性值为12.5。用3.2中list数据结构values存储该value值。
3.2.3)用3.2的gt操作符,对3.3中创建的values展开操作,获得值valutetemp,更新3.2中value属性值。用3中创建的values存储valuetemp.c11的计算结束。
3.3)用3的and操作符,对3中创建的values展开操作,获得值valuetemp,更新3中value属性值。用0中创建的values存储valuetemp.cc12的计算结束。
4)用0中的or操作符,对0中创建的values展开计算,获得值value,更新0的value属性。reasonNode的value属性值计算结束。
reasonNode的value属性值1。继续计算。对reasonNode展开遍历操作,调用方法二。
0)reasonNode的desc属性值为:"发生了PT断线",advice属性值:"有三种可能,进一步判断"。其dataSource属性值为'cal'。遍历其子元素<chId>,个数为3,分别为cc3,cc8,cc12,其对应CalNode层实体的id。
1)cc3对应的实体calNode。判断value属性值为非0。继续。desc属性值为:"两路电压之差是否大于电压门槛值",advice属性值:"两路电压出现较大偏差,请检查两路电压"。其dataSource属性值为'cal'。遍历其子元素<chId>,个数为2,分别为c1,c2,其对应CalNode层实体的id。调用方法二。
1.1)c1对应的实体calNode。判断value属性值为非0。继续。desc属性值为:"两路电压之差",advice属性值:""。其dataSource属性值为'basic。遍历其子元素<chId>,个数为2,分别为b2,b3,其对应BasicNode层实体的id。调用方法二。
1.1.1)b2对应的实体basicNode。desc属性值为:"模拟遥测量,机端1路电压",advice属性值:""。
1.1.2)b3对应的实体basicNode。desc属性值为:"模拟遥测量,机端2路电压",advice属性值:""。
1.2)c2对应的实体calNode。判断value属性值为非0。继续。desc属性值为:"负序电压门槛值"。其dataSource属性值为""。遍历其子元素<chId>,个数为1,分别为b4,其对应BasicNode层实体的id。调用方法二。
1.2.1)b4对应的实体basicNode。desc属性值为:"负序电压门槛百分值",advice属性值:""。
2)cc8对应的实体calNode。判断value属性值为0,结束。
3)cc12对应的实体calNode。判断value属性值为0,结束。
4)结束。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (8)
1.一种发电机励磁系统运维事件知识库的编写方法,其特征在于,包括:
定义基础节点、运算节点、信号节点、原因节点和事件节点;
以基础节点为第一层、运算节点为第二层、信号节点为第三层、原因节点为第四层、事件节点为第五层通过XML文档的形式编写所述知识库;
其中,所述基础节点用于描述系统输入的遥信信号、遥测量及字面量;所述运算节点用于计算中间变量;所述信号节点用于获取自定义的运维事件信号;所述原因节点用于计算获取运维事件出现的原因;所述事件节点用于描述运维事件。
2.根据权利要求1所述的发电机励磁系统运维事件知识库的编写方法,其特征在于,所述定义基础节点、运算节点、信号节点、原因节点和事件节点的方法包括:
定义各类节点的主要标签:所述基础节点的主要标签包括:名称name、描述desc、建议advic、数据来源dataSource、数据类型dataType、编号id、值value、值addr;所述运算节点的主要标签包括:名称name、描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、运算符opr、编号id、子节点列表ids;所述信号节点的主要标签包括:名称name、描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、运算符opr、编号id、子节点列表ids;原因节点的主要标签包括:名称name,描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、运算符opr、编号id、子节点列表ids;所述事件节点的主要标签包括:名称name、描述desc、建议advice、数据来源dataSource、数据类型dataType、返回类型retType、编号id、信号子节点signalId、原因子节点reasonId;
对上述各节点的主要标签进行归类,并分别对各类的主要成员变量进行说明:
Node类:name为节点名称,不可为空;desc为对本实体的描述,可为空;advice为给出的运行建议,可为空;dataSource为数据来源,不可为空;dataType为数据类型,可为空;value为本节点的值,默认为0;id为本节点的id,不可为空;
基础节点BasicNode类:dataSource值为下列三种之一,"yc","yx","literal";
等于"yc”或"yx"时,类根据addr值查询获得值,用来更新value值;等于"literal"时表明value值为常数,无需计算直接给出;
运算节点CalNode、信号节点SignalNode、原因节点ReasonNode类:opr值代表操作符;ids为list<string>数据结构,用于存储其子节点的id;dataSource的值为下列之一:"basic","cal",当dataSource的值为"basic“时,代表本节点的子节点由BasicNode类构成,则无需迭代;当dataSource的值为"cal"时,代表本节点的子节点由CalNode类构成,需要递归调用,直到子节点的dataSource为"basic”为止。
4.根据权利要求2所述的发电机励磁系统运维事件知识库的编写方法,其特征在于,通过XML文档的形式编写所述知识库的方法包括:
建立维护各层实体的map类型数据结构map<string,BasicNode>,map<string,CalNode>,map<string,SignalNode>,map<string,ReasonNode>,map<string,FaultNode>分别存储各类所有的节点信息。
5.根据权利要求2所述的发电机励磁系统运维事件知识库的编写方法,其特征在于,通过XML文档的形式编写所述知识库的方法还包括:
查询自定义事件的信号是否出现,若出现,则继续计算原因是否匹配:若匹配,则给出相关的描述和建议;否则,查明原因并获得解决方法后,完善所述知识库。
6.一种发电机励磁系统运维事件的分析方法,其特征在于:包括:
获取用于描述发电机励磁系统运维事件知识库的XML文档;
解析XML文档并遍历其中的事件节点,获取事件节点的信号节点实体;
计算信号节点实体的value属性值:若信号节点实体的value属性值为0,则继续遍历下一事件节点;否则,获取当前事件节点的原因节点实体;
计算原因节点实体的value属性值:若原因节点实体的value属性值为0,则继续遍历下一原因节点;否则,获取对应的事件原因、运行建议以及子节点信息;
其中,所述发电机励磁系统运维事件知识库采用权利要求1至5任一项所述的方法编写。
7.根据权利要求6所述的发电机励磁系统运维事件的分析方法,其特征在于:节点value属性值计算方法:
S0:针对给定的节点实体,判断是否属于SignalNode、ReasonNode、CalNode类型的实体,若是进入S1,否则进入S3;
S1:获取该实体属性:数据类型dataType、数据来源dataSource、操作符opr、子节点信息chIds;
S2:判断dataSource值为basic或cal:若为basic,进入A1,否则进入B1;
A1:chIds为list数据结构,存储基础节点BasicNode实体对应的id,遍历chIds;
A2:判断是否完成遍历chIds,若否进入A3,否则进入A7;
A3:获得id,根据mBasicNode,获得对应的基础节点BasicNode实体basicNode;
A4:判断dataSource是否为literal,若是进入A5,否则进入A6;
A5:获取basicNode节点value属性值,用list数据结构values存储value值;返回A2;
A6:获取其查询地址addr,根据addr,查询得到的值更新basicNode节点value属性,用list数据结构values存储value值;返回A2;
A7:根据操作符opr对values展开运算,获得值value,更新该实体的value属性;
A8:判断dataSource值为basic或cal:若为cal进入B2;若为basic进入S3;
B1:chIds为list数据结构存储CalNode实体对应的id,遍历chIds;
B2:是否完成遍历chIds:若否进入B3;否则,进入B4;
B3:获得id,根据mCalNode,获得对应的CalNode实体calNode;返回S1;
B4:根据操作符opr对values展开运算,获得值value,更新该实体的value属性进入S3;
S3:本实体的value属性值计算结束。
8.根据权利要求6所述的发电机励磁系统运维事件的分析方法,其特征在于:所述事件节点的遍历方法包括:
S0:判断事件节点是否属于SignalNode、ReasonNode、CalNode类型的实体之一,若是则进入S1,否则进入S10;
S1:获取该实体的value属性值:判断该值是否为0,若为0进入S9,否则进入S2;
S2:获取该实体属性:dataSource数据来源、desc故障描述、advice运行建议、子节点信息chIds;判断dataSource值为basic或cal:若为basic进入S3;否则,进入S6;
S3:chIds为list数据结构,存储BasicNode实体对应的id,遍历chIds;判断,是否完成遍历chIds;若未完成,进入S4;否则,进入S5;
S4:获得id,根据mBasicNode,获得对应的BasicNode实体basicNode,获取其值desc及advice,用list数据结构descs存储desc,advices存储advice;
S5:返回该实体故障描述值desc、建议值advice、及子节点的故障描述值descs、建议值advices;判断:判断dataSource值为basic或cal;若为basic,进入S9;否则,进入S7;
S6:chIds为list数据结构存储CalNode实体对应的id,遍历chIds;
S7:判断是否完成遍历chIds,若是则进入S8;否则,进入S1;
S8:返回该实体故障描述值desc,建议值advice,及子节点的故障描述值descs,建议值advices;
S9:遍历结束;
S10:事件节点类型错误提示,遍历结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111632103.6A CN114328528A (zh) | 2021-12-29 | 2021-12-29 | 一种发电机励磁系统运维事件知识库的编写方法及分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111632103.6A CN114328528A (zh) | 2021-12-29 | 2021-12-29 | 一种发电机励磁系统运维事件知识库的编写方法及分析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114328528A true CN114328528A (zh) | 2022-04-12 |
Family
ID=81015331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111632103.6A Pending CN114328528A (zh) | 2021-12-29 | 2021-12-29 | 一种发电机励磁系统运维事件知识库的编写方法及分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328528A (zh) |
-
2021
- 2021-12-29 CN CN202111632103.6A patent/CN114328528A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20030020765A1 (en) | Method and system for transforming limited source graphical data | |
CN107918382A (zh) | 一种汽车故障诊断方法、汽车故障诊断装置及电子设备 | |
JP2000148461A (ja) | ソフトウェアモデル及び既存のソ―スコ―ドを同期化させる方法及びその装置 | |
CN111176991B (zh) | 一种嵌入式软件接口用例自动化生成方法 | |
CN104506340A (zh) | 基于工业以太网故障诊断方法中决策树的创建方法 | |
US6728730B1 (en) | Figure management system and figure modifying method by using figure management system | |
CN115857469A (zh) | 工业设备故障知识库构建方法、装置及故障诊断方法与系统 | |
CN116680885A (zh) | 一种基于SysML和Tango的复杂装置控制软件建模与验证方法 | |
CN108959391B (zh) | 展现数据库集群架构图的设备、系统、方法、存储介质 | |
CN114328528A (zh) | 一种发电机励磁系统运维事件知识库的编写方法及分析方法 | |
CN109583726B (zh) | 检测工艺状态的方法及系统 | |
CN109271350B (zh) | 一种基于远动通信的数据库及信息点表自动比对及同步方法 | |
CN116955469A (zh) | 一种基于血缘分析的业务告警溯源方法 | |
CN114117574B (zh) | 基于图纸的路线生成方法、装置、电子设备及存储介质 | |
US20160078129A1 (en) | Data processing apparatus and method | |
CN114519050A (zh) | 车辆零件配置逻辑约束关系生成方法、装置、设备及介质 | |
CN113221528A (zh) | 基于openEHR模型的临床数据质量评估规则的自动生成与执行方法 | |
US11734024B2 (en) | Device for managing digital twins | |
US20220171900A1 (en) | Method and device for generating a data integration device | |
CN117331827B (zh) | 验证计划中覆盖对象的匹配方法、存储介质及电子设备 | |
CN117081976B (zh) | 网关路由的配置方法及其装置 | |
CN117094301B (zh) | 一种验证计划的创建系统 | |
CN113065256B (zh) | 基于规则文件的变电站智能装置icd模型的校验方法 | |
CN115242612B (zh) | 一种故障诊断方法和装置 | |
CN112463551B (zh) | 一种可配置的告警标准化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |