多功能电能表用dl/t645通信协议进行通信的方法

文档序号:7759986阅读:389来源:国知局
专利名称:多功能电能表用dl/t645通信协议进行通信的方法
技术领域
本发明涉及一种多功能电能表用DL/T645通信协议进行通信的方法。
背景技术
《多功能电能表通信规约》—DL/T 645包括DL/T 645-1997和DL/T 645-2007,在 实际运用中,规约中的通用读写命令在程序设计中往往用if一else语句和case语句来进 行命令的匹配判断和处理,这种模式从程序可维护性角度来讲有如下不足(1)几十几百 条的if一else或者case语句的嵌套,命令的查找和检查显得很繁杂;(2)每条命令中往 往涉及了变量在RAM中的地址,eeprom的地址,读写权限等级等,对于程序修改或者模块移 植,由于变量分布在大量的if一else或者case语句中,对于程序的维护、升级、移植等等操 作无形之中增加了设计人员的工作量。而规约中的通用读写命令是规约处理的核心部分, 几乎涉及了表计全部的参变量,为了增加程序的可读性和可维护性,有必要将通用读写命 令的RAM地址、FLASH地址、EEPROM地址、读写属性、涉参范围及相关处理函数等属性集中起 来对其进行管理,若以表格形式对其进行统一管理,则能大大增加程序的可读性和可维护 性。

发明内容
本发明的目的在于提供一种基于查表法的多功能电能表用DL/T645通信协议进 行通信的方法。本发明提供的这种多功能电能表用DL/T645通信协议进行通信的方法,所述方法 是将每一条命令的相关属性综合在一个命令属性表中,程序根据收到的有效数据帧确定其 在所述命令属性表中的位置,命令处理函数根据所述命令属性表提供的属性值进行相应的 处理,所述每一条命令的相关属性包括命令标识符相关信息,命令所涉及参量的随机存储 器RAM地址或电可擦除式存储器EEPROM地址,逻辑地址(记录类数据)、块内地址(记录类数 据),数据协议要求长度,数据程序内部实际长度,读写属性,密码等级,读写操作函数指针。对命令标识符连续的、命令所涉及参量地址线性排列的多个命令当作一个命令集 来处理。所述命令的处理包括如下三个步骤
(1)命令标识符的匹配,确定接收到的命令对应于所述命令属性表的位置,根据其在所 述命令属性表中的位置获取其相应的属性值;
(2)根据所述命令属性表的读写属性和密码等级确定是否响应命令,不响应则返回拒 绝信息;
(3)根据命令帧的读写操作,进入命令属性表中相应的命令处理函数。在命令处理各级函数设立一个公共数据栈以简化函数之间繁琐的参数传递,所述 各级命令处理函数可从所述公共数据栈中获得其所需的输入数据,同时其处理结果也体现 在数据栈中以供下级处理函数使用。对于同类命令可以调用同一个函数,特殊命令调用单 独的函数处理。
本发明由于以表格的形式对多功能电能表通信协议DL/T645中的通用读写命令 涉及表计变量的属性进行统一管理,即命令属性表,该表直观、明了,方便移植和修改,结合 命令处理公共数据栈来完成相关命令帧的处理,增加了程序的可移植性和可维护性。


图1是通用读写命令的处理流程图。图2是目标命令标识符的匹配处理流程图。
具体实施例方式本发明的基本思想是对DL/T645通信协议中的通用读写命令涉及表计变量的属 性进行分类管理,具体如下
typedef struct
{
unLong BaseCommandMark; unsigned char ChangeLacation; unsigned char ChangeLimit; unsigned int EepromAddress; unsigned char ^ptGlobalVarietyRam; unsigned char InDataLeng; unsigned char ExDataLeng;
unsigned long ValueLimit; unsigned char ReadWriteOpiton; unsigned char PasswardClass;
unsigned char (^WriteFun)(void ^inptUartInform); unsigned char (^ReadFun)(void ^inptUartInform); }stCommandProptey;
其主要由命令码识别、数据逻辑地址和相对地址、数据属性、命令操作权限及命令读写 操作函数5个部分组成,将每条/每系列命令的基本属性综合在一起,就形成了命令属性 表。其中命令码识别由BaseCommandMarKChangeLacation及ChangeLimit三个参数确定, 其中BaseCommandMark为基本命令相应位置上的基值,ChangeLacation为目标命令变化位 上的值,ChangeLimit为变化位上限值,该三个参数为必有属性,目标命令根据这三个参数 来进行匹配判断其在命令属性表中的位置。数据逻辑地址和相对地址包括E印romAddress 和ptGlobalVarietyRam,这两个参数属于可选属性,对于一些固定参数,比如脉冲宽度,属 于无效属性;在非记录数据中,这两个参数结合命令变化位上的值与基本命令相应位置上 的基值之差DO、数据在程序中的数据长度InDataLeng自动计算目标命令所涉及参量RAM 及EEPROM中的地址;在记录数据中,EepromAddress为记录数据中某项数据在数据记录块 中的相对地址,ptGlobalVarietyRam为记录信息块地址,不同类型的命令所需的属性值 是不同的,为了节省程序空间,不同的属性值共用同一个属性空间,也就是在不同的命令处 理函数中,同一类属性空间表征不同的属性。数据属性包括ExDataLeng、InDataLeng及
4ValueLimit三个参数,其中ExDataLeng是必有属性,其为协议读命令要求返回数据长度, InDataLeng为数据在程序中的数据长度。当命令所涉参数为可变参数时,ValueLimit为 设置上限,当命令所涉参数为固定值时,其存放固定参数(比如脉冲宽度等等),当命令所涉 参数为记录类数据时,其存放基本命令对应的录逻辑号,其中InDataLeng和ValueLimit 都为可选属性。命令操作权限包括ReadWriteOpiton和PasswardClass两个参数,其中 ReadffriteOpiton为命令的读写权限,是必选属性,PasswardClass为读写操作时的操作权 限等级(读权限为扩展保留项,目前没有用到),是可选属性。命令读写操作函数包括读操作 函数和写操作函数,该两个参数为可选项,读写函数有通用函数和专用函数,根据命令特征 决定使用什么函数。 命令处理函数公共数据栈是基于以下三个方面而设立的(1)命令属性表中提供 的数据不能直接使用(集合命令提供的只是首地址,需要转换);(2)各级命令处理函数需要 命令帧的基本信息,比如读命令返回数据的地址、写命令设置数据地址和密码数据地址、命 令帧所属的信道等;(3)在各级命令处理函数设立一个公共数据栈,简化函数之间繁琐的 参数传递,各级命令处理函数的所需要的输入数据均可以从该数据栈获得,同时处理结果 体现在数据栈中,供下级处理函数使用。其中命令处理函数公共数据栈的格式如下
typedef struct
{
const stCommandProptey 氺ptTab;unsignedchar^ptUartBufferO;unsignedcharRW—Command;unsignedcharSerialNO;unsignedchar^ptPassward;unsignedchar^ptSetData;unsignedchar^ptReadRenAdd;unsignedcharRecordNum;unsignedcharMarkBytes;unsignedintEepromAddress;unsignedchar^ptGlobalVarietyRam
}stUartlnform;
其中ptTab指向不同的命令属性表,将DL/T645-1997和DL/T645-2007分别建立命 令属性表,一是为了程序的直观处理,二是为了加速查表速度,PtUartBufferO为当前处 理的信道缓冲区首地址,RW_Command为读写命令标志,决定了调用读函数还是写函数, SerialNO为目标命令在命令属性表所处的位置,用于取命令属性表相关参数,ptPassward 为设置命令的密码数据地址,用于权限合法性判断,PtSetData为命令的设置数据地 址,PtReadRenAdd为读命令返回数据在信道命令帧的地址(两种规约读命令返回地址不 同),RecordNum为记录类命令对应的逻辑号(即最近第几条记录),MarkBytes为命令数 据标志符的长度(DL/T645-1997两个字节,DL/T645-2007四个字节),EepromAddress, PtGlobalVarietyRam同上述命令属性表中介绍,不同在于是此处地址可供读写处理函数直 接使用的。从接收到合法的读写命令帧之后,各命令处理函数需要将上述信息公共数据栈
5各信息根据命令属性表和各信道命令帧标注,供后续读写函数使用。读写函数具有灵活性、 可扩展性和通用性,对于同类的命令可以调用同一个函数,特殊命令的用单独的函数处理, 不会改变命令属性表的构成。通用处理函数主要包括以下几种数据(1)直接处理型通用 读写函数,该类函数一般用于涉及状态量等无需运算和判断的命令;(2)Char/int/l0ng型 数据通用读写函数,DL/T645规约中大部分的数据均以BCD码的形式存在,而表计程序数 据运算往往以char/int/long型数据,该类通用处理函数解决规约和程序数据不统一的问 题;(3)记录类通用读函数通用处理函数从公共数据栈中获取目标命令对应的记录逻辑 号和记录信息,计算出相应记录块EEPROM存储地址,再结合命令属性表中的块内偏移地址 和协议数据长度读出目标命令要求的数据。而特殊处理函数主要是针对特定的命令,他可 以调用通用处理函数,并辅以特定数据处理算法。特殊处理函数在命令删减和修改时是最 多的地方,也是最灵活的地方。图1是通用读写命令的处理流程图,该流程基于公共数据栈,首先判断当前命令 标识符是否匹配,若命令标识符匹配,则确定了 PtUartBufferO、ptPassward、ptSetData 、ptTab、ptReadRenAdd、Rff_Command 、RecordNum 、MarkBytes 、EepromAddress、 PtGlobalVarietyRam及SerialNO,若命令标识符不匹配,则流程直接返回,之后判断当 前命令的读写权限是否满足,其读写权限的判断是根据PtUartBufferO、ptPassward和 SerialNO (用于查找命令属性表对应的读写属性和权限级别)而判断的,若当前命令的读写 权限不满足,则流程直接返回,若当前命令的读写权限满足则进行读写数据的处理,其中处 理函数根据RW_Command决定调用读函数还是调用写函数,所调用的函数根据公共数据栈 的信息来对数据进行处理。图2是目标命令标识符的匹配处理流程图,首先是索引指针等相关变量的初始 化,对命令属性表中的基本命令和接收到的通信命令分别进行保存,之后判断索引指针所 指对象是否为命令属性表的结束符,若索引指针所指对象不是命令属性表的结束符,则接 着判断规约的类型,若是DL/T 645-1997规约,则对DL/T 645-1997规约进行形式分散化处 理,将其统一为DL/T 645-2007规约形式,之后读取命令属性表中的目标命令变化位上的 值、基本命令相应位置上的基值、变化位上限值,若是DL/T 645-2007规约则直接读取命令 属性表中的目标命令变化位上的值、基本命令相应位置上的基值、变化位上限值,再之后判 断目标命令变化位上的值是否在基本命令相应位置上的基值和变化位上限值之间,若目标 命令变化位上的值是在基本命令相应位置上的基值和变化位上限值之间,则接着判断目标 命令的其他位与基本命令的其他位(除了变化位)是否相等,若相等,则保存目标命令与基 本命令在变化位上的差值并更新公共数据栈相关数据,若目标命令变化位上的值不是在基 本命令相应位置上的基值和变化位上限值之间或目标命令的其他位与基本命令其他位(除 变化位)不相等,则索引指针自加,重新判断索引指针所指对象是否为命令属性表的结束 符,直到目标命令变化位上的值在基本命令相应位置上的基值和变化位上限值之间及目标 命令的其他位与基本命令其他位(除了变化位)相等为止,最后返回匹配结果。
权利要求
一种多功能电能表用DL/T645通信协议进行通信的方法,其特征在于所述方法是将每一条命令的相关属性综合在一个命令属性表中,程序根据收到的有效数据帧确定其在所述命令属性表中的位置,命令处理函数根据所述命令属性表提供的属性值进行相应的处理,所述每一条命令的相关属性包括命令标识符相关信息、命令所涉及参量的随机存储器RAM地址或电可擦除式存储器EEPROM地址、用于记录类数据的逻辑地址、用于记录类数据的块内地址、数据协议要求长度、数据程序内部实际长度、读写属性、密码等级及读写操作函数指针。
2.据权利要求1所述的多功能电能表用DL/T645通信协议进行通信的方法,其特征 在于对命令标识符连续的、命令所涉及参量地址线性排列的多个命令当作一个命令集来处理。
3.据权利要求1所述的多功能电能表用DL/T645通信协议进行通信的方法,其特征在 于所述命令的处理包括如下三个步骤(1)命令标识符的匹配,确定接收到的命令对应于所述命令属性表的位置,根据其在所 述命令属性表中的位置获取其相应的属性值;(2)根据所述命令属性表的读写属性和密码等级确定是否响应命令,不响应则返回拒 绝信息;(3)根据命令帧的读写操作,进入命令属性表中相应的命令处理函数。
4.根据权利要求1所述的多功能电能表用DL/T645通信协议进行通信的方法,其特在 于在命令处理各级函数设立一个公共数据栈以简化函数之间繁琐的参数传递,所述各级命 令处理函数可从所述公共数据栈中获得其所需的输入数据,同时其处理结果也体现在数据 栈中以供下级处理函数使用。
5.根据权利要求1所述的多功能电能表用DL/T645通信协议进行通信的方法,其特征 在于对于同类命令可以调用同一个函数,特殊命令调用单独的函数处理。
全文摘要
本发明公开了一种多功能电能表用DL/T645通信协议进行通信的方法,所述方法是将每一条命令的相关属性综合在一个命令属性表中,程序根据收到的有效数据帧确定其在所述命令属性表中的位置,命令处理函数根据所述命令属性表提供的属性值进行相应的处理。本发明由于以表格的形式对多功能电能表通信协议DL/T645中的通用读写命令涉及表计变量的属性进行统一管理,即命令属性表,该表格直观、明了,方便移植和修改,结合命令处理公共数据栈来完成相关命令帧的处理,大大增加了程序的可移植性和可维护性。
文档编号H04L29/06GK101917451SQ20101028447
公开日2010年12月15日 申请日期2010年9月17日 优先权日2010年9月17日
发明者冉际华, 周勇, 樊坚, 陈维红 申请人:威胜集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1