基于can冗余的总线切换方法

文档序号:7703330阅读:206来源:国知局
专利名称:基于can冗余的总线切换方法
技术领域
本发明属于CAN网络通讯技术领域,特别涉及一种基于CAN冗余的总线切换方法。
背景技术
解决CAN网络可靠性通讯的一个有效的办法就是对总线进行不同程度的冗余。虽然 CAN冗余是解决CAN网络可靠性的普遍方法,但是没有人研究基于CAN冗余的总线切 换方法。诸多设计者是在发送失败或者接收失败导致超时的情况下,进行切换总线。无疑 在等待超时的这段时间内,接收数据出错的节点将会错过很多有效数据帧,降低了总线利 用率。然而, 一种好的基于CAN冗余的总线切换方法应该是可以使接收节点尽量少的错 过数据帧,从而提高了总线利用率,也保证了 CAN网络的数据正确稳定传送,增强了 CAN 网络的实时性。

发明内容
本发明要解决的技术问题是提供一种能保证数据接收的可靠正确性和实时性的基于 CAN冗余的总线切换方法。
为了解决上述技术问题,本发明提供一种基于CAN冗余的总线切换方法,包括以下
步骤
1) 、判断是发送节点还是接收节点;当为发送节点时,进入步骤2);当为接收节点 时,进入步骤5);
2) 、判断发送节点是否发送超时;当判断为"是"时,进入步骤3),当判断为"否" 时,则进入步骤4);
3) 、切换总线重新发送;
4) 、发送节点监视总线直至超时或者接收到接收节点的响应帧,表示成功发送数据;
5) 、判断接收节点是否接收超时;当判断为"是"时,进入步骤6),当判断为"否" 时,则进入步骤7),
6) 、通过广播切换总线,告知其他节点切换总线重新发送数据;7)、接收节点发送响应帧,作为对发送节点的响应,表示数据发送并接收成功。
作为本发明的基于CAN冗余的总线切换方法的改进步骤2)中判断发送节点是否发 送超时的标准为发送节点的发送时间是否超过用户设定的最长的发送时间,超过该值认 为该次数据发送失败。
作为本发明的基于CAN冗余的总线切换方法的进一步改进步骤5)中判断接收节点 是否发送超时的标准为接收节点的接收错误是否超出设定的阈值,该阈值是用户定义的 能够忍受的最大接收错误次数。
作为本发明的基于CAN冗余的总线切换方法的进一步改进同一时刻只能有一条总线 发送数据;使用软件缓冲区作为用户发送数据的缓冲池,使用开发板的三个硬件缓冲区加 速数据帧的发送;设置阈值以及超时机制用于通信出现故障时重启控制器或者切换总线重 新发送或继续接收数据帧;用节点指示灯提示用户总线故障,需要及时恢复总线。
作为本发明的基于CAN冗余的总线切换方法的进一步改进步骤3)具体为依次进行 以下步骤
A) 、重启控制器重新发送;如发送成功,则进入步骤B);如仍旧发送不成功,以至 发送超时,则进入步骤C);
B) 、监听等待网络上的响应帧,当收到接收节点的响应帧时表示该次数据传送成功;
C) 、判断其余总线是否可用,如其余总线有任意一条(至少一条)总线可用,则采用 该总线重新发送;若其余总线均不能使用,则提示用户,等待用户恢复。
作为本发明的基于CAN冗余的总线切换方法的进一步改进步骤6)具体为依次进行 以下步骤-
判断其余总线是否可用,如其余总线有任意一条(至少一条)总线可用,则广播切换 总线、重启原控制器,(表示该节点在该总线上是接收不到有效数据帧的);若另一个总线 不可用,则重启原控制器。
上述内容如图l所示当切换总线时,也就是使用另一套控制器、收发器。在网络传 送开始前,控制器已经初始化过,但是由于要初始化掉控制器的某些寄存器、或者某些软 件计数错误,所以要重新初始化控制器,即是重启控制器。
在本发明中的基于CAN冗余的总线切换方法中在每个节点设计一个记录发送数据帧 的软件缓冲区结构数组(Buffer),使得数据帧在总线切换时无需转移。判断软件缓冲区是 否是满的条件是数据缓冲区中的有效数据是否:NUM-1。 NUM是软件缓冲区的最大容量。之所以减掉l,是要为特殊数据帧预留一个数据缓冲区;之所以为特殊帧预留一个数 据缓冲区,是为了防止当软件缓冲区放满数据帧时,特殊帧无法及时发送。必须保证特殊 数据帧能够及时的发送出去。当发送特殊帧时,将其插入到软件缓冲区的预留位置,可以 保证其优先发送。特殊数据帧包括发送节点的总线切换帧Change—Send—Frame、接收节点 的总线切换帧Chang^REV—Frame。 Change—SencLFrame是指发送节点超时时,发往各个节 点的切换总线帧,通知各个节点原通道已经坏掉;而Chang^REV—Frame是接收节点在接 收错误超出阈值时广播的切换总线帧,并不意味着原总线出现故障,只是为了尽量减少接 收节点丢失数据帧而采取的切换总线。
在利用CAN冗余来提高CAN网络通讯的可靠性时,本发明的基于CAN冗余的总线切换方 法有利于提高总线利用率、网络通讯可靠安全性以及网络实时性。本发明的基于CAN冗余 的总线切换方法,用于保证发送节点能够成功发送数据,接收节点能够接收到数据,而且 尽量少的丢失数据帧,从而保证了数据接收的可靠正确性、实时性、安全性。
在本发明中,可以避免因总线硬件故障而平白一直等待到接收超时(在CAN网络中, 超时周期设置肯定比错误数据超出阈值的时间长),在等待的这段时间里,可能错过其他 节点在该故障总线上传送的数据。简单讲,就是接收节点没有设置超时时间,在接收错误 超出阈值时就切换总线发送数据。注意(1)接收错误计数值超过阈值则会切换总线,但 是不表示该条总线坏掉,而是为了尽量减少丢失数据帧,使得该节点能够及时接到数据帧。 (2)发送错误计数值超出阈值时,就会重启控制器,并不切换总线。毕竟切换总线的花 销比重启控制器要大。当重启后仍不能发送成功,则会发生超时中断切换总线,重新发送。
以双CAN网络为例,本发明设置阈值以及超时机制用于通讯出现故障时重新启动 CAN控制器或者切换总线,主要体现在
*当发送节点发送错误计数值超过某阈值时,则重启CAN控制器重新发送;如果 重启控制器仍旧发送不成功,以至发送超时的时候,那么若另一总线可用则切换总线重 新发送;若另一总线不可用则两总线均停用,并通知用户(等待用户恢复)。
*当接收节点在接收错误计数值超过某阈值时若另一总线可用,则重启该节点正
在使用的CAN控制器、广播切换总线,(在CAN网络上广播发送特殊数据帧,通知各个
节点该节点在该总线上是接收不到有效数据帧的,所有节点需要切换到另一条总线上发
送数据);若另一个总线不可用,则重启该节点的CAN控制器。
发送节点的发送计时器是利用系统时钟计时的,在将数据帧放入软件缓冲区时开始计时,将该数据帧的成员变量time值赋值为此时的系统时钟tick值加上阈值周期tick数。 每当1^±++时就会判断软件缓冲区首的数据帧time是否超时。CAN控制器内部自动记录 发送错误、接收错误次数。通过对CAN控制器的相关寄存器的设置,使发送器、接收器 在错误计数超过某阈值时,触发中断。接收错误计数值超过阈值则会切换总线,但是不表 示另一条总线坏掉,而是为了尽量减少丢失数据帧,不必等待到超时再切换总线。发送错 误计数值超出阈值时,就会重启控制器,并不切换总线。因为切换总线的花销比重启控制 器要大。当重启后仍不能发送成功,则会发生超时中断切换总线重新发送。
每个节点设计一个记录数据帧的软件缓冲区结构数组(Buffer),使得数据帧在总线 切换时无需转移。软件缓冲区数据帧Soft—Frame的数据结构(即数组元素的数据结构)如

typedef struct Soft—Frame { INT32Uid; 〃发送节点发送的总线切换帧、接收节点发送的总线切换帧
〃总线恢复帧的ID分别为0、 1、 2 INT8Utype; //数据帧的类型(扩张帧、标准帧、数据帧、远程帧、) INT8U data[8]; INT8U datalen;
1^181^40;//缓冲区优先级(即数据帧优先级)
判断软件缓冲区是否是满的条件是:缓冲区中的有效数据个数是否等于NUM-1(NUM 是软件缓冲区的最大容量)。为了防止当软件缓冲区放满数据帧时,特殊帧无法发送,我 们要为特殊帧在软件缓冲区中预留一个数据缓冲区。当发送切换总线帧时,我们将其插入 到软件缓冲区的预留位置,并且优先发送。所以,当软件缓冲区中的数据帧的个数为 NUM-1个时,就表示软件缓冲区已满。
我们按照到达软件缓冲区的次序,递增地为普通数据帧分配优先级。为保证数据帧的 发送按照先到达先发送的原则,当优先级递增到255时(硬件缓冲区中的优先级寄存器为 8位,最多有256个不同优先级),用户继续往软件缓冲区中放入数据帧则会返回错误, 直至优先级为255的数据帧发送完毕,软件缓冲区才能够再接收用户的数据帧,而且数据帧的优先级从l开始递增。
特殊数据帧包括发送节点的总线切换帧Change—Send一Fmme、接收节点的总线切换帧 Change_REV—Frame以及总线恢复帧Recov_Frame。发送节点的总线切换帧是指发送节点 超时时,发往各个节点的切换总线帧,通知各个节点原通道已经坏掉;而接收节点的总线 切换帧是接收节点在接收错误超出阈值时广播的切换总线帧,并不意味着原总线出现故 障,只是为了尽量减少接收节点丢失数据帧而采取的切换总线措施;总线恢复帧是用户通 知各个节点原来己坏的通道己经可以恢复使用。其ID分别为0, 1, 2;而且 Change—REV—Frame、 Change_Send—Frame的优先级为0 (这两种数据帧不会同时出现,所 以优先级可以相同),意味着当该类帧到达软件缓冲区的预留位置时,将会是第一个被成 功发送的数据帧(因为当前软件缓冲区的其他数据帧的发送被阻塞在另一条总线上);其 他帧的优先级绝对不能为0; Recov一Frame的优先级跟一般数据帧相同,否则将会影响发 送成功中断的去除软件缓冲区的队首数据帧的操作,因为发送成功中断总会删除软件缓冲 区预留位置或者首位置(如果预留位置为空),Recov—Frame是在其他数据帧正常发送的 期间到达软件缓冲区的,如果放在特殊帧位置上,则会被成功发送ISR错误地删除该特殊 帧,而实际上该数据帧还没有发送。最好的解决办法是将总线恢复帧放置第四帧位置,但 是开销太大,需要把第五位置后的所有数据帧后移。本设计做如下处理切换总线帧直接 插入到软件缓冲区的链首,保证其优先发送;总线恢复帧作为一般数据帧处理,插入到软 件缓冲区数组末尾。
实验证明当正在使用的总线出现故障,该设计能够正常发送数据帧,并且采用了该
总线切换方法的接收节点丢失的数据帧比没采用该总线切换方法的节点少。该方法能够保 证发送节点能够成功发送数据,接收节点能够正确接收数据,而且尽量少的丢失数据帧, 从而保证了数据接收的可靠正确性、实时性。


下面结合附图对本发明的具体实施方式
作进一步详细说明。
图l是CAN冗余结构图2是图l发送数据时的流程图3是图l接收数据时的流程图4是图1重新发送数据时的流程图5是图1数据发送成功时的中断流程图;图6是图l错误超出阈值处理的流程图; 图7是图1超时切换总线的流程图。
具体实施例方式
实施例l、如图1所示的一个双CAN网络,采用两套总线(即总线A和总线B),每 套总线都包含完整的总线电缆、总线驱动器、总线控制器。
为了在上述双CAN网络中实现本发明的基于CAN冗余的总线切换方法,因此需要进 行如下处理
当发送节点发送错误计数值超过某阈值时,则重启CAN控制器重新发送,重启CAN 控制器主要是清除控制器中的某些寄存器错误;如果重启控制器仍旧发送不成功,以至发 送超时时,那么若另一总线可用则切换总线重新发送;若另一总线不可用则两总线均停 用,并用该节点指示灯提示用户,等待用户检测该节点的总线通路并及时恢复。
当接收节点在接收错误计数值超过某阈值时若另一总线可用,则重启该节点正在使 用的CAN控制器、广播切换总线(在CAN网络上广播发送特殊数据帧,通知各个节点 该节点在该总线上是接收不到有效数据帧的,所有节点需要切换到另一条总线上发送数 据);若另一个总线不可用,则重启该节点的CAN控制器,直至超时,节点停用并等待用 户恢复。
实施例2、对实施例1所述的双CAN网络进行的基于CAN冗余的总线切换方法,两 条CAN总线同时开启,但是某一时刻最多只有一条总线发送数据,以避免不同步问题造 成的接收数据错误。使用软件缓冲区作为用户发送数据的缓冲池,当节点的三个硬件缓冲 区有空闲时,就将软件缓冲区中的数据放入硬件缓冲区中,进行数据帧的发送;设置阈值 以及超时机制用于通信出现故障时重新启动CAN控制器或者切换总线;利用每个总线节 点的LED灯的亮灭来提示用户总线故障,及时恢复总线。
具体依次进行以下步骤
1) 、判断该节点是属于发送节点还是接收节点,如果属于发送节点进入步骤2),如 果属于接收节点进入步骤7);
2) 、发送节点发送数据的流程具体如图2所示在数据帧发送命令开始时记录数据的
发送超时点deadline,然后将数据帧放入软件缓冲区,如果硬件缓冲区有空闲的话则进一 步放入硬件缓冲区等待发送,硬件寄存器会自动记录发送过程中的发送错误数目。当发送错误超出用户设定的阈值后,就会进入步骤3);否则当收到接收节点的响应帧时即是发 送成功,进入步骤4)。
3) 错误计数超出阈值的中断处理程序,具体如图6:当是发送错误超出阈值时,判 断发送节点是否发送超时,即判断发送节点的发送时间是否超过用户设定的最长的发送时 间,超过该值则进入步骤5),否则重启控制器,重新发送数据,进入步骤6);当是接收 错误超出阈值时,即判断另一条总线是否可用,如另一条总线可用,则广播切换至可用总 线,发送接收数据,并重新启动原来总线的控制器;若另一条也不可用,则重启原控制器 并提示用户(例如以指示灯的形式),等待用户恢复,用户在第一条CAN总线停用时,就 应该想办法及时恢复总线。
4) 成功发送数据中断处理具体如图5所示去除软件buffer中已发送的数据帧,并 读取软件缓冲区,如果能够读取到待发送的数据帧,则将其放入产生该中断的硬件buffer 中等待发送,并清除硬件buffer空标志位;如果读取不到数据帧,说明软件缓冲区空,没 有等待发送到数据帧,则禁能硬件buffer空中断。
5) 切换总线处理流程具体如图7所示如果另一总线可用则重新初始化原来的控制 器,并置指示灯提示用户原总线挂掉,等待用户及时恢复,然后切换至可用总线重新发送 数据帧,即进入步骤6);如果另一总线不可用,则重新初始化该控制器并设置通道挂掉, 点亮指示灯提示用户节点可能挂掉,及时恢复。
6) 重新发送数据流程具体如图4所示当软件缓冲区数据大小为0时,返回错误;
当数据不为o时,如果存在特殊帧,则对特殊帧开始计时并将特殊帧首先放入硬件缓冲区 中等待发送;如果不存在特殊帧,则将buffer+head位置处的数据帧放入硬件缓冲区中等 待发送。
7) 接收节点的接收流程具体如图3所示当在接收错误计数未超出阈值时,就已经 成功接受到数据,则认为数据接收成功,会自动向发送者发送响应帧。接收节点根据数据 帧的类型处理数据或者总线状态;如果接收错误超出阈值后就转向步骤3)。
为了证明本发明的方法确实能保证数据接收的可靠正确性和实时性,发明人作了如下 的对比实验
选用实施例1所述的CAN冗余网络。然后依照实施例2所述的方法,根据CAN通讯 网络系统可能会造成的故障(如电缆的断线或短路、CAN总线驱动器的故障、总线控制 器甚至单片机的故障、CAN网络外部磁场的干扰等),测试并对比采用了本发明提出的总线切换方法的网络,与不采用该方法的网络,在数据帧接收的稳定性、正确性、实时性的 性能上的差别。
本方法测试的硬件环境
1. HCS12开发板三块用作CAN节点(HCS12开发板将CAN控制器集成在该开发 板中)。
2. CAN总线若干条用来连接成CAN网络。
3. 烧写器用来烧写应用程序至HCS12开发板。
本设方法测试的软件环境
1. CAN调试工具ZLGCANTest:用来测试CAN接收到的数据帧。
2. CodeWarriorIDE :用来编译烧写至HCS12中的代码。
通过该测试可以证明,本发明的方法能够使得发送节点成功发送数据,接收节点接收 到数据,而且尽量少的丢失数据帧,从而保证了数据接收的可靠正确性、实时性。
最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明 不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直 接导出或联想到的所有变形,均应认为是本发明的保护范围。
权利要求
1、一种基于CAN冗余的总线切换方法,其特征是包括以下步骤1)、判断是发送节点还是接收节点;当为发送节点时,进入步骤2);当为接收节点时,进入步骤5);2)、判断发送节点是否发送超时;当判断为“是”时,进入步骤3),当判断为“否”时,则进入步骤4);3)、切换总线重新发送;4)、发送节点监视总线直至超时或者接收到接收节点的响应帧,表示成功发送数据;5)、判断接收节点是否接收超时;当判断为“是”时,进入步骤6),当判断为“否”时,则进入步骤7),6)、通过广播切换总线,告知其他节点切换总线重新发送数据;7)、接收节点发送响应帧,作为对发送节点的响应,表示数据发送并接收成功。
2、 根据权利要求1所述的一种基于CAN冗余的总线切换方法,其特征是所述步骤2)中 判断发送节点是否发送超时的标准为发送节点的发送时间是否超过用户设定的最长的发送 时间,超过该值认为该次数据发送失败。
3、 根据权利要求1所述的一种基于CAN冗余的总线切换方法,其特征是所述步骤5)中 判断接收节点是否发送超时的标准为接收节点的接收错误是否超出设定的阈值,该阈值是 用户定义的能够忍受的最大接收错误次数。
4、 根据权利要求l、 2或3所述的一种基于CAN冗余的总线切换方法,其特征是同一时 刻只能有一条总线发送数据;使用软件缓冲区作为用户发送数据的缓冲池,使用开发板的三 个硬件缓冲区加速数据帧的发送;设置阈值以及超时机制用于通信出现故障时重启控制器或 者切换总线重新发送或继续接收数据帧;用节点指示灯提示用户总线故障,需要及时恢复总 线。
5、 根据权利要求4所述的一种基于CAN冗余的总线切换方法,其特征是所述步骤3)具 体为依次进行以下步骤A) 、重启控制器重新发送;如发送成功,则进入步骤B);如仍旧发送不成功,以至发送 超时,则进入步骤C);B) 、监听等待网络上的响应帧,当收到接收节点的响应帧时表示该次数据传送成功;C)、判断其余总线是否可用,如其余总线有至少一条总线可用,则采用该总线重新发送; 若其余总线均不能使用,则提示用户,等待用户恢复。
6、根据权利要求5所述的一种基于CAN冗余的总线切换方法,其特征是所述步骤6)具 体为依次进行以下步骤判断其余总线是否可用,如其余总线有至少一条总线可用,则广播切换总线、重启原控 制器,表示该节点在该总线上是接收不到有效数据帧的;若另一个总线不可用,则重启原控 制器。
全文摘要
本发明公开了一种基于CAN冗余的总线切换方法,包括以下步骤1)判断是发送节点还是接收节点;为发送节点,进入步骤2);为接收节点,进入步骤5);2)判断发送节点是否发送超时;判断为“是”,进入步骤3),判断为“否”,则进入步骤4);3)切换总线重新发送;4)发送节点监视总线直至超时或者接收到接收节点的响应帧;5)判断接收节点是否接收超时;判断为“是”,进入步骤6),判断为“否”,则进入步骤7);6)通过广播切换总线,告知其他节点切换总线重新发送数据;7)接收节点发送响应帧,作为对发送节点的响应,表示数据发送并接收成功。该方法能保证数据接收的可靠正确性和实时性。
文档编号H04L12/24GK101582799SQ20091009983
公开日2009年11月18日 申请日期2009年6月22日 优先权日2009年6月22日
发明者攀 吕, 吴朝晖, 丽 周, 张吕红, 赵民德, 魏城炯 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1