冗余CAN总线通信系统的数据通信方法与流程

文档序号:12492089阅读:1010来源:国知局
冗余CAN总线通信系统的数据通信方法与流程

本发明涉及现场总线通信技术,尤其涉及冗余CAN总线通信系统的数据通信方法。



背景技术:

目前,CAN总线技术已被广泛应用于工业控制领域。CAN总线分为物理层、数据链路层和应用层。其中,物理层和数据链路层遵循CAN2.0协议规范。1992年,CIA组织成立,其首要任务之一就是制定CAN应用层协议。目前,通过的协议规范包括DeviceNet、CANOpen等。CANOpen规范是工业控制领域权威的规范,其包括系列文档。其中,最基本的为CANOpen301,已正式发布并应用。此外,CANOpen302是针对浮动主节点的规范,CANOpen307是海事规范。对于安全等级要求较高的系统而言,尤其是硬实时嵌入式系统而言(海事领域、航空航天等领域),对传输数据的可靠性要求较高,因此通常会采用冗余CAN总线通信系统。冗余CAN总线通信系统的物理层结构如图1所示,其中,节点100包括两个CAN控制器101、102以及两个CAN收发器103、104。目前的冗余CAN总线系统主要有以下几种通信方式:

1、双CAN通信系统的简单冗余:

这种方式简单地将双CAN冗余通讯系统作为单CAN系统的重复,在两条CAN总线上发送和接收数据。其通信方式过于简单,如果在数据通信过程出现阻塞状况,同一帧报文将会在不同的时间到达接收方,从而导致数据的反复震荡,数据一致性差。对于实时系统而言,将会很大程度影响系统的功能和可靠性。

2、冗余系统的冷备份:

所谓冷备份即数据首先在一条CAN总线上进行传输,当使用的这一条CAN总线出现故障时,再使用另外一条CAN总线代替故障的CAN总线,进行数据的传输。该种传输机制由于任一时刻只有一条CAN总线在传输数据,也即可以保证数据的一致性问题。但是,其存在下面问题:(1)在总线切换的过程中会出现数据的丢失以及数据的延时传输;(2)当使用的那一条CAN总线出现短暂的干扰或故障时,该机制失去冗余的含义,因此,对于实时系统而言,冷备份系统并不适合。

3、CANOpen307规范中使用的热备份:

针对单CAN总线网络而言,CIA组织提出了CANOpen301规范。而海事电子产品由于其安全等级较高,因此采用冗余CAN总线,并在CANOpen301基础上提出了CANOpen307规范。目前,CANOpen307规范仍然是草稿版,未正式发布。

CANOpen307规范中也是采用热冗余,即两条CAN总线都进行过程数据(PDO)的发送,其从源端保证数据的一致性。即:待发送的CAN报文,从请求发送开始,到放入CAN控制器进行发送,会分别在两条CAN总线上进行计时,如果超过设定的时间窗口,会将报文舍弃,从而保证数据的一致性。但是,这种通信方式存在以下问题:(1)时间窗口的设置不能无限的大,要小于报文的禁止时间,否则仍然会出现乱序的问题;(2)在有限的时间窗口内,可能出现下面情况:当两条CAN总线都收到干扰时,会导致总线报文发送延迟,两条CAN总线上的报文都超过设定的时间窗口,将报文舍弃。那么,对于实时嵌入式系统来讲,丢弃了重要的报文,延迟了报文的接收时间,将会对系统产生不可预估,甚至是破坏性的影响。(3)在代码实现机制上复杂。



技术实现要素:

本发明所要解决的技术问题在于提供一种制造成本低的冗余CAN总线通信系统的数据通信方法,其能充分保证接收数据的一致性,并最大程度避免接收端产生新旧数据的震荡。

为解决上述技术问题,本发明所采取的技术方案是:

冗余CAN总线通信系统的数据通信方法,包括以下步骤:

发送端将包含滚动计数值a的PDO报文在两条CAN总线上发送;发送端发送具有同一个报文ID的PDO报文时,每发送一帧PDO报文,PDO报文的滚动计数值a加1,滚动计数值a的初始值为0,滚动计数值的上限值为N,当滚动计数值a达到其上限值N时,重新从1开始计数;

在接收端设置期望计数器,期望计数器的计数值b用于表示期望接收到的PDO报文的滚动计数值;接收端每接收到发送端发送的一帧PDO报文时,先判断该帧PDO报文是否有效,其中: 当期望计数器的计数值b为0、接收到的PDO报文的滚动计数值a为0、或者是接收到的PDO报文的滚动计数值a等于期望计数器的计数值b时,判断接收的PDO报文有效,否则,判断接收到的PDO报文为无效报文;

接收端在接收到滚动计数值a为0的有效报文时,将期望计数器的计数值b设为1,在接收到滚动计数值a不为0的有效报文、且期望计数器的计数值b小于所述的上限值N时,将期望计数器的计数值b更新为该有效报文的滚动计数值加1,在接收到滚动计数值a不为0的有效报文、且期望计数器的计数值b等于所述的上限值N时,将期望计数器的计数值b更新为1;

接收端在接收到无效报文时,丢弃该无效报文,并维持当前期望计数器的计数值b不变。

本发明的冗余CAN总线通信系统的数据通信方法易于实现、可靠性高,在热冗余传输的前提下,即保证了接收数据的一致性,又避免了数据的震荡,提高了实时系统的性能。与现有技术相比,本发明至少具有以下优点和特点:

1、与双CAN通信系统的简单冗余相比,解决了数据通信的乱序和数据一致性问题;

2、相比冗余系统的冷备份而言,可以实现两条CAN总线同时进行数据的传输,不存在CAN总线切换带来的丢帧和数据通信延时问题;

3、相比CANOpen307机制而言,本发明不在发送端进行报文的过滤,而采用接收端进行报文的比较判断,解决了由于时间窗口设置时导致丢失报文的问题,而且软件实现简单可靠;

4、本发明的发送端在两条CAN总线上都进行数据的传输,从源头上避免了丢帧的问题,而接收端可区分出新旧报文,对新报文进行接收,将旧报文进行舍弃,在保证数据一致性的同时,又避免了数据的震荡。

附图说明

图1示出了冗余CAN总线通信系统的物理层结构示意图。

图2示出了发送端所采用的滚动计数机制的原理示意图。

图3示出了根据本发明一实施例的冗余CAN总线通信系统的数据通信方法的接收端流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。

请参阅图2。根据本发明一实施例的一种冗余CAN总线通信系统的数据通信方法为了防止接收方接收到的数据产生新旧数据的震荡,在发送端采用了滚动计数(Rolling Counter)的机制,在接收端进行数据的筛选。在本实施例中,对于同一个ID的PDO报文而言,在报文的数据场中取第一个字节进行滚动计数,该滚动计数值最大值可以灵活设置。发送端每发送一帧报文,滚动计数值就加1,包含该滚动计数值的报文在两条总线(即图2中的默认总线和冗余总线)上发送。发送端在上电或复位后首先发送滚动计数值为0的报文,之后的计数从1开始,如果超过数据字典中定义的最大值,则从1开始重新计数。

请结合图3所示。根据本发明一实施例的一种冗余CAN总线通信系统的数据通信方法,包括以下步骤:

发送端将包含滚动计数值a的PDO报文在两条CAN总线上发送;发送端发送具有同一个报文ID的PDO报文时,每发送一帧PDO报文,PDO报文的滚动计数值a加1,滚动计数值a的初始值为0,滚动计数值的上限值为N,当滚动计数值a达到其上限值N时,在发送下一帧PDO报文时,重新从1开始计数;在本实施例中,N=255,发送端发送的第一帧PDO报文的a为1,第二帧PDO报文为2,依次类推,当发送端发送完a=255的那一帧PDO报文之后,接下来的发送的那一帧PDO报文的滚动计数值a=1;

在接收端设置期望计数器,期望计数器的计数值b用于表示期望接收到的PDO报文的滚动计数值;接收端每接收到发送端发送的一帧PDO报文时,先判断该帧PDO报文是否有效,其中: 当期望计数器的计数值b为0、接收到的PDO报文的滚动计数值a为0、或者是接收到的PDO报文的滚动计数值a等于期望计数器的计数值b时,判断接收的PDO报文有效,否则,判断接收到的PDO报文为无效报文;也就是说,如果接收到的PDO报文的滚动计数值a大于或小于当前期望计数器的计数值b时则都将该PDO报文视为无效;

接收端在接收到滚动计数值a为0的有效报文时,将期望计数器的计数值b强制设为1;接收端在接收到滚动计数值a不为0的有效报文、且期望计数器的计数值b小于上限值N时,将期望计数器的计数值b更新为该有效报文的滚动计数值加1,即,b=a+1;接收端在接收到滚动计数值a不为0的有效报文、且期望计数器的计数值b等于上限值N时,则将期望计数器的计数值b更新为1;

接收端在接收到无效报文时,丢弃该无效报文,并维持当前期望计数器的计数值b不变。

在此要说明的是,图3所示的接收端工作流程图仅为示意性的,并不应当视为对本申请限制。例如,接收端也可以先判断a是否为0,而后判断b是否为0。

本实施例中,接收方端对接收到的报文进行了过滤,从而能充分保证接收数据的一致性,并最大程度避免接收端产生新旧数据的震荡。

举例来说,假设发送端发送的第一帧PDO报文在两条CAN总线上同时进行传输,该PDO报文的滚动计数值a=0。如果接收端通过其中一条CAN总线先接收到该帧报文,因a=0会判断该PDO报文为有效报文,并使b=1,也就是说,接收端期望接收到的下一帧PDO报文的滚动计数值为1。当在另一条CAN总线上传输的、滚动计数值为0的PDO报文后传输到接收端时,因a=0,仍然会被接收端判断为有效报文,同时期望计数器的计数值b仍然为1。接下来,假设发送端又将第二帧PDO报文同时在两条CAN总线上进行传输,此时第二帧PDO报文的滚动计数值a=1。如果接收端又通过其中一条CAN总线先接收到该帧报文,由于b=a=1,接收端会判断该PDO报文为有效报文,并使b=1+1=2。而当在另一条CAN总线上传输的、滚动计数值为1的PDO报文后传输到接收端时,因1<2,会被接收端判断为无效报文而被舍弃。依此类推,假设接收端通过其中一条CAN总线先接收到了a=255的这一帧有效报文,因此时期望计数器的计数值b也等于255,则会使b=1。而当在另一条CAN总线上传输的、滚动计数值为255的PDO报文后传输到接收端时,因255≠1,还是会被接收端判断为无效报文而被舍弃。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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