一种双冗余can总线数据接收处理方法

文档序号:7773210阅读:588来源:国知局
一种双冗余can总线数据接收处理方法
【专利摘要】本发明为了解决现有技术无法简单、有效地处理两个通道接收到重复数据的问题,提供了一种双冗余CAN总线数据接收处理方法,包括如下步骤:(1)在双冗余CAN总线的第一通道和第二通道上同时发送数据帧组成的数据;(2)接收双冗余CAN总线的第一通道的数据,同时接收双冗余CAN总线的第二通道的数据;(3)判断在两个通道中接收到的数据的数据帧中是否需要区分重复数据;(4)对不需区分重复数据的数据帧内的数据直接使用,对需要区分重复数据的数据帧进行区分:对经过区分处理的数据帧中的非重复数据进行使用,对其中的重复数据则抛掉。本发明利用简单的方法规避了软件延迟、线路延迟等对双冗余CAN总线数据接收的影响。
【专利说明】一种双冗余CAN总线数据接收处理方法
【技术领域】
[0001]本发明涉及一种数据处理方法,更具体地,涉及一种双冗余CAN总线数据接收处
理方法。
【背景技术】
[0002]采用传统的单CAN总线的控制网络,会存在某些失效环节,比如主干线故障、分支线故障、驱动电路故障等。因此,现有技术中,为了提高数据传输的稳定性和安全性,通常使用双冗余CAN总线网络。
[0003]现有技术中确保通信可靠性和差错控制的方法例如中国专利申请(申请号为CN200810106342.6),其公开了一种双冗余CAN总线通信系统的通信方法,包括下述步骤:I)在网络中启动节点I和节点2 ;2)在节点I和节点2之间建立通信登记表;3)当节点I要向节点2发送报文时,节点I根据所要进行的操作确定报文的传输模式为单帧报文传输模式或大批量报文传输模式;4)若采用单帧报文传输模式,则两节点间采用返回N自动重传机制对传输过程进行差错管理;5)若采用大批量报文传输模式,则两节点间采用选择拒绝自动重传机制对传输过程进行差错管理。所述步骤5中的选择拒绝自动重传机制为接收节点要求发送节点重传的只有被检测到差错的帧。但是,上述方法不适于采用双冗余通道热切换技术和双冗余通道数据同发同收技术时的可靠通信。
[0004]其中,双冗余通道热切换技术是双CAN总线的一个通道作为工作通道,另外一个通道热备份,当工作通道出现故障时,切换到备份通道,备份通道作为工作通道继续工作,原来的通道如果修复好则作为备份通道,如果不能修复好则标识故障。
[0005]双冗余通道数据同发同收技术是双CAN总线的两个通道都作为工作通道,数据在两个通道上同时传送,只要有一个通道数据传送通畅,则认为工作正常。
[0006]但是,现有技术尚无简单、有效地解决两个通道接收到重复数据时的处理的技术方案。双冗余CAN总线系统的接收节点会在双总线上分别收到相同的数据,并且受软件延迟、线路延迟等影响,两个通道上收到的数据间隔时间会有所不同,如何能区分接收到的数据为重复数据成为接收处理的关键。

【发明内容】

[0007]为了解决现有技术中存在的上述问题,本发明提供了一种双冗余CAN总线数据接收处理方法是为双冗余通道数据同发同收技术而提出来的。
[0008]根据本发明的一方面,提供了一种双冗余CAN总线数据接收处理方法,包括如下步骤:
[0009](I)在双冗余CAN总线的第一通道和第二通道上同时发送数据帧组成的数据;
[0010](2)接收双冗余CAN总线的第一通道的数据,同时接收双冗余CAN总线的第二通道的数据;
[0011](3)判断在两个通道中接收到的数据的数据帧中是否需要区分重复数据;[0012](4)对不需区分重复数据的数据帧内的数据直接使用,对需要区分重复数据的数据帧进行区分:对经过区分处理的数据帧中的非重复数据进行使用,对其中的重复数据则抛掉。
[0013]在步骤(I)中,在数据帧中存放消息序号,且在每个通道内,各数据帧的消息序号在每次发送以后发生变化。
[0014]进一步地,在步骤(3)中,根据数据帧的消息标识符确定是否需要区分重复数据。
[0015]进一步地,在步骤(4)中,根据所述消息序号进行区分。
[0016]进一步地,步骤(4)包括如下步骤:
[0017](a)获得新的数据帧的消息序号与上次消息序号,其中,新的数据帧的消息序号是从其中一个通道接收到的当前数据帧的消息序号,上次消息序号是在接收所述当前数据帧之前、通过任意通道接收到的、与所述当前数据帧具有相同的数据帧的消息标识符的数据中贞的消息序号;
[0018](b)判断新的数据帧的消息序号是否等于上次消息序号:如果相等,则抛掉所述接收的当前数据帧;否则将所述接收的当前数据帧的消息序号赋给所述上次消息序号并使用当前数据帧。
[0019]进一步地,在两个通道上发送的同一个数据的消息序号相同,发送的不同数据的消息序号每一巾贞不相同。
[0020]进一步地,消息序号占用一个字节长度,在0-255的数据范围内循环变化。
[0021]本发明的有宜效果如下:采用这种双冗余CAN总线数据接收处理方法,仅仅增加一个字节的传输信息,就可以解决重复指令的处理问题,也规避了软件延迟、线路延迟等对双冗余CAN总线数据接收的影响。
【专利附图】

【附图说明】
[0022]图1是根据本发明的一个实施例的双冗余CAN总线网络结构示意图;
[0023]图2是根据本发明的一个实施例的CAN接口扩展示意图;
[0024]图3示出了根据本发明的一个实施例的需要区分重复数据的数据帧格式;
[0025]图4示出了根据本发明的一个实施例的数据接收处理流程图。
【具体实施方式】
[0026]下面结合【专利附图】
附图
【附图说明】本发明的具体实施例。
[0027]如图1-2所示,为双冗余CAN总线网络的结构示意图和CAN接口扩展示意图。
[0028]在硬件上,双冗余CAN总线同时使用两条CAN总线、两个CAN总线驱动器和两个CAN总线控制器和一个CPU。CPU通过不同的端口和中断同时控制两个CAN控制器。在一个实施例中,双冗余CAN总线BUS A、BUS B要求使用相同两套CAN设备,从而实现物理介质。BUS A的CAN设备包括独立的总线电缆、总线驱动器1-2和总线控制器1_1,BUS B的CAN设备包括独立的总线电缆、总线驱动器2-2和总线控制器2-1。CPUl由FPGA实现。
[0029]在工作中,发送时可以通过两条总线BUS A、BUS B发送同一组数据。接收时CPU控制器1-1和2-1可以同时处理两路总线BUS A、BUS B上发来的数据,接收并进行适当处理。[0030]在一个实施例中,双冗余CAN接口卡1-1和1-2分别为SJA1000,它们提供两路独立的CAN接口、每片芯片的8位地址/数据总线和读写控制信号。SJA1000输出信号经过光耦连接CAN收发器PCA82C250,PCA82C250供电电源为隔离电源,由隔离电源转换模块提供。CAN总线的复位信号由FPGA芯片提供,CAN控制器SJA1000的中断信号输出到FPGA。
[0031]软件设计上,采用VxWorks操作系统开发驱动。VxWorks操作系统是风河公司(Wind River SyStem)推出的一款运行在目标机上的高性能、可裁减的嵌入式强实时操作系统,它包括进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分,只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。
[0032]Vxfforks操作系统提供几种标准驱动模型,如串行设备驱动、块设备驱动、网络接口驱动、总线控制器驱动等。根据设备不同,可选择相应的标准驱动模型或自定CAN模块是串行设备,设计选择了标准串行设备驱动模型。
[0033]如图2所示,根据本发明的一个实施例,待发送的数据以数据帧的形式同时被CAN通道A和CAN通道B发送,并且在上述两个通道被发送的数据被同时接收。在待发送的数据帧中,均存放有帧消息标识符以及消息序号。
[0034]在每个通道内,每次发送数据帧以后,下一帧待发送的数据帧的消息序号将较上一次本通道发送的数据帧的帧序号发生变化。在一个优选的实施例中,该消息序号占用一个字节,且将在0-255的范围内循环增加。如图3所示,该消息序号被放在帧数据的数据场。
[0035]图3还示出了待发送的各帧数据的帧格式。每一帧数据均包括:帧头(I字节)、仲裁场(I字节)、控制场(I字节)、数据场(8字节)、帧尾及其他(I字节)这五部分。其中,数据场包括DAT AO-DAT A7这8个字节,且DAT AO用于存放消息序号。
[0036]下面结合图4,详细说明本发明的双冗余CAN总线数据接收处理方法。
[0037]根据本发明的一个优选的实施例,在两个CAN通道A和CAN通道B上分别发送的相同数据的消息序号相同,发送的不同数据的消息序号每一帧不相同。消息序号在0-255的数据范围内循环变化,其变化的条件是:针对不同的消息,则消息序号发生改变。在一个优选的实施例中,该消息序号针对不同的消息自增I。
[0038]当在CAN通道A和CAN通道B上分别同时发送数据帧组成的数据以后,双冗余CAN总线的数据接收端同时接收两个通道发送来的数据帧组成的数据,其接收是按照逐帧接收实现的。其中,双冗余CAN总线的数据接收端使用现有技术中的各种双冗余CAN总线的数据接收模块,其具体实现是本领域技术人员的公知常识,并不作为本发明的发明点。在某些实施例中,可以使用Intel的8XC196CA/CB、飞利浦的TJA1040、82C250、LPC2292、西门子的81C90/91 等。
[0039]在从CAN通道A和CAN通道B分别接收到两个数据帧以后,需要判断在这两个数据帧中是否需要区分重复数据。所谓的重复数据,被定义为具有相同帧消息标识符的两个分别属于不同CAN通道的数据帧。因此,判断时,根据数据帧的消息标识符确定是否需要区分重复数据。其中,对不需区分重复数据的数据帧内的数据,直接使用即可;而对需要区分重复数据的数据帧进行区分。
[0040]上述区分的具体操作为:根据所述消息序号将上述分别属于不同的通道的数据帧加以区分。在一个优选的实施例中,这种区分包括下面两个步骤:
[0041](a)获得新的数据帧的消息序号与上次消息序号,其中,新的数据帧的消息序号是从其中一个通道接收到的当前数据帧的消息序号,上次消息序号是在接收所述当前数据帧之前、通过任意通道接收到的、与所述当前数据帧具有相同的帧的消息标识符的数据帧的消息序号;
[0042](b)判断新的数据帧的消息序号是否等于上次消息序号:如果相等,则抛掉所述接收的当前数据帧;否则将所述接收的当前数据帧的消息序号赋给所述上次消息序号并使用当前数据帧。
[0043]以此类推,接收到的多个数据帧就组成了发送时的原始数据。
[0044]以上的各实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通工程技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。
【权利要求】
1.一种双冗余CAN总线数据接收处理方法,其特征在于,包括如下步骤: (1)在双冗余CAN总线的第一通道和第二通道上同时发送数据帧组成的数据; (2)接收双冗余CAN总线的第一通道的数据,同时接收双冗余CAN总线的第二通道的数据; (3)判断在两个通道中接收到的数据的数据帧中是否需要区分重复数据; (4 )对不需区分重复数据的数据帧内的数据直接使用,对需要区分重复数据的数据帧进行区分:对经过区分处理的数据帧中的非重复数据进行使用,对其中的重复数据则抛掉。
2.根据权利要求1所述的数据接收处理方法,其特征在于,在步骤(I)中,在数据帧中存放消息序号,且在每个通道内,各数据帧的消息序号在每次发送以后发生变化。
3.根据权利要求2所述的数据接收处理方法,其特征在于,在步骤(3)中,根据数据帧的消息标识符确定是否需要区分重复数据。
4.根据权利要求3所述的数据接收处理方法,其特征在于,在步骤(4)中,根据所述消息序号进行区分。
5.根据权利要求4所述的数据接收处理方法,其特征在于,步骤(4)进一步包括如下步骤: (a)获得新的数据帧的消息序号与上次消息序号,其中,新的数据帧的消息序号是从其中一个通道接收到的当前数据帧的消息序号,上次消息序号是在接收所述当前数据帧之前、通过任意通道接收到的、与所述当前数据帧具有相同的帧消息标识符的数据帧的消息序号; (b)判断新的数据帧的消息序号是否等于上次消息序号:如果相等,则抛掉所述接收的当前数据帧;否则将所述接收的当前数据帧的消息序号赋给所述上次消息序号并使用当前数据帧。
6.根据权利要求3所述的数据接收处理方法,其特征在于,在两个通道上发送的同一个数据的消息序号相同,发送的不同数据的消息序号每一帧不相同。
7.根据权利要求6所述的数据接收处理方法,其特征在于,消息序号占用一个字节长度,在0-255的数据范围内循环变化。
【文档编号】H04L12/40GK103490966SQ201310470785
【公开日】2014年1月1日 申请日期:2013年10月10日 优先权日:2013年10月10日
【发明者】李向阳, 梁财海, 李 荣, 王小军, 孙招凤, 张洪彬 申请人:北京航天发射技术研究所, 中国运载火箭技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1