本发明专利技术公开了一种电能表多通信协议的自适应方法,首先按照先进先出循环的方式接收数据,放至缓冲区;再对接收数据进行通信协议类型判断;根据判定的协议类型进行与之对应的功能解析;最后发送返回数据。本发明专利技术能在不另外烧录程序或不配备相关硬件等方式干预的情况下,进行各种通信协议的自适应通讯;所提供几种协议的辨别方法快速高效;同一个物理通道只有一个缓冲区,各通信协议的发送和接收都共用此缓冲区,节省了RAM资源;本发明专利技术的通讯中断仅用于数据的接收和发送,各通信协议类型的甄别、其具体功能的解析和处理都在主循环中完成,中断占用时间少。
【技术实现步骤摘要】
本专利技术涉及一种电能表多通信协议的自适应方法。
技术介绍
随着电能表行业的发展,对通信协议的需求也越来越多样性,目前主要有DL/T645-2007、DL/T645-1997、Modbus等多种协议,都为半双工的方式。由于历史原因,有些地方需要DL/T645-1997协议,另外一些地方需要DL/T645-2007协议,还有些地方需要Modbus协议或者多种协议都需要,如何应对这些多样化需求呢?当前电能表厂家主要采用以下方式:1、一种通信协议定制一款软件,根据客户需求出厂前烧录特定的软件。此方式需较多的软件版本,需求不同时需更换软件,且出厂后不能更改,维护成本高。2、一种软件里封装几种通信协议,通过硬件来选择某种协议,软件对通信协议不能自适应。这种在厂外状态下通过外露外露的硬件进行协议选择的做法不符合电能表的安全要求,成本也增加了;并且各协议是平行运行,占用资源大,不利于资源有限的单片机系统。此外,目前的电能表还存在一个缺陷:通信处理都是放在中断中进行的,占用时间长,不利于其它紧急事件的处理。
技术实现思路
本专利技术的目的是提供一种自动识别常用半双工的电能表通信协议,能在资源较少的单片机系统上运行,且占用中断时间较少的的电能表多通信协议的自适应方法。本专利技术提供的这种电能表多通信协议的自适应方法,该方法包括如下步骤:步骤1,按照先进先出循环的方式接收数据,放至缓冲区;步骤2,对接收数据进行通信协议类型判断;步骤3,根据判定的协议类型进行与之对应的功能解析,并备好返回数据;步骤4,发送返回数据。所述通信协议类型包括Modbus-RTU协议、DL/T645-2007协议、DL/T645-1997协议和校表协议的一种或一种以上。所述步骤2对每个所述的协议类型都有一个指向缓冲区的数据指针,所述指针采用先进先出循环的方式不停的向后查找符合要求的协议帧,按协议类型的重要程度顺序的进行Modbus-RTU协议、DL/T645-2007协议、DL/T645-1997协议、校表协议等通信协议类型的判断。所述Modbus-RTU协议的协议类型判断按照表地址正确、未接收超时、读写功能码正确、帧长度正确、校验正确的顺序,依次进行辨认;有任一条件不满足,则不为Modbus-RTU协议类型。所述DL/T645-2007协议和所述DL/T645-1997协议的协议类型判断按照帧头为68H、未接收超时、表地址正确、第八个字节为68H、帧长度正确、帧尾为16H、校验和正确、符合功能码长度要求的顺序,依次进行辨认;有任一条件不满足,则不为DL/T645-2007协议类型或DL/T645-1997协议类型。所述功能码长度要求在为DL/T645-2007协议类型时设置须为4字节;其在DL/T645-1997协议类型时设置须为2字节。所述接收数据和所述发送返回数据均采用中断方式完成;二者共用一个所述缓冲区;接收数据采用先进先出循环的方式进行存储。所述通信协议类型判断和所述功能解析均在主循环中完成。所述通信协议在同一个物理通道下共用一个所述缓冲区。与现有技术相比,本专利技术具有如下优点:1、能在不另外烧录程序或不配备相关硬件等方式干预的情况下,进行各种通信协议的自适应通讯;2、提供的Modbus-RTU协议、DL/T645-2007协议、DL/T645-1997协议等协议的辨别方法快速高效,成功率高;3、同一个物理通道只有一个缓冲区,各通信协议的发送和接收都共用此缓冲区,节省了RAM资源;4、本专利技术的通讯中断仅用于数据的接收和发送,各通信协议类型的甄别、其具体功能的解析和处理都在主循环中完成,中断占用时间少。附图说明图1是本专利技术的实施方式模块示意图。图2是本专利技术的主流程图。图3是本专利技术的中断流程图。图4是本专利技术的Modbus-RTU帧判断流程框图。图5是本专利技术的Modbus-RTU帧判断数据流图。图6是本专利技术的DL/T645帧判断流程框图。图7是本专利技术的DL/T645帧判断数据流图。具体实施方式如图1所示,本专利技术包括物理层、数据链路层、协议帧解析/转发层、协议应用层和主数据库。物理层是各个通讯物理通道和底层接口的集合和抽象,数据链路层接收到物理层的数据后送给协议帧解析/转发层进行通信协议类型辨别,然后协议应用层按协议类型进行具体的功能解析并发送返回数据;协议应用层与主数据库进行数据交互。物理层包括底层接口和通讯物理层。底层接口包括EEPROM、FLASH以及其他接口。通讯物理层包括485通讯模块、电力载波通讯模块、小无线通讯模块等。数据链路层包括各协议数据发送处理模块、各协议数据接收处理模块等相关处理模块。数据链路层工作于中断模式,主要用于对物理层的数据进行接收和发送,接收数据采用先进先出循环的方式,同一个物理通道只有一个缓冲区,各通信协议的发送和接收都共用此缓冲区。协议帧解析/转发层包括Modbus-RTU协议帧解析模块、DL/T645-2007协议帧解析模块、DL/T645-1997协议帧解析模块、校表协议帧解析模块等。协议帧解析/转发层主用于对数据链路层的数据进行初步解析、辨别协议类型,不进行具体的功能解析。本层工作于main主循环中,每个协议类型都有一个指向接收缓冲的数据指针,指针也采用先进先出循环的方式不停的向后查找符合的协议帧,按协议的重要程度顺序的进行Modbus-RTU协议、DL/T645-2007协议、DL/T645-1997协议、校表协议等协议的解析。协议应用层包括Modbus-RTU协议、DL/T645-2007协议、DL/T645-1997协议、校表协议等。485、电力载波、小无线等通讯物理层的数据经数据链路层接收后,传给协议帧解析/转发层用于Modbus-RTU协议、DL/T645-2007协议、DL/T645-1997协议、校表协议等通信协议类别的甄别,然后协议应用层按协议类型进行具体的功能解析,并与电能表的主数据库进行互动以获取数据源,与底层接口进行EEPROM、FLASH等物理操作,协议应用层完成具体功能解析后再返回数据链路层及通讯物理层进行数据回复。如图2所示,本专利技术按先进先出循环的方式接收数据,然后对接收到的数据进行通信协议类型辨别,再按协议类型进行具体的功能解析,最后发送返回数据。具体步骤如下:步骤1,main主循环开始。步骤2,判断数据是否为接收状态,并且判断公共缓冲区(BUFF)中是否有数据;若该数据是接收状态且缓冲区中有数据,则进入下一步;否则转至步骤1。步骤3,判断是否为Modbus-RTU帧;若是,则置协议号标志位,判得当前协议类型为Modbus-RTU协议;置为发送状态,将无效缓冲清空,转至下一步。否则判断是否为DL/T645-2007帧;若是,则置协议号标志位,判得当前协议类型为DL/T645-2007协议;本文档来自技高网...
【技术保护点】
一种电能表多通信协议的自适应方法,该方法包括如下步骤:步骤1,按照先进先出循环的方式接收数据,放至缓冲区;步骤2,对接收数据进行通信协议类型判断;步骤3,根据判定的协议类型进行与之对应的功能解析,并备好返回数据;步骤4,发送返回数据。
【技术特征摘要】
1.一种电能表多通信协议的自适应方法,该方法包括如下步骤:
步骤1,按照先进先出循环的方式接收数据,放至缓冲区;
步骤2,对接收数据进行通信协议类型判断;
步骤3,根据判定的协议类型进行与之对应的功能解析,并备好返回数据;
步骤4,发送返回数据。
2.根据权利要求1所述的电能表多通信协议的自适应方法,其特征在于,所述通信协议类型包括Modbus-RTU协议、DL/T645-2007协议、DL/T645-1997协议和校表协议的一种或一种以上。
3.根据权利要求2所述的电能表多通信协议的自适应方法,其特征在于,所述步骤2对每个所述的协议类型都有一个指向缓冲区的数据指针,所述指针采用先进先出循环的方式不停的向后查找符合要求的协议帧,按协议类型的重要程度顺序的进行Modbus-RTU协议、DL/T645-2007协议、DL/T645-1997协议、校表协议等通信协议类型的判断。
4.根据权利要求2所述的电能表多通信协议的自适应方法,其特征在于,所述Modbus-RTU协议的协议类型判断按照表地址正确、未接收超时、读写功能码正确、帧长度正确、校验正确的顺序,依次进行辨认;有任一条件不满足,则不为Modbu...
【专利技术属性】
技术研发人员:刘建福,马亮,
申请(专利权)人:威胜集团有限公司,
类型:发明
国别省市:湖南;43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。