快速适配DLMS/COSEM对象的脚本化编码方法与流程

文档序号:14043702阅读:542来源:国知局

本发明涉及一种快速适配dlms/cosem对象的脚本化编码方法,可用于实现dlms/cosem对象的快速编程适配。



背景技术:

随着人类社会的发展和科技的进步,对于高效利用电力资源的诉求越来越高,同时对于电能计量设备-电能表,也提出了越来越多的功能需求,例如需量分析、电能质量分析、防窃电检测、历史数据等等。更多集成的功能带来了更大的数据量,使电能表极度依赖于通信能力。

dlms(devicelanguagemessagespecification)作为一种国际通用的电能表通信协议,规定了电能表通信过程中的分层(物理层、链路层、应用层)以及各个层的实现方法,其应用层模型cosem(companionspecificationforenergymetering)则规定了具体的应用处理过程中所使用的规则。

cosem通过使用对象建模技术实现了电能表的数据交换过程,接口类、obis(objectidentificationsystem)编码是cosem的基本组成元素。

由于dlms/cosem协议的开放性,dlms/cosem只规定了一些基本数据的接口类和obis,例如电压、电流、功率、电能,而电能表正常运行还需要很多参数与功能,比如负荷曲线、事件记录曲线、电能表清零功能、电能表校表功能等,对于这些参数和功能,dlms/cosem都没有详细规定,需要实际用户自行定义。而不同用户对于自定义内容的访问权限、接口类、obis编码乃至数据类型差异很大。

针对上述应用场合,目前比较通用的做法是使用一张obis数据表格来处理相同的功能对应不同的obis的情况,对于相同的功能,如果obis不同,则仅仅需要修改obis数据表格中对应的obis编码。但是,这种方法无法处理访问权限、接口类、数据类型不同的情况。

由于访问权限、接口类、obis、数据类型的差异,为实现相同的功能,电能表的代码需要做比较大的更改才能够适配不同的用户需求。这种差异性引起的代码更改滞后了电能表产品更新的速度,同时也影响了生产效率。



技术实现要素:

本发明提出了一种快速适配dlms/cosem对象的脚本化编码方法,其目的是:保证在访问权限、接口类、obis、数据类型都存在较大差异的情况下,仅需要修改很少一部分脚本编码,就可以快速适配dlms/cosem对象内容。

一种快速适配dlms/cosem对象的脚本化编码方法,将连续的obis码归并至一条obis描述符,将多条obis描述符汇总为obis描述符总表;

并且,为每一条obis描述符建立对应的权限描述符,将权限描述符汇总为权限描述符总表;

并且,为每一条权限描述符建立对应的函数描述符,将函数描述符汇总为函数描述符总表;

将obis描述符总表、权限描述符总表和函数描述符总表连接成脚本表,脚本表中的每一条记录包括obis描述符、与该obis描述符对应的权限描述符以及与该权限描述符对应的函数描述符。

作为本方法的进一步改进:所述obis描述符包括基本obis码、obis通配位置和obis通配数据;

所述obis通配位置用于表示基本obis码中通配的位置,所述obis通配数据用于表示基本obis码中由obis通配位置所指向的位置要通配至的数据。

作为本方法的进一步改进:obis通配位置最多指向2个被通配的位置。

作为本方法的进一步改进:所述权限描述符包括classid、属性权限部分和方法权限部分;

所述classid为该条权限描述符所属的dlms/cosem类的id序号,所述属性权限部分包括若干与该dlms/cosem类的各属性一一对应的属性权限值,所述方法权限部分包括若干与该dlms/cosem类的各方法一一对应的方法权限值。

作为本方法的进一步改进:所述属性权限值的取值方式为:从“只读”、“只写”、“读写”和“无权限”中选择一项。

作为本方法的进一步改进:所述方法权限值的取值方式为:从“有权限”和“无权限”中选择一项。

作为本方法的进一步改进:所述函数描述符包括若干与该条函数描述符所属的dlms/cosem类的各属性一一对应的属性子描述符及若干与该条函数描述符所属的dlms/cosem类的各方法一一对应的方法子描述符;

所述子描述符包括函数索引、返回值参数和通配符参数;

所述函数索引用于查找该子描述符对应的功能函数,所述返回值参数用于将返回值信息传递给功能函数、指定返回值的数据类型,所述通配符参数用于将通配符信息传递给功能函数;

所述的功能函数是指实现对应的属性或方法功能的函数。

作为本方法的进一步改进:所述返回值参数从下列数据类型中选择一项:“布尔类型数据”、“位流类型数据”、“有符号4字节长度的整型数据”、“无符号4字节长度的整型数据”、“8位字节字符串”、“ascii编码类型字符串”、“bcd编码类型数据”、“有符号1字节长度的整型数据”、“有符号2字节长度的整型数据”、“无符号1字节长度的整型数据”、“无符号2字节长度的整型数据”、“有符号8字节长度的整型数据”、“无符号8字节长度的整型数据”以及“枚举型数据”。

作为本方法的进一步改进:所述obis描述符包括obis通配数据,所述的通配符参数与对应的obis通配数据相同。

相对于现有技术,本发明具有以下积极效果:(1)本发明设计了一种脚本化编码结构,利用这种编码结构可以更清晰地管理dlms/cosem的接口类、访问权限、obis以及数据类型;(2)该脚本化编码结构能够保证在访问权限、接口类、obis、数据类型都存在较大差异的情况下,仅需要修改很少一部分脚本编码,就可以快速适配dlms/cosem对象内容,大大提高了开发与生产的效率;(3)该脚本化编码结构将dlms/cosem接口类的功能细分,以接口类的属性功能为最小单位,取代了传统方法中以接口类为最小单位的设计模式,能够更灵活地适配多变的自定义需求。

附图说明

图1是本发明的脚本表结构示意图。

图2是obis描述符示例图。

具体实施方式

下面结合附图详细说明本发明的技术方案:

一种快速适配dlms/cosem对象的脚本化编码方法,按如下步骤进行:

步骤1,将连续的obis码归并至一条obis描述符,将多条obis描述符汇总为obis描述符总表;

所述obis描述符包括基本obis码、obis通配位置和obis通配数据;

obis(objectidentificationsystem)对象标识系统,是一个由6个数码组构成的组合编码,它以分层的形式描述了每个数据项的准确含义,obis码由a、b、c、d、e、f共6个数值组成,因此所述基本obis码由6个字节的数据组成,为oaobocodoeof;假设基本obis码为1.0.1.8.0.255,则oa=1,ob=0,oc=1,od=8,oe=0,of=255。

所述obis通配位置用于表示基本obis码中通配的位置,由一个字节的数据组成,令p表示obis通配位置,其bit0-bit5分别代表了基本obis码a、b、c、d、e、f的位置,bit0-bit5的某一位设置为1,表示该位数据被通配。为简化逻辑,本发明最多支持两位数据的通配,即bit0-bit5中最多有两位可同时设置为1。假设p=(20)d=(14)h=(00010100)b,其中(·)d表示括号中的数值为十进制,(·)h表示括号中的数值为十六进制,(·)b表示括号中的数值为二进制,可见bit2和bit4为1,表示位置c和e被通配。

所述obis通配数据用于表示基本obis码中由obis通配位置所指向的位置要通配至的数据,由两个字节的数据组成,令d0d1表示obis通配数据的两个数字,与obis通配位置一一对应,表示基本obis码相应位置的数据,通配至d0d1表示的数字。若p=0,则d0d1无效;若p只有一位有效,则只有d0有效;若p有两位有效,则d0d1均有效。假设d0d1数据分别为3、4,联系前文中基本obis码为1.0.1.8.0.255,p=(20)d=(14)h=(00010100)b,如图2,则该条obis描述符可以表示为:

共15条obis。

一般地,以n,n=1,2,3,…,n表示第n条obis描述符,则该条描述符可以表示为:

将所有的obis描述符根据序号排列,获得obis描述符总表为:

步骤2,为每一条obis描述符建立对应的权限描述符,将权限描述符汇总为权限描述符总表;

所述权限描述符包括classid、属性(attribute)权限部分和方法(method)权限部分;

所述classid为该条权限描述符所属的dlms/cosem类的id序号,以字母cid表示,所述属性权限部分包括若干与该dlms/cosem类的各属性一一对应的属性权限值,所述方法权限部分包括若干与该dlms/cosem类的各方法一一对应的方法权限值。

所述属性权限值的取值方式为:从“只读”、“只写”、“读写”和“无权限”中选择一项。所述方法权限值的取值方式为:从“有权限”和“无权限”中选择一项。

假设该dlms/cosem类分别有i个属性,j个方法,以atti表示第i个属性的属性权限值,以methj表示第j个方法的方法权限值,其中i=1,2,3,…,i,j=1,2,3,…,j。一条完整的权限描述符可以表示为:

cidatt1att2…attimeth1meth2…methj。

以n,n=1,2,3,…,n表示第n条权限描述符,则该条描述符可以表示为:

将所有的权限描述符根据序号排列,得到权限描述符总表:

步骤3,为每一条权限描述符建立对应的函数描述符,将函数描述符汇总为函数描述符总表;

所述函数描述符包括若干与该条函数描述符所属的dlms/cosem类的各属性一一对应的属性子描述符及若干与该条函数描述符所属的dlms/cosem类的各方法一一对应的方法子描述符;

所述子描述符包括函数索引index、返回值参数r和通配符参数w0w1;即一条子描述符可以表示为:

indexrw0w1。

所述函数索引用于查找该子描述符对应的功能函数。所述的功能函数是指实现对应的属性或方法功能的函数,由程序代码实现,在函数描述符中无需对其进行表述。

所述返回值参数用于将返回值信息传递给功能函数、指定返回值的数据类型。举例说明:对于电能表,obis为1.0.1.8.0.255的对象通常用于表示正向有功总电能,但是由于dlms/cosem为一种描述性质的编码,电表在接收到读取正向有功总电能的报文后,应答报文中必须指定返回数据的类型,不同的用户要求的返回数据类型可能为无符号整型、有符号整型或者其它类型,这就需要向功能函数传递返回值信息。所述返回值参数从下列数据类型中选择一项:“布尔类型数据”、“位流类型数据”、“有符号4字节长度的整型数据”、“无符号4字节长度的整型数据”、“8位字节字符串”、“ascii编码类型字符串”、“bcd编码类型数据”、“有符号1字节长度的整型数据”、“有符号2字节长度的整型数据”、“无符号1字节长度的整型数据”、“无符号2字节长度的整型数据”、“有符号8字节长度的整型数据”、“无符号8字节长度的整型数据”以及“枚举型数据”。

所述通配符参数用于将通配符信息传递给功能函数,所述的通配符参数与对应的obis通配数据相同:

w0=d0

w1=d1。

因此,第i条属性权限值对应的属性子描述符可以表示为:

第j条方法权限值对应的方法子描述符可以表示为:

以n,n=1,2,3,…,n表示第n条权限描述符,其包含i个属性,j个方法,则该条权限描述符对应的函数描述符可以表示为:

将上述得到的函数描述符根据序号排列,得到函数描述符总表:

步骤4,将obis描述符总表、权限描述符总表和函数描述符总表连接成脚本表,脚本表中的每一条记录包括obis描述符、与该obis描述符对应的权限描述符以及与该权限描述符对应的函数描述符。

以n,n=1,2,3,…,n表示第n条脚本编码,则该条脚本编码可以表示为:

如图1,将上述得到的函数描述符根据序号排列,得到函数描述符总表:

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1