首页> 中国专利> 一种冗余的高安全性CAN总线通信系统及其通信方法

一种冗余的高安全性CAN总线通信系统及其通信方法

摘要

本发明提供一种冗余的高安全性CAN总线通信系统及其通信方法,该系统包括一个上位机、多个下位机和两条互为热备的CAN总线,每个上位机和下位机均由两个互为热备的模块构成;每个模块均有两个同步运算的微处理器CPU,分别为第一CPU和第二CPU,构成两个相互独立的运算通道,每个运算通道集成两个CAN总线接口,所述两个CAN总线接口分别一一对应连接两条CAN总线。本发明还提供一种冗余的高安全性CAN总线通信系统的通信方法。本发明采用多重校验和冗余收发技术,每个有效的数据包的发送和接收都是冗余的,并且在发送端和接收端设置多次校验,确保高安全性。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-17

    授权

    授权

  • 2014-04-09

    实质审查的生效 IPC(主分类):H04L12/24 申请日:20131203

    实质审查的生效

  • 2014-03-12

    公开

    公开

说明书

技术领域

本发明涉及工业总线通信技术领域,具体是一种冗余的高安全性CAN总线通信系统及其通信方法。

 

背景技术

如今的工业控制领域正朝着信息化、智能化、网络化不断发展,影响着通信效率的工业总线技术越来越受到行业的重视。传统的工业通信总线大多采用RS-485总线,但是RS-485总线存在着总线利用率低、传输速率低、通信距离短等缺点,并且缺乏完备的错误检测机制,导致其安全性较差,不适合应用在安全相关的工业领域。安全相关的工业领域包括核电、水利、交通、矿山等关系着重大公共安全的行业,一般有着严格的安全性要求。

控制器局域网CAN(Controller Area Network)总线是一种能有效支持分布式实时控制的串行通信网络。近年来,由于CAN总线具有高可靠性、高传输速率、良好的勘误检错能力和低廉的成本优势,逐渐成为应用最广泛的现场总线之一。安全相关的工业领域比一般的工业领域对安全性要求更高,而且往往应用环境恶劣,存在着大量的干扰,例如电磁、温度、粉尘等影响。CAN总线虽然有错误检测机制,但在实际应用过程中,仍不可避免地会由于控制器或收发器故障、传输介质损坏及环境的干扰产生传输错误。另外,CAN总线的一个特点是多主工作方式,但在实际应用中,多主工作方式容易导致总线控制冲突,使得紧急命令和消息得不到响应或者响应过慢,对中断逻辑结构要求较高,不适合对安全性和响应时间有着严格要求的安全相关系统。

 

发明内容

本发明的目的在于提供一种冗余的高安全性CAN总线通信系统及其通信方法,以解决现有技术中存在的问题。

本发明的技术方案为:

一种冗余的高安全性CAN总线通信系统,包括一个上位机、多个下位机和两条互为热备的CAN总线,每个上位机和下位机均由两个互为热备的模块构成;每个模块均有两个同步运算的微处理器CPU,分别为第一CPU和第二CPU,构成两个相互独立的运算通道,每个运算通道集成两个CAN总线接口,所述两个CAN总线接口分别一一对应连接两条CAN总线。

所述的一种冗余的高安全性CAN总线通信系统的通信方法,包括以下步骤:

(1)系统完成初始化,确定上位机和下位机互为热备的两个模块的主备关系:

(2)上位机主系模块第一CPU将其需要发送的数据通过两个CAN总线接口发送到两条CAN总线上;上位机主系模块第二CPU、下位机主系模块第一CPU和第二CPU通过各自的CAN总线接口接收上位机主系模块第一CPU发送的数据;

(3)上位机主系模块第二CPU将其接收到的上位机主系模块第一CPU发送的数据与其准备发送的数据进行比较,判断两个数据是否相同,若是,则跳转步骤(4),若否,则跳转步骤(8);

(4)上位机主系模块第二CPU将其需要发送的数据通过两个CAN总线接口发送到两条CAN总线上;上位机主系模块第一CPU、下位机主系模块第一CPU和第二CPU通过各自的CAN总线接口接收上位机主系模块第二CPU发送的数据;

(5)下位机主系模块第一CPU和第二CPU分别对各自接收到的两个数据进行比较,若第一CPU和第二CPU均判定各自接收到的两个数据是相同的,则跳转步骤(6),否则跳转步骤(8);

(6)下位机主系模块第一CPU和第二CPU分别对各自接收到的两个数据进行解码,得到相应的时间戳、序列号和CRC校验码,若第一CPU和第二CPU均判定相应的时间戳、序列号和CRC校验码是正确的,则跳转步骤(7),否则跳转步骤(8);

(7)上位机主系模块向下位机主系模块通过CAN总线发送数据的通信正确完成,下位机主系模块根据解码得到的数据区,进行后续处理,并通过CAN总线向上位机主系模块应答;

(8)上位机主系模块向下位机主系模块通过CAN总线发送数据的通信出现错误,通信中止,下位机主系模块等待上位机主系模块重新发起通信。

所述的一种冗余的高安全性CAN总线通信系统的通信方法,所述上位机定期巡访各个下位机,每个时间片内,所述上位机与固定的下位机通信。

所述的一种冗余的高安全性CAN总线通信系统的通信方法,还包括以下步骤:

备系模块通过其CAN总线接口接收CAN总线上的数据,与相应的主系模块同步运行,当主系模块出现故障时,备系模块无扰切换为主系模块。

所述的一种冗余的高安全性CAN总线通信系统的通信方法,步骤(1)中,确定上位机和下位机互为热备的两个模块的主备关系,具体为:

判断每个模块是否均处于正常状态,若是,则互为热备的两个模块根据预定的主备关系运行,若否,则互为热备的两个模块根据本模块和对方模块的状态确定主备关系。

所述的一种冗余的高安全性CAN总线通信系统的通信方法,还包括以下步骤:每个模块的第一CPU和第二CPU分别对各自接收到的数据进行有效性校验。

所述的一种冗余的高安全性CAN总线通信系统的通信方法,所述每个模块的第一CPU和第二CPU分别对各自接收到的数据进行有效性校验,具体包括:

(1)判断所述数据是否来自于有效模块,若是,跳转步骤(2),若否,丢弃所述数据;所述有效模块为当前正在占用通信时间片的模块;

(2)若所述数据来自于有效模块的第一CPU,则跳转步骤(3),若所述数据来自于有效模块的第二CPU,则跳转步骤(4);

(3)将该数据保存至存储区,记录该数据到达的时间点,启动对应的定时器,若在定时器规定的时间内接收到所述有效模块第二CPU发送的数据,则将该数据判定为有效数据,否则删除保存的数据,并发送报警信息,标识主系CAN总线上通信出错,跳转步骤(5);

(4)查找存储区中是否包含所述有效模块第一CPU传来的数据,若是,则将该数据判定为有效数据,若否,则将该数据判定为无效数据,丢弃不用;

(5)主系CAN总线上通信出错,将备系CAN总线切换为主系CAN总线。

由上述技术方案可知,本发明采用二乘二取二架构,包括一个上位机、若干下位机和两条CAN总线,每个上位机和下位机均由两个互为热备的模块构成,两条CAN总线构成热备,每个模块集成两个相互独立的运算通道,每个运算通道以一个高性能微处理器为核心,同步运算并实现二取二表决,每个运算通道集成两个CAN总线接口分别连接到两条CAN总线上;CAN总线通信采用主从模式,上位机定期巡访所有下位机,每个时间片内,上位机和固定的下位机通信,有效避免总线冲突。本发明采用多重校验和冗余收发技术,每个有效的数据包的发送和接收都是冗余的,并且在发送端和接收端设置多次校验,确保高安全性。

附图说明

图1是本发明的结构示意图。

 

具体实施方式

下面,结合附图和具体实施例进一步说明本发明。

一种冗余的高安全性CAN总线通信系统,包括上位机1、下位机2和CAN总线3,其中上位机1一个,下位机2若干个,CAN总线3两条。每个上位机1和下位机2均由两个互为热备的模块构成,两条CAN总线3构成热备。每个模块集成两个相互独立的运算通道,每个运算通道以一个高性能微处理器CPU为核心,同步运算并实现二取二表决;每个运算通道集成两个CAN总线接口分别一一对应连接到两条CAN 总线3上。CAN总线通信采用主从模式,即通信只能由主机发起,从机应答;在通信流程中,上位机1为主机,下位机2为从机,主机周期地逐个同所有从机交互数据,其与每个从机的通信占用一定的时间片,在该时间片内不允许其它从机获得总线的发送权,有效避免总线冲突;通信方法采用多重校验和冗余收发技术,每个有效的数据包的发送和接收都是冗余的,并且在发送端和接收端设置多次校验,确保高安全性。

如图1所示(作为示例,只选了一个下位机2进行说明,其它下位机2情况相同),上位机1具有两个模块M1和M2,互为热备。如果两个模块均正常,则M1工作在主系状态下,M2工作在备系状态下;M1上集成两个高性能微处理器CPU:M1-CPU1和M1-CPU2,M2上集成两个高性能微处理器CPU:M2-CPU1和M2-CPU2。每个CPU都集成了两个CAN总线接口,M1-CPU1集成了M1-CPU1-CAN1和M1-CPU1-CAN2,M1-CPU2集成了M1-CPU2-CAN1和M1-CPU2-CAN2,M2-CPU1集成了M2-CPU1-CAN1和M2-CPU1-CAN2,M2-CPU2集成了M2-CPU2-CAN1和M2-CPU2-CAN2。

下位机2模块的数量根据系统容量的大小而灵活变化,总共有2*N个,每两个模块形成一组冗余结构,互为热备。以一个下位机2为例:模块两个:M3和M4,互为热备,如果两个模块均正常,则M3工作在主系状态下,M4工作在备系状态下;M3上集成两个高性能微处理器CPU:M3-CPU1和M3-CPU2,M4上集成两个高性能微处理器CPU:M4-CPU1和M4-CPU2,每个CPU都集成了两个CAN总线接口,M3-CPU1集成了M3-CPU1-CAN1和M3-CPU1-CAN2,M3-CPU2集成了M3-CPU2-CAN1和M3-CPU2-CAN2,M4-CPU1集成了M4-CPU1-CAN1和M4-CPU1-CAN2,M4-CPU2集成了M4-CPU2-CAN1和M4-CPU2-CAN2。

冗余的两条CAN总线3:CAN-BUS1和CAN-BUS2,CAN总线接口M1-CPU1-CAN1、M1-CPU2-CAN1、M2-CPU1-CAN1、M2-CPU2-CAN1、M3-CPU1-CAN1、M3-CPU2-CAN1、M4-CPU1-CAN1、M4-CPU2-CAN1连接CAN-BUS1;CAN总线接口M1-CPU1-CAN2、M1-CPU2-CAN2、M2-CPU1-CAN2、M2-CPU2-CAN2、M3-CPU1-CAN2、M3-CPU2-CAN2、M4-CPU1-CAN2、M4-CPU2-CAN2连接CAN-BUS2。

一种冗余的高安全性CAN总线通信系统的通信方法,包括以下步骤(选取一个下位机2进行说明):

S1、准备阶段:系统上电,完成初始化工作,每个模块检查自身状态和接口设备是否运行正常;检查完毕后,若所有模块均处于正常工作状态,则互为热备的两个模块根据固定的主备关系工作,若有模块出现故障,则互为热备的两个模块根据本模块和对方模块的状态确定主备关系;若前期检查所有模块均正常工作,上位机模块M1工作在主系状态下,M2工作在备系状态下,下位机模块M3工作在主系状态下,M4工作在备系状态下;

S2、上位机主系模块CPU1发送阶段:上位机主系模块M1占有总线控制权,在固定的时间片内,选择与下位机主系模块M3通信:M1-CPU1将自己需要发送的数据Data1_1通过CAN总线接口M1-CPU1-CAN1发送到CAN-BUS1上;M1-CPU2通过CAN总线接口M1-CPU2-CAN1接收数据,M3-CPU1通过CAN总线接口M3-CPU1-CAN1接收数据,M3-CPU2通过CAN总线接口M3-CPU2-CAN1接收数据;

S3、上位机主系模块CPU2比较阶段:M1-CPU2接收到来自M1-CPU1的数据Data1_1,并将接收到的数据Data1_1与自己准备发送的数据Data1_2做比较,如果两个数据相同,则跳转步骤S4,如果两个数据不相同,则跳转步骤S8;

S4、上位机主系模块CPU2发送阶段:M1-CPU2将自己需要发送的数据Data1_2通过CAN总线接口M1-CPU2-CAN1发送到CAN-BUS1上。M1-CPU1通过CAN总线接口M1-CPU1-CAN1接收数据,M3-CPU1通过CAN总线接口M3-CPU1-CAN1接收数据,M3-CPU2通过CAN总线接口M3-CPU2-CAN1接收数据;

S5、下位机主系模块CPU1和CPU2比较阶段:M3-CPU1和M3-CPU2分别从CAN-BUS1上接收到了两个数据Data1_1和Data1_2,分别对这两个数据进行比较,如果M3-CPU1和M3-CPU2均判定两个数据是相同的,则跳转步骤S6,否则,只要M3-CPU1或M3-CPU2其中之一判定两个数据不相同,就跳转步骤S8;

S6、下位机主系模块CPU1和CPU2解码阶段:M3-CPU1和M3-CPU2分别解码各自接收到的数据Data1_1和Data1_2,得到相应的时间戳、序列号和CRC校验码,如果M3-CPU1和M3-CPU2均判定相应的时间戳、序列号和CRC校验码是正确的,则跳转S7,如果出现错误,则跳转步骤S8;

S7、通信完成阶段:CAN总线通信正确完成,下位机根据解码得到的数据区,进行后续处理,为上位机应答做准备;

S8、通信错误阶段:CAN总线通信出现错误,通信中止,等待上位机重新发起通信。

需要说明以下几点:

其一、备系模块(上位机模块M2、下位机模块M4)正常接收CAN总线上的数据,但不允许向CAN总线上发送数据,即处在“只收不发”的状态。备系模块接收到数据后,与其相应的主系模块同步运行,当主系模块出现故障时,备系模块可以无扰切换为主系模块,保证系统可靠运行。

其二、两条CAN总线以相同的方法进行数据传输,形成冗余结构,两条CAN总线只要有一条通信正常,系统就能正常工作。上述步骤S2中,M1-CPU1将自己需要发送的数据Data1_1通过CAN总线接口M1-CPU1-CAN1发送到CAN-BUS1上,同时也通过CAN总线接口M1-CPU1-CAN2发送到CAN-BUS2上,从而M1-CPU2也可以通过CAN总线接口M1-CPU2-CAN2接收数据,M3-CPU1也可以通过CAN总线接口M3-CPU1-CAN2接收数据,M3-CPU2也可以通过CAN总线接口M3-CPU2-CAN2接收数据;上述步骤S4中的情况与此相同。

其三、当下位机根据上位机下发的命令完成规定任务后,向上位机应答,下位机向上位机发送数据和消息与上位机向下位机发送数据和命令,两者的通信方向相反,方法相同。

其四、CAN总线上的各个模块,除了自身发送之外,所有其他的动作,都是由接收事件驱动的。每个CAN接口保持对总线的监听,当接收到数据时,调用相应的接收中断处理函数。同一个CPU上的两个CAN接口的CAN接收中断处理函数在流程上是一致的。因为CAN总线协议取消了地址编码,而在程序中,需要明确每条CAN总线报文来自哪个模块,在编码设计中规定了专门的地址码段。

在CAN总线上,一个合法的数据包必须由两个数据Data1_1和Data1_2组成,Data1_1由发送端的CPU1发出,Data1_2由发送端的CPU2发出,接收端接收到两个数据并比较一致之后才能进行后续处理。数据包内包含地址码、时间戳、序列号、数据区、CRC校验码等内容。其中,地址码标明数据来源于总线上的模块位置,时间戳标明数据发送的时间点,序列号标明数据发送的流水号,数据区存放后续处理中需要使用的命令或信息,CRC校验码标明数据的CRC校验结果。

其五、每个模块的CPU1和CPU2都需要检验各自接收到的数据是否为有效数据。设CAN-BUS1为当前通信总线,CAN-BUS2为备用通信总线,判断接收到的数据是否来自于CAN-BUS1上的有效模块,即当前正在占用通信时间片的模块,对无效模块传来的数据一律丢弃不用;如果该数据来自有效模块的CPU1,将该数据保存至存储区,记录该数据到达的时间点,启动对应的定时器,如果在该定时器规定的时间内,收到来自该有效模块CPU2的数据,则将该数据判定为有效数据;如果超时没有收到来自该有效模块CPU2的数据,则删除保存的数据,并发送报警信息,标识CAN-BUS1总线上通信出错,将CAN-BUS2切换为当前工作总线;如果该数据来自有效模块的CPU2,则查找存储区中是否包含该有效模块CPU1传来的数据,如果有,则将该数据判定为有效数据,如果没有,则将该数据判定为无效数据。

以上所述实施方式仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号