61850一开始对我来说也是个陌生的词汇,随着工作上的需要,才从各种渠道一点点的了解以及完善对于这个通讯规约的认识,当然对这个庞大的协议也是了解到冰山一角。
对于61850开发的话目前开源库libiec61850做的也十分不错,如果是61850的初学者,建议优先学习与使用这个开源库,下面开发相关的内容都是基于libiec61850这个开源库的。
一开始学习是直接在标准上学的,感觉是了解了一点点,但是又没法总结与阐述。然后从b站上找61850相关的课程发现除了几个PPT啥课程都没有,然后就从youtube上学,虽然英语难懂,但也掌握了一些基本原理,如果想学61850的话建议直接去youtube上找课程学。
废话不说,下面就是我对于61850MMS的一些总结与分析,在这里分享给各位,后续会继续分享相关的代码以及各种开发过程中实用的工具,请持续关注~
61850 MMS模型初步分析
目录
3、数据DO(Data Object)及 数据属性DA(Data attribute) 11
1、配置文件分析
1.1 文件构建流程
IED(智能电子设备,指保护、测控等设备)应提供ICD文件,描述IED的能力及通信内容,如是否具有定值、压板、动作信号等。
在开发过程中最常用到的文件应该是.cid文件,他与.icd文件区别就是多了网络通讯参数。
系统集成工具把各IED的ICD文件集成并进行实例化如IED名、信息点描述等形成站级模型文件-SCD文件,供站级(包括监控、远动、故障信息主子站)应用。
IED从SCD文件中导出本IED相关部分形成CID文件,即实例化后的IED模型文件,供IED运行时用。具体如图1-1所示

图1-1构建61850体系配置文件
1.2 ICD/CID文件结构
-Header:历史版本信息等
-Communication:IEDMMS网络以及GOOSE配置等
-IED:数据模型,服务模型等
-DataTypeTemplates :所用到的对象类型模型
使用IEDmoldeler打开icd文件如下图1-2所示

图1-2 icd配置文件打开
1.3模型验证
使用南瑞的PCS-SCD可以对构建出来的模型进行一个语义语法检测,以及具体的服务查询。详情如下图.
下图1-3显示网络配置

图1-3 网络配置
下图1-4 所示表示此模型对外提供的服务

图1-4 提供服务
如下图1-5所示对此icd模型做语义语法层面上的校验保证能负荷61850标准,还有一点下面的数据类型模板表示根据61850标准内的固定的LN节点模型,在符合其规则的前提下,添加一些自定义的子对象,然后支持添加前缀与后缀(重命名),其实类似于开发中的继承与typedef,注意这里构建完之后相当于是建立一个类,然后在前面构建数据模型的时候就可以使用这些类new出来新的对象。

图1-5 语义语法校验
2、IED模型
2.1 IED总体概述

图2-1 IED模型
IED数据模型总体布局如上图2-1中所示
实际文件中IED中配置有描述自身服务模型,如下图2-2所示

图2-2 IED本身的服务能力
IED的数据模型如下图2-3所示

图2-3 IED数据模型
2.2 IED配置原则
建模原则:一个智能电子装置可以建模为一个物理设备,其中至少包含一个服务器,服务器应该有一个访问点,实现与外部设备的通信,也可采用不同访问点分别与变电站不同层进行通信,服务器中至少包含一个逻辑设备。每个逻辑设备至少包含三个逻辑节点,有且仅有一个LPHD。在不影响正常功能的情况下不宜划分过多的逻辑节点。
还有如下几点需要注意
每个IED包含1-n个LDevice,每个LD包含1个LN0和几个LN
LD路径名:IED名+LD名 全站唯一确定一个LD
61850实施规范中规定的LD命名原则如下表2-1以及图2-4所示
数据交换的最小功能单位建模为一个逻辑节点

表2-1 规范命名方法

图2-4 实际icd中的命名
2.3 逻辑节点LN
逻辑节点是功能的最小单位,如GGIO通用输入输出,有时需要模拟输出、辅助继电器等输出,然而这些输出未被上述开关设备相关逻辑节点所覆盖。另一方面,还需增加一些未定义的输入输出代表的装置,如,警报器、警铃、目标值等。还有一些输入输出来自未定义辅助装置。对这些输入输出,使用通用逻辑节点GIO表示通用主装置或辅助装置输入输出。PTOC类型的LN表示带时限过流保护,包括时限、过流等定值及保护启动动作状态。CSWI表示开关对象,包括开关状态,开关控点等数据。从LD包含的LN既可知道LD所能支持的功能。
如下图2-5使用GGIO输出告警点,对应四遥中的遥信值。

图2-5 LN名称组成
LN类型lnType:描述LN包含的数据信息,根据lnType如NJRS_GGIO_16IND在DataTypeTemplate段中查询
LN实例名:prefix+lnClass+inst 如:StaGGIO1
LN实例路径名:PCS001/StaGGIO1 LD与LN之间以/分隔
只能在LN0实例中包含数据集DataSet、报告控制块ReportControl、日志控制块LogControl(模型文件中应删除)。
2.3.1 包含测量值的LN
如下图2-6所示,MMXU逻辑节点,MMXU表示3相系统的模拟量,包括电流、电压、功率,频率等数据,对应到四遥中是对应遥测。

图2-6 MMXU测量值
2.3.2 包含控制量的LN
多个功能具有一定顺序。这些功能归类为通用自动过程控制逻辑节点类型(GAPC)。该节点是对所有未定义功能的通用节点。功能顺序可用标准的PLC 语言实现,数据访问和交换完全同其它逻辑节点。本LN节点实际对应四遥中的遥控,如下图2-7对PCS控点

2-7 PCS控点
2.3.3 包含定值的LN
定值控制类型,在此模型中同样采用逻辑节点GAPC,对有功无功两个节点进行了定值限制,相当于配置参数,如下图2-8所示。类似地可以看作四遥中的遥调。

图2-8 定值设置

图2-9 GOOSE实现的功率控制
3、数据DO(Data Object)及 数据属性DA(Data attribute)
模型中LN的下级数据称为DO,在61850标准中统一定义了每个DO含义,DO又可包含下级DO和DA,因此DO可看作一个结构化的数据。DA是模型中的末级数据,DA又可包含DA,最末级DA称为叶子leaf。
模型中的信息分为几种类型,由DA的功能约束属性fc进行标识,常用fc有如下类别:
ST:状态 MX:测量 CO:控制 SG:当前区定值 SE:编辑区定值
BR:缓冲型报告控制块 RP:非缓冲型报告控制块
下面为常用数据类型的例子。
3.1状态类数据
包括压板状态、开入状态、告警信息、事件状态等。
类型:SPS
如图3-1所示

3-1 表示状态的DO对应YX
3.2 测量类数据
包括测控测量和保护测量
类型CMV WYE MV
如图3-2所示

图3-2 测量类型DO对应YC
3.3控制类数据
控制类型包括复归、压板、开关控制
类型CMV WYE MV,SP
如下如3-3所示

图3-3 控制类型DO对应YK
1、61850实施规范中要求Check数据必须有值,不能为空值。如果client下发遥控命令Check为空,则保护测控装置无法接受控令,控制失败。
2、SBOw和Oper数据类型一般相同
3、除复归为直接控制类型外,其余大部分为预置、执行方式的控制,即增强安全的控制命令。
3.4定值类数据
DO类型SP,CF
如下图3-4所示

图3-4 定制类型DO对应YT
3.5 数据集:DOI /DAI的集合
FCDA到DO,DO包含的fc指定的DA也属于FCDA

FCDA到DA

数据集路径名datasetReference唯一确定一个数据集:IED名+LD名+LN名+数据集名
根据每个数据成员实例可找到数据的描述,即可知道数据与IED内部数据的对应关系
3.6 报告控制块ReportControl

1、报告控制块用于设定IED上送数据的内容及方式等,包括告警、事件、开入、模拟量等所有IED需上送的内容。61850中除总召由client发起外,其余全部为IED主动上送数据。
2、IED与client连接过程中,client一般会根据各自需要设定每个报告实例的属性,此处的例子是icd中设定的默认值,如果client不重新设定,IED以此方式上送。
3、datSet属性:本报告控制块对应的数据集。
4、TrgOps:报告触发选项,数据集中的数据在何种条件下通过报告上送
dchg:数据变化上送
qchg:品质变化上送
dupd:数据更新上送,目前一般不用
period:周期上送
OptFeilds:报告报文中包含的数据域,除了信号状态模拟量值以外的信息,如以下数据等
seqNum:报告的序号,递增
timestamp:报告生成的时标,不是信号变化时间
dataset:报告中包含数据集名
RptEnabled: max属性是IED可以支持的报告实例个数。IED初始化时为每个报告生成max个实例,分别以报告控制块名+实例号(01,02…)进行区分,如brcbAlarm01、 brabAlarm02。每个client在连接时,以不同的报告实例号占用一个报告实例。每个报告实例按照client指定的属性上送报告。
如果数据集成员到DO级别,其包含的任意一个数据满足报告触发条件都应触发报告
报告分为缓存和非缓存两种类型,由IED建模时,通过ReportControl段的”buffered”属性设置,buffered=true设置缓冲型报告,对应fc=BR; buffered=false设置非缓冲型报告,对应fc=RP。缓存型报告要求IED在内存中缓存报告,如通信中断期间发生了事件,通信恢复后,此事件报文应能上送不丢失,通常告警、事件、SOE等报告建模为缓存类型。非缓存型报告不要求IED缓存,通信中断期间的数据可丢失,通常遥测类型的数据建模为非缓存报告。
4、控制服务分析
变电站中断路器及隔离开关的远方遥控、继电保护装置软压板的远方投退等操作都可以由IEC61850中的控制服务完成。
控制模型定义了下述服务:
----Select(选择)/SelectWithValue(带值选择)
----Cancel(取消)
----Operate(操作)/TimeActivatedOperate(时间激活操作)
----CommandTermination(命令终止)
本次仅用到Operate(操作)服务,该服务可以直接操作远端服务器的DA值。那么什么情况下会用到其他服务后面会逐步介绍,这里暂时不做详细解释。
控制服务定义了四种模型
----常规安全的直接控制
----常规安全的操作前选择控制
----增强安全的直接控制
----增强安全的操作前选择控制
上述的“操作前选择”简称为:SBO( select before operate)
所谓常规和增强的区别就是常规的不需要校验执行结果,增强型的需要校验。而操作前选择和直接控制的区别是前者需要在操作前进行选择操作,后者不需要。控制服务流程如图4-1所示

图4-1 简单控制流程
4.1 常规安全的直接控制
常规安全的直接控制就是不需要校验执行结果也不需要在操作前进行选择,是控制的最简单模型。其控制状态机如下图4-2所示

图4-2 直接控制状态机
4.2 常规安全的操作前选择控制
常规安全的操作前选择可以确保设备在接受操作信号之后,等到实际设备动作后,再返回操作成功的指令,确保了此次控制成功,其状态机如下图4-3所示

图4-3常规安全的操作前选择控制
4.3 增强安全的控制
增强安全的控制可以确保此次操作是只有自己一个服务端来预定的,避免了可能会出现的控制冲突。但还是没有确定实际的物理设备是否动作,如下图4-4中所示。

图4-4增强安全的直接控制
4.4 增强安全的操作前选择控制
增强安全的操作前选择控制,将上面三个模型存在的问题都解决了,可以很可靠的进行控制命令的发送确认。即一开始发送select请求,确定可以select成功表示其没有另一个客户端在控制过程中,需要注意的是select过程可以取消。然后还可以确定只有一个用户来进行控制设备。并且在开关动作之后,得到服务器程序的确认之后,才会返回给客户端控制成功。具体流程如图4-5所示

图4-5 增强安全的操作前选择控制
5、现阶段IEC61850开发情况以及问题
5.1库编译与移植
主要命令如下
tar xvf libiec61850-1.4.2.1.tar.gz
cd libiec61850-1.4.2.1
mkdir build
cd build
export TOOLCHAIN /usr/local/arm-6ul/bin/arm-none-gnueabi-
cmake -DCMAKE_INSTALL_PREFIX=/opt/libiec61850 ..
make
make install
此时库已经安装在/opt/libiec61850中
首先在~/.bashrc中最后添加export LIBIEC=/opt/libiec61850
然后在/etc/ld.so.conf中最后一行添加动态库路径:/opt/libiec61850/lib/
自己手动编写的client_test.c与client_test.h,这里代码暂时省略,将会在分享2中分享给大家。
第一版Makefile如下:
INCLUDES = -I $(LIBIEC)/include/libiec61850
# 注意需要要将libiec61850.so.1.5.1路径加入到/etc/ld.so.conf中
LIBPATH = $(LIBIEC)/lib
LIBAS = $(LIBPATH)/libhal.a
LIBAS +=$(LIBPATH)/libhal-shared.a
LIBAS += -L$(LIBPATH) -liec61850 -lpthread
object = client_test.c client_test.h
client:$(object)
gcc -g $(INCLUDES) $^ -o $@ $(LIBAS)
clean:
rm client
5.2 代码测试情况
5.2.1客户端读取服务器IED结构目录
通过调用IEC61850库中的读取目录相关的API可以将一个服务器中的数据模型树状结构读取到客户端中。另外还有一点,在很多资料中都有提到,就是短地址,实际上是给一些关键的DO或者DA一个类似与点号的地址,便于程序中方便的读取。

5.2.2报警点以及测控点数据的读取
根据在服务器模型中的唯一引用值来读取对应的测控值即遥信和状态量即遥信


5.2.3 报告控制块与数据集相关测试
下图是报告关联数据集的数据变化触发报告发送的原因对应的宏定义

报告首先要客户端对服务器端的报告控制快进行参数设置,包括使能,触发条件,完整性周期等等,具体如下图中所示

测试结果如下

在服务端改变数据集中数值时,客户端会立刻接收到报告。


5.2.4 控制服务的测试


资料汇总
调研建模部分
智能变电站中状态监测IED的建模与配置:
建模原则:一个智能电子装置可以建模为一个物理设备,其中至少包含一个服务器,服务器应该有一个访问点,实现与外部设备的通信,也可采用不同访问点分别与变电站不同层进行通信,服务器中至少包含一个逻辑设备。每个逻辑设备至少包含三个逻辑节点,有且仅有一个LPHD。在不影响正常功能的情况下不宜划分过多的逻辑节点。
数据交换的最小功能单位建模为一个逻辑节点
IEC61850开发流程



建模说明:
https://blog.csdn.net/kof98765/article/details/112903104
IEDScout下载链接:
https://www.xiaobaipan.com/file-2298713.html
IEDScout讲解视频:
https://haokan.baidu.com/v?pd=wisenatural&vid=10324006375493669954
PCS-SCD配置工具:
http://wei2008.com/news/news/201818297.html
PCS-SCD使用讲解视频:
https://www.iqiyi.com/v_1ibls0xq79w.html#curid=5608442795724600_ac2b1e9ed614ac53eb41f19c5964fd55
库编译链接
https://blog.csdn.net/kof98765/article/details/112902565
标准服务
IEC61850标准的服务实现主要分为三个部分:MMS服务、GOOSE服务、SMV服务。
MMS服务用于装置和后台之间的数据交互;GOOSE服务用于装置之间的通讯;SMV服务用于采样值传输。
三个服务之间的关系:在装置和后台之间涉及到双边应用关联,在GOOSE报文和传输采样值中涉及多路广播报文的服务。双边应用关联传送服务请求和响应(传输无确认和确认的一些服务)服务,多路广播应用关联(仅在一个方向)传送无确认服务。
如果把IEC61850标准的服务细化分,主要有:报告(事件状态上送)、日志历史记录上送、快速事件传送、采样值传送、遥控、遥调、定值读写服务、录波、保护故障报告、时间同步、文件传输、取代,以及模型的读取服务。
原文链接:https://blog.csdn.net/wgd0707/article/details/122425348
建模过程
https://blog.csdn.net/kof98765/article/details/112903104
1、首先根据输入java根据提示安装java编译环境
2、安装完成后输入java -jar genmodel.jar simpleIO_direct_control.icd 会在当前目录下生成静态数据模型
https://blog.csdn.net/rpybx/article/details/119568523
Windows下建模备用
61850相关网址
1. Linux下的开发流程、包括字描述语言建模:https://wenku.baidu.com/view/50e648307375a417866f8feb.html?sxts=1553787764923
2. 深圳某公司的操作流程:https://wenku.baidu.com/view/a660f33f0b4c2e3f5727638d.html
3. 建模:https://wenku.baidu.com/view/10db705e312b3169a451a40a.html?sxts=1553788471253
4. IEC61850与103协议的区别:https://wenku.baidu.com/view/86e4686f84868762cbaed580.html?rec_flag=default&sxts=1553788591252
5. 建模ppt:https://wenku.baidu.com/view/d9523bcf2af90242a995e53a.html?rec_flag=default&sxts=1553788700724
6. IEC61850客户端工具:https://wenku.baidu.com/view/718a4a85e53a580216fcfe99.html
7. IEC61850调试:https://wenku.baidu.com/view/93923bca192e45361166f59b.html?sxts=1553789008795
8. IEC61850在linux windows下的源代码下载、编译:https://blog.csdn.net/kecise/article/details/67647804
8.1 安装环境CMAKE,然后在libiec61850下编译生成vs2010工程
8.2 建模:动态建模(生成*.cfg配置文件)、静态建模(生成*.c和*.h文件):https://blog.csdn.net/kecise/article/details/68523599
9. DL/T6345.101 DL/T6345.104文档讲解:
9.1 https://wenku.baidu.com/view/eaf7e0f4227916888586d719.html,9.2 https://wenku.baidu.com/view/c6297d3c178884868762caaedd3383c4bb4cb427.html
9.3 DL/T6345-104报文分析:https://wenku.baidu.com/view/3b8eb1d06f1aff00bed51ea2.html
10.61850交叉编译教程
https://baijiahao.baidu.com/s?id=1638544508310532356&wfr=spider&for=pc