4. 逻辑节点(LN)与数据类(CDC):常用LN定义、CDC类型详解、数据属性约束
好,咱们进入第四讲。这一讲可以说是整个IEC61850协议实现的核心中的核心。你想想看,逻辑节点和数据类搞不明白,后面的通信、模型、配置全都白搭。我个人习惯,每次带新人做配电终端项目,第一件事就是让他们把这一章吃透。
4.1 逻辑节点(LN)是什么?
说白了,逻辑节点就是功能的最小单元。一个断路器,一个刀闸,一个测量点,在IEC61850的世界里都被拆解成一个个LN。我刚开始接触这个标准时,觉得这玩意儿太抽象了。后来做项目做多了才明白,这种设计其实非常巧妙——它把物理设备的功能给解耦了。
举个例子,一个配电终端(FTU)里,可能同时包含:
- XCBR:断路器逻辑节点
- MMXU:测量逻辑节点(电压、电流、功率)
- GGIO:通用I/O逻辑节点(遥信、遥控)
- CSWI:开关控制逻辑节点
每个LN都有自己的数据对象(DO),每个DO又有自己的数据属性(DA)。这就是IEC61850的层次结构:LN → DO → DA。
重要提醒:LN的命名是有规范的。比如XCBR1、XCBR2,前面的字母代表功能类型,后面的数字代表实例编号。千万别自己瞎起名字,否则互操作性测试过不了。
4.2 常用LN定义
配电终端里最常用的LN,我列个表给大家看看。这些是我在实际项目中反复用到的:
| LN类型 | 全称 | 功能描述 | 我在项目中的使用场景 |
|---|---|---|---|
| XCBR | Circuit Breaker | 断路器 | 控制开关分合,采集位置状态 |
| MMXU | Measurement Unit | 测量单元 | 采集三相电压、电流、功率因数 |
| GGIO | Generic I/O | 通用I/O | 处理遥信输入、遥控输出 |
| CSWI | Switch Control | 开关控制 | 接收遥控命令,执行分合操作 |
| PTOC | Overcurrent Protection | 过流保护 | 实现三段式过流保护逻辑 |
| TVTR | Voltage Transformer | 电压互感器 | 电压采样通道配置 |
| TCTR | Current Transformer | 电流互感器 | 电流采样通道配置 |
嗯,这里要注意一点。XCBR和CSWI的区别,很多新手搞混。XCBR是断路器本身,它只管自己的位置状态。CSWI是控制逻辑,它负责接收命令、判断条件、执行操作。我见过有人把遥控命令直接发给XCBR,结果发现XCBR根本没有控制接口——这就是没搞明白LN的职责划分。
4.3 CDC类型详解
CDC,全称是Common Data Class,公共数据类。它定义了数据对象的结构和行为。你可以把它理解成一种模板——每个DO都必须属于某个CDC类型。
配电终端里最常用的CDC类型,我挑几个重点讲:
4.3.1 SPS(Single Point Status)
单点状态。说白了就是0或1,开或关。遥信量基本都用这个。它的核心数据属性包括:
- stVal:状态值(TRUE/FALSE)
- q:品质位(good、invalid、questionable等)
- t:时标(时间戳)
我的经验:品质位q这个属性,很多人忽略。但实际项目中,品质位能帮你排查很多问题。比如遥信抖动、通信中断、数据无效,都能通过q体现出来。我曾经排查一个遥信误报的问题,最后发现是q位显示"questionable",原来是硬件滤波没做好。
4.3.2 DPC(Controllable Double Point)
可控双点状态。遥控输出用的就是这个。它有四种状态:0-0(中间态)、0-1(分)、1-0(合)、1-1(无效)。
为什么用双点?因为单点不可靠。你想想看,如果只用单点,线路断了或者短路了,你永远不知道是分还是合。双点可以检测出这种异常。
4.3.3 MV(Measured Value)
测量值。电压、电流、功率这些模拟量都用MV。它的数据属性包括:
- instMag:瞬时值
- mag:经过滤波后的值
- range:量程信息
- q:品质位
- t:时标
我记得有一次做现场调试,发现采集的电压值总是偏大。查了半天,发现是MV的scaleFactor(比例因子)配置错了。嗯,这个坑我踩过,大家一定要注意。
4.3.4 ACT(Protection Activation)
保护动作信息。过流、零序这些保护动作信号都用ACT。它包含:
- general:总动作标志
- phsA/phsB/phsC:各相动作标志
- q:品质位
- t:时标
4.4 数据属性约束
数据属性约束,说白了就是给每个数据属性定规矩。IEC61850-7-3里定义了很多约束,我挑几个最常用的:
| 约束名称 | 缩写 | 含义 | 使用场景 |
|---|---|---|---|
| Mandatory | M | 必须实现 | stVal、q、t等核心属性 |
| Conditional | C | 条件性实现 | 某些功能可选时 |
| Optional | O | 可选实现 | 扩展功能 |
| Service | S | 服务相关 | 控制、设置等操作 |
避坑指南:我曾经在开发一个FTU时,为了省事,把某个M约束的属性给跳过了。结果互操作性测试时,对方主站直接报错,说找不到这个属性。后来我花了整整两天时间才把模型改对。所以,M约束的属性一个都不能少,这是底线。
再补充一个,数据属性还有触发条件的约束。比如:
- dchg:数据变化时触发
- qchg:品质变化时触发
- dupd:数据更新时触发
这些触发条件决定了什么时候上报数据。我一般习惯把遥信量设成dchg,测量量设成dupd。这样既保证了实时性,又不会产生太多无效报文。
4.5 实际项目中的LN建模示例
最后,我给大家看一个实际项目中LN建模的代码片段。这是一个配电终端里XCBR的ICD模型片段:
LN: XCBR1
DO: Pos // 位置状态
CDC: DPC
DA: stVal // M约束,必须实现
DA: q // M约束,品质位
DA: t // M约束,时标
DA: ctlVal // S约束,控制值
DO: BlkOpn // 闭锁合闸
CDC: SPS
DA: stVal // M约束
DA: q // M约束
DA: t // M约束
DO: OpCnt // 操作次数
CDC: INS
DA: stVal // M约束
DA: q // M约束
DA: t // M约束
你看,每个DO都有明确的CDC类型,每个DA都有明确的约束。这就是IEC61850的精髓——一切都有规范,一切都有约束。
好了,这一讲的内容就到这里。下一讲我们会深入探讨服务模型,包括报告、控制、定值等服务的实现细节。到时候我会结合一个完整的FTU项目案例来讲,保证干货满满。