利用can总线实现分布式系统多台设备间实时通信的方法

文档序号:7868303阅读:5603来源:国知局
专利名称:利用can总线实现分布式系统多台设备间实时通信的方法
技术领域
本发明涉及电子通信技术领域,尤其涉及一种利用CAN总线实现分布式系统多台设备间实时通信的方法。
背景技术
分布式系统之间进行通信,目前普遍采用的通用方法是TCP通信。即通过SOCKET(套接字)在两台计算机之间建立TCP连接来传递消息以及数据,从而进行分布式系统之间的同步工作。对于多台计算机之间的同步,一般采用逐个建立TCP连接后进行逐个通信。这种方式可以保证通信的稳定性,实现信息的正确传递。但是,这种通信方式也存在以下一些问题I)对于实时性要求极高的系统,由于建立TCP连接需要进行三次握手等操作,因此无法满足实时性要求;2)当SOCKET发生拥塞时,紧急的信息无法优先通过;3)系统有需要在休眠时屏蔽SOCKET,仅在需要时才监听SOCKET,以此作为维护系统安全的一种手段。此时,缺乏有效的手段唤醒系统;4)无法同时给多台设备一次性发送消息,而是需要逐个设备进行。目前使用UDP进行辅助通信,以满足通信的实时性和广播性。UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当UDP它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制。这就决定了 UDP通信有较强的实时性。 同时UDP具有广播性,即通信方式是一对多的形式。由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,一台服务机可同时向多个客户机传输相同的消息,避免了 TCP在通信时,只能使用点对点的通信方式。针对UDP的通信方式,主要有以下两个不足之处无法在数据发生拥塞的情况下(优先)通过。在TCP传送数据量过大导致网络拥塞的情况下,无论使用TCP还是UDP的数据传输方式,都会无法及时发送数据、收取数据。同时由于UDP是没有超时重发等机制,因此一旦异常导致接收方没有接收到发送的消息,发送方也是不知道的,就会导致消息丢失,从而影响系统的正常运作。当系统在特定情况下,需要让系统在休眠情况下屏蔽socket,仅在需要时才监听socket。此时,由于UDP也是基于socket进行通信,因此UDP也无法实现唤醒功能。

发明内容
本发明的目的是为了克服现有技术的缺陷,提供一种利用CAN总线实现分布式系统多台设备间实时通信的方法,该方法是在各服务器之间既采用TCP通信方式,又同时在各个设备之间架设CAN总线作为辅助通信手段;当后台服务器负载过大无法及时处理时,通过CAN总线辅助通信通道告知各前端服务器控制发送流量,并把待上报给后台服务器的数据暂存在本地;当后台服务器或者前端服务器进入睡眠状态,即不监听socket时,通过CAN总线辅助通信通道唤醒服务器监听socket,以准备数据传输;当有紧急事件需要在服务器之间进行通报时,或发现某台服务器发生异常需要屏蔽时,通过CAN总线辅助通信通道进行广播通报。本发明技术方案带来的有益效果首先针对TCP通信中实时性弱的缺点,使用CAN总线作为辅助的通信手段后,这个问题可以有效得到解决。对于需要实时处理的请求依赖,通过CAN总线可以即时发送,接收方通过独立的进程/线程可以优先处理并响应。同样,这也解决了当数据发生拥塞、通信不畅时紧急事务无法及时通报的问题。紧急事务的通报可以通过专用通道CAN总线向各台设备发送消息,接收方通过独立的进程/线程可以优先处理并响应。当存在休眠的设备时,即使因安全需要屏蔽了对外的socket监听,但可以继续开启对内的CAN总线的监听。因为只有连接到CAN总线的内部设备才能使用CAN总线进行通信,因此不用担心设备被外侦知。当需要唤醒处于休眠状态的设备时,可以通过CAN总线,唤醒其启动socket监听。最后,CAN总线具有广播通信的特点,可以点对点,一对多及广播集中方式传送和接受数据。CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。这使得CAN总线上任意节 点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。这样弥补了 TCP无法同时给多台设备一次性发送消息,而是需要逐个设备进行的缺点。除此之外,使用CAN作为辅助通信,可以尽可能保证数据传送的可靠性。因为在每个CAN节点中,均没有错误检测,标定和自检的强有力措施。为检测错误,采取的措施包括监视(发送器对发送位电平与总线上监视到的位电平进行比较)、循环冗余检验、位填充和报文格式检查等。因此,可以保证传送数据的准确性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1是本发明方法的网络架构图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。对于各台服务器之间的一般性通信,尤其是大数据量的通信,仍采用TCP进行传送。同时,在各台服务器之间架设CAN总线作为辅助通信手段。网络架构图如图1所示。I) TCP传输通道使用TCP传输通道传送大规模数据。如,各前端服务器将数据往后台服务器进行汇聚。2) CAN总线辅助通信通道a)当后台负载过大无法及时处理时,通过CAN总线辅助通信通道告知各前端服务器控制发送流量,并把待上报给后台服务器的数据暂存在本地。b)当后台服务器或者前端服务器进入睡眠状态,即不监听socket时,通过CAN总线辅助通信通道唤醒服务器监听socket,以准备数据传输。c)当有紧急事件需要在服务器之间进行通报时,如发现某台服务器发生异常需要屏蔽,通过CAN总线辅助通信通道进行广播通报。3)以下以BDDC协议举例说明CAN总线辅助通信通道的应用。a) BDDC :指蓝盾数据采集系统中CAN总线辅助通信通道的通信协议。b)CAN总线辅助通信通道用于系统后台服务器与多台前端服务器辅助通信之用。c)前端服务器负责从指定的地方(如互联网、特定设备等)抓取指定的数据,而后将抓取到的数据汇聚给后台服务器,由其负责对数据进行进一步的处理。
`
d)报文规格。BDDC协议为CAN总线通信的载荷,协议包包含两部分,头部及BDDC协议的载荷部分。下面给出BDDC协议包的封装格式
载荷校验和I类型I流程ID~I发起方物理地址I接收方物理地址I载荷长度I载荷各字段的含义如下>载荷校验和I字节,载荷部分的校验和。> 类型I字节,报文类型标志。包括流量控制请求报文、设备唤醒报文、异常通报报文、设备状态轮询报文、设备状态回复报文和应答结束报文等。其中 流量控制请求报文 0x01 设备唤醒报文0x02 异常通报报文0x04 保留通信报文0x08 设备状态轮询报文 0x10 设备状态回复报文 0x20 应答结束报文0x40 保留通信报文0x80>流程 IDI字节,用于标记一次通信流程。一次通信流程使用一个流程ID。回复报文需要从请求报文中取得并使用该流程ID。>发起方物理地址I字节,标示发起该BDDC数据包的设备的识别编码。后台服务器的物理地址编码为0x01。前端服务器的物理地址编码分别为0x02、0χ04λ0χ 08λOx10λ0x20λ0x40λ0x80ο说明如果设备比较多,可以将发起方物理地址扩展为2个字节或者4个字节。>接收方物理地址I字节,标示需要接收并处理该BDDC数据包的设备的识别编码。接收方为多台设备时,其值为各台设备物理地址的“与”,即各台设备的物理地址的总和。比如,接收方的物·理地址分别为0x02和0x04,则该值为0x06。当该地址的值为OxFF时,表示发送给所有结点。说明如果设备比较多,可以将接收方物理地址扩展为2个字节或者4个字节。>载荷长度I字节,标示该BDDC数据包载荷部分的数据长度。> 载荷根据报文类型具备不同的长度。说明一般建议不超过2字节,以保证所有数据能存放入I帧(8字节)。 流量控制请求报文要求前端设备控制发送流量,并把待上报给后台服务器的数据暂存在本地。载荷为空。 设备唤醒报文要求设备启动socket监听,以准备数据传输。载荷为空。 异常通报报文内容为各台异常设备的物理地址的“与”,即各台异常设备的物理地址的总和。载荷为I个字节。比如,物理地址为0x02和0x04的2台设备发生异常,则该值为0x06。 设备状态轮询报文向所有设备询问状态是否正常。载荷为空。如果规定时间内没有收到某设备的回复报文,则认为该设备发生有异常。 设备状态回复报文当收到设备状态轮询报文,回复O (正常)或I (异常)。载荷为I个字节。 应答结束报文对发送者报文的一个应答,表不报文已收到。载荷为空。在系统各服务器之间既采用TCP通信方式,同时各个设备之间架设CAN总线作为辅助通信手段。这样可以有效解决以下几个问题。首先针对TCP通信中实时性弱的缺点,使用CAN作为辅助的通信手段后,这个问题可以有效得到解决。对于需要实时处理的请求依赖,通过CAN总线可以即时发送,接收方通过独立的进程/线程可以优先处理并响应。同样,这也解决了当数据发生拥塞、通信不畅时紧急事务无法及时通报的问题。紧急事务的通报可以通过专用通道CAN总线向各台设备发送消息,接收方通过独立的进程/线程可以优先处理并响应。当存在休眠的设备时,即使因安全需要屏蔽了对外的socket监听,但可以继续开启对内的CAN总线的监听。因为只有连接到CAN总线的内部设备才能使用CAN总线进行通信,因此不用担心设备被外侦知。当需要唤醒处于休眠状态的设备时,可以通过CAN总线,唤醒其启动socket监听。最后,CAN总线具有广播通信的特点,可以点对点,一对多及广播集中方式传送和接受数据。CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。这使得CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。这样弥补了 TCP无法同时给多台设备一次性发送消息,而是需要逐个设备进行的缺点。除此之外,使用CAN作为辅助通信,可以尽可能保证数据传送的可靠性。因为在每个CAN节点中,均没有错误检测,标定和自检的强有力措施。为检测错误,采取的措施包括监视(发送器对发送位电平与总线上监视到的位电平进行比较)、循环冗余检验、位填充和报文格式检查等。因此,可以保证传送数据的准确性。除了可以使用CAN总线进行辅助通信外,也可以使用RS485进行辅助通信1、RS485在通信连接的时候不存在三次握手协议,只是通过高低电平控制连接,使得连接的速度快,从而以满足通信的实时性,解决了 TCP中无法满足连接实时性的缺点。2、当通信过程中数据量过大,socket通信线路发生拥塞时,借助RS485的辅助通信通道也可以发送紧急通讯消息,处理高优先事务。3、在设备处于休眠状态时屏蔽了对socket的监听,可以通过借助RS485设备启动对socket的监听。但由于RS485有主从之分,因此无法满足多于2台主设备,或者不区分主从设备时的分布式系统各设备之间的通信。因此利用RS485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差。同时,其通信距离受限(有效距离仅15M)也是不符合一些应用场景。以上对本发明实施例所提供的利用CAN总线实现分布式系统多台设备间实时通信的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想, 在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.利用CAN总线实现分布式系统多台设备间实时通信的方法,其特征在于,该方法是在各服务器之间既采用TCP通信方式,又同时在各个设备之间架设CAN总线作为辅助通信手段;当后台服务器负载过大无法及时处理时,通过CAN总线辅助通信通道告知各前端服务器控制发送流量,并把待上报给后台服务器的数据暂存在本地;当后台服务器或者前端服务器进入睡眠状态,即不监听socket时,通过CAN总线辅助通信通道唤醒服务器监听 socket,以准备数据传输;当有紧急事件需要在服务器之间进行通报时,或发现某台服务器发生异常需要屏蔽时,通过CAN总线辅助通信通道进行广播通报。
2.根据权利要求1所述的方法,其特征在于,前端服务器负责从指定的地方,例如互联网、特定设备处抓取指定的数据,而后将抓取到的数据汇聚给后台服务器,由其负责对数据进行进一步的处理。
3.根据权利要求1所述的方法,其特征在于,CAN总线辅助通信通道的通信协议采用 BDDC协议。
4.根据权利要求3所述的方法,其特征在于,BDDC协议包包含头部和协议的载荷部分, 其报文封装格式为
5.根据权利要求4所述的方法,其特征在于,报文类型包括流量控制请求报文、设备唤醒报文、异常通报报文、设备状态轮询报文、设备状态回复报文和应答结束报文。
6.根据权利要求4所述的方法,其特征在于,流程ID为I字节,一次通信流程使用一个流程ID,回复报文需要从请求报文中取得并使用该流程ID。
7.根据权利要求4所述的方法,其特征在于,发起方物理地址标示发起该BDDC数据包的设备的识别编码,如果设备比较多,可将发起方物理地址扩展为2个字节或者4个字节。
8.根据权利要求4所述的方法,其特征在于,接收方物理地址标示需要接收并处理该 BDDC数据包的设备的识别编码,接收方为多台设备时,其值为各台设备物理地址的“与”,即各台设备的物理地址的总和。
9.根据权利要求1所述的方法,其特征在于,除了使用CAN总线进行辅助通信外,还能使用RS485进行辅助通信。
全文摘要
本发明公开了一种利用CAN总线实现分布式系统多台设备间实时通信的方法。该方法是在各服务器之间既采用TCP通信方式,又同时各个设备之间架设CAN总线作为辅助通信手段。当后台负载过大无法及时处理时,通过CAN总线辅助通信通道告知各前端服务器控制发送流量,并把待上报给后台服务器的数据暂存在本地。当后台服务器或者前端服务器进入睡眠状态,即不监听socket时,通过CAN总线辅助通信通道唤醒服务器监听socket,以准备数据传输。当有紧急事件需要在服务器之间进行通报时,如发现某台服务器发生异常需要屏蔽,通过CAN总线辅助通信通道进行广播通报。通过该方法能够对数据发生拥塞、通信不畅时的紧急事务及时通报并优先处理,提高了通信的实时性和广播性。
文档编号H04L12/40GK103036755SQ201210532090
公开日2013年4月10日 申请日期2012年12月11日 优先权日2012年12月11日
发明者柯宗贵, 柯宗庆, 杨育斌, 刘强 申请人:蓝盾信息安全技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1