IEC61850建模说明
1.概述IEC61850的数据建模,主要是看IEC1850标准的第7部分,变电站和馈线高备的基本通信结构(7-1,7-2,7-3,7-4)数据建模,实际上就是将设备的点表按照IEC61850标准的规则编写的一份点表文件,该点表以XML的格式描述,后缀名为.icd,另一个名字叫智能电子设备能力描述文件1.1 IEC61850服务以下是61850的服务与传统功能的对比列表:服务与传统变电站功能IEC6
1.概述
IEC61850的数据建模,主要是看IEC1850标准的第7部分,变电站和馈线高备的基本通信结构(7-1,7-2,7-3,7-4)
数据建模,实际上就是将设备的点表按照IEC61850标准的规则编写的一份点表文件,该点表以XML的格式描述,后缀名为.icd,另一个名字叫智能电子设备能力描述文件
1.1 IEC61850服务
以下是61850的服务与传统功能的对比列表:
服务与传统变电站功能 | |
---|---|
IEC61850服务 | 传统功能 |
报告服务 | 遥信、遥测 |
控制服务 | 遥控、遥调 |
定值服务 | 定值召唤、修改、切换 |
日志服务 | 事件服务 |
取代服务 | 人工置数 |
对时服务 | GPS对时 |
文件传输服务 | 文件传输 |
采样值传输服务 | 模拟量采样传输 |
GOOSE服务 | 装置间快速信号传输 |
2.数据建模介绍
在建模前,应熟知61850数据模型所含的内容及其作用。详细请看61850标准的第6部分,第7-2部分。
每个模型都具有四个对象,依次为
SERVER 服务器
LOGICAL-DEVICE 简称LD,逻辑设备
LOGICAL-NODE 简称LN,逻辑结点
DATA 数据,逻辑结点中的数据点
每个对象都有各自的名称和对象路径名,假设有一个61850服务器,SERVER为acSystem,LOGICAL-DEVICE为ac,LOGICAL-NODE为alarm,有若干数据点名为alarm1,alarm2,alarm3,
外部访问服务器的一个结点引用为acSystem.ac.alarm.alarm1
我们通常要改的就是LN部分
3.建模说明
一般来说,不需要从零开始配置一份数据模型icd文件,直接在已有的文件修改即可,
3.1 icd文件介绍
以下是一个最简单的icd文件
<SCL version="2007" revision="B" xmlns="http://www.iec.ch/61850/2003/SCL" xmlns:xsl="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.iec.ch/61850/2003/SCL SCL.xsd">
<Header id="" version="" revision="" toolID="OMICRON IEDScout" nameStructure="IEDName" />
<IED name="EAST01">
<Services>
<AccessPoint name="P1">
<Server>
<Authentication none="true"/>
<LDevice inst="DEV1">
<LN0 lnType="EAST01DEV1.LLN0" lnClass="LLN0" inst="">
<DOI name="Mod">
<DAI name="ctlModel" sAddr>
<Val>status-only</Val>="40000"
</DAI>
</DOI>
</LN0>
</LDevice>
</Server>
</AccessPoint>
</Services>
</IED>
<DataTypeTemplates>
<LNodeType id="EAST01DEV1.LLN0" lnClass="LLN0">
<DO name="Mod" type="EAST01DEV1.LLN0.Mod"/>
</LNodeType>
<DOType id="EAST01DEV1.LLN0.Mod" cdc="INC">
<DA name="stVal" fc="ST" bType="Enum" type="Mod">
<DA name="ctlModel" fc="CF" bType="Enum "type="ctlModel">
</DOType>
<EnumType id="Mod">
<EnumVal ord="1">on</EnumVal>
<EnumVal ord="2">blocked</EnumVal>
<EnumVal ord="3">test</EnumVal>
<EnumVal ord="4">test/blocked</EnumVal>
<EnumVal ord="5">off</EnumVal>
</EnumType>
<EnumType id="ctlModel">
<EnumVal ord="0">status-only</EnumVal>
<EnumVal ord="1">direct-with-normal-security</EnumVal>
<EnumVal ord="2">sbo-with-normal-security</EnumVal>
<EnumVal ord="3">direct-with-enhanced-security</EnumVal>
<EnumVal ord="4">sbo-with-enhanced-secrity</EnumVal>
</EnumType>
</DataTypeTemplates>
</SCL>
从内容可以看出,包含两大块,IED和DataTypeTemplates,DataTypeTemplates为数据类型的模板,定义该设备拥有什么数据变量,变量的类型,单位等信息,IED为设备的对象实例,定义了数据的初始值,系数,单位,寄存器地址等信息
以上文件在LNodeType字段定义了一个数据Mod,类型是EAST01DEV1.LLN0.Mod,在DOType字段中有该类型的具体定义,其中cdc(公用数据类)为INC,即可控的整数状态,而INC又定义了它必选的和可选的属懂(IEC6850标准的7-3部分的7.5.4章节有说明)
3.2 InClass 逻辑节点类
表1 逻辑节点组表 | |
---|---|
逻辑节点组指示符 | 节点标识 |
A | 自动控制 |
C | 监控 |
G | 通用功能引用 |
I | 接口和存档 |
L | 系统逻辑节点 |
M | 计量和测量 |
P | 保护功能 |
R | 保护相关功能 |
S | 传感器,监视 |
T | 仪用互感器 |
X | 开关设备 |
Y | 电力变压器和相关功能 |
Z | 其它(电力系统)设备 |
一般我们接触到的类有:
LPHD(物理装置信息,IEC61850-7-4部分的5.3.2章节)
LLN0(逻辑节点零,IEC61850-7-4部分的5.3.4章节)
GGIO(通用过程I/O,IEC61850-7-44部分的5.7.2章节)
MMXN(测量,IEC61850-7-4部分的5.10.7章节)
3.3 cdc公用数据类
一般可以根据遥信,遥控,遥测,遥调四个功能来选择需要的cdc
遥信=SPS(单点状态信息,IEC61850-7-3部分的7.3.2章节)
遥控=SPC(可控的单点,IEC61850-7-3部分的7.5.2章节)
遥测=MV(测量值,IEC61850-7-3部分的7.4.2章节)
遥调=APC(可控模拟设点信息,IEC61850-7-3部分的7.6.2章节)
其中,遥测和遥调的值可以是浮点或者整型,若选择整型,则应该增加数据属性sVC,即增加系数和偏移量
以下是添加浮点型的示例
<DOType id="EAST01DEV1.MMXN1.Mea1" cdc="MV">
<DA name="mag" fc="MX" bType="Struct" type="EAST01DEV1.MMXN.Mea1.mag">
</DOType>
<DAType id="EAST01DEV1.MMXN1.Mea1.mag">
<BDA name="f" bType="FLOAT32"/>
</DAType>
以下是添加整型的示例
<DOType id="EAST01DEV1.MMXN1.Mea1" cdc="MV">
<DA name="sVC" fc="MX" bType="Struct" type="ScaledValueConfig_1">
</DOType>
<DAType id="ScaledValueConfig_1">
<BDA name="scaleFactor" bType="FLOAT32"/>
<BDA name="offset" bType="FLOAT32"/>
</DAType>
3.4 配置数据对象
配置数据对象需要在DataTypeTemplates的LNodeType字段中添加DO结点,
DO有很多种类型,一般我们按遥信,遥控,遥测,遥测四种类型配置即可,
DO有三个属性,分别为name,type,desc
name是固定的,一般字符串就行,尽量和要表达的属性命令匹配,容易维护
type需要根据当前数据来定,按3.3的说明即可,详情可以看IEC61850-7-3部分的8章节
desc为数据的描述
fc为功能约束,常用的是ST(状态),MX(测量),CO(控制),DC(描述),CF(配置),具体可以查看IEC61850-7-3部分的附录B
3.5 配置数据对象实例
配置对象实例就是将上一节所定的数据都初始化一遍,包括寄存器映射地址,变量名,单位,系数等,具体看第一节的示例
3.6 配置报告
配置报告分为两个步骤,分别是配置数据集和配置报告控制块,而且都是在LN0节点中配置
我们可以将数据分为遥信,遥控,遥测,遥调四个数据集,分别上报,下面配置遥信量作为数据集的例子,格式如下
<LN0 lnType="EASTDEV01DEV1.LLN0" lnClass="LLN0" inst="">
<DataSet name="ds01Digit">
<FCDA ldInst="DEV1" prefix="" lnClass="GGIO" lnInst="1" doName="Ind1" fc="ST">
</DataSet>
</LN0>
注意,控制集里面的数据对象一定是在DataTypeTemplates的LNodeType字段中找得到的
配置报告控制块用于指定所需报告的数据集,一般来说,有多少数据集就有多少个报告控制块,以下是是控制块的例子
<ReportControl name="urcbDigit1" rptID="DEV1/LLN0$RP$urcbDigit1" buffered="false" bufTime="0" datSet="ds01Digit" intgPd="20000" confRev="1">
<trgOps dchg="true" qchg="true" dupd="false" period="true" gi="true" />
<OptFileds seqNum="false" timeStamp="true" dataSet="true" reasonCode="true" dataRef="false" entryID="false" configRef="false" />
<RtlEnabled max="4" />
</ReportControl>
一般只要修改datset和RptEnabled的max值即可
datset指定上送的数据集名称,max值指定最多有多少个客户端能接收该报告
4.生成和检验模型
4.1 生成model.cfg文件
使用iec61850库时,需要将icd文件转为其规定的cfg文件,转换工具在libiec61850库的tools/model_generator里,使用命令
java -jar genconfig.jar xxx.icd >model.cfg
注意需要在tools/model_generator目录下,且安装好了java运行环境
如果生成文件时出现Warning…信息,则说明icd文件有错误,需要修正
生成后的model.cfg还不能用,需要将MODEL(xxx)前面几行的内容删除掉
如果是在windows下生成的,需要将文件保存为utf8格式
关于libiec61850的使用,查看另一篇文章61850服务构建流程
4.2 检验模型
通过IEDScout 软件打开建好的模型文件,将所有内容都展开看一遍,只要文件能正常打开,且内容无误的话,就表示模型可用,也可以通过打开两个IEDScout,一个作为服务端,一个作为客户端来进行验证数据
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)