4、IEC 61850在储能中的应用:逻辑节点建模(储能专用LN)、MMS与GOOSE报文、SCL配置文件解析

各位工程师朋友,咱们今天聊聊IEC 61850在储能系统里的落地。说实话,这个标准最早是为变电站自动化设计的,但后来发现它在储能领域也特别好用。为什么?因为它把设备功能拆成了一个个“逻辑节点”,就像搭积木一样灵活。我在好几个大型储能项目里都用了这套思路,效果不错。

4.1 储能专用逻辑节点(LN)建模

IEC 61850-7-4定义了标准的逻辑节点,但储能系统有些特殊需求。比如电池管理系统(BMS)的SOC、SOH这些参数,标准LN里没有现成的。所以IEC 61850-7-420专门为分布式能源(DER)扩展了一套LN,储能系统主要用这几个:

逻辑节点 名称 功能描述
ZBAT 电池系统 管理电池组整体状态,包括SOC、SOH、电压、电流
ZRCT 整流器/逆变器 控制PCS的充放电模式、功率指令
ZGEN 发电机 用于储能系统并网发电模式
MMXU 测量单元 三相电气量测量(电压、电流、功率)
CSWI 开关控制 控制断路器、接触器分合

我个人习惯把ZBAT作为核心节点。它里面有个关键数据对象叫BatSt(电池状态),包含SoC(荷电状态)、SoH(健康状态)、BatHi(电池高温告警)等。建模时要注意,每个数据对象都有对应的CDC(公用数据类),比如SoCMV(测量值)类,BatHiSPS(单点状态)类。

避坑指南:我曾经在一个项目中,把SOC建模成了整数类型,结果上位机解析出来全是0。后来才发现,IEC 61850要求SOC用浮点数,单位是百分比(0-100%)。所以建模时一定要对照标准的数据类型定义,别想当然。

4.2 MMS与GOOSE报文

IEC 61850定义了两种核心通信机制:MMS和GOOSE。说白了,MMS是“点对点”的客户端-服务器模式,适合读取参数和下发指令;GOOSE是“广播”模式,适合传输跳闸、告警等实时信号。

MMS(制造报文规范)

  • 基于TCP/IP,面向连接
  • 用于读取/写入逻辑节点的数据对象
  • 典型场景:EMS读取BMS的SOC值,下发充放电功率指令
  • 报文结构:包含对象引用(如ZBAT1$SoC$mag$f)和数据类型

GOOSE(通用面向对象变电站事件)

  • 基于以太网链路层,无连接
  • 用于快速传输状态变化和跳闸信号
  • 典型场景:BMS检测到电池过温,通过GOOSE发送跳闸信号给PCS
  • 传输时间要求:<10ms(我实测过,一般能做到2-5ms)

我的经验:MMS和GOOSE的选型要看场景。如果你需要确认对方收到了指令,用MMS(有应答);如果要求极低延迟且能容忍丢包重发,用GOOSE。我在一个储能电站里,把保护信号全走GOOSE,把监控参数走MMS,分工明确。

这里有个关键点:GOOSE报文是重复发送的,即使状态没变也会每隔几秒发一次。为什么?因为GOOSE没有确认机制,靠重复发送保证可靠性。嗯,设计时要注意网络带宽,别把交换机打满了。

4.3 SCL配置文件解析

SCL(变电站配置描述语言)是IEC 61850的“灵魂”。它用XML描述整个系统的设备、逻辑节点、数据对象和通信参数。你想想看,没有SCL,不同厂家的设备怎么互操作?

SCL文件分四种类型:

  • ICD(IED能力描述):厂家提供,描述设备支持哪些LN和功能
  • SSD(系统规格描述):描述一次系统拓扑
  • SCD(变电站配置描述):工程集成后的完整配置
  • CID(配置IED描述):下装到具体设备的配置

咱们重点看SCD文件。它里面包含<IED><Communication><Substation>三大块。举个例子,一个储能PCS的SCD片段:

<IED name="PCS01" type="PCS-3000" manufacturer="某公司" configVersion="V1.0">
  <Services>
    <DynAssociation />
    <GetDirectory />
    <GetDataObjectDefinition />
    <DataObjectDirectory />
    <GetDataSetValue />
    <SetDataSetValue />
    <GetDataValues />
    <SetDataValues />
    <GetCBValues />
    <SetCBValues />
    <ReportControl />
    <LogControl />
    <GOOSE />
    <GSSE />
  </Services>
  <AccessPoint name="S1">
    <Server>
      <Authentication none="true" />
      <LDevice inst="BAT">
        <LN0 lnClass="LLN0" inst="" lnType="PCS_LLN0">
          <DataSet name="dsBAT">
            <FCDA ldInst="BAT" prefix="" lnClass="ZBAT" lnInst="1" doName="SoC" daName="mag.f" />
            <FCDA ldInst="BAT" prefix="" lnClass="ZBAT" lnInst="1" doName="SoH" daName="mag.f" />
          </DataSet>
          <ReportControl name="rcbBAT" rptID="PCS01/BAT/LLN0$RP$rcbBAT" confRev="1" buffered="true" bufTime="100">
            <TrgOps dchg="true" qchg="true" dupd="false" period="false" gi="true" />
            <OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" dataRef="false" entryID="true" configRef="true" />
            <RptEnabled max="5" />
          </ReportControl>
        </LN0>
        <LN lnClass="ZBAT" lnType="PCS_ZBAT" inst="1">
          <DOI name="SoC">
            <DAI name="mag">
              <Val>50.0</Val>
            </DAI>
          </DOI>
        </LN>
      </LDevice>
    </Server>
  </AccessPoint>
</IED>

这段配置定义了一个PCS设备,包含一个ZBAT逻辑节点,上报SOC和SOH数据。注意<ReportControl>里的bufTime="100",表示缓存时间100ms。我建议新手先看懂这个结构,后面改配置就顺手了。

注意:SCL文件里的lnType必须和ICD文件里定义的模板一致。我见过有人把lnType写错了,结果设备启动后通信失败。排查了半天才发现是类型不匹配。所以,每次修改SCL后,最好用工具做一次语法校验。

4.4 知识体系结构图

下面这张图总结了IEC 61850在储能中的应用脉络,从逻辑节点建模到报文传输,再到配置文件管理,环环相扣。

IEC 61850在储能中的应用体系 逻辑节点建模(LN) ZBAT(电池系统) | ZRCT(整流器/逆变器) | MMXU(测量) | CSWI(开关控制) 数据对象:SoC、SoH、BatSt、W(功率)等,遵循CDC定义 通信报文机制 MMS(制造报文规范) TCP/IP,面向连接,有应答 场景:读取SOC、下发功率指令 GOOSE(通用面向对象变电站事件) 以太网链路层,广播,无应答 场景:跳闸信号、告警,延迟<10ms SCL配置文件解析 ICD(能力描述) 厂家提供 SCD(系统配置) 工程集成 CID(设备配置) 下装到IED SSD(系统规格) 一次拓扑 核心:LN建模 → 报文映射 → SCL配置,三者缺一不可

这张图把三个核心模块串起来了。你想想看,没有LN建模,报文就不知道传什么;没有MMS/GOOSE,数据就传不出去;没有SCL配置,设备之间就没法互认。所以这三块是铁三角,缺一不可。

我的建议:刚开始接触IEC 61850时,别急着看协议栈源码。先拿一个现成的SCD文件,用文本编辑器打开,对照标准文档看一遍。我当年就是这么入门的,花了两天时间把每个标签的含义搞明白,后面做项目就顺了。

好了,关于IEC 61850在储能中的应用,核心就是逻辑节点建模、MMS/GOOSE报文、SCL配置这三个方面。实际项目中,我建议先从SCL文件入手,理解设备的能力描述,再根据需求选择MMS或GOOSE。记住一点:标准是死的,应用是活的。灵活运用,才能让储能系统真正“智能”起来。

专注资料整理