本发明专利技术公开了冗余CAN总线通信系统的数据通信方法,包括:发送端将包含滚动计数值a的PDO报文在两条CAN总线上发送;发送端发送具有同一个报文ID的PDO报文时,每发送一帧PDO报文,滚动计数值a加1,a的初始值为0,上限值为N,当a达到N时,重新从1开始计数;在接收端设置期望计数器,期望计数器的计数值b表示期望接收到的PDO报文的滚动计数值;接收端每接收到发送端的一帧PDO报文时,先判断报文是否有效;在报文为有效报文、且a为0时,将b设为1;在报文为有效报文、且b<N时,将b更新为b=a+1,如b=N,则令b=1;接收端在接收到无效报文时,丢弃该无效报文,并维持b不变。本发明专利技术可避免接收端产生新旧数据的震荡。
【技术实现步骤摘要】
冗余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总线通信系统的数据通信方法为了防止接收方接收到的数据产生新旧数据的震荡,在发送端采用了滚动计数(RollingCounter)的机制,在接收端进行数据的筛选。在本实施例中,对于同一个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,依次类推,当发送端发本文档来自技高网...
【技术保护点】
冗余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不变。...
【技术特征摘要】
1.冗余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报文有...
【专利技术属性】
技术研发人员:王君惠,石磊,金江善,姜春宇,张岳,
申请(专利权)人:中国船舶重工集团公司第七一一研究所,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。