一种处理双CAN总线时序不同步的方法及系统与流程

文档序号:11524029阅读:498来源:国知局
一种处理双CAN总线时序不同步的方法及系统与流程

本发明涉及计算机控制技术领域,尤其涉及一种处理双can(controllerareanetwork,控制器局域网络)总线时序不同步的方法及系统。



背景技术:

为了提高设备间通讯的可靠性,目前主流的控制系统均采用双总线通信,以实现互相备份,因此双总线间的仲裁机制就是需要解决的问题。目前双总线间的仲裁机制主要分为两种,总线切换和双收双发。总线切换技术开发成本高,所以双收双发机制也被很多人使用。使用双收双发机制时,双通道数据不同步的现象是客观存在的但不明显,如果总线负载过大时,双通道数据不同步的现象会加剧,而双总线数据不同步时,会导致某一通道的下一帧数据先于另一通道的上一帧数据到达,处理不当时,会造成上一帧指令被处理两次,有可能造成命令误判,引起通讯异常。



技术实现要素:

本发明旨在至少克服上述缺陷之一提供一种处理双can总线时序不同步的方法及系统,以解决双通道数据不同步的问题。

为达到上述目的,本发明的技术方案具体是这样实现的:

本发明的一个方面提供了一种处理双can总线时序不同步的方法,包括:发送设备向通过双can总线连接的接收设备发送指令帧时,依次在每个指令帧中设置帧序号,其中,帧序号按照预设顺序进行编号;接收设备每接收一个指令帧,比较当前指令帧的帧序号是否在数组中,其中,数组包含前n次执行的指令的指令帧的帧序号,n≥1且n为正整数;接收设备比较当前指令帧的帧序号在数组中,则忽略该指令。

另外,n=5-int(t2/t1),其中,t2为最小指令帧的发送间隔时间,t1为最大指令执行时间。

另外,接收设备每接收一个指令帧,比较当前指令帧的帧序号是否在数组中,接收设备比较当前指令帧的帧序号在数组中,则忽略该指令包括:接收设备接收第一can总线通道数据;对第一can总线通道数据的有效性进行判断;判断第一can总线通道数据有效后,将当前指令帧的帧序号与数组中的n个历史帧序号进行比对;如果数组中不存在当前指令帧的帧序号,将当前指令帧的帧序号存入数组中,删除最早存入的帧序号,并执行当前指令帧的指令,执行完毕后执行接收第二can总线通道数据的操作;如果数组中已经存在当前指令帧的帧序号,不响应当前指令帧,并执行接收第二can总线通道数据的操作;接收设备接收第二can总线通道数据;对第二can总线通道数据的有效性进行判断;判断第二can总线通道数据有效后,将当前指令帧的帧序号与数组中的n个历史帧序号进行比对;如果数组中不存在当前指令帧的帧序号,将当前指令帧的帧序号存入数组中,删除最早存入的帧序号,并执行当前指令帧的指令,执行完毕后执行接收第一can总线通道数据的操作;如果数组中已经存在当前指令帧的帧序号,不响应当前指令帧,并执行接收第一can总线通道数据的操作。

另外,帧序号从0开始计数,计满255后从0重新开始计数,计数每次加1。

另外,双can总线替换为双串口。

本发明另一方面提供了一种处理双can总线时序不同步的系统,包括:发送设备,用于向通过双can总线连接的接收设备发送指令帧时,依次在每个指令帧中设置帧序号,其中,帧序号按照预设顺序进行编号;接收设备,用于每接收一个指令帧,比较当前指令帧的帧序号是否在数组中,其中,数组包含前n次执行的指令的指令帧的帧序号,n≥1且n为正整数;比较当前指令帧的帧序号在数组中,则忽略该指令。

另外,n=5-int(t2/t1),其中,t2为最小指令帧的发送间隔时间,t1为最大指令执行时间。

另外,接收设备通过如下方式执行每接收一个指令帧,比较当前指令帧的帧序号是否在数组中,接收设备比较当前指令帧的帧序号在数组中,则忽略该指令的操作:接收设备,用于接收第一can总线通道数据;对第一can总线通道数据的有效性进行判断;判断第一can总线通道数据有效后,将当前指令帧的帧序号与数组中的n个历史帧序号进行比对;如果数组中不存在当前指令帧的帧序号,将当前指令帧的帧序号存入数组中,删除最早存入的帧序号,并执行当前指令帧的指令,执行完毕后执行接收第二can总线通道数据的操作;如果数组中已经存在当前指令帧的帧序号,不响应当前指令帧,并执行接收第二can总线通道数据的操作;接收第二can总线通道数据;对第二can总线通道数据的有效性进行判断;判断第二can总线通道数据有效后,将当前指令帧的帧序号与数组中的n个历史帧序号进行比对;如果数组中不存在当前指令帧的帧序号,将当前指令帧的帧序号存入数组中,删除最早存入的帧序号,并执行当前指令帧的指令,执行完毕后执行接收第一can总线通道数据的操作;如果数组中已经存在当前指令帧的帧序号,不响应当前指令帧,并执行接收第一can总线通道数据的操作。

另外,帧序号从0开始计数,计满255后从0重新开始计数,计数每次加1。

另外,双can总线替换为双串口。

由上述本发明提供的技术方案可以看出,通过本发明实施例提供的处理双can总线时序不同步的方法及系统,保证了双总线双收双发时出现双通道数据不同步造成通讯异常的现象。此方法不仅适用于can总线,双串口冗余通讯也可以使用。

附图说明

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

图1为本发明实施例1提供的处理双can总线时序不同步的方法的流程图;

图2为本发明实施例1提供的处理双can总线时序不同步的系统的结构示意图。

具体实施方式

下面结合附图对本发明的实施方式进行详细说明。

实施例1

本发明实施例1设计了一种处理双can总线时序不同步的方法及系统,适应于双总线双收双发时总线负载过大造成双通道数据不同步的情况。

图1示出了本发明实施例1提供的处理双can总线时序不同步的方法的流程图,参见图1,本发明实施例1提供的处理双can总线时序不同步的方法,包括:

s101,发送设备向通过双can总线连接的接收设备发送指令帧时,依次在每个指令帧中设置帧序号,其中,帧序号按照预设顺序进行编号;

s102,接收设备每接收一个指令帧,比较当前指令帧的帧序号是否在数组中,其中,数组包含前n次执行的指令的指令帧的帧序号,n≥1且n为正整数;

s103,接收设备比较当前指令帧的帧序号在数组中,则忽略该指令。

由此可见,在通讯协议中设计一组“帧序号”用于甄别双冗余can总线上的指令帧计数,采用数组存储前n次执行的“帧序号”,当收到一条指令时比较当前“帧序号”是否在数组中,如果在数组中代表该指令已经被执行则忽略该指令,这种算法避免了后发出的指令先于前面的指令得到执行,保证了双总线双收双发时出现双通道数据不同步造成通讯异常的现象。

作为本发明实施例1的一个可选实施方式,帧序号从0开始计数,计满255后从0重新开始计数,计数每次加1,由此,can总线设备向双冗余can总线上的另外一个设备每发送一个指令帧,则序号计数加1,针对“帧序号”的递增特性,可以有效地执行计数的操作。当然,本发明并不局限于此,采用从255开始计数,计数每次减1,计到0后从255重新开始计数也属于本发明的保护范围,当然,其他方式的预设计数规则均应属于本发明的保护范围。

具体地,作为本发明实施例1的一个可选实施方式,n=5-int(t2/t1),其中,t2为最小指令帧的发送间隔时间,t1为最大指令执行时间。其中,若n值计算结果小于等于1时,n应取值为1。经过测试,采用can总线双收双发机制时,总线负载过大引起同一帧数据在总线上出现的时间差约为0.5毫秒,采用记录5组历史数据的方式,未出现通讯异常。

作为本发明实施例1的一个可选实施方式,s102,接收设备每接收一个指令帧,比较当前指令帧的帧序号是否在数组中,s103,接收设备比较当前指令帧的帧序号在数组中,则忽略该指令包括:

接收设备接收第一can总线通道数据;

对第一can总线通道数据的有效性进行判断;

判断第一can总线通道数据有效后,将当前指令帧的帧序号与数组中的n个历史帧序号进行比对;

如果数组中不存在当前指令帧的帧序号,将当前指令帧的帧序号存入数组中,删除最早存入的帧序号,并执行当前指令帧的指令,执行完毕后执行接收第二can总线通道数据的操作;

如果数组中已经存在当前指令帧的帧序号,不响应当前指令帧,并执行接收第二can总线通道数据的操作;

接收设备接收第二can总线通道数据;

对第二can总线通道数据的有效性进行判断;

判断第二can总线通道数据有效后,将当前指令帧的帧序号与数组中的n个历史帧序号进行比对;

如果数组中不存在当前指令帧的帧序号,将当前指令帧的帧序号存入数组中,删除最早存入的帧序号,并执行当前指令帧的指令,执行完毕后执行接收第一can总线通道数据的操作;

如果数组中已经存在当前指令帧的帧序号,不响应当前指令帧,并执行接收第一can总线通道数据的操作。

由此保证双can总线中每一个通道均可以采用本发明所记载的方法防治时许不同步产生的数据不同步的情况。

具体地,帧序号的数组设置为先进先出的队列,存储空间为n个char型数据,初始化值设置为255;

初始化结束后,启动处理循环,首先进入a通道处理流程;

接收到a通道数据后,对数据的有效性进行判断,有效性包括帧头、帧尾、校验等;

判断a通道数据为有效后,将当前帧序号与帧序号数组的n个历史帧序号进行比对;

当帧序号数组中已经存在当前帧序号时,当前命令不需要响应,退出当前a通道处理流程,进入b通道处理流程;

当帧序号数组中不存在当前帧序号时,将当前帧序号存入帧序号数组中,最早存入的帧序号出队,进入下一步的命令动作执行;

a通道数据处理结束后,进行b通道数据处理流程;

接收到b通道数据后,对数据的有效性进行判断,有效性包括帧头、帧尾、校验等;

判断b通道数据为有效后,将当前帧序号与帧序号数组的n个历史帧序号进行比对;

当帧序号数组中已经存在当前帧序号时,当前命令不需要响应,退出当前b通道处理流程,进入a通道处理流程;

当帧序号数组中不存在当前帧序号时,将当前帧序号存入帧序号数组中,最早存入的帧序号出队,进入下一步的命令动作执行;

b通道数据处理结束后,一个处理循环结束。

图2示出了本发明实施例1提供的处理双can总线时序不同步的系统的结构示意图,其应用于上述方法,在此仅对其结构进行简要说明,其他未尽事宜,可参见上述方法的相关说明,参见图2,本发明实施例1提供的处理双can总线时序不同步的系统,包括:

发送设备101,用于向通过双can总线连接的接收设备发送指令帧时,依次在每个指令帧中设置帧序号,其中,帧序号按照预设顺序进行编号;

接收设备102,用于每接收一个指令帧,比较当前指令帧的帧序号是否在数组中,其中,数组包含前n次执行的指令的指令帧的帧序号,n≥1且n为正整数;比较当前指令帧的帧序号在数组中,则忽略该指令。

作为本发明实施例1的一个可选实施方式,n=5-int(t2/t1),其中,t2为最小指令帧的发送间隔时间,t1为最大指令执行时间。其中,若n值计算结果小于等于1时,n应取值为1。经过测试,采用can总线双收双发机制时,总线负载过大引起同一帧数据在总线上出现的时间差约为0.5毫秒,采用记录5组历史数据的方式,未出现通讯异常。

作为本发明实施例1的一个可选实施方式,接收设备102通过如下方式执行每接收一个指令帧,比较当前指令帧的帧序号是否在数组中,接收设备比较当前指令帧的帧序号在数组中,则忽略该指令的操作:接收设备102,用于接收第一can总线通道数据;对第一can总线通道数据的有效性进行判断;判断第一can总线通道数据有效后,将当前指令帧的帧序号与数组中的n个历史帧序号进行比对;如果数组中不存在当前指令帧的帧序号,将当前指令帧的帧序号存入数组中,删除最早存入的帧序号,并执行当前指令帧的指令,执行完毕后执行接收第二can总线通道数据的操作;如果数组中已经存在当前指令帧的帧序号,不响应当前指令帧,并执行接收第二can总线通道数据的操作;接收第二can总线通道数据;对第二can总线通道数据的有效性进行判断;判断第二can总线通道数据有效后,将当前指令帧的帧序号与数组中的n个历史帧序号进行比对;如果数组中不存在当前指令帧的帧序号,将当前指令帧的帧序号存入数组中,删除最早存入的帧序号,并执行当前指令帧的指令,执行完毕后执行接收第一can总线通道数据的操作;如果数组中已经存在当前指令帧的帧序号,不响应当前指令帧,并执行接收第一can总线通道数据的操作。由此保证双can总线中每一个通道均可以采用本发明所记载的方法防治时许不同步产生的数据不同步的情况。

作为本发明实施例1的一个可选实施方式,帧序号从0开始计数,计满255后从0重新开始计数,计数每次加1。由此,can总线设备向双冗余can总线上的另外一个设备每发送一个指令帧,则序号计数加1,针对“帧序号”的递增特性,可以有效地执行计数的操作。

由此可见,在通讯协议中设计一组“帧序号”用于甄别双冗余can总线上的指令帧计数,采用数组存储前n次执行的“帧序号”,当收到一条指令时比较当前“帧序号”是否在数组中,如果在数组中代表该指令已经被执行则忽略该指令,这种算法避免了后发出的指令先于前面的指令得到执行,保证了双总线双收双发时出现双通道数据不同步造成通讯异常的现象。

实施例2

本实施例2与实施例1的区别仅在于双can总线替换为双串口,相关说明参照实施例1的相关说明,在此不再详述。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上的实施例仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通工程技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。

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