我们先说说一个由服务端发出的报告都会包含哪些东西吧。注意以下内容是按照实际组成报文的顺序逐一介绍的。
1、报告ID;
2、报告选项域;
3、顺序编号;
4、入口时间;
5、数据集;
6、发生缓存溢出;
7、入口标识;
8、配置版本;
9、子序号;
10、有后续数据段;
11、包含位串;
12、数据引用;
13、值;
14、原因代码。
其中只有1、2、13、14是必然包含的,其他都是在报告选项域中开关设置为true的情况下才会包含。
说到这里就说明报告控制块有一部分报告选项域的配置,让我们到CID里面看一看:
<OptFields bufOvfl=”true” configRef=”true” dataRef=”true” dataSet=”true” entryID=”true” reasonCode=”true” segmentation=”true” seqNum=”true” timeStamp=”true”/>
上面我列出了所有的选项域,并设置为了true。
<OptFields>元素各个属性可以不写,其效果等价于各个属性等于false的情况。
报告选项域各个开关解释如下(按报文中位串顺序罗列):
seqNum 顺序编号
timeStamp 报告时标
reasonCode 原因码,代表触发的条件
dataSet 数据集
dataRef 数据引用
bufOvfl 缓存溢出标志,仅对于BRCB有效
entryID 条目标识符,仅对于BRCB有效
configRef 配置版本
segmentation 子序号
在实际的报文中选项域以位串表示,对于都是true的情况应该是0111 1111 11XX XXXX,第一位0是保留位。9个1代表9个选项都是true,如果配置的是false则对应则为0。后面我们会写一个专门讲述报文结构的文章,会详细阐述,本文还是以描述配置为主。
下面贴一段报告控制块的配置:
<ReportControl bufTime=”50000″ buffered=”true” confRev=”1″ datSet=”DataSet01″ desc=”描述” intgPd=”30000″ name=”ReportName” rptID=”0001″>
<TrgOps dchg=”true” dupd=”true” period=”true” qchg=”true”/>
<OptFields/>
<RptEnabled max=”8″/>
</ReportControl>
按照IEC61850模型,报告控制块可存在于任意逻辑节点下,按照国网习惯,通常存在于逻辑节点0中。
先介绍一下<ReportControl>元素中各个属性:
1、rptID:报告标识符;
2、name:报告名称,逻辑节点中唯一;
3、confRev:配置的版本号;
4、datSet:对应的数据集名称;
5、buffered:缓存标志,为true代表缓存报告控制块,反之为非缓存;
6、bufTime:缓存时间,单位毫秒,仅当buffered=true时有效;
7、intgPd:完整性周期,单位毫秒,仅当触发条件period=”true”时有效;
8、desc:描述。
<ReportControl>的子元素<TrgOps>代表触发条件,分别介绍如下:
1、dchg,数据变化,当数据发生变化时触发事件;
2、dupd,数据刷新,当数据发生刷新时不管有没有变化都会触发事件;
3、period,完整性,在指定周期触发一次事件;
4、qchg,品质变化,当品质发生变化的时候触发事件。
<OptFields>报告选项域,前面已经介绍过了。
<RptEnabled max=”8″/> 使能的最大数量,也就意味着客户端连接并使能的最大数量。
好了,报告控制块的所有配置已经介绍完毕,这是不是意味着和报告相关的所有配置都介绍完了呢?当然不是,在ICD/CID中还存在<Services>部分,这里面还有涉及报告的配置,当然这部分严格来说不是配置,而是描述。
<Services>
<ConfReportControl max=”10″/>
<ReportSettings bufTime=”Dyn” optFields=”Fix” rptID=”Conf” trgOps=”Conf”/>
</Services>
<ConfReportControl>目前只有一个属性max,实例化的报告控制块的最大数量。
<ReportSettings>对于“Dyn”可通过SetURCBValues、SetBRCBValues可在线设定报告控制块属性。“Fix”则是不可更改,“Conf”代表可配置,但是不能通过MMS来修改。
网友评论