61850模型与MMS报文分析.docx
《61850模型与MMS报文分析.docx》由会员分享,可在线阅读,更多相关《61850模型与MMS报文分析.docx(44页珍藏版)》请在冰豆网上搜索。
61850模型与MMS报文分析
61850模型及MMS报文分析基础
2012-02
参考文档:
1.《数字化变电站调试总结-马玉龙》
2.《IEC61850标准》《IEC61850实施规范》
1、文件类型3
1.1ICD/CID文件结构3
2模型验证3
3、IED配置4
3.1IED和LD(LogicalDevice)相关信息4
3.2逻辑节点LN(LogicalNode)5
3.3数据DO(DataObject)及数据属性DA(Dataattribute)7
3.4数据集:
DOI/DAI的集合10
3.5报告控制块ReportControl:
11
4如何抓包12
4.1抓包工具12
4.2抓包方法12
4.3分析举例12
5、MMS报文简析16
5.1初始化相关16
5.2报告相关21
5.3录波相关30
5.4控制相关33
5.5定值相关36
第一部分:
模型文件基础
1、文件类型
IED(智能电子设备,指保护、测控等设备)应提供
ICD
文件,描述
IED
的能力及通信内容,如是否具有
定值、压板、动作信号等。
系统集成工具把各IED的ICD文件集成并进行实例化如
IED
名、信息点描述等形成站级模型文件
-SCD
文
件,供站级(包括监控、远动、故障信息主子站)应用。
IED
从
SCD
文件中导出本
IED
相关部分形成
CID
文件,即实例化后的
IED
模型文件,供
IED
运行时用。
1.1ICD/CID文件结构
-Header:
历史版本信息等
-Communication:
GOOSE配置等
-IED:
定值、压板、动作信号等
-DataTypeTemplates:
对象类型定义
2模型验证
xmlSpy可做一些语法方面的验证。
四方61850客户端工具软件可作进一步验证。
3、IED配置
IEC61850模型总体-模型的分析
DA
DA
DA
DA
DA
DA
DO
DO
DO
DO
MMXU1
MMXU2
LogicalNodes
MMXU3
LogicalDevice
PhysicalDevice(networkaddress)
注:
本部分示例大部分取自培训资料包中的CSC326DES1.cid。
3.1IED和LD(LogicalDevice)相关信息
1、icd文件中的IED名一般为Template
2、cid文件中的IED名必须和子系统的
3、每个IED包含1-n个LDevice,每个
csscfg.ini
LD包含
配置一致
1个LN0
和几个
LN
4、对于四方IED的模型文件中有两个私有配置,当模型较大(cid超过1M)装置可能无法正确启动,需
要把这两个参数改大,CSC高压保护MST61850库版本v3.40以后在串口输出中有提示信息。
DTValidNums总的叶子个数提示信息:
sclMaxLeafNumISTOOSMAL
DTAllNums每个LN所包含的最大类型个数
5、LD路径名:
IED名+LD名全站唯一确定一个LD
3.2逻辑节点LN(LogicalNode)
3.2.1包含状态数据的LN
LN实例:
CSC326DELD0/GGIO2
1、LN类型lnType:
描述LN包含的数据信息,根据lnType如CSC326DE/LD0/GGIO2在DataTypeTemplate
段中查询
2、LN实例名:
prefix+lnClass+inst如:
GGIO2(prefix为空)
3、LN实例路径名:
CSC326DELD0/GGIO2LD与LN之间以/分隔
4、只在LN0实例中包含数据集DataSet、报告控制块ReportControl、日志控制块LogControl(模型文件中
应删除)
3.2.2包含测量数据的LN
LN实例:
CSC326DEMEAS/MMXU1
3.2.3包含控制数据的LN
LN实例:
CSC326DEMEAS/LLN0
3.2.4包含定值数据的LN
LN实例:
CSC326DEPROT/LLN0
3.3数据DO(DataObject)及数据属性DA(Dataattribute)
模型中DA,因此
LN的下级数据称为DO,在
DO可看作一个结构化的数据。
61850标准中统一定义了每个
DA是模型中的末级数据,
DO含义,
DA又可包含
DO又可包含下级
DA,最末级DA
DO和称为叶
子leaf。
模型中的信息分为几种类型,由DA的功能约束属性ST:
状态MX:
测量CO:
控制SG:
当前区定值
fc
进行标识,常用
SE:
编辑区定值
fc
有如下类别:
BR:
缓冲型报告控制块RP:
非缓冲型报告控制块
下面为常用数据类型的例子。
3.3.1状态类数据
包括压板状态、开入状态、告警信息、事件状态等。
类型:
SPS
3.3.2测量类数据
包括测控测量和保护测量
类型CMVWYEMV
3.3.3控制类数据
控制类型包括复归、压板、开关控制
类型CMVWYEMV
1、61850实施规范中要求Check数据必须有值,不能为空值。
如果client下发遥控命令Check为空,则保
护测控装置无法接受控令,控制失败。
2、SBOw和Oper数据类型一般相同
3、除复归为直接控制类型外,其余大部分为预置、执行方式的控制。
3.3.4定值类数据
3.4数据集:
DOI/DAI的集合
FCDA到DO,DO包含的fc指定的DA也属于FCDA
FCDA到DA
1、数据集路径名datasetReference唯一确定一个数据集:
IED名+LD名+LN名+数据集名
2、根据每个数据成员实例可找到数据的描述,即可知道数据与IED内部数据的对应关系
3.5报告控制块ReportControl:
1、报告控制块用于设定IED上送数据的内容及方式等,包括告警、事件、开入、模拟量等所有
的内容。
61850中除总召由client发起外,其余全部为IED主动上送数据。
2、IED与client连接过程中,client一般会根据各自需要设定每个报告实例的属性,此处的例子是
定的默认值,如果client不重新设定,IED以此方式上送。
IED需上送
icd中设
3、datSet属性:
本报告控制块对应的数据集。
4、TrgOps:
报告触发选项,数据集中的数据在何种条件下通过报告上送
dchg:
数据变化上送
qchg:
品质变化上送
dupd:
数据更新上送,目前一般不用
period:
周期上送
5、OptFeilds:
报告报文中包含的数据域,除了信号状态模拟量值以外的信息,如以下数据等
seqNum:
报告的序号,递增
timestamp:
报告生成的时标,不是信号变化时间
dataset:
报告中包含数据集名
6、RptEnabled:
max属性是IED可以支持的报告实例个数。
IED初始化时为每个报告生成max个实例,分
别以报告控制块名+实例号(01,02⋯)进行区分,如brcbAlarm01、brabAlarm02。
每个client在连接时,
以不同的报告实例号占用一个报告实例。
每个报告实例按照client指定的属性上送报告。
7、如果数据集成员到DO级别,其包含的任意一个数据满足报告触发条件都应触发报告
8、报告分为缓存和非缓存两种类型,由IED建模时,通过ReportControl段的”buffered”属性设置,buffered=true设置缓冲型报告,对应fc=BR;buffered=false设置非缓冲型报告,对应fc=RP。
缓存型报告要求IED在内存中缓存报告,如通信中断期间发生了事件,党通信恢复后,此事件报文应能上送不丢
失,通常告警、事件、SOE等报告建模为缓存类型。
非缓存型报告不要求
数据可丢失,通常遥测类型的数据建模为非缓存报告。
抓包及MMS报文。
IED
缓存,通信中断期间的
第二部分:
MMS报文分析基础
4如何抓包
4.1抓包工具
常用的抓包工具有Windows下的mms-ethereal,WireShark和Solaris下的snoop命令。
mms-ethereal可以自动解释mms
面更加友好,但标准版本中没有对
报文,适合进行应用层报文的分析。
WireShark是ethereal的替代版本,界
mms报文分析的支持;snoop主要是用来抓包,没有图形化的分析界面,
snoop抓取的文件可以用
WireShark
打开辅助分析;
4.2抓包方法
对于广播和组播报文如装置的
对于后台与装置之间的TCP
UDP心跳报文,可以用笔记本连接到交换机上任意端口抓取。
通讯,有以下几种方法。
1)后台机上可安装软件来抓包,非window系统的也可以在笔记本电脑上用相同配置模拟后台截取报文。
2)利用HUB连接后台与装置,将笔记本接到HUB上抓包。
注意一定要使用HUB,不能使用交换机。
WireShark和mms-ethereal均是图形化的界面,使用起来比较简单,注意选择正确的网卡即可。
snoop的使用方法可以用mansnoop取得,最基本的命令为snoop-dbge0-oxx.snoop
3)如果是远动、和子站装置,可在交换机上设定镜像端口,把要截取报文的端口镜像到镜像端口,则笔记本电脑只要连接到镜像端口即可截取其它端口的报文。
交换机一般都支持端口镜像功能,需要参照说明书进行设定。
4.3分析举例
均以WireShark为例,mms-ethereal与之类似。
1.3.1设置抓包过滤条件
在后台上抓包时,数据量比较大,文件一大之后,解析起来速度很慢,如果单纯为了分析应用层报文,可在抓包的时候设置过滤条件。
如果为了分析网络通断问题,一般不设置过滤条件,便于全面了解网络状况。
抓包过滤条件在Capture->Options->CaptureFilter里设置,点CaptureFilter会有很多现成的例子,下面列举几个最常用的。
tcp
udp
host198.120.0.100
etherhost00:
08:
15:
00:
08:
15
只抓取tcp报文
只抓取udp报文
只抓取198.120.0.100的报文
只抓取指定MAC地址的报文
1.3.2设置显示过滤条件
打开一个抓包文件后,可以在工具栏上的
filter
栏设置显示过滤条件,这里的语法与
CaptureFilter
有点差别,
举例如下。
tcp
udp
ip.addr==198.120.0.100
eth.addr==00:
08:
15:
00:
08:
15
只抓取tcp报文
只抓取udp报文
只抓取198.120.0.100的报文
只抓取指定MAC地址的报文
还可以在报文上点击右键选择
applyasfilter
等创建一个过滤条件,比较方便。
1.3.3判别网络状况
输入显示过滤条件tcp.analysis.flags,可以显示丢失、重发等异常情况相关的
率可以作为评估网络状况的一个标尺。
常见的异常类型有以下几个
TCP报文,此类报文的出现频
[TCPRetransmission]
[TCPDupACKxxx]
[TCPPrevioussegmentlost]
[TCPOut-Of-Order]
由于没有及时收到
重复的ACK报文
前一帧报文丢失
TCP的帧顺序错误
ACK
报文而产生的重传报文
偶尔出现属于正常现象,完全不出现说明网络状态上佳。
监视TCP连接建立与中断
输入显示过滤条件,tcp.flags.syn==1||tcp.flags.fin==1||tcp.flags.reset==1
SYN是TCP建立的第一步,FIN是TCP连接正常关断的标志,RST是TCP连接强制关断的标志
(2)统计心跳报文有无丢失
在statistics->conversations里选择UDP,可以看到所有装置的UDP报文统计。
一般情况下,相同型号装置
的UDP报文的数量应该相等,最多相差1到2个,如果个别装置数量异常,则可能是有心跳报文丢失,可以以该装置的地址为过滤条件进行进一步查找。
调试61850的站,最好要家里带上一个HUB(库房一般是8口10M抓数据包,便于查问题。
没有HUB根本没有办法查看远动与装置的是归档里面的61850的报文监视工具。
如下:
的TP-LINK)---不是交换机。
主要用于mms报文以及goose数据包。
抓报工具
打开抓报工具,点击左侧第二个按钮开始设置:
选择本计算机网卡,地址就是本地连接里面设置的IP地址:
设置要监视的装置的IP地址:
格式为host198.120.0.72。
点击browse按钮设置存储文件名及路径:
设置长期抓包存储,选中
,按抓包大小存贮(
m代表
MB,可以是
KB
或者
GB)
;按时间存储如下图:
把这个选项勾上就可以实时显示数据,便于查找问题。
点击“start”按钮开始抓包。
5、MMS报文简析
注:
报文取自培训资料包中的
应子系统配置文件为ied1.ini。
associate-setting和
file
报文文件,报文对应的模型文件为
csc1710.cid,对
5.1初始化相关
5.1.1初始化Initiate
是client端与IED建立连接的初始报文。
Client初始化请求Request
1.
报文时间显示格式可在
view->Timedisplayformat中设置为绝对时间和相对时间(从运行报文软件开始
经过的时间)
2.
Source为源端既报文发起方的
IP地址,Destination为终端既报文接收方的
IP地址
装置的应答Response
5.1.2读取控制模式:
Read
子系统在初始化时,检查
的数据,对应于iedxx.ini
IED中的
是否配置有控制数据,包括复归、压板、开关控制等,也就是模型中
CTL行。
如果有控制数据,子系统需要读取每路控制的控制模式,模型中为
FC=CO
ctlModel
的数据。
子系统对复归控制
ctlModel
默认为
1,既直接控制,压板开关
ctlModel
默认为
4,既带预
置令的控制模式。
CTLCSC1034LD0LLN0.CO.LEDRs
SPC
1(默认ctlModel
为1)
2
0
0
2230
2230
null
CTLCSC1034LD0LLN0.CO.PdifEna
SPC
4(默认ctlModel
为4)
2
0
0
2231
2231
null
CTLCSC1034LD0LLN0.CO.Pdis1Ena
SPC
4(默认ctlModel
为4)
2
0
0
2232
2232
null
IEDresponse
5.1.3读取数据集成员:
GetNamedVariableListAttributes
子系统在初始化时,会读取每个IED
的数据集所包含的成员,此时
IED返回的成员是运行时数据集包
含的成员。
必须与IED提供的静态模型文件
icd完全一致,子系统才能在以后收到报告数据时正确解析。
但
由于各种原因,有时两者并不一致。
因此子系统在初始化时先验证数据集成员运行时与静态模型是否一致,
如果不一致,则子系统不再继续进行连接。
子系统是根据
iedxxx.ini中配置的PollingDataSet数据集段逐个
读取每个数据集的成员信息的。
#PollingDataSet
#Tag
dom
dsName
poll
tPoll(s)
DSA
CSC1032LD0
LLN0.dsAlarm
NO
20
DSA
CSC1032LD0
LLN0.dsRelayEna
NO
20
主要是比对数据集包含的
FCDA
个数和
FCDA
名字是否相同。
静态数据集成员已由
V2
配置工具倒出到
iedxxx.ini
文件的
DAT
行,每个
FCDA
对应一个
DAT
行。
Clientrequest
IEDresponse
5.1.4读取数据类型GetVariableAccessAtributes
子系统在验证了数据集成员FCDA的正确性后,还需要读取每个到DO级别的FCDA包含的下级DA
及每个DA的数据类型,用于后续报文解析。
Clientrequest
IEDresponse
5.2报告相关
5.2.1读取报告使能状态
子系统会根据iedxx.ini文件中配置的报告控制块,逐一进行初始化,包括下列操作:
#ReportControl
#Tag
dom
dsName
ref
RptID
OptFlds
TrgOpsIntgPd(ms)
RCB
BSPDC2MONITORLLN0.dsMonSLLN0.RP.urcbMonS
MONITOR/LLN0$RP$MonS
7F80
44
30000
报文信息与iedxx.ini配置信息的对应关系如下:
报文信息iedxx.ini配置信息
DomainName:
dom
ItemName:
ref+报告实例号,但
ref
中的’.’分隔符变为
’$’,报文中用
’$’分隔符,报告实例号在
csssys.ini中RCB行设置:
#tagfstInstmdNetShareenOnlyEnableenFstDisablemaxRcbInstenMustAssignenPurgeBRCB
RCB71011600
5.2.2读取RptID
5.2.3读取报告对应的数据集
5.2.4RptEna置为false
有在RptEna为false的情况下,才能设置报告控制块的属性。
装置回写成功
5.2.5设置报告触发条件TrgOps
子系统对于状态类报告,默认触发选项为
(010001)2,即数据变化和总召,对于模拟量类的报告,默认触发选
项为(010011)2,即数据变化、周期和总召。
默认触发选项在
csssys.ini中的RPT行TrgOps设置44。
44为16
进制数据,对应2进制为(01000100),报文
中规定取高6位,即状态类报告默认触发选项为
(010001)2。
#tag
enRptIDTrgOpsOptFldsIntgPdenDA4QuatoAutoCtlresv3resv4resv5
RPT
0
44
7900
30000
0
500
0
0
0
TrgOps各位含义,bit0对应报文中左数第一位
5.2.5设置报告上送数据域OptFlds
默认触发选项为
(7900)16。
0111100100。
每位的含义见下面的表
12。
要求
IED
上送的报告中,数据分别为报
告序号、报告生成时间、报告上送
原因(本次报告中包含数据集中的哪些数据)
、数据集名称、条目号(
IED
端累计的
报告序号)。
#tag
enRptID
TrgOps
OptFlds
IntgPd
enDA4Qua
toAutoCtl
resv3
resv4
resv5
RPT
0
447900
30000
0
5000
0
0
OptFlds各位含义。
下表中第一条对应报文中左数第一位。
表12:
报告上送数据属性配置(
2个字节,16位,从高到低,第
0位保留)
0123456
70
12....十六进制表示(H)
说明
1
4000
序号
1
2000
报告生成的时标
1
1000
原因
1
0800
数据集名称
1
0400
数据集的路径
1
0200
缓冲溢出标志
1
0100
条目号
1
0080
配置号
5.2.6使能报告
client使能报告后,IED就开始根据报告触发条件上送报文了。
注意:
遥测量还要设置一个周期上送的时间,如下:
5.2.7发起总召
子系统与装置连接成功后,会对所有报告进行一次总召。
client写GI(
GeneralInterrogation
)的值为TRUE,
装置应上送整个报告对应的全部数据。
5.2.8上送总召报告
品质数据q的含义:
没有detailqual这一位,Bit12位闭锁状态,允许远方