《电能表多通信协议的自适应方法.pdf》由会员分享,可在线阅读,更多相关《电能表多通信协议的自适应方法.pdf(14页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104052758A43申请公布日20140917CN104052758A21申请号201410333063922申请日20140714H04L29/06200601G06F9/4420060171申请人威胜集团有限公司地址410205湖南省长沙市岳麓区长沙高新技术开发区桐梓坡西路468号72发明人刘建福马亮74专利代理机构长沙永星专利商标事务所43001代理人周咏米中业54发明名称电能表多通信协议的自适应方法57摘要本发明公开了一种电能表多通信协议的自适应方法,首先按照先进先出循环的方式接收数据,放至缓冲区;再对接收数据进行通信协议类型判断;根据判定的协议类型进行与之对应的。
2、功能解析;最后发送返回数据。本发明能在不另外烧录程序或不配备相关硬件等方式干预的情况下,进行各种通信协议的自适应通讯;所提供几种协议的辨别方法快速高效;同一个物理通道只有一个缓冲区,各通信协议的发送和接收都共用此缓冲区,节省了RAM资源;本发明的通讯中断仅用于数据的接收和发送,各通信协议类型的甄别、其具体功能的解析和处理都在主循环中完成,中断占用时间少。51INTCL权利要求书1页说明书5页附图7页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书5页附图7页10申请公布号CN104052758ACN104052758A1/1页21一种电能表多通信协议的自适应方法,该方法包括。
3、如下步骤步骤1,按照先进先出循环的方式接收数据,放至缓冲区;步骤2,对接收数据进行通信协议类型判断;步骤3,根据判定的协议类型进行与之对应的功能解析,并备好返回数据;步骤4,发送返回数据。2根据权利要求1所述的电能表多通信协议的自适应方法,其特征在于,所述通信协议类型包括MODBUSRTU协议、DL/T6452007协议、DL/T6451997协议和校表协议的一种或一种以上。3根据权利要求2所述的电能表多通信协议的自适应方法,其特征在于,所述步骤2对每个所述的协议类型都有一个指向缓冲区的数据指针,所述指针采用先进先出循环的方式不停的向后查找符合要求的协议帧,按协议类型的重要程度顺序的进行MOD。
4、BUSRTU协议、DL/T6452007协议、DL/T6451997协议、校表协议等通信协议类型的判断。4根据权利要求2所述的电能表多通信协议的自适应方法,其特征在于,所述MODBUSRTU协议的协议类型判断按照表地址正确、未接收超时、读写功能码正确、帧长度正确、校验正确的顺序,依次进行辨认;有任一条件不满足,则不为MODBUSRTU协议类型。5根据权利要求2所述的电能表多通信协议的自适应方法,其特征在于,所述DL/T6452007协议和所述DL/T6451997协议的协议类型判断按照帧头为68H、未接收超时、表地址正确、第八个字节为68H、帧长度正确、帧尾为16H、校验和正确、符合功能码长度。
5、要求的顺序,依次进行辨认;有任一条件不满足,则不为DL/T6452007协议类型或DL/T6451997协议类型。6根据权利要求5所述的电能表多通信协议的自适应方法,其特征在于,所述功能码长度要求在为DL/T6452007协议类型时设置须为4字节;其在DL/T6451997协议类型时设置须为2字节。7根据权利要求1所述的电能表多通信协议的自适应方法,其特征在于,所述接收数据和所述发送返回数据均采用中断方式完成;二者共用一个所述缓冲区;接收数据采用先进先出循环的方式进行存储。8根据权利要求1所述的电能表多通信协议的自适应方法,其特征在于,所述通信协议类型判断和所述功能解析均在主循环中完成。9根据。
6、权利要求1所述的电能表多通信协议的自适应方法,其特征在于,所述通信协议在同一个物理通道下共用一个所述缓冲区。权利要求书CN104052758A1/5页3电能表多通信协议的自适应方法技术领域0001本发明涉及一种电能表多通信协议的自适应方法。背景技术0002随着电能表行业的发展,对通信协议的需求也越来越多样性,目前主要有DL/T6452007、DL/T6451997、MODBUS等多种协议,都为半双工的方式。由于历史原因,有些地方需要DL/T6451997协议,另外一些地方需要DL/T6452007协议,还有些地方需要MODBUS协议或者多种协议都需要,如何应对这些多样化需求呢当前电能表厂家主要。
7、采用以下方式1、一种通信协议定制一款软件,根据客户需求出厂前烧录特定的软件。此方式需较多的软件版本,需求不同时需更换软件,且出厂后不能更改,维护成本高。2、一种软件里封装几种通信协议,通过硬件来选择某种协议,软件对通信协议不能自适应。这种在厂外状态下通过外露外露的硬件进行协议选择的做法不符合电能表的安全要求,成本也增加了;并且各协议是平行运行,占用资源大,不利于资源有限的单片机系统。此外,目前的电能表还存在一个缺陷通信处理都是放在中断中进行的,占用时间长,不利于其它紧急事件的处理。发明内容0003本发明的目的是提供一种自动识别常用半双工的电能表通信协议,能在资源较少的单片机系统上运行,且占用中。
8、断时间较少的的电能表多通信协议的自适应方法。0004本发明提供的这种电能表多通信协议的自适应方法,该方法包括如下步骤步骤1,按照先进先出循环的方式接收数据,放至缓冲区;步骤2,对接收数据进行通信协议类型判断;步骤3,根据判定的协议类型进行与之对应的功能解析,并备好返回数据;步骤4,发送返回数据。0005所述通信协议类型包括MODBUSRTU协议、DL/T6452007协议、DL/T6451997协议和校表协议的一种或一种以上。0006所述步骤2对每个所述的协议类型都有一个指向缓冲区的数据指针,所述指针采用先进先出循环的方式不停的向后查找符合要求的协议帧,按协议类型的重要程度顺序的进行MODBU。
9、SRTU协议、DL/T6452007协议、DL/T6451997协议、校表协议等通信协议类型的判断。0007所述MODBUSRTU协议的协议类型判断按照表地址正确、未接收超时、读写功能码正确、帧长度正确、校验正确的顺序,依次进行辨认;有任一条件不满足,则不为MODBUSRTU协议类型。0008所述DL/T6452007协议和所述DL/T6451997协议的协议类型判断按照帧头为68H、未接收超时、表地址正确、第八个字节为68H、帧长度正确、帧尾为16H、校验和正确、符合功能码长度要求的顺序,依次进行辨认;有任一条件不满足,则不为DL/T6452007协议类型或DL/T6451997协议类型。说。
10、明书CN104052758A2/5页40009所述功能码长度要求在为DL/T6452007协议类型时设置须为4字节;其在DL/T6451997协议类型时设置须为2字节。所述接收数据和所述发送返回数据均采用中断方式完成;二者共用一个所述缓冲区;接收数据采用先进先出循环的方式进行存储。所述通信协议类型判断和所述功能解析均在主循环中完成。所述通信协议在同一个物理通道下共用一个所述缓冲区。0010与现有技术相比,本发明具有如下优点1、能在不另外烧录程序或不配备相关硬件等方式干预的情况下,进行各种通信协议的自适应通讯;2、提供的MODBUSRTU协议、DL/T6452007协议、DL/T6451997协。
11、议等协议的辨别方法快速高效,成功率高;3、同一个物理通道只有一个缓冲区,各通信协议的发送和接收都共用此缓冲区,节省了RAM资源;4、本发明的通讯中断仅用于数据的接收和发送,各通信协议类型的甄别、其具体功能的解析和处理都在主循环中完成,中断占用时间少。附图说明0011图1是本发明的实施方式模块示意图。0012图2是本发明的主流程图。0013图3是本发明的中断流程图。0014图4是本发明的MODBUSRTU帧判断流程框图。0015图5是本发明的MODBUSRTU帧判断数据流图。0016图6是本发明的DL/T645帧判断流程框图。0017图7是本发明的DL/T645帧判断数据流图。具体实施方式001。
12、8如图1所示,本发明包括物理层、数据链路层、协议帧解析/转发层、协议应用层和主数据库。0019物理层是各个通讯物理通道和底层接口的集合和抽象,数据链路层接收到物理层的数据后送给协议帧解析/转发层进行通信协议类型辨别,然后协议应用层按协议类型进行具体的功能解析并发送返回数据;协议应用层与主数据库进行数据交互。0020物理层包括底层接口和通讯物理层。底层接口包括EEPROM、FLASH以及其他接口。通讯物理层包括485通讯模块、电力载波通讯模块、小无线通讯模块等。0021数据链路层包括各协议数据发送处理模块、各协议数据接收处理模块等相关处理模块。数据链路层工作于中断模式,主要用于对物理层的数据进行。
13、接收和发送,接收数据采用先进先出循环的方式,同一个物理通道只有一个缓冲区,各通信协议的发送和接收都共用此缓冲区。0022协议帧解析/转发层包括MODBUSRTU协议帧解析模块、DL/T6452007协议帧解析模块、DL/T6451997协议帧解析模块、校表协议帧解析模块等。协议帧解析/转发层主用于对数据链路层的数据进行初步解析、辨别协议类型,不进行具体的功能解析。本层工作于说明书CN104052758A3/5页5MAIN主循环中,每个协议类型都有一个指向接收缓冲的数据指针,指针也采用先进先出循环的方式不停的向后查找符合的协议帧,按协议的重要程度顺序的进行MODBUSRTU协议、DL/T6452。
14、007协议、DL/T6451997协议、校表协议等协议的解析。0023协议应用层包括MODBUSRTU协议、DL/T6452007协议、DL/T6451997协议、校表协议等。0024485、电力载波、小无线等通讯物理层的数据经数据链路层接收后,传给协议帧解析/转发层用于MODBUSRTU协议、DL/T6452007协议、DL/T6451997协议、校表协议等通信协议类别的甄别,然后协议应用层按协议类型进行具体的功能解析,并与电能表的主数据库进行互动以获取数据源,与底层接口进行EEPROM、FLASH等物理操作,协议应用层完成具体功能解析后再返回数据链路层及通讯物理层进行数据回复。0025如图。
15、2所示,本发明按先进先出循环的方式接收数据,然后对接收到的数据进行通信协议类型辨别,再按协议类型进行具体的功能解析,最后发送返回数据。具体步骤如下步骤1,MAIN主循环开始。0026步骤2,判断数据是否为接收状态,并且判断公共缓冲区(BUFF)中是否有数据;若该数据是接收状态且缓冲区中有数据,则进入下一步;否则转至步骤1。0027步骤3,判断是否为MODBUSRTU帧;若是,则置协议号标志位,判得当前协议类型为MODBUSRTU协议;置为发送状态,将无效缓冲清空,转至下一步。0028否则判断是否为DL/T6452007帧;若是,则置协议号标志位,判得当前协议类型为DL/T6452007协议;置。
16、为发送状态,将无效缓冲清空,转至下一步。0029否则判断是否为DL/T6451997帧;若是,则置协议号标志位,判得当前协议类型为DL/T6451997协议;置为发送状态,将无效缓冲清空,转至下一步。0030否则判断是否为校表帧;若是,则置协议号标志位,判得当前协议类型为校表协议;置为发送状态,将无效缓冲清空,转至下一步;否则转至步骤1。0031步骤4,根据协议号进行具体功能解析,并准备好发送数据到上述缓冲区中。0032步骤5,发送延时倒计时开始。延时时间可设置。0033步骤6,延时时间到,启动发送。0034步骤7,按照协议号对应的协议流程发送数据,进入发送循环中断协议帧解析/转发层完成步骤1。
17、和步骤2的操作,协议应用层执行步骤3至步骤7的操作。0035本发明的协议帧解析/转发层主要用于对数据链路层的数据进行初步解析、辨别协议类型,不进行具体的功能解析。本层工作于MAIN主循环中,每个协议类型都有一个指向接收缓冲的数据指针,指针采用先进先出循环的方式不停的向后查找符合的协议帧,按协议类型的重要程度顺序的进行MODBUSRTU协议、DL/T6452007协议、DL/T6451997协议、校表协议等协议的解析,解析到正确的协议帧后关闭接收并置协议号。0036本发明的协议应用层也工作于MAIN主循环中,协议帧解析/转发层完成协议类型甄别后,协议应用层按协议号进行具体的功能解析,并与电能表的。
18、主数据库进行互动以获取数据源,然后准备好发送数据,接着等待接收/发送间延时,时间到后进行数据发送,所有数据发送完成后复位各标志,重新进入接收状态。说明书CN104052758A4/5页60037如图3所示,本发明的数据链路层工作于中断模式,主要用于对物理层的数据进行接收和发送,接收采用先进先出循环的方式,同一个物理通道只有一个缓冲区,各通信协议的发送和接收都共用此缓冲区。0038具体步骤如下步骤1,各通信通道接收、发送中断申请。0039步骤2,判断是接收状态还是发送状态。0040步骤3,若是接收状态,则接收指针M自增1,指向数据待存的缓冲区。若该指针M到了最大值LM,则接收指针M从0开始重新计。
19、数。接收数据放入到公共缓冲区的指针所指位置BUFFM中。退出中断模式。0041若是发送状态,则发送公共缓冲区BUFF中的数据,发送个数减一。当发送个数为零时,置位发送成功标志。退出中断模式。0042如图4所示,MODBUSRTU协议类型判断按照以下顺序进行检测判断。0043(1)MODBUSRTU帧解析开始。0044(2)判断表地址是否正确;若是,则转至下一步;否则转至步骤1。0045(3)判断是否接收超时;若是,则转至步骤1;否则转至下一步。0046(4)判断读写功能码是否正确;若是,则转至下一步;否则转至步骤1。0047(5)判断帧长度是否正确;若是,则转至下一步;否则转至步骤1。0048。
20、(6)判断校验和是否正确;若是,则转至下一步;否则转至步骤1。0049(7)置协议号标志,置帧接收成功标志。0050(8)结束,返回主流程。0051本流程中不判断寄存器地址,不进行具体的功能解析和操作。0052如图5所示,本发明的MODBUSRTU帧判断工作流程的具体过程是首先统计有效长度L(从MODBUSRTU的当前指针P到公共缓冲区BUFF的接收指针M的长度);如果该长度L小于1,则继续接收数据;否则判断BUFFP的内容是否等于表地址,如不是表地址,则当前指针P加一并继续向后查找;如是表地址,则记下位置Q为等于表地址的指针Q,并进行接收超时判断;如超时,则当前指针P移到当前位置并继续向后查。
21、找等于表地址的指针Q;否则判断从该指针Q开始是否收到至少2个字节,如没有2个字节则继续接收数据;否则判断BUFFQ1的内容是否为正确的读写功能码;如不正确则当前指针P加一继续向后查找等于表地址的指针Q;否则判断后续数据长度是否合理;如长度不够则继续接收数据,如长度数据值超出缓冲区的大小则当前指针P加一并继续向后查找等于表地址的指针Q,如长度正确则进入校验和计算,校验和不正确则P加一继续向后查找Q,如校验和正确则初始化公共缓冲区,并置位协议号标志及帧判断成功标志,最后退出。0053如图6所示,DL/T6452007、DL/T6451997协议类型判断按照以下顺序进行检测判断。0054(1)DL/。
22、T645帧解析开始。0055(2)判断DL/T645帧的帧头是否为68H,即判断该DL/T645帧的第一字节是否为68H;若是,则转至下一步;否则转至步骤1。0056(3)判断是否接收超时;若是,则转至步骤1;否则转至下一步。0057(4)判断表地址是否正确;若是,则转至下一步;否则转至步骤1。说明书CN104052758A5/5页70058(5)判断DL/T645帧的第八字节是否为68H;若是,则转至下一步;否则转至步骤1。0059(6)判断帧长度是否正确;若是,则转至下一步;否则转至步骤1。0060(7)结合长度判断该DL/T645帧的最后一个字节是否为16H。若是,则转至下一步;否则转至。
23、步骤1。0061(8)判断校验和是否正确;若是,则转至下一步;否则转至步骤1。0062(9)判断功能码长度;若该功能码长度为4字节,则置协议号标志为DL/T6452007协议号标志,置帧接收成功标志。结束,返回主流程。0063否则判断该功能码长度是否为2字节,若是,则置协议号标志为DL/T6451997协议号标志,置帧接收成功标志。结束,返回主流程。0064否则转至步骤1。0065如图7所示,本发明的DL/T645帧判断工作流程的具体过程是首先统计有效长度L(从DL/T645的当前指针P到公共缓冲区BUFF的接收指针M的长度);如果该长度L小于1,则继续接收数据;否则判断BUFFP的内容是否等。
24、于帧头68H;如不是68H,则当前指针P加一并继续向后查找;如是帧头68H,则记下位置Q为等于68H的指针Q,并进行接收超时判断;如超时则当前指针P移到当前位置并继续向后查找等于68H的指针Q,否则判断从该指针Q开始是否收到至少7个字节;如不足7个字节,则继续接收数据;否则判断BUFFQ1BUFFQ6的内容是否为正确的表地址;如不是,则当前指针P加一并继续向后查找等于68H的指针Q;否则判断从等于68H的指针Q开始是否收到至少8个字节;如不足8个字节,则继续接收数据;否则判断BUFFQ7的内容是否为68H,如不是68H,则当前指针P加一继续向后查找等于68H的指针Q;如是68H,则判断后续数据。
25、长度是否合理;如长度数据值不够,则继续接收数据,如长度数据值超出缓冲区的大小,则当前指针P加一,并继续向后查找等于68H的指针Q;如后续数据长度为正确长度,则判断帧尾字节是否为16H;如不是16H,则当前指针P加一,并继续向后查找等于68H的指针Q;否则进行校验和计算,如校验和正确,则进入功能码长度的判断;功能码长度为4字节则为DL/T6452007协议,功能码长度如为2字节则为DL/T6451997协议,如该功能码长度既不为4又不2,则当前指针P加一,并继续向后查找等于68H的指针Q。协议类型判断完成,初始化缓冲区并置协议号标志及帧判断成功标志,最后退出。0066本发明能自动识别MODBUS。
26、RTU协议、DL/T6452007协议、DL/T6451997协议、校表协议等各种半双工的电能表通信协议,能在资源较少的单片机系统上运行。本发明的通讯中断仅用于数据的接收和发送,通信协议类型的甄别、具体功能的解析和处理都在主循环中完成,中断占用时间少。说明书CN104052758A1/7页8图1说明书附图CN104052758A2/7页9图2说明书附图CN104052758A3/7页10图3说明书附图CN104052758A104/7页11图4说明书附图CN104052758A115/7页12图5说明书附图CN104052758A126/7页13图6说明书附图CN104052758A137/7页14图7说明书附图CN104052758A14。