智能电能表面向对象通信协议设计
2018-07-30郜波姜洪浪王晓东段晓萌王爽赵婷
郜波,姜洪浪,王晓东,段晓萌,王爽,赵婷
(中国电力科学研究院计量研究所,北京 100192)
0 引 言
随着电子信息技术发展,人工抄表逐步被以智能仪表、现代通信技术为基础的各类远程采集系统所取代。基于电子技术设计的电能表已成为快速发展的电能计量仪表,它比机械式电能表更易达到高精度等级,可赋予更多的功能。随着国内各种新电力政策的逐步推行,电力部门开始推行分时、分费率等灵活电价政策,传统的机械表在实现这些功能上较为困难,需要大量的后期工作,浪费大量人力物力,所以机械表如今已经不能满足日新月异的电力能源计量和管理需求。
在国内用电市场需求以及电力政策和业务的指引下,结合新的数字技术,微电子技术和通信技术,电能表未来将朝着自动化、多功能化、模块化等方向发展。目前,智能电能表因其高精度、多功能以及远程通信等优点,在用电信息采集系统中得到广泛应用。
自2009年国家电网公司电能表企业系列标准制定以来,智能电能表在通信方式上做了明确规定,即各类通信方式均需遵循DL/T 645-2007协议及其备案文件,而采集主站的通讯方式则遵循DL/T 698.41-2010协议。因此,用电信息采集系统在进行数据采集时,会进行大量的数据转换操作,而制约了用电信息采集系统的工作效率[1-4]。因此,实现用电信息采集系统的通信协议的统一是提高其工作效率的关键因素。
另外,随着用电需求的增加,各省电力公司对智能电能表的功能进行扩展,使得电能表中产生很多基于DL/T 645的衍生版本。因此,即使将目前用电信息采集系统的通信协议进行统一,而其并不具备互操作性,也会在智能电能表以及主站等功能需求不断扩展的情况下再次变得不统一,同样会影响用电采集系统的工作效率。
因此,实现通信协议统一的同时,该协议必须具备互操作性,才能彻底解决用电信息采集系统工作效率问题。
1 面向对象思想
随着计量设备功能的增强,协议设计和实现逐渐变得复杂。通常是使用模块化的方法,把系统的功能分解成一些更容易操纵的模块。一般来说,模块化方法是将问题域分解成容易理解的小问题域,分解可以重复进行,直至达到满意的易理解的级别。其结果是得到了一组功能模块,每个模块都比较容易设计、理解、实现和维护。面向对象的模块化方法则更进一步,其中的功能模块被称为对象。他们是特定类的实例,并具有通用建模特性,如封装性、抽象性、继承性和复用性。封装指的是对象中封装一定的功能,这些功能只能通过他们事先定义的接口进行访问,因此从原则上讲对象实例增加不会带来兼容性问题。抽象性强调一个对象能提出比实际所封装功能更高级别的视图。继承性是设计者能从已经存在的类中直接定义新的实例或导出新的子类,且只需要详细说明其间的差异[5-6]。
面向对象方法最初作为科学研究的一种方法,后来在软件开发模式被提出和认知,如今其概念和应用已经超越了程序设计和软件开发,扩展到数据系统、协议构建、人工智能等领域。
对象与类是面向对象的两个最基本的概念。在模型构造中运用人类的自然思维方式,直接以事物为中心来思考问题、认识问题。传统的面向过程方法在处理相似任务的过程中存在大量的重复性定义和操作,导致先前已经形成的成熟经验与方法没能在后续工作中充分地加以利用。类之于对象的抽象封装即是为了解决复用等问题。一旦定义出类的属性与方法,同一类下的所有对象实例将完整继承类属性与类方法,实现了同一类下对象操作的复用。
面向对象方法并不是软件设计领域新创造的方法,而是人类认识世界过程中最普遍的方法。举一个简单的例子,可以将现实世界中的具体事物看做对象,比如:一辆轿车,一台相机,一张桌子等。当认识了一定数量的具体对象时,我们会发现某些对象个体有一定的相似性,例如小轿车,卡车,火车,马车等。人类的认识习惯会将这些相似的对象个体在大脑中不自觉地抽象出一个类的概念,比如上例中的各种对象可以抽象出一个车的类概念,总结出一些共用的属性,如车辆的长宽高尺寸,动力类型,用途等。而实际上并没有一个具体的事物可以代表所有的车类,“车”就是一个提升了的抽象概念,这就是类的抽象性。这种抽象的概念性总结形成了人类认识经验,之后我们再次遇到一个新的车个体时,会不自觉的依据抽象类的经验来认识这个新个体,也就是说我们可以轻松自然的判断一个未见过的新事物是不是车类中的一个对象,从而更快地去认识它。这样,车类的新增个体就不会是一个需要彻底重新理解的对象了。可以看出,面向对象确实是我们认识世界最普遍的模式。
2 面向对象协议
目前发展中国家的电力行业的自主协议几乎没有采用面向对象的模型构架。事实上我们已经看到现行表计协议在各地繁杂的拓展版本,面对电能计量设备的迅猛发展,现行自主协议构架将很难持续适应未来电力营销工作的新需求。
现行自主协议的出现标志着国内自主统一协议的从无到有,在用电信息采集事业发展初期的很长一段时间内很好的满足了设备信息交流的需要,具有里程碑式的意义,其重要性不容置疑。但事物的进步更替是不变的规律,用电信息采集的发展需要更加先进更具互操作性的协议支持。
目前国际上应用较为广泛的电能测量与负荷控制设备互操作性通信协议是IEC/TC13制定的一套国际标准体系IEC 62056。IEC 62056体系中的核心内容,包含设备语言报文规范(DLMS)和能量计量配套规范(COSEM)。DLMS/COSEM试图以一个标准满足市场中所有计量仪表与自动抄表AMR(Automatic Meter Reading)系统的应用要求,将兼容性、独立性、扩展性作为其实现目标。此协议不仅适用于电能计量仪表的数据采集,而且是为电、热、水、气统一制定的规范,支持多种通信介质,IEC 62056协议体系的兼容性和互操作性是迄今为止最为科学最为完善的计量仪表通信标准。
IEC 62056是一套严谨的标准,但在发展中国家没有超过30万的单一系统应用。原因主要是在发展中国家表计数量多且增长迅速,使用环境处于不断变化中,与IEC 62056当初制定时所面对的小规模环境有很大差别。
IEC 62056是基于主站与计量仪表直接通信模式制定的,在如国内分层抄表的架构下,主站并不与绝大多数仪表直接建立通信链路。面向对象模型的直接体现对象标识系统(IEC 62056-61)在最初的版本定义规则性很强,但因后续多次小范围局部修订和补充而变得逻辑复杂。组合型数据在IEC 62056中的定义并没有充分地展现面向对象模型的特性,仍然被打补丁的采用平铺穷举式的定义,其中所包含的数据项不能灵活修改与读取,如需增加业务必须扩充协议。
综上所述,可以看出,未来电力计量设备新的通信协议需要具备以下的技术特性。首先要基于面向对象的模型构建,使协议从基因上可以具有较强的互理解性而作为互操作性的基础。要增强易维护性,避免频繁的协议修订,要适应未来计量设备及业务发展尽可能多的可能性。其次是接口类本身的数量和覆盖面要广,这就要求所有定义要具有较高的抽象高度。再次是每个接口类的属性与方法定义要全面,要具备发展的视角,考虑未来可能添加对象的属性和方法定义需求。更重要的是记录型数据的接口类的定义要具备适应一切已定义业务组合的能力,最大可能降低与具体数据组合模式的牵扯,从而业务的变化不再牵扯协议文本的修改。
下面本文将针对测量物理量、未知数据类型和量纲的面向对象建模举例。
3 面向对象建模举例
3.1 计量物理量面向对象建模举例
在电能计量中,具体业务包含种类繁多的计量物理量,一般协议的做法是为每一个量确定一个数据标识,这样的机制简单易实现,在用电信息采集业务开展的初期具有较大的优势。但是随着电力公司业务的拓展,业务量激增,所需要的物理量甚至超出数据标识所能表示的最大能力,导致协议和软件都要做较大修订。其实从这些物理量的计算方法看,其需要的基本参数非常少,主要包含电压值,电流值,时间(时刻,时间段)等,其共有的属性主要包含数值和单位。建模时把具有相似特征的物理量归为一个接口类,再用此接口类来定义若干对象,这些对象继承接口类的属性、方法。比如定义电能量接口类如表1所示[7]。
表1 电能量接口类的定义
表1说明如下:
(1)逻辑名相当于对象标识,静态(static)表示终端自身不能更改的属性,例如:配置参数;
(2)总及费率电能量数组表示电能数值,动态(dyn.)表示载有过程的属性,此属性是由终端自己刷新的;
(3)换算—倍数因子的指数,基数为10;例如1表示10,-1表示0.1,如数值不是数字的,则换算应被置0;如果有特殊需求,供货前买卖方可约定;
(4)单位—枚举类型定义物理单位;例如传33表示kWh;
(5)高精度总及各费率电能量数组仅要求高端表支持,这种表需要同时提供普通电能数据、高精度电能数据。
目前国网智能电能表中所有电能量数据都可以用这个类来定义对象获取,此模型不仅可以覆盖现有业务的需求,对于未来的新电能量需求,也可以用此类来定义对象实现。采用这种方法,把电能数据属性和方法组合为一个整体来看待,这样就能从更高的层次来进行系统建模,当有新电能量时,用此类来定义对象,该对象就继承了此类的属性、方法,通过类属性中的电能数值、换算、单位就可描述出该对象。
3.2 适应未知数据类型的对象建模举例
为了适应未来未知数据类型定义了数据变量接口类,本接口类定义的对象提供存储过程值或与过程值单元相关的状态值信息,定义见表2。
表2 数据变量接口类定义
表2中instance-specific表示数据类型依据“逻辑名”决定的对象实例而定义,这样如果未来有一新的数据对象,如果用其它接口类定义的不合适,可以用该接口类定义。例如协议中定义的如表3中的对象。
表3中接口类IC为6,正是数据变量接口类的类标识,表示这些对象由数据变量接口类定义,继承该类的属性、方法。而数据变量接口类的数据类型取决于其定义的对象实例,这样电网频率对象的数据类型就是表格中定义的“long-unsigned”,表内温度就是“long”,当前电价就是“double-long-unsigned”。
表3 继承变量接口类的对象
通过这种方法,未来再有其它数据对象,如果不适合用协议中的其它接口类描述,都可用数据变量接口类来描述,对于一些个别对象,如果其数据类型和其它对象数据类型不同,例如以上表格中的电网频率、表内温度、当前电价,也可用数据变量接口类来描述,从而避免协议中接口类过多,协议过于庞大[8-9]。
3.3 适应未知业务的对象建模举例
电能表做为法制计量器具,其基本功能就是计量,计量数据用于结算。为了实现结算,需要按照规定的时间间隔保存电能表内部的各类电量数据,例如每小时、每天、每月等,这就是电能表的冻结功能,冻结数据大都是与电费结算密切相关的数据,例如总电量、平时段电量、谷时段电量等。为满足此项业务,面向对象协议定义了冻结数据接口类,提供配置、存储冻结数据及其相关信息,定义见表4。
表格4部分说明如下:
(1)“冻结数据表”用于存储冻结数据(记录);
(2)“关联对象属性表”用于规定冻结记录所要冻结的若干个对象属性,这些对象属性的数据将被复制到冻结数据类对象的冻结记录中;
(3)“配置参数”用于配置冻结时间等参数。冻结类的数据存储,从概念上可以理解为一组二维数据表格的集合。二维表格的数量和表格的字段都是可以配置的。二维表格的数量由冻结类对象的属性3中配置的关联对象属性个数来确定;二维表格中的字段通过“关联对象属性表”中配置数据来确定,并且每个字段中的冻结周期值和存储的记录数可以不同。
“关联对象属性表”可以灵活配置,实现了协议的灵活性、扩展性,所有的电能量、远动等数据都可配置进来,这样如果未来业务发生改变,可以把需要冻结的数据配置到“关联对象属性表”中,定期在电能表内部存储起来,从而实现新的业务。另外冻结数据在需要时可通过专用软件对这些历史电能量数据进行调用,以便于进一步提供计量分析和服务[10]。
表4 冻结数据接口类定义
除冻结外,协议还定义了事件对象接口类,定义见表5。
表5 事件对象接口类定义
表5中“事件记录表”用于存储事件记录;“关联对象属性表”用于规定生成事件记录时所要关联的若干个对象属性,这些对象属性的数值将被复制到事件类对象的事件记录中。此处的“关联对象属性表”也可以灵活配置,这样就可以实现完善的事件记录功能,通过配置“关联对象属性表”,既可以在事件记录中实现常用的事件发生时间、电能量等数据的保存,也可以实现用户特定数据的保存,从而满足不同用户的需求,以及未来用户的千变万化的业务需求,在现场用电诊断、现场用电分析、防窃电等方面提供强有力的数据。
3.4 协议命令可灵活组织
智能电电能表是智能电网数据采集的重要基础设备,承担着原始电能数据采集、计量和传输的任务。面向对象协议不仅提供单一命令,还提供各种命令的组合。例如协议中读数据命令GET-Request提供以下几种方定义,见表6。
表6 GET-Request数据类型定义
表6中“GetRequestNormalList”提供一种方法,让主站可以灵活组织若干读取数据命令到一个命令中,只要是协议上支持读取数据命令都可以组织进来,这样原来一次只能读一个数据,读几十个数据需要几下次,现在可能只需要一次,极大提高抄读效率,如果通信条件好,则一次读取的数据可以更多。
除了读数据命令外,协议上其它命令例如设置数据等也提供类似丰富的命令,提高了协议互操作性,未来通信条件更好的情况下,也不用升级协议,只需要重新组织命令就可以提高抄收成功率,为智能电网提供高效的数据传输。
4 结束语
基于国内使用环境制定新的设备语言时,应考虑更改协议的基本构架模式,采用面向对象的思路,定义仪表的信息模型—对象模型,用标准化方式对消息内容进行格式化。这样,采集系统便能以相同的格式获取仪表数据,而与制造商和能源类型无关。这种面向对象的解决方案对于电力营销市场是必须的,它能更加灵活地处理当下繁杂的用户需求,此外,在计量仪表中有很重要的冻结数据、事件记录数据,而在面向对象协议中,为了适应不断发展的业务需求,冻结和事件记录保存哪些数据都可以通过配置来实现,也能适应一段时间内尚未明确的未来需求。