3、面向对象数据建模:逻辑设备(LD)、逻辑节点(LN)、数据对象(DO)、数据属性(DA)
好,咱们今天聊一个核心中的核心——IEC 61850 的面向对象数据建模。
说实话,我刚接触这个标准的时候,第一反应是:这玩意儿怎么这么绕?又是逻辑设备,又是逻辑节点,还有数据对象、数据属性……一堆名词堆在一起。但干久了你会发现,这套模型其实特别聪明。它把电力系统里那些复杂的设备、功能、数据,用一种非常清晰的方式组织起来了。
我个人习惯把 IEC 61850 的数据模型想象成一个「俄罗斯套娃」——一层套一层,每一层都有明确的职责。咱们今天就一层层把它剥开。
3.1 从物理设备到逻辑设备(LD)
先说说最外层:逻辑设备(Logical Device, LD)。
你想想看,一个物理的智能电子设备(IED),比如一台保护装置,它里面可能同时运行着好几个功能:距离保护、过流保护、断路器控制、测量……在传统规约里,这些功能的数据是混在一起的,你要找个数据得翻半天。
IEC 61850 的做法是:把物理设备「虚拟化」成若干个逻辑设备。每个逻辑设备就是一个独立的功能容器。
举个例子,我做过一个变电站的项目,里面有一台西门子的保护装置。这台装置物理上就一个盒子,但里面我配置了三个逻辑设备:
- PROT:保护功能相关的逻辑设备
- CTRL:控制功能相关的逻辑设备
- MEAS:测量功能相关的逻辑设备
每个逻辑设备都有自己的命名,通常用 6 个字符的字符串表示。标准里有一些约定俗成的名字,比如 PROT、CTRL、RBRF(断路器失灵)等等。
关键点:逻辑设备是虚拟的,它不关心物理上怎么接线。你可以在一个物理设备里定义多个逻辑设备,也可以把多个物理设备的功能合并到一个逻辑设备里——只要通信上能区分就行。
3.2 逻辑节点(LN)——功能的原子单位
逻辑设备里面装的是什么?是逻辑节点(Logical Node, LN)。
逻辑节点是 IEC 61850 里最核心的概念。它代表一个最小的、可交换数据的功能单元。说白了,一个逻辑节点就是一个「功能块」。
标准里定义了上百种逻辑节点,每个都有固定的命名规则:4 个字母 + 数字。比如:
- XCBR:断路器
- XSWI:隔离开关
- PTOC:过流保护
- MMXU:三相测量
- GGIO:通用输入输出
我记得有一次调试一个老外的项目,对方要求我们实现一个「断路器失灵保护」功能。我一开始以为要自己写逻辑,后来翻标准发现,标准里已经定义好了逻辑节点 RBRF(断路器失灵)。直接拿来用就行,省了不少事。
每个逻辑节点实例都有一个路径,比如:
PROT/PTOC1
CTRL/XCBR1
MEAS/MMXU1
这个路径的格式是:逻辑设备名/逻辑节点名。你看,是不是很直观?
小技巧:逻辑节点的命名里,数字部分可以重复。比如你可以有
PTOC1、PTOC2、PTOC3,分别对应三段过流保护。这在工程里很常见。
3.3 数据对象(DO)——逻辑节点里的数据
逻辑节点里面装的是数据对象(Data Object, DO)。每个逻辑节点都有一组标准的数据对象,用来描述这个功能的所有信息。
比如断路器逻辑节点 XCBR,它包含的数据对象有:
- Pos:断路器位置(合/分)
- BlkOpn:合闸闭锁
- BlkCls:分闸闭锁
- OpCnt:操作次数计数
- EEHealth:设备健康状态
每个数据对象也有自己的路径,比如:
CTRL/XCBR1.Pos
这个路径的格式是:逻辑设备名/逻辑节点名.数据对象名。
你可能会问:为什么要把数据拆得这么细?
嗯,这里要注意。IEC 61850 的设计初衷是「互操作性」。不同厂家的设备要能互相理解对方的数据。如果每个厂家都用自己的命名方式,那通信就乱套了。标准把每个功能的数据对象都规定死了,大家按这个来,就不会有歧义。
我曾经在一个项目里遇到过坑:某厂家把断路器位置叫做 SwitchPos,另一个厂家叫 BreakerPos。结果集成的时候,两个系统对不上,折腾了好几天。后来统一改成标准里的 Pos,问题就解决了。
避坑指南:千万不要自己发明数据对象的名字!标准里有的就用标准的,标准里没有的可以用
GGIO(通用输入输出)来扩展。我曾经见过有人把Pos改成Position,结果通信直接报错——因为接收端只认Pos。
3.4 数据属性(DA)——数据的原子单位
数据对象里面还有一层:数据属性(Data Attribute, DA)。数据属性是模型里最小的数据单元,不能再拆了。
比如断路器位置 Pos 这个数据对象,它包含的数据属性有:
- stVal:状态值(0=分,1=合)
- q:品质(good, bad, questionable 等)
- t:时标(数据变化的时间戳)
完整的路径就是:
CTRL/XCBR1.Pos.stVal
CTRL/XCBR1.Pos.q
CTRL/XCBR1.Pos.t
你看,从物理设备到逻辑设备,再到逻辑节点、数据对象、数据属性,一共五层。每一层都有明确的含义。
我个人觉得,数据属性里最容易被忽略的是 品质(q) 和 时标(t)。很多初学者只关注数值本身,比如 stVal 是 0 还是 1。但实际工程里,品质和时标往往更重要。
举个例子:如果品质是 invalid,那这个数值就不能用。如果时标是 5 分钟前的,那这个数据已经过时了。我在调试一个远动系统时,发现数据老是跳变,查了半天,最后发现是品质位没处理好——接收端把 questionable 的数据也当成有效数据用了。
总结一下这个模型:
层级 名称 示例 说明 1 物理设备 保护装置 实际的硬件盒子 2 逻辑设备(LD) PROT, CTRL, MEAS 功能容器,虚拟化 3 逻辑节点(LN) XCBR, PTOC, MMXU 最小功能单元 4 数据对象(DO) Pos, OpCnt, EEHealth 功能相关的数据集合 5 数据属性(DA) stVal, q, t 最小的数据原子
3.5 实际工程中的建模思路
说了这么多理论,咱们聊聊实际怎么用。
假设你要为一个变电站的断路器建模。你会怎么做?
- 先确定物理设备:比如一台断路器控制单元。
- 创建逻辑设备:比如叫
CTRL。 - 添加逻辑节点:断路器用
XCBR1,隔离开关用XSWI1。 - 配置数据对象:
XCBR1里加上Pos、OpCnt、EEHealth等。 - 细化数据属性:
Pos里配置stVal、q、t。
这样建出来的模型,层次清晰,别人一看就懂。而且不同厂家的设备之间可以直接通信,因为大家都用同一套命名规则。
我记得有一次做 IEC 61850 的互操作测试,我们和另一个厂家的设备对接。对方发过来的数据模型,我一看路径就知道是什么意思——PROT/PTOC1.Str.general,这是过流保护的启动信号。根本不需要看文档,省了很多沟通成本。
个人建议:刚开始学的时候,可以拿一个实际的 IED 的 ICD 文件(IED 能力描述文件)来研究。用文本编辑器打开,看看里面的 LD、LN、DO、DA 是怎么定义的。比看干巴巴的标准文档有效得多。
3.6 小结
面向对象数据建模是 IEC 61850 的基石。它把复杂的电力系统数据,用 LD、LN、DO、DA 这四层结构清晰地组织起来。
你只要记住一句话:物理设备里有逻辑设备,逻辑设备里有逻辑节点,逻辑节点里有数据对象,数据对象里有数据属性。
下一章咱们聊聊这些数据是怎么通过通信服务在网络上传输的。到时候你会发现,理解了数据模型,通信部分就简单多了。
好,今天就到这儿。有什么问题,咱们课后交流。
公众号:蓝海资料掘金营,微信deep3321

浙公网安备 33010602011771号