国产61850(CMS)协议与国际61850(MMS)协议有什么区别?

作者:领祺 日期:2023-02-03 阅读量:


国网新制定的国产61850(CMS)协议,又称为国网国产可控GSP协议(也叫CMS,MMS替代协议)采用的编解码规则是PER编码规则。国内可选择的IEC61850协议栈主要有三大协议栈,分别是:美国MMS-EASE Lite中国YX-PIS德国libIEC61850MMS-EASE Lite软件在中国只有少数合法代理商,其他企业销售均存在知识产权风险,开发IEC61850产品直接使用MMS-EASE Lite还需要很多IEC61850功能实现的开发工作要做,要求开发人员很熟悉IEC61850细节。MMS-EASE Lite移植性良好,编码规范因为是上个世纪的产品,这方面存在明显不足。

国网国产可控61850(CMS) GSP协议/61850替代MMS协议出台背景:

EC61850 ACSI映射MMS协议的方法,存在以下问题

一、MMS协议复杂,实现难度大,对资源要求高,不是电力最优通信协议方案。

二、MMS协议不属于国家标准。不利于国网自主技术安全

三、MMS协议底层需要购买昂贵版权费的核心动态库mmslite,国内厂商需要额外成本也有漏洞后门安全隐患或版权风险。

四、MMS协议本身架构冗余,通信效率低。

MMS(Manufacture Message Specification)是制造报文规范,本身是很优秀的规范,这一点是不能否认的,但是用在IEC61850就很牵强,MMS其场景和性能要求和电力的也不适应,更有诸多弊端。IEC61850的变量类型和MMS不一致,需要一一转换,有些转换的也非常牵强,比如IEC61850里的质量类型,MMS中是不存在的

IEC61850国际MMS协议BER编码规则每个数据类型都有一个T(tag),然后是编码L(后续直接的长度),最后是编码实际的数据值。编码出来字节流有冗余,报文字节数多,编码效率不高。本来可以一位表示的数据,采用T,L,V结构至少3个字节。PER编解码采用的紧缩型对齐的编码方式,采用的是P,L,V格式编码效率高,报文相对于BER编码字节数少,编码效率提高30%以上。缺点是程序实现比较复杂,涉及移位操作字节对齐逻辑。

国网的替代规范IEC61850 CMS名为GSPGeneral Service Protocol通用服务协议),IEC61850采用GSP有以下优点:

1、无需对象模型映射

所有引用可直接采用的IEC61850的引用,大大减少了对象映射的问题;

2、服务接口一一对应

所有ACSI的服务接口都有一一对应GSP服务接口,请求和应答参数一致,每个服务有专门的服务编码,直接针对性的解析,不像MMS解析报文后还需向IEC61850模型映射,对服务进行识别及对变量进行识别的过程;

3、数据变量一致

GSP的变量类型与IEC61850存在差异非常小,几乎可以做到一一对应,这样大幅度减少了类型变化的工作量和出错风险;

4、节约网络流量

采用PER编码,对网络传输的报文进行了压缩,节约了网路流量,提高传输效率;

YX-PIS IEC61850协议栈产品,是在国际上已经获得高度认可的PIS-10的国产化版本,YX-PIS包含对ICE61850/DLT860的完整支持,并且支持当前国网即将推行的MMS替代协议GSP

YX-PIS高度继承了PIS-10的优点,高度智能化的使用方式,几乎完全不需要开发者考虑IEC61850的实现,只需要关心自身业务层面的开发即可。YX-PISMMS版及GSP版两者使用方式和业务接口完全相同,开发者替换无需更改原有业务层代码。

YX-PIS为了简化使用者的使用,支持从CID解析到创建对应的IEC61850在线模型,包括网络关联模型、数据模型、服务模型以及完全符合IEC61850规范的内部运行机制。整个过程全部实现智能化。使用者需要运行什么样的模型,只需要在CID中建立好模型,通过协议栈加载后即可使用。

YX-PIS提供了良好的数据映射机制,开发者只需要处理简单的调用和回调即可

YX-PIS既可以以源码形式提供,也可以以LIB形式提供。

YX-PIS采用标准C编写,编码规范良好,移植性良好,尤其加强了对国产系统SylixOS、鸿蒙的支持。

易用性

YX-PIS的易用性非常好,只有一个样例,一看即会,可以解决所有场景,上手非常简单。

稳定性

稳定性良好,因为一直保持着售后支持,对用户缺陷、意见进行统一更改,经过多年的国内国际用户的使用,已经非常完善。

开发效率

开发效率是国际公认的开发效率最高的协议栈,开发量大幅度减少,缺陷问题及规范更新工作交给发行公司大连云行完成即可。


国产61850-CMS可控GSP数据格式PER编解码说明

1) 重复结构(Sequence OF Sequence

若命令的定义中出现数组结构,在结构体中要定义一个对应类型的数组,并用一个int xxxSize来表示组的长度。

2) 选择属性(Choice)

选择一种定义去编解码。如下图中,GetAllCBValue响应中的value字段,可能是brcb/urcb/lcb/sgcb/gocb/msvcb这六中定义的一种,先选择编解码定义再进行具体的编解码。

3) 可选属性(Optional

可选属性,如GetLogicalDeviceDirectory中的ldName,它可以存在也可以不存在,这种情况下使用一个int hasLdName来标记是否存在ldName这个成员变量。hasLdName=1时代表存在ldNamehasLdname0时代表不存在ldName这个变量。

编码顺序为:字段的个数,字段的类型,可选字段的存在情况,字段的值。

wps1.jpg

分享到: