2、面向对象建模:逻辑设备(LD)、逻辑节点(LN)、数据对象(DO)、数据属性(DA)
好,咱们接着聊。上一章我们把IEC61850的“分层”结构理清了,说白了就是变电站里谁管谁、谁听谁的。但光有层级还不够,你得让设备之间能“对话”,能互相理解对方说的是什么。这就引出了IEC61850最核心的思想——面向对象建模。
我个人习惯把这一章叫做“拆积木”。你想想看,一个复杂的智能电子设备(IED),比如一台保护装置,它内部有成千上万个功能点。如果每个厂家都按自己的方式命名,那互操作就是天方夜谭。IEC61850的做法很简单:把设备拆成标准化的“积木块”。这些积木块就是逻辑设备、逻辑节点、数据对象和数据属性。
2.1 从物理设备到逻辑设备(LD)
先看最顶层。一个物理的IED,比如一个测控装置,它可能同时承担着测量、控制、告警好几个功能。在IEC61850里,我们不直接操作这个“铁盒子”,而是把它抽象成若干个逻辑设备(Logical Device, LD)。
你可以把LD理解成“虚拟的盒子”。一个物理设备可以包含多个LD。比如,一个保护装置可以有一个“保护LD”和一个“录波LD”。这样做的好处是啥?职责清晰。保护功能出问题了,我只查保护LD;录波功能有问题,我只查录波LD。互不干扰。
核心要点: LD是物理设备内部的功能分组。它是虚拟的,看不见摸不着,但它是组织数据的最高层级。
我在项目中遇到过一种情况:一个老外厂家把保护、测控、计量全塞在一个LD里。结果调试的时候,我们想单独看保护数据,得从一堆计量数据里翻,特别痛苦。后来我建议他们按功能拆成三个LD,问题迎刃而解。所以,LD的划分一定要按功能域来,别偷懒。
2.2 逻辑节点(LN)—— 功能的最小单元
LD拆完了,里面装什么?装逻辑节点(Logical Node, LN)。LN是IEC61850里最核心的概念,没有之一。它代表一个最小的、可交换数据的功能单元。
举个例子:一个“过流保护”功能,它包含启动、延时、跳闸等多个子功能。在IEC61850里,这些子功能会被映射到不同的LN上。比如:
- PTOC:过流保护(核心逻辑)
- PTRC:跳闸条件(判断是否该跳)
- XCBR:断路器(执行跳闸)
你看,一个完整的保护动作,是由多个LN协作完成的。每个LN只干自己那一摊事,职责单一。这就是面向对象思想里的“高内聚、低耦合”。
我的小技巧: 记LN的名字有规律。前两个字母是“组别”,比如P代表保护,C代表控制,M代表测量。后两个字母是“功能”,比如TOC是过流,TRC是跳闸。记住这个规律,你看到LN名字就能猜出它大概干啥的。
嗯,这里要注意:LN是逻辑上的,不是物理上的。一个LN可以存在于多个物理设备里,也可以一个物理设备里有多个同类型的LN。比如,一个变压器差动保护,可能两侧各有一个PTOC LN,分别采集两侧电流。
2.3 数据对象(DO)—— LN的“属性包”
LN里面装什么?装数据对象(Data Object, DO)。DO是LN的“属性包”,它把一组相关的数据属性打包在一起。
我打个比方:LN就像一个人,DO就像这个人身上的“器官”。比如“心脏”这个器官,它包含心率、血压、状态等多个属性。在IEC61850里,一个LN(比如PTOC)会包含多个DO:
- Str:启动(包含启动状态、启动时间等)
- Op:动作(包含动作状态、动作时间等)
- GblCfgInp:全局配置输入(包含定值、模式等)
每个DO都有自己的“类型”,比如SPS(单点状态)、MV(测量值)、INC(整数控制)等。这些类型是标准化的,保证了不同厂家的设备能理解同一个DO的含义。
避坑指南: 我曾经在配置一个GOOSE(面向通用对象的变电站事件)信号时,发现发送端和接收端的DO类型不匹配。发送端用的是SPS(单点),接收端却配成了DPS(双点)。结果信号死活传不过去。所以,DO的类型必须严格匹配,这是互操作的基础。
2.4 数据属性(DA)—— 最细粒度的数据
DO再往下拆,就是数据属性(Data Attribute, DA)。DA是数据的最小单元,不可再分。它代表一个具体的数值、状态或配置。
比如,DO“Str”(启动)包含以下DA:
| DA名称 | 含义 | 数据类型 |
|---|---|---|
| stVal | 状态值(0或1) | BOOLEAN |
| q | 品质(好坏、是否被取代等) | Quality |
| t | 时标(数据产生的时间) | TimeStamp |
你看,一个简单的“启动”状态,就包含了三个DA:值、品质、时间。这保证了数据的完整性和可追溯性。你不仅知道它“启动了”,还知道它“启动得是否可靠”,以及“什么时候启动的”。
我个人习惯把DA叫做“数据的原子”。因为它是不可分割的。你在写程序或者配置SCD(变电站配置描述)文件时,最终操作的都是这些DA。
2.5 一张图搞懂四层关系
说了这么多,咱们用一张SVG图把关系理清楚。这张图我画了很多遍,每次给新人培训都用它,效果很好。
这张图从上到下,一层套一层。你从最顶层的IED开始,一层层往下找,最终能找到最细粒度的数据。反过来,你从最底层的DA开始,一层层往上聚合,最终能拼出一个完整的设备功能。
2.6 实际应用中的小经验
最后,分享几个我在实际项目中积累的小经验:
- 命名要规范:LD、LN、DO、DA的命名都有标准前缀和后缀。别自己瞎起名字,否则后期维护会疯掉。
- DO的复用:同一个DO可以在多个LN里出现。比如“Str”这个DO,在PTOC里有,在PTRC里也有。别重复定义,直接引用就行。
- DA的品质位很重要:很多新手只关注stVal(值),忽略了q(品质)。结果数据明明不可靠,程序还在用。记住:先看品质,再看数值。
- 工具辅助:配置SCD文件时,别手写。用IED配置工具或者SCL编辑器,能省很多事。
一句话总结: IEC61850的面向对象建模,就是把一个复杂的物理设备,拆成LD(功能分组)→ LN(功能单元)→ DO(属性包)→ DA(最小数据)四个层次。每一层都有标准定义,保证了不同厂家的设备能“说同一种语言”。
好了,这一章就到这里。记住这个四层结构,后面讲通信服务(MMS、GOOSE、SV)的时候,你会发现它们都是在操作这些LN、DO、DA。基础打牢了,后面就顺了。