写在前面
恭喜“梅山剑客”粉丝突破1K,为了纪念这一伟大的时刻,今日发表此文, 纪念这神圣的时间节点,愿各位 青春永驻,笔耕不息。
本文参考链接:
1、61850开发知识总结与分享
2、IEC61850建模说明
1 简介
IEC61850的数据建模,实际上就是将设备的点表按照IEC61850标准的规则编写的一份点表文件,该点表以XML的格式描述,后缀名为.icd,另一个名字叫智能电子设备能力描述文件。
ICD配置文件
下图是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又定义了它必选的和可选的属性。
添加一个DOI节点
添加节点时:
• 创建一个新的 标签。
• 定义新DOI的描述(desc)、名称(name)等属性。
• 指定新DOI的具体信息,比如 标签下的属性和值。
示例1
<DOI desc="母线1间隔1故障开入" name="SPCS01">
<DAI name="dU">
<Val>开入</Val>
</DAI>
<DAI name="stVal" sAddr="YX:Bool.YX.GoIn.0"/>
</DOI>
配置数据对象
配置数据对象需要在DataTypeTemplates的LNodeType字段中添加DO结点,DO有很多种类型,一般我们按遥信,遥控,遥测,遥测四种类型配置即可,DO有三个属性,分别为name,type,descname是固定的,一般字符串就行,尽量和要表达的属性命令匹配,容易维护,type需要根据当前数据来定。
需要在LNodeType
中添加<DO name="SPCS01" type="CN_SPC_DC"/>
如下所示:
<LNodeType desc="80路单点GOOSE开入" id="DFE_GGIO_YX_DF9311_V10" lnClass="GGIO">
<DO desc="模式" name="Mod" type="CN_INC_Mod"/>
<DO desc="行为" name="Beh" type="CN_INS_Beh"/>
<DO desc="健康状态" name="Health" type="CN_INS_Health"/>
<DO desc="铭牌" name="NamPlt" type="CN_LPL"/>
<DO name="SPCS01" type="CN_SPC_DC"/>
示例2:
<Authentication/>
<LDevice desc="LD0" inst="LD0">
<LN0 desc="General" lnType="DFE_LLN0_GOOSE" lnClass="LLN0" inst=""/>
<LN desc="铭牌信息" lnType="DFE_LPHD_COMMON_DF9311_V10" lnClass="LPHD" inst="1"/>
</LDevice>
<LDevice desc="GOOSE过程层访问点LD" inst="PIGO">
<LN0 desc="General" inst="" lnClass="LLN0" lnType="DFE_LLN0_GOOSE">
<DataSet desc="GOOSE数据输出" name="dsGOOSE0">
<FCDA daName="general" doName="Tr" fc="ST" ldInst="PIGO" lnClass="PTRC" lnInst="1"/>
…………
<FCDA daName="mag.i" doName="AnIn34" fc="MX" ldInst="PIGO" lnClass="GGIO" lnInst="3" prefix="GOUT"/>
</DataSet>
<DOI desc="母线2间隔6复归测量值" name="AnIn34">
<SDI name="mag">
<DAI name="i" sAddr="YC:INT16U.GOOSEReal.57"/>
</SDI>
<DAI name="dU">
<Val>母线2间隔6复归测量值</Val>
</DAI>
</DOI>
<DOI desc="母线2间隔6闭锁" name="AnIn34">
<SDI name="mag">
<DAI name="i" sAddr="YC:INT16U.GOIN.56"/>
</SDI>
<DAI name="dU">
<Val>母线2间隔6闭锁</Val>
</DAI>
</DOI>
配置数据对象
最后,同样的需要在LNodType中添加,<DO desc="整型遥测34" name="AnIn34" type="CN_MV_DF"/>
<LNodeType desc="GOOSE模拟量开出" id="DFE_GGIO_YC_DF9311_V10" lnClass="GGIO">
<DO desc="模式" name="Mod" type="CN_INC_Mod"/>
<DO desc="行为" name="Beh" type="CN_INS_Beh"/>
<DO desc="健康状态" name="Health" type="CN_INS_Health"/>
<DO desc="铭牌" name="NamPlt" type="CN_LPL"/>
<DO desc="整型遥测34" name="AnIn34" type="CN_MV_DF"/>
注意
控制集里面的数据对象一定是在DataTypeTemplates的LNodeType字段中找得到的,确保LN(Logical Node)与正确的LNType关联。在SCL文件中,LN通过lnType属性与LNType关联。确保LN使用了包含了新添加DOI节点配置的LNType。