目录

1 智能变电站为什么非要用61850协议... 1

2 变电站通信架构... 1

3 61850协议... 1

4 libiec61850开源库... 2

5 从0开始创建MMS模型SERVER. 3

6 结束语... 5


1 智能变电站为什么非要用61850协议

在电力网络高速发展的过去这些年,我国兴建了大批智能变电站,而智能变电站的核心就是信息系统的标准化、统一化,以减少使用电缆和通过移动领域的劳动力把项目执行时间降至最低,由国际电工组织主编的IEC61850通信标准符合信息标准化的特点,且具有国际通用性,在智能变电站中大量推广(不排除个别站仍然使用104协议)。IEC61850规范化了系统和工程管理、功能描述及设备模型、通信要求、通信一致性要求等,对变电站内一次侧、二次侧的生产控制和信息管理有详尽的技术规范要求。

2 变电站通信架构

变电站中对系统进行了站控层、间隔层和过程层分层管理,在不同层级的61850通信模型也不一样,一般站控层使用MMS(Manufacturing Message Specification)、过程层与间隔层使用SV(Sampled Value Transmission IED设备采样值报文)和GOOSE(Generic Object Oriented Substation Event 面向通用对象的变电站事件报文,IED设备间通用报文),如下图所示。


模型简要设计说明(变电站61850模型MMS开发总结)(1)

3 61850协议

协议实现介绍

IEC61850标准中规范了描述一次系统主接线的 SSD(Substation Specification Description 变电站主接线描述)文件、一次主接线图纸和二次系统的 SCD(Substation Configuration Description 变电站配置描述)文件、二次网络中的 MMS 报文、GOOSE 报文、SV 报文、ICD(IED Capacity Description 设备功能描述文件)以及CID(IED Configured Description IED 设备的配置描述),其中CID文件只是SCD文件的子集(CID内容可以在SCD中找到),CID文件就是IED设备创建的抽象模型,也是设备制造厂家需要向变电站提供的配置文件。

IED抽象模型ICD

SCD和ICD都是基于SCL(Substation Configuration Language)语言的XML文件,ICD只是SCD的子集,站控层在收到IED设备上报的数据和通过查询SCD表可以知道上报数据的物理意义。ICD文件中的内容简单介绍如下图(xml中的标签太多,太复杂,不做详细介绍)。


模型简要设计说明(变电站61850模型MMS开发总结)(2)

4 libiec61850开源库

libiec61850是github开源免费的c代码库,支持ICD文件的动态和静态生成,模型c代码转换,MMS(server和client)/SV/GOOSE消息报告,各种线程、网络socket封包,以及丰富的api接口可调用、丰富的example可参考, readme详细说明了在windows和linux平台生成可执行文件的具体方法。总之,很好很强大,谁用谁知道!


模型简要设计说明(变电站61850模型MMS开发总结)(3)

5 从0开始创建MMS模型SERVER

我们用c做一个完整windows10平台61850中MMS服务器端静态模型程序。

案例分析:某站变压器A相安装了电压测量IED装置,要求实时上传当前电压值指站端平台,此时控制室有厂家的数据集中器(服务器),由集中器统一上报电压值,那么厂家需要为安装的电压监测装置创建模型ICD,并将模型编译进服务器后端程序,站端得到ICD后可以查询服务器实时更新的电压值信息。

开发前环境准备(我的环境)

libiec61850源代码下载,https://github.com/mz-automation/libiec61850,放在本地D盘根目录,并在libiec61850根目录下创建一个build文件夹;

JRE安装,我的版本是10.0.1,

https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html ;

VS2015安装,更高版本的VS需要改CMake的命令,可自行查询;

CMake安装,用于将源码生成VS工程,我的版本是3.16.2,https://cmake.org/download/,安装完成后运行cmd命令窗口,进入D盘的libiec61850文件夹中的build文件夹,输入命令cmake -G "Visual Studio 14 2015 Win64" ..,在build文件夹中生成VS2015的工程(注意命令后面的..不要漏掉了),用VS打开此工程就可以查看、编译所有源码了;

安装IEDScout,作为Client连接Server使用,官方提供有测试版本,我的版本是4.20,https://www.omicronenergy.com.cn/products/iedscout/;

安装XMLSpy,编辑ICD使用,https://www.altova.com/xmlspy-xml-editor;

创建模型

常用创建ICD的工具为XMLSpy,结合案例分析,我们创建1个与相别无关的测量逻辑节点,ICD文件命名为TestModel.icd,如下图所示,MMXN01即为监测A相电压的逻辑节点。


模型简要设计说明(变电站61850模型MMS开发总结)(4)

编译模型

拷贝ICD文件至文件夹D:\libiec61850-1.4\tools\model_generator中,启动cmd窗口,进入上述文件夹目录,执行命令java -jar genmodel.jar TestModel.icd,会生成static_model.c和static_model.h两个文件,本例子是基于源码中的server_example_simple例子更改的,所以需要将static_model.c和static_model.h拷贝到server_example_simple的工程文件夹中,并将D:\libiec61850-1.4\build\src\Debug里面的iec61850.dll拷贝至server_example_simple的debug文件夹中。好了,环境都配好了,开始编写业务代码!

模型SERVER端编业务代码

修改server_sample_simple.c文件中的代码,实现每间隔5秒更新一次电压值和时间,代码如下图所示。


模型简要设计说明(变电站61850模型MMS开发总结)(5)

编写完代码后,执行VS的build,找到exe启动server,启动后就是个黑框,什么都没有,接下来我们通过ICD去连接server,获取数据。


模型简要设计说明(变电站61850模型MMS开发总结)(6)

SERVER模型连接测试

双击我们的TestModel.icd文件,默认会使用IEDScout打开,点击Browser中的Online,连接成功后点击ReadAll,就可以看到读回来的数据了,Over!


模型简要设计说明(变电站61850模型MMS开发总结)(7)

6 结束语

61850在未来绝对是在线监测系统必备的通信协议,不带61850的系统被称为“黑户”,领导检查时系统会被“切掉”,导致监测中断,国网对数据的实时监测不断提高要求,数据进内网是厂家必须具备的基本功能。

,