多功能电能表通信协议栈的开发系统 【技术领域】
本发明涉及一种多功能电能表通信协议栈的开发系统。
背景技术
通信协议是随着电表行业的发展而发展,从最初的抄读电量到现在抄读电量、需量、时时量、负荷曲线、事件记录、报警信息等。以后还有事件上报、程序自检、客户查询、程序升级等等功能,客户的需求越来越丰富,然而现有电表通信协议的架构滞后于客户需求的发展(见图5),从图5可见其数据处理方式上按交互方式分开,各自为战并未有效统一。没有仪表对象管理模块,客户条件的变化需要通过大量程序修改体现。通信的协议处理上是一个.C文件处理到底,没有有效的模块化,只有应用进程,不利于多协议的并存开发。其应用进程包揽了所有任务,即处理编解码又处理访问数据和调度,并且没有对象管理,程序中使用大量switch语句或条件语句枚举所有对象并对对象进行数据访问,难以满足日益丰富的客户需求。客户条件的变化使得程序员维护程序时非常困难导致协议扩展或者改变引起的软件维护成本很高。在数据处理上通信、显示、事件、计量是各自独立的访问数据,写通信的程序员会书写一份数据访问函数,写显示的程序也写一份数据访问函数,做事件处理的程序员也写一份数据访问函数,如此导致大量的单片机资源被浪费,代码功能的重复书写、可维护性很低,增加了访问出错率、程序容量和调试成本。因此如何降低维护成本,满足各种不同的客户需求、不同的平台移植,是目前亟待解决的问题。
【发明内容】
本发明的目的在于提供一种能有效降低维护成本、满足客户日益丰富的需求,能兼容不同协议的多功能电能表通信协议栈的开发系统。
本发明多功能电能表通信协议开发系统,包括通信协议栈和应用数据处理单元,所述通信协议栈具有用于识别和调用不同具体协议的三层框架和具体协议三层模块,所述三层框架由物理层、链路层、应用层组成,所述具体协议三层模块是将所有的具体协议都划分成的物理层模块、链路层模块、应用层模块,所述应用数据单元包括数据处理库及对象管理模块,数据处理库中建有函数库,该函数库基于对象管理的存储结构建立,所述对象管理模块对对象采用列表的方式管理,数据处理库为通信、显示、事件、计量等各种访问提供统一的数据处理接口。
所述三层框架的物理层嵌入具体协议三层模块的物理层处理函数,三层框架的链路层嵌入具体协议三层模块的链路层模块处理函数,三层框架的应用层嵌入具体协议三层模块的应用层模块处理函数,通过模式字控制调用的协议种类和具体调用函数。所述对象管理模块采用树型建模方式按数据标识建树,由上位机软件生成对象管理的.C文件,文件的主体包括对象树结构和对象对应的存储结构,每一棵树的叶子对应一个具体的存储结构,存储结构包括对象、权限管理、存储位置、存储格式、访问函数。所述数据处理库的函数库由基本函数库和扩展函数库两部分组成。本发明系统还具有底层函数接口模块,用于通过所述三层框架的物理层实现不同硬件平台上的移植。
本发明系统,由于构建了用于调度多个具体协议的三层框架,并且无论哪种具体协议都划成与之对应的三层模块,这样便于每一部分的移值,并且可以很好的兼容其他协议。在应用数据处理单元部分,提出对象管理模块,对对象统一管理。数据处理库是基于对象管理的访问实现。并给出和底层的交互接口,便于平台改变移植。因此本发明系统能对各种交互方式进行数据统一访问、减少程序空间资源开销,减少不同程序员书写导致的兼容性错误,能实现多协议的管理,有利于多协议的并存开发,方便增、减、修改,有效降低了电表通信程序维护的成本,很好地满足了客户的不同需求及实现平台的改变移植。
【附图说明】
图1是本发明系统的结构示意框图。
图2本发明系统中协议栈的结构示意图。
图3是本发明系统中函数库的结构示意图。
图4是本发明系统中对象模块的结构示意图。
图5是现有技术系统的结构示意图。
【具体实施方式】
图1反映了本发明系统的结构,图中可以看出本发明系统主要由应用数据处理单元和通信协议栈组成,交互方式和底层接口是系统与外围的联系。应用数据处理单元由数据处理库和对象管理两部分组成。此系统与外围的交互方式丰富,不但可以应用于通信,还应用于显示和事件记录等其他。系统数据访问需要调用底层接口。接口部分根据硬件平台不同而不同。
图2反映了通信协议栈地具体构成,该协议栈具有用于识别和调用具体协议的三层框架和具体协议三层模块,三层框架是图左半边的物理层,链路层和应用层。具体协议三层模块是将所有的具体协议都划分成的物理层模块、链路层模块、应用层模块。
图3是应用数据处理单元部分的数据处理库组成,其构成方式由基本函数库和扩展函数库组成。基本函数库的调用是基于对象管理中的数据存储结构。其函数主体不会根据协议不同而改变。扩展函数库是根据客户需要和协议不同扩展出的函数库。
图4是应用数据处理单元部分的对象管理框图。包括对象建模和对象存储结构两部分。对象建模根据协议的不同可以有所不同,本系统实例的DLT645-2007协议是树形建模管理。对象存储结构内容固定包括权限管理、存储位置、存储格式、访问函数4部分组成。
下面以通信协议DL/T645-2007的实施为例对本发明做详细介绍:
首先设计物理层、链路层、应用层三层框架,建立格式为PH.C,PH.H;,DL.C,D L.H;AP.C,AP.H文件。这些文件是用于多协议并存的总的调度接口,具有框架性质,一旦设计完成,后续维护无需重新继续。其实现方式是定义一个消息机制的模式字和一个协议模式字。消息机制模式字中包含有物理层解码、编码标志;链路层解码、编码标志;应用层的解码、编码标志;应用进程的执行操作标志。协议模式字中包含各种不同协议的标志,如DL645-1997,DL645-2007,mudbus,IEC62056协议等。消息机制模式字是用于三层行为交互,协议模式字用于协议模块的选择。当物理层编码或解码标志有效时,程序开始调度具体协议的物理层模块,根据查找协议模式字决定执行的那种协议的物理层,如果有多个协议并存,则顺序执行所有协议的物理层,执行完毕后设置相应的链路层消息模式字已备链路层执行时判断。链路层和应用层执行方式雷同。
2、设计具体协议三层模块,即将所有通信协议都设计成具有物理层模块、链路层模块、应用层模块的三层模块形式,设计DL/T645-2007的三层模块就是:
PH_645_2007.C,PH_645_2007.H;
DL_645_2007.C,DL_645_2007.H;
AP_645_2007.C,AP_645_2007.H。
这些文件分别设计各自层的编解码函数。
3、设计应用数据处理单元中的对象管理,例如DL/T645-2007通信协议的仪表对象OBIS.C文件。对于这个对象管理可以采用各种存储建模方式:树型建模、无序列表、有序列表、堆栈结构等。每一个数据对象必须包含自身的数据存储结构,这个数据存储结构用于存储访问的信息。其内容包括:权限管理,存储位置,存储格式,访问函数。
对象权限管理。包括通信权限,显示权限,密码等级要求,是否铅封等。
存储位置,指对象存储的地址。存储格式,包括单位和尺度。
访问函数:包括写前检查函数,写后执行函数,读取调用函数。
所有对象存储结构的统一性是保证数据处理函数的统一性。
4、设计应用数据处理单元。应用数据单元包括数据处理库及对象管理模块
先设计对象管理模块。以对象数据标识建树方式管理对象,然后是设计每个叶子对应的存储结构。
然后根据设计的存储结构结合实现的功能,设计数据处理库,建立函数库一旦数据处理库设计成功,以后基本不需要更改只需要添加功能扩展。如果实现多个协议,则设计多个对象管理。但设计的带有基本函数库的数据处理库不变,只需添加功能扩展函数。
设计统一的数据处理接口,为通信、显示、事件、计量等各种访问提供统一的数据处理接口。不同的协议数据处理接口函数不一样,这些函数库组成DATAACCESS.C文件。下面提供DL/T645-2007协议的部分数据接口函数。基本的数据处理函数库必须包括如下几部分:
_FindServerRight查找服务对象的正确性。
_FindRi ght;查找读取操作的权限允许。
_ReadData();读取数据。DLT645-2007协议ReadData函数由2大操作组成,第一是简单操作读取,也就是非块操作读取第二是块操作读取,块操作读取可看出是对简单操作读取的重复循环操作。
包括子函数:ReadData_single()//读取单一数据、ReadData_Block()//读取块操作数据
写函数库包括:
_WriteData()//写数据
_WriteEvent()//写事件
_WriteFuHe()//写负荷曲线
DataChange()数据转换函数。根据访问方式要求不同,将读取的数据进行转换。例如通信访问时需要倒压缩BCD格式,显示和事件记录时需要HEX数据格式。
本发明的通信协议栈和应用数据处理单元可以并行开发。
按照上述的设计方式,本发明能实现多协议的管理,方便增、减、修改,有效降低了电表通信程序维护的成本,很好地满足了客户的不同需求及实现平台的改变移植。