一种处理双CAN总线时序不同步的方法及系统技术方案

技术编号:16042429 阅读:40 留言:0更新日期:2017-08-20 00:47
本发明专利技术提供了一种处理双CAN总线时序不同步的方法及系统,其中方法包括:发送设备向通过双CAN总线连接的接收设备发送指令帧时,依次在每个指令帧中设置帧序号,其中,帧序号按照预设顺序进行编号;接收设备每接收一个指令帧,比较当前指令帧的帧序号是否在数组中,其中,数组包含前N次执行的指令的指令帧的帧序号,N≥1且N为正整数;接收设备比较当前指令帧的帧序号在数组中,则忽略该指令。

【技术实现步骤摘要】
一种处理双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的一个可选本文档来自技高网...
一种处理双CAN总线时序不同步的方法及系统

【技术保护点】
一种处理双CAN总线时序不同步的方法,其特征在于,包括:发送设备向通过双CAN总线连接的接收设备发送指令帧时,依次在每个指令帧中设置帧序号,其中,所述帧序号按照预设顺序进行编号;接收设备每接收一个所述指令帧,比较当前指令帧的帧序号是否在数组中,其中,所述数组包含前N次执行的指令的指令帧的帧序号,N≥1且N为正整数;接收设备比较所述当前指令帧的帧序号在所述数组中,则忽略该指令。

【技术特征摘要】
1.一种处理双CAN总线时序不同步的方法,其特征在于,包括:发送设备向通过双CAN总线连接的接收设备发送指令帧时,依次在每个指令帧中设置帧序号,其中,所述帧序号按照预设顺序进行编号;接收设备每接收一个所述指令帧,比较当前指令帧的帧序号是否在数组中,其中,所述数组包含前N次执行的指令的指令帧的帧序号,N≥1且N为正整数;接收设备比较所述当前指令帧的帧序号在所述数组中,则忽略该指令。2.根据权利要求1所述的方法,其特征在于,所述N=5-int(T2/T1),其中,T2为最小指令帧的发送间隔时间,T1为最大指令执行时间。3.根据权利要求1或2所述的方法,其特征在于,所述接收设备每接收一个所述指令帧,比较当前指令帧的帧序号是否在数组中,接收设备比较所述当前指令帧的帧序号在所述数组中,则忽略该指令包括:所述接收设备接收第一CAN总线通道数据;对所述第一CAN总线通道数据的有效性进行判断;判断所述第一CAN总线通道数据有效后,将所述当前指令帧的帧序号与数组中的N个历史帧序号进行比对;如果所述数组中不存在所述当前指令帧的帧序号,将当前指令帧的帧序号存入所述数组中,删除最早存入的帧序号,并执行所述当前指令帧的指令,执行完毕后执行接收第二CAN总线通道数据的操作;如果所述数组中已经存在所述当前指令帧的帧序号,不响应所述当前指令帧,并执行接收所述第二CAN总线通道数据的操作;所述接收设备接收第二CAN总线通道数据;对所述第二CAN总线通道数据的有效性进行判断;判断所述第二CAN总线通道数据有效后,将所述当前指令帧的帧序号与数组中的N个历史帧序号进行比对;如果所述数组中不存在所述当前指令帧的帧序号,将当前指令帧的帧序号存入所述数组中,删除最早存入的帧序号,并执行所述当前指令帧的指令,执行完毕后执行所述接收第一CAN总线通道数据的操作;如果所述数组中已经存在所述当前指令帧的帧序号,不响应所述当前指令帧,并执行所述接收所述第一CAN总线通道数据的操作。4.根据权利要求1所述的方法,其特征在于,所述帧序号从0开始计数,计满255后从0重新开始计数,计数每次加1。5.根据权利要求1至4所述的方法,其特征在于,所述双CAN总线替换为双串口。6.一种...

【专利技术属性】
技术研发人员:赵琳康冰卫瑞董志涛董彦维刘希强高艳段祉鸿朱曦曼陈令刚
申请(专利权)人:北京航天发射技术研究所中国运载火箭技术研究院
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1