通信协议自动识别方法及通信方法
本申请是申请日为2019年10月17日、申请号为201910985952.6、发明名称为“通信协议自动识别方法及通信方法”的专利申请的分案申请。
技术领域
本申请涉及通信领域,特别是涉及通信协议自动识别方法及通信方法。
背景技术
智能电网,亦称电网的智能化,是建立在集成的、高速双向通信网络的基础上,通过先进的传感和测量技术、先进的设备技术、先进的控制方法以及先进的决策支持系统技术的应用,实现电网的可靠、安全、经济、高效、环境友好和使用安全的目标,其主要特征包括自愈、激励和保护用户、抵御攻击、提供电能质量、容许各种不同发电形式的接入、启动电力市场以及资产的优化高效运行等。
随着智能电网的不断发展,智能集抄技术已全面铺开应用,大大提升了电力公司的用电管理。为了实现智能集抄功能,通常需要主站、智能集中器和智能终端。其中主站安装在电力公司,智能集中器安装在台区现场,智能终端通常安装到家庭用户里。而智能集抄的关键是智能集中器通过电力线或无线RF去采集智能终端的数据,为了实现这个功能,需要在智能集中器上安装一个中央协调器(Central Coordinator,CCO)模块。随着技术协议的变更和区域的划分,例如按地域分存在国网协议和南网协议,国网协议又先后发布了GDW09和GDW13协议,智能集中器的本地通信协议出现了多个版本。现有的做法,就是针对不同的智能集中器提供不同的CCO模块,从而达到数据采集的目的。
但是不同智能集中器配置不同CCO模块的做法,会给运维人员和技术支持人员造成很大麻烦,因为智能集中器和CCO模块通常不是一个厂家的,没办法在出厂的时候配套出货,这样就容易造成智能集中器与CCO模块出现协议不一致的情况,从而导致数据采集失败。这样不仅耗费大量人力、物力和时间,而且耽误电力公司统计用户的用电情况。
发明内容
基于此,有必要提供一种通信协议自动识别方法及通信方法。
一种通信协议自动识别方法,其包括以下步骤:
预设置所述报文的格式,所述报文的格式中设有优先级信息;
中央协调器模块接收集中器本地接口发送的报文;根据报文的优先级信息,按优先级把报文加入队列缓冲区;
当队列缓冲区有数据时,按顺序对队列缓冲区的数据进行帧格式检测且区分协议类型;
当协议类型存在子协议类型时,根据子协议类型继续判断其是否存在子协议版本,是则继续区分协议类型的子协议类型的具体版本,直至协议类型不存在子协议版本为止,否则执行后续步骤;
采用最终得到的协议类型作为通信协议。
上述通信协议自动识别方法,对于集中器本地接口协议能自适应,尤其是自动识别国网或南网协议,然后进一步识别具体的协议版本;并且通过自适应通信协议的设计,无需人为干预,使用方便,有利于避免智能集中器与CCO模块出现协议不一致的情况,还有利于进一步避免数据采集失败的弊端,有效地节约了人力、物力和时间,亦有利于电力公司统计用户的用电情况。
在其中一个实施例中,中央协调器模块接收集中器本地接口发送的报文,包括:中央协调器模块采用环形队列接收数据的方式,接收集中器本地接口发送的报文;对于错误的报文,将其移至队列末尾,形成所述环形队列。
在其中一个实施例中,还记录同一报文或者同一报文发送端的错误次数,当错误次数超过预设次数时,发出报警信号且指示错误的报文及/或其发送端。
在其中一个实施例中,所述通信协议自动识别方法还包括步骤:预设置所述环形队列的最大长度;并且,中央协调器模块采用环形队列接收数据的方式,接收集中器本地接口发送的报文,还包括步骤:当所述环形队列的当前长度大于所述最大长度时,自动分成两个环形队列,且其中一个环形队列的长度为所述最大长度,并且在接收集中器本地接口发送的新报文时,将所述新报文加入到长度较短的环形队列的末尾。
在其中一个实施例中,所述通信协议自动识别方法还包括步骤:预设置所述环形队列的最大长度;并且,中央协调器模块采用环形队列接收数据的方式,接收集中器本地接口发送的报文,还包括步骤:当所述环形队列的当前长度大于所述最大长度时,自动分成两个环形队列,其中一个环形队列的长度为所述最大长度且按接收时间顺序排列,另一个环形队列重新根据报文的优先级信息排列。
在其中一个实施例中,中央协调器模块设置多个处理核心,每一所述处理核心用于处理一所述环形队列;或者,中央协调器模块通过串口接收集中器本地接口发送的报文。
在其中一个实施例中,按顺序对队列缓冲区的数据进行帧格式检测且在检测通过时区分协议类型。
在其中一个实施例中,根据接收的报文区分协议类型之前,根据预设位或者预设结构,按顺序对队列缓冲区的数据进行帧格式检测且在检测通过时区分协议类型。
在其中一个实施例中,采用最终得到的协议类型作为通信协议之后,所述通信协议自动识别方法还包括直采步骤,所述直采步骤用于实现对低压用户电压采集;或者,所述通信协议自动识别方法还包括控制步骤,所述控制步骤用于控制实现远程拉合闸。
在其中一个实施例中,一种通信方法,其包括任一项所述通信协议自动识别方法。
在其中一个实施例中,所述通信方法还包括步骤:采用所述通信协议进行通信。
附图说明
图1为本申请所述通信协议自动识别方法一实施例的流程示意图。
图2为本申请所述通信协议自动识别方法另一实施例的流程示意图。
图3为本申请所述通信协议自动识别方法另一实施例的流程示意图。
图4为本申请所述通信协议自动识别方法另一实施例的控制步骤示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似改进,因此本申请不受下面公开的具体实施例的限制。
需要说明的是,当元件被称为“固定于”或“设置于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。本申请的说明书所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的,并不表示是唯一的实施方式。
除非另有定义,本申请的说明书所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本申请。本申请的说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
在本申请一个实施例中,一种通信协议自动识别方法,其包括以下步骤:中央协调器模块接收集中器本地接口发送的报文;根据接收的报文区分协议类型;当协议类型存在子协议版本时继续区分协议类型的具体版本,直至协议类型不存在子协议版本为止;采用最终得到的协议类型作为通信协议。上述通信协议自动识别方法,对于集中器本地接口协议能自适应,尤其是自动识别国网或南网协议,然后进一步识别具体的协议版本;并且通过自适应通信协议的设计,无需人为干预,使用方便,有利于避免智能集中器与CCO模块出现协议不一致的情况,还有利于进一步避免数据采集失败的弊端,有效地节约了人力、物力和时间,亦有利于电力公司统计用户的用电情况。
在其中一个实施例中,一种通信协议自动识别方法,其包括以下实施例的部分步骤或全部步骤;即,通信协议自动识别方法包括以下的部分技术特征或全部技术特征。在其中一个实施例中,如图1所示,所述通信协议自动识别方法包括以下步骤:中央协调器模块接收集中器本地接口发送的报文;根据接收的报文区分协议类型;判断协议类型是否存在子协议版本,是则继续区分协议类型的具体版本,进一步判断协议类型是否存在子协议版本;否则采用最终得到的协议类型作为通信协议。
在其中一个实施例中,中央协调器模块接收集中器本地接口发送的报文;进一步地,在其中一个实施例中,所述通信协议自动识别方法还包括步骤:预设置所述报文的格式,报文通常以数据的形式存在,可称为报文数据或者直接称为数据,例如具有帧头、具体数据信息、帧尾及/或特定数位的帧。因此,报文亦可称为数据。进一步地,在其中一个实施例中,所述报文的格式中设有优先级信息,即优先级数据;进一步地,在其中一个实施例中,中央协调器模块接收集中器本地接口发送的报文之后,所述通信协议自动识别方法还包括步骤:根据报文的优先级信息,按优先级把报文加入循环队列缓冲区;在其中一个实施例中,一种通信协议自动识别方法,其包括以下步骤:预设置报文的格式;中央协调器模块接收集中器本地接口发送的报文;根据接收的报文区分协议类型;当协议类型存在子协议版本时继续区分协议类型的具体版本,直至协议类型不存在子协议版本为止;采用最终得到的协议类型作为通信协议。其余实施例以此类推。在其中一个实施例中,中央协调器模块接收集中器本地接口发送的报文,包括:中央协调器模块采用环形队列接收数据的方式,接收集中器本地接口发送的报文。进一步地,在其中一个实施例中,对于错误的报文,将其移至队列末尾,形成所述环形队列。进一步地,在其中一个实施例中,还记录同一报文或者同一报文发送端的错误次数,当错误次数超过预设次数时,发出报警信号且指示错误的报文及/或其发送端。这样的设计,有利于协助管理人员发现问题以便及时解决问题。进一步地,在其中一个实施例中,所述通信协议自动识别方法还包括步骤:预设置所述环形队列的最大长度;并且,中央协调器模块采用环形队列接收数据的方式,接收集中器本地接口发送的报文,还包括步骤:当所述环形队列的当前长度大于所述最大长度时,自动分成两个环形队列,且其中一个环形队列的长度为所述最大长度,并且在接收集中器本地接口发送的新报文时,将所述新报文加入到长度较短的环形队列的末尾;进一步地,在其中一个实施例中,当所述环形队列的当前长度大于所述最大长度时,自动分成两个环形队列,其中一个环形队列的长度为所述最大长度且按接收时间顺序排列,另一个环形队列重新根据报文的优先级信息排列;这样的设计,就形成了两个处理顺序存在差异的队列,使得后进报文可以在另一进程中优先处理。进一步地,在其中一个实施例中,中央协调器模块设置多个处理核心(Core),每一所述处理核心用于处理一所述环形队列。这样的设计,有利于应对短时间的大量报文处理需求,尤其适合应对紧急状态的数据处理。进一步地,在其中一个实施例中,中央协调器模块通过串口接收集中器本地接口发送的报文;进一步地,在其中一个实施例中,中央协调器模块将接收到的报文放入队列缓冲区中;进一步地,在其中一个实施例中,中央协调器模块或处理器定时查询队列缓冲区是否有数据,当队列缓冲区有数据时,执行后续步骤。进一步地,在其中一个实施例中,采用主函数定时查询队列缓冲区是否有数据。这样的设计,一方面有利于确保报文不丢失,另一方面有利于及时发现问题,再一方面还可以保证处理效率,不会由于一个错误就卡住了程序。
在其中一个实施例中,根据接收的报文区分协议类型;在其中一个实施例中,所述协议类型包括国网协议及南网协议。在实际应用中,所述协议类型还可以包括其他协议。在其中一个实施例中,根据接收的报文区分协议类型,具体包括:根据接收的报文,自动识别国网协议或南网协议。当存在多种协议类型时,则根据接收的报文,自动识别各通信协议。进一步地,在其中一个实施例中,当队列缓冲区有数据时,按顺序对队列缓冲区的数据进行帧格式检测且区分协议类型。进一步地,在其中一个实施例中,按顺序对队列缓冲区的数据进行帧格式检测且在检测通过时区分协议类型。进一步地,在其中一个实施例中,根据预设位或者预设结构,按顺序对队列缓冲区的数据进行帧格式检测且在检测通过时区分协议类型。这样的设计,一方面通过帧格式检测实现协议类型的区分,另一方面能够做到自动识别各种通信协议,应用方便,有利于快速检测且区分协议类型,从而简化运营维护和技术支持工作,确保数据采集的自动化及准确度,进而解决运维人员可能遇到的智能集中器与CCO模块之间接口协议不一致的问题,有效避免项目延期,降低人力、物力成本。
在其中一个实施例中,根据接收的报文区分协议类型之前,所述通信协议自动识别方法还包括步骤:对报文进行帧格式检测,正确时则根据接收的报文区分协议类型,错误时则把当前报文移至循环队列的末尾,对下一报文进行帧格式检测。在其中一个实施例中,对报文进行帧格式检测,包括:判断帧头、帧尾和CS(frame check sum,帧校验和)校验是否正确。这样的设计,有利于自动而且迅速地确定协议类型,从而真正地通过报文实现了通信协议的自动识别。
在其中一个实施例中,当协议类型存在子协议版本时继续区分协议类型的具体版本,直至协议类型不存在子协议版本为止;在其中一个实施例中,所述国网协议包括国网09协议及国网13协议,即国网协议包括两个子协议版本,分别为国网09协议及国网13协议。在实际应用中,协议类型可以有子协议版本;还可以有子协议类型。进一步地,在其中一个实施例中,当协议类型存在子协议版本时继续区分协议类型的具体版本,包括:当协议类型存在子协议类型时,根据子协议类型继续判断其是否存在子协议版本,是则继续区分协议类型的子协议类型的具体版本,直至协议类型不存在子协议版本为止,否则执行后续步骤,即采用最终得到的协议类型作为通信协议。这样的设计,就避免了区分完协议类型就直接通信的弊端,有利于层层深入地挖掘最后的子协议类型及/或子协议版本,从而确保协议一致以实现智能集抄功能,这种简单直接的设计理念,通常是配合其它实施例的帧格式检测或者报文的特定字节识别以共同实现,兼具简单和巧妙的优点,而在本申请公开之前却又未见诸文献,证明这是难以想到的。
在其中一个实施例中,采用最终得到的协议类型作为通信协议。在其中一个实施例中,所述通信协议自动识别方法具体包括以下步骤:中央协调器模块接收集中器本地接口发送的报文;根据接收的报文区分协议类型是国网协议还是南网协议;当协议类型是国网协议时,继续区分协议类型的子协议版本是国网09协议还是国网13协议,采用国网09协议或国网13协议作为通信协议;当协议类型是南网协议时,采用南网协议作为通信协议。在其中一个实施例中,中央协调器模块接收集中器本地接口发送的报文之后,所述通信协议自动识别方法还包括步骤:把报文加入循环队列缓冲区;根据接收的报文区分协议类型包括步骤:根据报文的帧头、帧尾、数据长度和CS校验,区分协议类型;并且,当协议类型存在子协议版本时继续区分协议类型的具体版本包括步骤:根据报文的特定字节的位定义,区分协议类型的子协议版本。在其中一个实施例中,所述通信协议自动识别方法包括以下步骤:中央协调器模块接收集中器本地接口发送的报文,把报文加入循环队列缓冲区;根据接收的报文的帧头、帧尾、数据长度和CS校验,区分协议类型;当协议类型存在子协议版本时继续区分协议类型的具体版本,其中根据报文的特定字节的位定义,区分协议类型的子协议版本,直至协议类型不存在子协议版本为止;采用最终得到的协议类型作为通信协议。这样的设计,不需要针对不同的智能集中器提供不同的中央协调器模块,有利于简化运营维护和技术支持工作,确保数据采集的自动化及准确度,从而有利于节约人力物力资源,提升运维效率,保障了电力公司统计用户的用电情况以便作出及时的应对处理,进一步保证了用电安全、可靠。
在其中一个实施例中,所述通信协议自动识别方法的实现流程如图2所示,包括以下步骤:
(1)CCO模块接收集中器本地接口发送的报文;进一步地,CCO模块对串口接收到的数据,放入队列缓冲区中,主函数定时查询队列缓冲区是否有数据。
(2)根据接收到的报文,先区别协议类型,是国网协议还是南网协议;进一步地,一旦接收到数据,则会对数据进行帧格式检测,判断帧头、帧尾和CS校验是否正确。如果正确则可以区分是国网协议后者南网协议类型。否则,会把队列里的索引后移,判断下一帧数据。
(3)根据协议类型,作出不同的处理;若是南网协议就采用南网协议作为通信协议,之后可以采用所述通信协议进行通信;若是国网协议就进一步区分是国网09协议还是国网13协议,以其作为通信协议,之后可以采用所述通信协议进行通信。进一步地,一旦确定了协议类型,就可以按照不同的协议类型,进行协议解析。当然,针对国网协议类型,还需要根据特定字节的位定义,进一步区分是国网09协议还是国网13协议。
在其中一个实施例中,所述通信协议自动识别方法的实现流程中,软件对数据的具体处理或分析过程,编解码过程、控制过程如图3所示。CCO串口接收到数据,把数据加入循环队列缓冲区;根据帧头、帧尾、数据长度和CS校验,区分协议类型是国网或南网协议;根据特定字节的位定义,区分协议版本是国网09协议或13协议。这样的设计,通过对智能集中器本地接口协议自适应,解决运维人员可能遇到的智能集中器与CCO模块之间接口协议不一致的问题,有效避免项目延期,降低人力、物力成本。
进一步地,在其中一个实施例中,采用最终得到的协议类型作为通信协议之后,所述通信协议自动识别方法还包括直采步骤,所述直采步骤用于实现对低压用户电压采集。在其中一个实施例中,所述直采步骤包括:根据所述通信协议,集中器对低压用户电压采集;在其中一个实施例中,集中器优先保证电量数据抄读的完整性,电压抄读只读一次,失败后不进行补采。同时增加电压采集总超时限制例如5分钟,超时后本轮电压采集终止。这样的设计,通过自动识别通信协议,有利于实现电压直送直采功能。
进一步地,在其中一个实施例中,采用最终得到的协议类型作为通信协议之后,所述通信协议自动识别方法还包括控制步骤,所述控制步骤用于控制实现远程拉合闸。在其中一个实施例中,所述控制步骤包括:中央协调器模块接收具有远程拉合闸命令的任务报文,发送给站点;站点根据所述通信协议重新封装所述任务报文,且根据所述任务报文中的节点地址确定表模块,并转发表模块;由表模块转发到表端,表端确认远程拉合闸命令的合法性后,控制进行拉合闸操作。在其中一个实施例中,集中器在接收到主站下发的远程拉合闸命令时或后,把拉合闸命令封装在任务报文的数据域里,发送给中央协调器模块。在其中一个实施例中,集中器在接收到主站下发的远程拉合闸命令后,通过任务方式把拉合闸指令封装在任务报文的数据域里添加到CCO,CCO在执行任务过程中,把拉合闸命令下发给STA,STA把拉合闸命令重新封装成扩展路由能识别的协议格式即前期STA已经识别出扩展路由的规约类型,把拉合闸命令添加到扩展路由,扩展路由再根据拉合闸命令里指定的节点地址即表模块地址,把拉合闸命令发出。表模块收到后,通过串口给到表端,表端再对拉合闸命令的合法性进行判断,最终达到远程拉合闸的目的。这样的设计,在自动识别通信协议后,就可以实现远程拉合闸控制功能,具有安全、可靠的优点,能够实现远程控制效果。进一步地,在其中一个实施例中,如图4所示,所述控制步骤包括:集中器发送拉合闸命令,通过任务下发中央协调器模块;中央协调器模块接收任务后,转发到站点;站点根据所述通信协议重新封装所述任务报文,且根据所述任务报文中的节点地址确定表模块,再通过扩展路由,把任务发送给表模块;表模块再通过串口把拉合闸命令发给电表;电表判断拉合闸命令是否明文,是则根据指令进行拉闸或合闸操作;否则进一步判断拉合闸密码是否正确,是则进行拉闸或合闸操作。这样的设计,使得远程拉合闸控制更为可靠,尤其是配合智能电表共同使用,有利于确保用户使用的安全性、有效性和可靠性。
在其中一个实施例中,一种通信方法,其包括任一实施例所述通信协议自动识别方法。在其中一个实施例中,所述通信方法还包括步骤:采用所述通信协议进行通信。在其中一个实施例中,一种通信方法,包括以下步骤:中央协调器模块接收集中器本地接口发送的报文;根据接收的报文区分协议类型;当协议类型存在子协议版本时继续区分协议类型的具体版本,直至协议类型不存在子协议版本为止;采用最终得到的协议类型作为通信协议,采用所述通信协议进行通信。在其中一个实施例中,一种通信方法,包括以下步骤:预设置报文的格式,中央协调器模块接收集中器本地接口发送的报文;根据接收的报文区分协议类型;当协议类型存在子协议版本时继续区分协议类型的具体版本,直至协议类型不存在子协议版本为止;采用最终得到的协议类型作为通信协议,采用所述通信协议进行通信。其余实施例以此类推。这样的设计,对于集中器本地接口协议能自适应,自动识别国网或南网协议;且通过自适应算法,无需人为干预,即插即用;进一步还可以通过环形队列接收数据,可以有效避免数据丢包问题;从而有利于节约人力物力资源,提升运维效率,保障了电力公司统计用户的用电情况以便作出及时的应对处理,进一步保证了用电安全、可靠。
需要说明的是,本申请的其它实施例还包括,上述各实施例中的技术特征相互组合所形成的、能够实施的通信协议自动识别方法及通信方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的专利保护范围应以所附权利要求为准。