2. SCL 文件结构:五大元素详解
好,咱们进入正题。SCL 文件,说白了就是 IEC 61850 的「通用语言」。你想想看,一个变电站里,保护装置、测控装置、智能终端……不同厂家、不同型号,怎么让它们互相理解?SCL 文件就是那个桥梁。
我个人习惯把 SCL 文件比作一栋房子的设计图。你拿到图纸,先看整体结构,再看每个房间的布局,最后看用什么材料。SCL 也是这个逻辑。它由五大元素组成:Header、Substation、Communication、IED、DataTypeTemplates。咱们一个一个拆开讲。
2.1 Header —— 文件的「身份证」
Header 是 SCL 文件的第一个元素。它记录了文件的基本信息,比如版本号、修改历史、工具来源等。嗯,这里要注意:Header 虽然简单,但千万别乱填。
我记得有一次,一个同事从某个工具导出的 SCL 文件,Header 里的版本号写错了,结果导入另一个系统时直接报错。折腾了半天才发现是版本不匹配。
<Header id="MySubstation" nameStructure="IEDName" version="2.0" revision="1">
<History>
<Hitem version="1.0" revision="0" when="2023-01-15T10:00:00" who="ZhangSan" what="Initial creation"/>
<Hitem version="2.0" revision="1" when="2023-06-20T14:30:00" who="LiSi" what="Added new bay"/>
</History>
</Header>
2.2 Substation —— 一次系统的「地图」
Substation 描述的是变电站的一次设备。说白了,就是断路器、隔离开关、变压器这些大家伙。它用层级结构来组织:电压等级(VoltageLevel)→ 间隔(Bay)→ 设备(ConductingEquipment)。
你想想看,一个 220kV 变电站,有主变间隔、出线间隔、母联间隔……每个间隔里又有断路器、刀闸、地刀。Substation 就是把这些关系用树形结构表达出来。
<Substation name="MySubstation" desc="220kV Substation">
<VoltageLevel name="E1" desc="220kV" nomFreq="50.0" numPhases="3">
<Voltage unit="V" multiplier="k">220</Voltage>
<Bay name="Bay1" desc="Main Transformer Bay">
<ConductingEquipment name="QF1" type="CBR" desc="220kV Circuit Breaker"/>
<ConductingEquipment name="QS1" type="DIS" desc="Disconnector"/>
</Bay>
</VoltageLevel>
</Substation>
2.3 Communication —— 通信的「高速公路」
Communication 部分定义的是设备之间怎么通信。它包含子网(SubNetwork)、访问点(ConnectedAP)和 GSE 控制块等信息。说白了,就是告诉设备:你用哪个 IP?走什么协议?报文发到哪?
我个人习惯先画通信拓扑图,再写 Communication 配置。这样不容易漏掉连接。
<Communication>
<SubNetwork name="StationBus" type="8-MMS">
<ConnectedAP iedName="IED1" apName="S1">
<Address>
<P type="IP">192.168.1.10</P>
<P type="IP-SUBNET">255.255.255.0</P>
<P type="IP-GATEWAY">192.168.1.1</P>
</Address>
<GSE ldInst="LD0" cbName="GooseCB1">
<Address>
<P type="MAC-Address">01-0C-CD-01-00-01</P>
<P type="APPID">0001</P>
<P type="VLAN-ID">100</P>
<P type="VLAN-PRIORITY">4</P>
</Address>
</GSE>
</ConnectedAP>
</SubNetwork>
</Communication>
2.4 IED —— 智能设备的「说明书」
IED 是 SCL 文件的核心。它描述了一个智能电子设备的所有信息:型号、版本、访问点、逻辑设备、逻辑节点、数据对象、报告控制块、GOOSE 控制块……
你可以把 IED 部分想象成设备的「完整说明书」。它告诉系统:这个设备有哪些功能?能采集哪些数据?能执行哪些操作?
<IED name="IED1" manufacturer="CompanyA" configVersion="V1.0">
<Services>
<DynAssociation/>
<GetDirectory/>
<GetDataObjectDefinition/>
<DataObjectDirectory/>
<GetDataSetValue/>
<SetDataSetValue/>
<GetDataValues/>
<SetDataValues/>
<GetCBValues/>
<ReportControl buffered="true" bufTime="1000">
<RptEnabled max="5">
<ClientLN apRef="S1" iedName="IED2" ldInst="LD0" lnClass="ITCI" lnInst="1"/>
</RptEnabled>
</ReportControl>
</Services>
<AccessPoint name="S1">
<Server>
<Authentication none="true"/>
<LDevice inst="LD0">
<LN0 lnClass="LLN0" inst="" lnType="LLN0_Type">
<DataSet name="dsGOOSE1">
<FCDA ldInst="LD0" lnClass="XCBR" lnInst="1" doName="Pos" fc="ST"/>
</DataSet>
<GSEControl name="GooseCB1" datSet="dsGOOSE1" confRev="1" appID="0001"/>
</LN0>
<LN lnClass="XCBR" inst="1" lnType="XCBR_Type">
<DOI name="Pos">
<DAI name="stVal"/>
<DAI name="q"/>
<DAI name="t"/>
</DOI>
</LN>
</LDevice>
</Server>
</AccessPoint>
</IED>
2.5 DataTypeTemplates —— 数据类型的「字典」
DataTypeTemplates 定义了所有用到的数据类型。它包括 LNodeType(逻辑节点类型)、DOType(数据对象类型)、DAType(数据属性类型)和 EnumType(枚举类型)。
说白了,这就是一本「字典」。前面 IED 部分用到的 lnType、doName 等,都要在这里找到对应的定义。如果字典里没有,设备就不知道这个数据长什么样。
<DataTypeTemplates>
<LNodeType id="LLN0_Type" lnClass="LLN0">
<DO name="Mod" type="Mod_Type"/>
<DO name="Beh" type="Beh_Type"/>
<DO name="Health" type="Health_Type"/>
</LNodeType>
<LNodeType id="XCBR_Type" lnClass="XCBR">
<DO name="Pos" type="Pos_Type"/>
<DO name="BlkOpn" type="BlkOpn_Type"/>
<DO name="BlkCls" type="BlkCls_Type"/>
</LNodeType>
<DOType id="Pos_Type" cdc="DPC">
<DA name="stVal" bType="Dbpos" fc="ST" dchg="true"/>
<DA name="q" bType="Quality" fc="ST" qchg="true"/>
<DA name="t" bType="Timestamp" fc="ST"/>
<DA name="ctlVal" bType="BOOLEAN" fc="CO"/>
<DA name="operTm" bType="Timestamp" fc="CO"/>
</DOType>
<EnumType id="Dbpos">
<EnumVal ord="0">intermediate</EnumVal>
<EnumVal ord="1">off</EnumVal>
<EnumVal ord="2">on</EnumVal>
<EnumVal ord="3">bad-state</EnumVal>
</EnumType>
</DataTypeTemplates>
五大元素的关系
这五个元素不是孤立的。它们之间有着紧密的联系:
| 元素 | 作用 | 与其他元素的关系 |
|---|---|---|
| Header | 文件元信息 | 所有元素的容器 |
| Substation | 一次系统拓扑 | IED 中的逻辑节点可关联到 Substation 的设备 |
| Communication | 通信参数配置 | 通过 ConnectedAP 的 iedName 关联到 IED |
| IED | 设备功能描述 | 通过 lnType 引用 DataTypeTemplates 中的类型 |
| DataTypeTemplates | 数据类型定义 | 被 IED 中的逻辑节点引用 |
举个例子:IED 里定义了一个断路器 XCBR,它的 lnType="XCBR_Type" 指向 DataTypeTemplates 中的定义。而这个断路器在物理上对应 Substation 里的某个 ConductingEquipment。同时,它的 GOOSE 报文通过 Communication 配置的地址发送出去。你看,一环扣一环。
嗯,今天就先聊到这。记住:写 SCL 文件,最重要的是保持一致性。名字别写错,引用别断链,版本别乱改。做到这三点,基本不会出大问题。
公众号:蓝海资料掘金营,微信deep3321