一种基于CAN总线的冗余系统的制作方法

文档序号:17429269发布日期:2019-04-17 03:16阅读:366来源:国知局
一种基于CAN总线的冗余系统的制作方法

本发明涉及一种基于can总线的冗余系统。



背景技术:

随着技术的发展,工业网络在工业自动化、船舶自动化、车辆自动化领域得到广泛应用。而在车辆自动化、船舶自动化领域对通信可靠性和可用性有着较高的要求,can总线作为一种为车辆应用开发的现场总线,其抗干扰能力得到广泛的验证。然而,在船舶应用领域,由于环境恶劣,安装密度较大,总线易受损坏。can总线建立在单一信道上的可靠性就显得脆弱,当总线故障发生时容易造成整体失效。因此,在船舶领域使用can总线大多采用冗余方式保证一个信道故障时另一信道仍能维持通信。

现有can总线双冗余机制大多采用主备切换方式,系统由两个can总线端口分别接入两条总线信道,正常状态下控制器选择其中一条信道作为工作总线(active,简称a),而另外一条总线不传递数据或仅传递状态信息,我们称之为备份总线(backup,简称b)。当a总线通讯故障时,由总线上节点发起主备切换。由于发生切换前首先要通过确认故障为永久故障、协商启用b线,因此主备切换均需要几十到几百毫秒的切换时间,不能做到真正无扰切换。主备切换机制下,如果两个以上节点发生故障,且部分节点a线故障,部分节点b线故障,则系统完整性遭到致命破坏,系统不能运行。主备切换机制下,b线不传递数据,如果线上节点为非冗余节点,如果该节点挂载在b线上,则不能传递数据,因此不支持冗余节点和非冗余节点混合挂载。因此采用主备切换方式实现的系统双冗余可用性改善有限,故障发生时仍可能对系统运行产生影响。例如按照canopen协议的ds307协议,其采用主备切换模式工作,其在主线发生故障时由接收错误的节点发起主备切换帧,要求主信道变更为备用信道,而备用信道升级为主信道。当多节点发生分别检出接收故障时,则总线大概率发生频繁主备切换,最终正常通讯无法进行。

而采用互为主备模式实现双冗余机制则可避免以上问题,但为实现冗余帧甄别,大多对仲裁域、数据域做改变,从而实现冗余帧的识别。如“一种机载双余度can总线通信方法”(专利号:cn108023799a)虽然对采用双总线同步发送方式,但在仲裁域规定了冗余通道标识符(rci)用于标志报文信息是同一帧数据。如“一种双冗余can总线发送方法”(专利号:cn103840993a)、“一种双冗余can总线发送方法”(专利号:cn103490966b)虽然提及同收同法方法,却需要对消息仲裁域进行消息分配,并分配消息类型,在接收端利用数据域定义消息序号进行重复消息甄别处理。而“双冗余can总线控制器及其报文处理方法”(专利号:cn101282301b)同样采用消息排序仲裁方式。以上方式均采取仲裁域、数据域中定义特殊信息域的方式进行冗余消息甄别,该类方式下应用层协议不能使用目前广泛使用公共应用层协议而只能采用自定义协议,限制了互为主备模式下双冗余机制的使用范围。



技术实现要素:

本发明的目的在于提供一种基于can总线的冗余系统。

为解决上述问题,本发明提供一种基于can总线的冗余系统,包括:

多个节点,每个节点同时分别连接在can总线a和can总线b上,每个节点包括应用层协议、冗余仲裁层、can总线控制器a、can总线控制器b、驱动器a和驱动器b,其中

所述冗余仲裁层与所述应用层协议连接;

所述can总线控制器a和can总线控制器b分别与所述冗余仲裁层连接;

所述驱动器a分别与所述can总线a和所述can总线控制器a连接,所述驱动器b与所述can总线b和所述can总线控制器b连接。

进一步的,在上述系统中,当发送端通过所述can总线控制器a和can总线控制器b向接收端的节点发送消息时,发送端的节点启动控制器a和控制器b同步发送,并启动发送时钟,如发送时钟超时而消息未能发送成功,则停止发送,清除发送缓冲区;

接收端的can总线控制器a和can总线控制器b收到消息后,将消息发送到冗余仲裁层,冗余仲裁层经冗余仲裁为有效消息则上传到应用层协议,同时将消息推入fifo缓冲区,作为仲裁数据;等待冗余仲裁期间,后续接收到的消息继续向仲裁层提交,直到仲裁数据fifo缓冲区溢出。

冗余仲裁层收到消息后立即检索前续消息,若消息已处理则丢弃,否则,作为新的消息处理。

进一步的,在上述系统中,所述冗余仲裁层,用于设定最长发送时间、设定发送间隔时间和设定最长接收时间。

进一步的,在上述系统中,所述最长发送时间可设定,本例设定为5毫秒;所述发送间隔时间可设定,本例选择为2倍发送时间;所述最长接收时间选择与发送间隔时间一致。

进一步的,在上述系统中,所述冗余仲裁层用于建立fifo缓冲区,收到的消息判断为先到消息则加入时间戳,并压入fifo缓冲区,消息溢出则挤出最先收到数据。

进一步的,在上述系统中,所述冗余仲裁层,用于仲裁收到消息是否有效。

进一步的,在上述系统中,在冗余消息发送过程中,应用层协议将待发送消息推送到冗余仲裁层,冗余仲裁层监测若发送间隔小于预设发送间隔时间,则不发送,退出发送过程,否则继续发送。冗余仲裁层启动发送计时,将消息推送到can总线控制器a、can总线控制器b,同步启动发送,若can总线a和can总线b均发送消息成功则退出发送过程;若发送失败,则继续发送,直到发送成功或发送时间超时,停止发送,清空缓冲区,等待下次发送。

进一步的,在上述系统中,在冗余消息接收过程,该过程假定can总线控制器a收到消息,can总线控制器a收到消息后启动接收计时,同时将消息与fifo缓冲区内消息进行比对,若fifo缓冲区内存在相同的消息,且消息满足来自can总线控制器b并且与当前消息接收到的时间差小于接收时间,则作为冗余消息丢弃;若不满足,则认为该消息为新消息,压入fifo缓冲区,同时向应用层提交协议。

与现有技术相比,本发明能够有效克服双冗余总线采用主备模式的缺陷:避免can总线在主备模式下冗余节点和非冗余节点混合挂载导致系统不能正常通讯问题和主备切换扰动问题。也能够有效克服的现有互备模式冗余技术通过在仲裁域或数据域占用位段进行冗余帧仲裁的缺陷。通过本发明,有效避免了常规主备冗余方式引起的系统消息间隔抖动,主备切换扰动等缺陷,冗余帧甄别无需等待,最大化提高了系统实时性。通过本发明,冗余协议不修改消息,解决了冗余信道上传输公共应用层协议问题,对应用层协议无需进行修改即可使用,避免了只能运行自定义协议问题,扩大了冗余协议的使用范围。另外,本发明由于采用先到有效,后到冗余方式,收到消息后立即进行有效性判断,对有效数据及时处理,能够有效提高系统实时性。

附图说明

图1是本发明一实施例的can总线通讯架构图;

图2是本发明一实施例的节点功能框图;

图3是本发明一实施例的的接收流程图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

如图1所示,本发明提供一种基于can总线的冗余系统,包括:多个节点,每个节点同时连接在can总线a和can总线b上,每个节点包括应用层协议、冗余仲裁层、can总线控制器a、can总线控制器b、驱动器a和驱动器b,其中

所述冗余仲裁层与所述应用层协议连接;

所述can总线控制器a和can总线控制器b分别与所述冗余仲裁层连接;

所述驱动器a分别与所述can总线a和所述can总线控制器a连接,所述驱动器b与所述can总线b和所述can总线控制器b连接。

在此,本发明由若干节点及节点间相互连接的冗余can总线构成,如图1所示,系统由节点1、节点2、节点3……节点n及冗余的两个信道can总线a、can总线b构成。系统内各节点内建节拍时钟,节拍时间可任选,优选节拍时间为总线发送一条完整消息所占用时间,例如:1毫秒。

节点由应用层协议、冗余仲裁层、can总线控制器a、can总线控制器b、驱动器a、驱动器b构成,如图2所示。

节点同时具备接收和发送功能,为方便表述,图2可将收发功能分解为接收端和发送端,发送端除发送数据期间外,均处于接收状态。

本发明的基于can总线的冗余系统一实施例中,当发送端通过所述can总线控制器a和can总线控制器b向接收端的节点发送消息时,发送端的在a、b端口同步启动发送,并同步启动发送时钟。如ab端口均发送成功,则完成发送。如发送时钟超时而有端口未能发送成功,则停止发送,清除发送缓冲区等待下次发送。

接收端的节点的can总线控制器a和can总线控制器b收到消息后,将消息发送到冗余仲裁层,冗余仲裁层对消息进行冗余仲裁,将有效消息提交应用层,同时将消息推入fifo缓冲区,冗余仲裁层进行冗余仲裁;等待冗余仲裁期间,后续消息继续发送,直到fifo缓冲区溢出。

收到消息后,冗余仲裁层检索前续消息,若消息为冗余消息,则丢弃,否则,作为有效消息处理。

本发明的基于can总线的冗余系统一实施例中,所述冗余仲裁层,用于设定发送时间,优选的,发送时间选择为5毫秒,即每毫秒发送一条完整消息,发送5条消息所需时间,为总线冲突预留时间;用于设定发送间隔时间,优选的,发送间隔时间选择为2倍发送时间,保证系统可靠接收;用于设定接收时间,优选的,接收时间选择与发送间隔时间一致,保证所有消息能够可靠接收。

本发明的基于can总线的冗余系统一实施例中,所述冗余仲裁层,用于建立fifo缓冲区,收到的消息判断为先到消息则加入时间戳,并压入fifo缓冲区,消息溢出则挤出最先收到数据。

本发明的基于can总线的冗余系统一实施例中,所述冗余仲裁层,用于仲裁收到消息是否有效。

本发明的基于can总线的冗余系统一实施例中,在冗余消息发送过程中,应用层协议将待发送消息推送到冗余仲裁层,冗余仲裁层监测若发送间隔时间小于预设时间,则不发送,退出发送过程,否则继续发送,冗余仲裁层启动发送计时,将消息推送到can总线控制器a、can总线控制器b,启动发送,若can总线a和can总线b均发送消息成功则退出发送过程;若发送失败,则继续发送,直到发送成功或发送时间超时,如发送成功则退出发送过程,若超时则停止发送,清空缓冲区。

因此,两条总线上数据时间差不可能超过发送时间。而两条同样仲裁域的报文发送时间差不会小于发送时间间隔,发送数据流程如图2发送端所示。

本发明的基于can总线的冗余系统一实施例中,在冗余消息接收过程,该过程假定can总线控制器a收到消息,can总线控制器a收到消息后启动接收计时,同时将消息与fifo缓冲区内消息进行比对,若fifo缓冲区内存在相同的消息,且消息满足来自can总线控制器b并且与当前消息接收到的时间差小于接收时间,则作为冗余消息丢弃;若不满足,则认为该消息为新消息,压入fifo缓冲区,并向应用层提交协议。

在此,接收数据流向如图2接收端所示,流程如图3所示。

本发明能够有效克服双冗余总线采用主备模式的缺陷,避免can总线在主备模式下冗余非冗余节点混合挂载导致系统部分节点不能正常通讯及主备切换扰动问题,也能够有效克服的互备模式下现有技术通过在仲裁域或数据域占用位段进行冗余帧仲裁的缺陷。通过本发明,有效避免了常规主备冗余方式引起的系统消息间隔抖动,主备切换扰动等缺陷,冗余帧甄别无需等待,最大化提高了系统实时性。通过本发明,冗余协议不修改消息,解决了冗余信道上传输公共应用层协议问题,对应用层协议无需进行修改即可使用,避免了只能运行自定义协议问题,扩大了冗余协议的使用范围。另外,本发明由于采用先到有效,后到冗余方式,收到消息后立即进行有效性判断,对有效数据及时处理,能够有效提高系统实时性。

本发明中,两条信道互为主备,没有活跃信道与备份信道之分。每个节点由两个独立的控制器、独立的收发器构成两个独立的can端口。总线运行过程中采用同时发,随时收方式实现冗余,有效避免了常规主备冗余方式引起的系统消息间隔抖动,主备切换扰动缺陷。

本发明中,甄别冗余帧方法引入时间特性,在系统运行过程中采用同时发,随时接收机制实现冗余,发送端同步发送消息,消息最大间隔不超过发送时间。而接收端根据收到数据的时间戳记及接收端口进行冗余帧甄别。有效避免了采用现有机制下必须两条总线均收到数据或超时方可进行总线冗余帧甄别判断所收到数据的有效性,实时性较差的问题。

本发明中,对消息格式不做任何改动,可以直接作为canopen、devicenet协议为代表的多种应用层协议的底层冗余实现协议使用,而无需进行修改。

本发明中,两条信道不再分活跃总线备用总线,均为活跃总线,实现了冗余、非冗余节点混合挂载。

本发明中,冗余实现可以在can总线、rs485总线、profiebus总线等总线型拓扑中实现。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及步骤,能够以电子硬件、软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

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

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