61850 通讯服务是基于服务器/客户端的连接实现的,一些基本的模型和服务如下:
服务器(Server):读服务器目录(GetServerDirectory)
关联(Association):关联(Associate),放弃(Abort),释放(Release)
逻辑设备(Logical Device):读逻辑设备目录(GetLogicalDeviceDirectory)
逻辑节点(Logical Node):读逻辑节点目录(GetLogicalNodeDirectory),读所有数据值
(GetAllDataValues)
数据(Data):读数据值(GetDataValues),写数据值(SetDataValues),读数据目录
(GetDataDirectory),读数据定义(GetDataDefinition)
数据集(Data Set):读数据集值(GetDataSetValues),写数据集值(SetDataSetValues),
创建数据集(CreateDataSet),删除数据集(DeleteDataSet),读数据集目录
(GetDataSetDirectory)
定值组控制块(Setting Group Control Block):选择激活定值组(SelectActivateSG),
选择编辑定值组(SelectEditSG),写定值组值(SetSGValues),确认编辑定值组值
(ConfirmEditSGValues),读定值组值(GetSGValues),读定值控制块值(GetSGCBValues)
报告控制块(Report Control Block):报告(Report),读缓冲型报告控制块值
(GetBRCBValues),写缓冲型报告控制块值(SetBRCBValues),读非缓冲型报告控制块值
(GetURCBValues),写非缓冲型报告控制块值(SetURCBValues)
关于goose和log以及控制(control)的暂不例举。
我们以一台RCS-931BMV与客户端建立连接的过程举例,看下如何分析MMS报文。
1.了解模型:
icd结构:对于站控层的通讯,模型的访问点一般是S1,下面有逻辑设备(Logic Device)
PROT,再下面是各个逻辑节点(Logic Node)。
我们需要重点关注的是LN0这个LN,其下面有保护的各个数据集,定值、遥信、告警、
动作、遥测等,其中遥测是非缓存报告(UR),定值是特殊的值服务,其余的都是缓存报告(BR),
数据集的内容即是需要上送的信号。
对于缓存和非缓存报告,需要控制块(ReportControl)来设置其如何上送,包括名称、触
发选项、报告内容选项以及报告使能等,如何设置后面再介绍。
了解了模型之后,我们再从报文上看下如何建立连接。
2.初始化
我们可以看到客户端提了一个请求(request)initiate,服务器作了一个响应(response)
并说明了所支持的服务:
3.读取服务
读域对象
客户端会把所连接的服务器模型每个数据集的实例都读取一遍,同时服务器给予响应;
读命名变量列表属性(GetNamedVariableListAttributes)
读取该列表下的每个对象,即数据集的每个对象;
读变量访问属性(GetVariableAccessAttribute)
包括stVal、q、t等属性的值。
4.写服务
在成功读取模型的各个值之后,客户端会对一些数据集下的控制块的通用数据(Common
Data)写值以实现服务的连接,其中缓冲型报告控制块(Buffered Report Control Block)
一些常用的CD如下:
报告标识(RptID):报告控制块的ID号
报告使能(RptEna):报告控制块使能,当客户端访问服务器时,首先要将报告控制块使能
置1才能进行将数据集内容的上送,同一个IP只能使用一个客户端
数据集(DatSet):报告控制块所对应的数据集
配置版本(ConfRev):默认为1
选择区域(OptFlds):共有10位,分别表示如下的状态,只有对应位置1,报告中才有该项
内容,比如entryID置1,则在后续报文中,客户端将继续写entryID的值,否则将不会。
位
0
1
2
3
4
5
6
7
8
9
BRC值
保留(Reserved)
序列号(sequencenumber)
告时间戳(reporttime-stamp)
包含原因(reason-forinclusion)
数据集名称(data-setname)
数据索引(data reference)
缓冲区溢出(buffer overflow)
入口标识(entryID)
配置版本(conf-rev)
分段(Segmentation)
缓冲区时间(BufTm):默认为0
顺序编号(SqNum):报告使能从FALSE到TRUE的变化将引起序列号置为0.
触发选择(TrgOps):共六位,分别表示如下状态,对应位置1则表示该条件可使报文上送
位
0
1
2
3
4
5
触发条件
保留
值变化
质量更新
值更新
周期性上送
总召唤
完整性周期(IntgPd):周期上送时间
总召唤(GI):置1则BRCB启动总召唤过程
清除缓冲区(PurgeBuf):置1时舍弃缓存报告
入口标识(EntryID):一个八位组位串(OCTET STRING),当数据集值有变化时逐次累加
写OptFlds
写TrgOps
写IntgPd
写EntryID
写RptEna
至上则一个基本的连接便建立了。需要注意的是,OptFlds、TrgOps、IntgPd、EntryID这些
量只有在RptEna为False时才能写,一旦实例被使能之后就不可再写上述变量。