一种IR46智能电表的多通讯协议的处理方法及装置与流程

文档序号:20676200发布日期:2020-05-08 17:51阅读:487来源:国知局
一种IR46智能电表的多通讯协议的处理方法及装置与流程

本发明涉及电能表的通讯技术领域,尤其涉及一种ir46智能电表的多通讯协议的处理方法及装置。



背景技术:

在电表领域中,除了保证电表的计量准确度以及防窃电功能的实现,对电表的通讯要求也愈发严格。目前,普通电表的通讯方式包括近红外通讯、远红外通讯、rs485通讯,通讯距离从几米到几百米不等,通讯协议基本上都是单一的,但是在通讯距离方面仍然无法满足大部分用户的需求。新一代的ir46智能电能表解决了现有电能表通讯距离不足的问题,其通讯方式包括gprs通讯、rf通讯、rlc载波通讯等,可以在系统主站上实现远程抄表、远程电表拉合闸、远程电表充值等功能。

ir46智能电能表和系统主站的远程数据交互是基于通讯模块的数据透传来实现的,在实际应用时,通讯模块一方面完成数据透传,一方面与ir46智能电能表进行定时数据交互,从而实现事件主动上报和负荷曲线主动推送的功能。然而,ir46智能电能表和系统主站之间进行通讯时使用的是一种通讯协议,ir46智能电能表和通讯模块之间进行通信时使用的却是另一种通讯协议,说明ir46智能电能表需要同时处理两种通讯协议,若将来ir46智能电能表要使用其他厂家的通讯模块和系统主站进行通讯时,还需要增加对应的通讯协议,因此多通讯协议的处理方式将成为ir46智能电能表的技术难点。



技术实现要素:

本发明的目的在于克服现有技术的不足,本发明提供了一种ir46智能电表的多通讯协议的处理方法,通过串口中断服务程序进行简单地串口数据读取,在主程序中进行串口数据的通讯协议匹配,极大地降低串口数据处理的复杂度,防止丢失部分数据而造成通讯协议匹配异常,保障ir46智能电能表的通讯质量。

为了解决上述技术问题,本发明提供了一种ir46智能电表的多通讯协议的处理方法,所述方法包括:

启动串口中断服务程序,基于识别到的串口中断请求,读取接收到的串口数据;

启动主程序,基于串口数据处理指针判断串口通讯上是否有数据更新,若判断所述串口通讯上有数据更新时,主程序读取所述串口数据;

将所述串口数据与表计支持的所有通讯协议进行匹配,获取所述串口数据所属的第一通信协议;

根据所述第一通讯协议对所述串口数据进行解析,生成所述串口数据的回复帧,将所述串口数据的回复帧通过串口发送出去;

等待接收下一个串口数据,根据所述第一通讯协议对接收到的所述下一个串口数据进行解析,生成所述下一个串口数据的回复帧,将所述下一个串口数据的回复帧通过串口发送出去。

可选的,所述基于识别到的串口中断请求,读取接收到的串口数据包括:

每读取所述串口数据的一个字节,第一串口通讯缓存指针加1,并将所述串口数据的一个字节所对应的数据存储到所述串口通讯缓存中;

在读取到完整的所述串口数据后,生成第二串口通讯缓存指针。

可选的,所述基于串口数据处理指针判断串口通讯上是否有数据更新包括:

主程序判断所述串口数据处理指针与所述第二串口通讯缓存指针是否一致;

在判断所述串口数据处理指针与所述第二串口通讯缓存指针不一致时,主程序读取所述串口数据。

可选的,在主程序判断所述串口数据处理指针与所述第二串口通讯缓存指针是否一致之后,还包括:

在判断所述串口数据处理指针与所述第二串口通讯缓存指针一致时,主程序返回判断所述串口数据处理指针与所述第二串口通讯缓存指针是否一致。

可选的,所述将所述串口数据与表计支持的所有通讯协议进行匹配,获取所述串口数据所属的第一通信协议包括:

判断所述串口数据与表计支持的所有通讯协议的帧头是否一致;

在判断所述串口数据与表计支持的所有通讯协议的帧头一致后,获取第一串口数据,所述第一串口数据为所述串口数据匹配帧头后剩下的数据;

将所述第一串口数据与表计支持的所有通讯协议的帧格式进行匹配,获取所述串口数据所属的第一通讯协议。

可选的,在判断所述串口数据与表计支持的所有通讯协议的帧头是否一致之后,还包括:

在判断所述串口数据与表计支持的所有通讯协议的帧头不一致后,主程序丢弃所述串口数据的当前一个字节的数据,返回判断所述串口数据的下一个字节的数据与表计支持的所有通讯协议的帧头是否一致。

本发明还提供了一种ir46智能电表的多通讯协议的处理装置,所述装置包括:

读取模块,用于基于识别到的串口中断请求,读取接收到的串口数据;

判断模块,用于基于串口数据处理指针判断串口通讯上是否有数据更新,若判断所述串口通讯上有数据更新时,主程序读取所述串口数据;

匹配模块,用于将所述串口数据与表计支持的所有通讯协议进行匹配,获取所述串口数据所属的第一通讯协议;

处理模块,用于根据所述第一通讯协议对所述串口数据进行解析,生成所述串口数据的回复帧,并将所述串口数据的回复帧通过串口发送出去;

交互模块,用于等待接收下一个串口数据,根据所述第一通讯协议对接收到的所述下一个串口数据进行解析,生成所述下一个串口数据的回复帧,将所述下一个串口数据的回复帧通过串口发送出去。

可选的,所述读取模块用于每读取所述串口数据的一个字节,对第一串口通讯缓存指针加1,并将所述串口数据的一个字节所对应的数据存储到所述串口通讯缓存中;

在读取到完整的所述串口数据后,生成第二串口通讯缓存指针。

可选的,所述判断模块用于判断所述串口数据处理指针与所述第二串口通讯缓存指针是否一致;

在判断所述串口数据处理指针与所述第二串口通讯缓存指针不一致时,主程序读取所述串口数据。

可选的,所述匹配模块用于判断所述串口数据与表计支持的所有通讯协议的帧头是否一致;

在判断所述串口数据与表计支持的所有通讯协议的帧头一致后,获取第一串口数据,所述第一串口数据为所述串口数据匹配帧头后剩下的数据;

将所述第一串口数据与表计支持的所有通讯协议的帧格式进行匹配,获取所述串口数据所属的第一通讯协议。

在发明实施例中,当多个通讯模块和系统主站与ir46智能电能表进行串口通讯时,ir46智能电能表启动串口中断服务程序对串口数据进行完整读取与存储,主程序上电后对读取到的串口数据进行通讯协议的匹配判断。基于ir46智能电能表支持多通道通讯,针对串口中断服务程序的流程设计上,对串口数据仅进行读取而不作任何判断,降低了串口数据处理的复杂度,且在波特率较高的情况下避免出现串口数据丢失的情况,再利用ir46智能电能表中的通讯协议识别模块可判断多个通讯模块和系统主站所使用的通讯协议的不同,启动主程序为串口数据匹配到正确的通讯协议,保证通讯的可靠性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是本发明实施例中公开的一种ir46智能电表的多通讯协议的处理方法流程示意图。

图2是本发明实施例中公开的一种ir46智能电表的多通讯协议的处理装置的结构组成示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,图1示出了本发明实施例中的ir46智能电表的多通讯协议的处理方法流程示意图,具体包括如下步骤:

s101、启动串口中断服务程序,识别串口中断请求的标志;

具体的,执行串口中断服务程序,判断串口接收中断标志ri是否满足ri=1;若满足,则执行步骤s102;

s102、读取串口接收到的串口数据,将所述串口数据存储到串口通讯缓存,并将第一串口通讯缓存指针更新为第二串口通讯缓存指针;

具体的,假设未接收所述串口数据时的第一串口通讯缓存指针为a,所述串口数据的字节数为n,每读取到所述串口数据的一个字节,所述第一串口通讯缓存指针加1,并将所述串口数据的一个字节所对应的数据存储到所述串口通讯缓存,当接收到完整的所述串口数据时,生成第二串口通讯缓存指针为a+n。

需要说明的是,所述第一串口通讯缓存指针指向所述串口通讯缓存的地址,每读取所述串口数据的一个字节,在所述串口通讯缓存中发生一次地址偏移,以存储所述串口数据的一个字节所对应的数据。

需要说明的是,当读取完所述串口数据时,所述串口中断服务程序将所述串口接收中断标志ri清零,等待接收下一个串口数据。

s103、启动主程序,判断串口数据处理指针与所述第二串口通讯缓存指针是否一致;若一致则判断串口通讯上没有数据更新,执行步骤s103;若不一致则判断串口通讯上有数据更新,执行步骤s104;

具体的,假设所述串口数据处理指针为a,与步骤s102中生成的所述第二串口通讯缓存指针a+n进行对比,判断出二者不一致且相差为n,因此判断串口通讯上有数据更新,且串口数据的字节数为n。

若与未接收所述串口数据时的第一串口通讯缓存指针a进行对比,此时所述串口数据处理指针与所述第一串口通讯缓存指针一致,因此判断串口通讯上没有数据更新,主程序返回继续查询判断所述串口数据处理指针与所述第二串口通讯缓存指针是否一致。

需要说明的是,在串口通讯上没有数据更新的情况下,所述第二串口通讯缓存指针仍为未接收到所述串口数据时的第一串口通讯缓存指针。

s104、主程序读取所述串口数据;

具体的,主程序设置对所述串口数据进行逐个字节的读取。

s105、判断所述串口数据与表计支持的所有通讯协议的帧头是否一致;若一致,进入步骤s106;若不一致,则进入步骤s105;

具体的,已知所述串口数据的字节数为n,所述串口数据处理指针为a。

读取所述串口数据的第一个字节的数据,判断是否与表计支持的所有通讯协议的帧头一致,若一致,则执行步骤s106;若不一致,所述串口数据处理指针更新为a+1,所述串口数据丢掉所述第一个字节的数据,此时所述串口数据的字节数为n-1,返回执行步骤s105;

继续读取所述串口数据的第二个字节的数据,判断是否与表计支持的所有通讯协议的帧头一致,若一致,则执行步骤s106;若不一致,所述串口数据处理指针更新为a+2,所述串口数据丢掉所述第二个字节的数据,此时所述串口数据的字节数为n-2,返回执行步骤s105;

以此循环进行判断,直至判断所述串口数据的第m+1个(m+1<n)字节的数据与表计支持的所有通讯协议的帧头一致,则执行步骤s106,此时所述串口数据处理指针为a+m,所述串口数据的字节数为n-m;

需要说明的是,若判断所述串口数据的第n个字节的数据与表计支持的所有通讯协议的帧头不一致,所述串口数据处理指针为a+n,主程序存储当前串口数据处理指针为a+n后退出判断。

需要说明的是,在判断所述串口数据的当前一个字节的数据与表计支持的所有通讯协议的帧头不一致后,丢弃所述串口数据的当前一个字节的数据,再返回步骤s105,保证主程序此时读取到所述串口数据的下一个字节的数据。

s106、基于帧头匹配结果,获取第一串口数据;

具体的,当判断所述串口数据的第m+1个(m+1<n)字节的数据与表计支持的所有通讯协议的帧头一致,此时获取字节数为n-m的所述第一串口数据,所述第一串口数据是由字节数为n的所述串口数据的后n-m个字节数据所组成的。

s107、将所述第一串口数据与表计支持的所有通讯协议的帧格式进行匹配,获取所述串口数据所属的第一通讯协议;

具体的,已知字节数为n的所述串口数据中第m+1个字节到第n个字节所对应的数据为所述第一串口数据,此处仍以所述串口数据的第m+1个字节代替所述第一串口数据的第一个字节进行描述,如下所述:

根据步骤s105判断所述串口数据的第m+1个字节的数据已匹配表计支持的所有通讯协议的帧头,由所述串口数据的第m+2个字节的数据到第n个字节的数据,与表计支持的所有通讯协议进行帧格式的匹配,以获取所述串口数据所属的第一通讯协议,且所述第一通讯协议为表计支持的所有通讯协议中的一个。

需要说明的是,将对应的所述串口数据处理指针a+m加上所述第一串口数据的字节数n-m,生成当前串口数据处理指针为a+n,主程序记录所述当前串口数据处理指针a+n。当主程序执行新一轮的循环判断时,将所述当前串口数据处理指针a+n视为判断条件。

需要说明的是,将所述第一串口数据与表计支持的所有通讯协议的帧格式进行匹配时,包括对帧尾和校验码的判断。

s108、根据所述第一通讯协议对所述串口数据进行解析,生成所述串口数据的回复帧,将所述串口数据的回复帧通过串口发送出去。

需要说明的是,ir46智能电能表本身存在一个通讯协议识别模块,所述通讯协议识别模块中包含不同类型的通讯协议,当ir46智能电能表根据传输距离选择不同的通讯方式时,例如gprs通讯、rf通讯、rlc载波通讯等,由于每个通讯方式都对应着不同的通讯协议类型,基于不同通讯协议传输的数据,将对应不同的配置,即进行不同的串口数据处理。

s109、等待接收下一个串口数据,根据所述第一通讯协议对接收到的所述下一个串口数据进行解析,生成所述下一个串口数据的回复帧,将所述下一个串口数据的回复帧通过串口发送出去。

需要说明的是,在对所述串口数据进行通讯协议匹配后,将继续利用已匹配的通讯协议对下一个串口数据进行处理,以此完成数据的交互。

具体实施过程中,当发送方向ir46智能电能表发送串口数据请求进行通讯时,所述ir46智能电能表基于串口中断服务程序接收所述串口数据,所述ir46智能电能表基于主程序对所述串口数据进行判断,为所述串口数据匹配表计支持的一个通讯协议,再根据所述通讯协议发送所述串口数据的回复帧返回发送方,此时建立发送方与ir46智能电能表的通讯。

请参阅图2,图2示出了本发明实施例中的一种ir46智能电表的多通讯协议的处理装置的结构组成示意图,所述装置包括:

读取模块201,用于基于识别到的串口中断请求读取接收到的串口数据;

具体的,所述读取模块用于每读取所述串口数据的一个字节,对第一串口通讯缓存指针加1,并将所述串口数据的一个字节所对应的数据存储到所述串口通讯缓存中;在读取到完整的所述串口数据后,生成第二串口通讯缓存指针。

判断模块202,用于基于串口数据处理指针判断串口通讯上是否有数据更新,若判断所述串口通讯上有数据更新时,主程序读取所述串口数据;

具体的,所述判断模块用于判断所述串口数据处理指针与所述第二串口通讯缓存指针是否一致;

在判断所述串口数据处理指针与所述第二串口通讯缓存指针不一致时,说明串口通讯上有数据更新,主程序读取所述串口数据;

在判断所述串口数据处理指针与所述第二串口通讯缓存指针一致时,说明串口通讯上没有数据更新,主程序返回判断所述串口数据处理指针与所述第二串口通讯缓存指针是否一致。

匹配模块203,用于将所述串口数据与表计支持的所有通讯协议进行匹配,获取所述串口数据所属的第一通讯协议;

具体的,所述匹配模块用于判断所述串口数据与表计支持的所有通讯协议的帧头是否一致;

在判断所述串口数据与表计支持的所有通讯协议的帧头一致后,获取第一串口数据,所述第一串口数据为所述串口数据匹配帧头后剩下的数据;

将所述第一串口数据与表计支持的所有通讯协议的帧格式进行匹配,获取所述串口数据所属的第一通讯协议。

需要说明的是,将所述串口数据与表计支持的所有通讯协议的帧头进行判断时,存在一个循环过程,当所述串口数据的第一个字节不符合时直接丢弃,进行所述串口数据的第二个字节的判断,以此循环进行匹配处理,直至判断所述串口数据的当前一个字节匹配表计支持的所有通讯协议的帧头。

处理模块204,用于根据所述第一通讯协议对所述串口数据进行解析,生成所述串口数据的回复帧,并将所述串口数据的回复帧通过串口发送出去;

交互模块205,用于等待接收下一个串口数据,根据所述第一通讯协议对接收到的所述下一个串口数据进行解析,生成所述下一个串口数据的回复帧,将所述下一个串口数据的回复帧通过串口发送出去。

需要说明的是,ir46智能电能表本身存在一个通讯协议识别模块,所述通讯协议识别模块中包含不同类型的通讯协议,当ir46智能电能表根据传输距离选择不同的通讯方式时,例如gprs通讯、rf通讯、rlc载波通讯等,由于每个通讯方式都对应着不同的通讯协议类型,基于不同通讯协议传输的数据,将对应不同的配置,即进行不同的串口数据处理。

在本发明实施例中,当多个通讯模块和系统主站与ir46智能电能表进行串口通讯时,ir46智能电能表启动串口中断服务程序对串口数据进行完整读取与存储,主程序上电后对读取到的串口数据进行通讯协议的匹配判断。基于ir46智能电能表支持多通道通讯,针对串口中断服务程序的流程设计上,对串口数据仅进行读取而不作任何判断,降低了串口数据处理的复杂度,且在波特率较高的情况下避免出现串口数据丢失的情况,再利用ir46智能电能表中的通讯协议识别模块可判断多个通讯模块和主站所使用的通讯协议的不同,启动主程序为串口数据匹配到正确的通讯协议,保证通讯的可靠性。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。

另外,以上对本发明实施例所提供的一种ir46智能电表的多通讯协议的处理方法及装置进行了详细介绍,本文中应采用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1