第四章 数据对象(DO)详解
好,咱们今天聊聊数据对象。说实话,我刚接触IEC 61850那会儿,最头疼的就是这个DO。文档里写得云里雾里的,什么“逻辑节点内部的数据实体”、“具有特定语义的信息单元”……听着就头大。后来在项目里摸爬滚打几年,才慢慢摸透了它的脾气。
4.1 数据对象的概念
数据对象,英文叫Data Object,简称DO。你可以把它理解成逻辑节点里的一个“数据容器”。每个逻辑节点(LN)就像一台设备,而DO就是这台设备上的一个个功能模块。比如一个断路器(XCBR)逻辑节点,它里面就有“位置”(Pos)、“操作计数”(OpCnt)这些DO。
我个人习惯把DO比作“带标签的抽屉”。抽屉里装的是具体的数据属性(DA),而标签就是DO的名字。你看到“Pos”这个标签,就知道里面装着位置信息——是合位还是分位。
核心要点:DO是逻辑节点中具有特定语义的数据集合,它封装了与某个功能点相关的所有信息。
举个例子,我在一个变电站自动化项目里,需要读取断路器的状态。当时我直接去读XCBR逻辑节点下的“Pos”DO。这个DO里包含了状态值(stVal)、品质(q)、时间戳(t)等属性。你看,一个DO就把位置信息的所有细节都包圆了。
4.2 公共数据类(CDC)的作用
说到DO,就绕不开公共数据类(CDC)。CDC是什么?说白了,它就是DO的“模板”或“蓝图”。IEC 61850定义了一组标准的CDC,比如SPS(单点状态)、MV(测量值)、CMV(复数测量值)等等。
为什么要搞CDC?你想想看,如果没有统一的标准,每个厂家都按自己的喜好定义DO的结构,那互操作性就无从谈起了。CDC的作用就是:规定了一类DO应该包含哪些数据属性,以及这些属性的语义和数据类型。
| CDC名称 | 中文含义 | 典型应用 |
|---|---|---|
| SPS | 单点状态 | 断路器位置、隔离开关状态 |
| MV | 测量值 | 电流、电压、有功功率 |
| CMV | 复数测量值 | 相量测量值 |
| ACT | 保护动作信息 | 保护跳闸信号 |
| DPC | 可控双点 | 断路器遥控分合 |
我记得有一次做IED互操作测试,A厂家的断路器DO用的是SPS,B厂家却自己定义了一个私有结构。结果两台设备死活对不上话。后来统一改成标准CDC,问题就解决了。所以啊,能用标准CDC就别自己造轮子。
小技巧:在配置工具里,CDC通常以“CDC=xxx”的形式出现在DO定义中。看到“CDC=SPS”,你就知道这个DO是单点状态类型,里面肯定有stVal、q、t这三个核心属性。
4.3 DO的命名与语义
DO的命名是有讲究的。IEC 61850-7-4和7-3里给出了详细的命名规则。简单来说:DO的名字由英文字母和数字组成,通常采用驼峰命名法。比如“Pos”、“OpCnt”、“Health”等等。
命名不是随便起的,每个DO都有明确的语义。比如:
- Pos:位置,用于断路器、隔离开关等
- OpCnt:操作计数,记录设备动作次数
- Health:健康状态,表示设备自检结果
- Beh:行为,控制逻辑节点的启用/禁用
- Mod:模式,设置逻辑节点的工作模式
这里有个坑,我曾经踩过。有个项目里,工程师把“Pos”用在了变压器分接头位置上。从语义上讲,“Pos”在标准里是给开关设备用的,分接头位置应该用“TapPos”。虽然都能用,但不符合标准语义,后续维护时别人看了会懵。
避坑指南:我曾经见过一个项目,有人把“Health”DO用来存温度值。虽然程序能跑,但语义完全错了。Health是健康状态,不是测量值。这种用法在互操作测试时肯定过不了。记住:DO的语义必须严格遵循标准定义。
下面我画了一张图,帮你理清DO、CDC、DA之间的关系:
嗯,这里要注意一点:DO的名字在同一个逻辑节点内必须唯一。但不同逻辑节点里可以有同名的DO,比如XCBR和XSWI里都有“Pos”,这没问题,因为它们属于不同的LN。
最后说个实际经验。我在做SCD文件配置时,经常看到有人把DO的名字写错大小写。比如“pos”写成“Pos”,“opcnt”写成“OpCnt”。虽然有些工具不区分大小写,但标准里是区分大小写的。我建议你严格按照标准文档里的写法来,避免不必要的麻烦。
总结一下:
- DO是LN中的数据容器,承载具体功能点的信息
- CDC是DO的模板,保证互操作性
- DO的命名和语义必须遵循标准,别自己发明创造
好了,关于数据对象就聊这么多。记住一句话:DO是IEC 61850信息模型的基石,搞懂了DO,后面的路就好走了。
公众号:蓝海资料掘金营,微信deep3321