基于消息机制的用于海量数据传输的can总线通信协议的制作方法

文档序号:7703290阅读:249来源:国知局

专利名称::基于消息机制的用于海量数据传输的can总线通信协议的制作方法
技术领域
:本发明涉及计算机领域的嵌入式实时系统,更具体的说,是涉及一种应用于海量数据基于连接的CAN总线的通信协议。
背景技术
:随着微机控制技术和工业现场总线技术的发展,基于现场总线的通信方式在工业控制中得以越来越广泛的应用。其中CAN总线以其结构简单,成本低廉,良好的功能特性和极高的可靠性,现场抗干扰能力强及开放性的特点而受到众多开发者的青睐。CAN串行总线具有传输距离长、传输速度快的优点,并且其具有完善的错误检测机制,采用"多重访问冲突仲裁"机制的帧传输方式,可保证不丢失信息;每一帧中最多可以传输8个字节数据,可提供很高的实时性等等。性能上的优势保证了CAN可以应用在很多的领域,在汽车工业、船舶运输、机械控制、工厂自动化、楼宇自动化等都可以看到CAN的应用。CAN现场总线系统由物理层、数据链路层以及应用层3层构成。CAN的基本协议规范只有物理层协议和数据链路层协议,而利用CAN总线作为传输机制的系统的核心任务之一就是设计CAN总线的应用层协议。当前基于CAN总线的商业协议主要有DeviceNet和CANopen两种协议,这两种总线协议是通用型协议,功能齐全、结构复杂、灵活性差、传输效率较低,并且占用系统资源较多。而当前的嵌入式系统往往功能单一、结构简单、资源有限,但要求传输速度快、可靠性与效率高,所以需要一种结构简单的新型应用层协议。目前由浙江大学吴朝晖等人已经完成的一种应用于大量数据基于连接的CAN总线的通信协议,实现了数据大于8字节的消息发送的基于连接的应用层协议。该协议虽然实现了对大于8字节数据的打包发送,但是缺乏传输的响应机制,因此不能处理传输出错的情况。特别是该协议只能实现最大256*7个字节数据传输,没有海量数据传输机制,而且不能保证数据传输的准确性。同时该协议基于连接,每次传输需要先建立连接,因此传输效率比较低。
发明内容本发明的主要目的在于克服现有技术中的不足,提供了一种适用于海量数据传输的基于消息机制的CAN总线通信协议。为了解决上述技术问题,本发明是通过以下技术方案实现的-基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于设备之间采用主从式连接,数据以无连接方式实现传输;数据传输采用消息机制,一条消息最多可发送65536个字节数据;当发送大于65536个字节数据时,采用打包方式,实现最大4G海量数据传输。作为一种改进,所述的多帧数据的帧序号从0到255标志,序列号从l开始分配,并且连续地循环分配下去直到最后一个单独数据包,而单独数据包也应该从第一个单独数据包开始顺序发送。作为一种改进,多帧数据除第一帧外,每帧数据必须包含一个序列号和7个字节数据。而第一帧包含数据长度信息。作为一种改进,海量数据传输时,包头从0到65535标志,从0开始分配,并连续地分配下去直到最后一包,而单包也从第一个数据包开始顺序发送。作为一种改进,所述的通信协议包括主从连接管理、消息传输管理和海量数据传输管理。作为一种改进,所述的主从连接管理包括主设备初始化和从设备初始化。作为一种改进,所述的主从连接管理实现过程如下整个系统只能有一个主设备,最多可以有十四个从设备。主从连接管理包括主设备初始化和从设备初始化,主设备初始化先初始化从设备列表,接着初始化消息队列并广播注册消息,等待从设备响应。从设备初始化从初始化消息队列开始,接着响应主设备广播,进入消息循环处理。所有传输由主设备发起。作为一种改进,所述的消息机制的每条消息可以是单帧数据,也可以是多帧数据。作为一种改进,所述的消息传输管理包括消息发送、等待响应和消息接收。作为一种改进,所述的消息传输管理实现过程如下根据消息中不同的功能代码将消息打包成多帧进行发送,接收端同样根据接收到的消息中不同的功能代码将消息解包。每条消息发送完后,等待接收方的反馈消息(如果发送的为反馈消息则不再等待反馈),确认消息是否被正确接收,即接收方在接收完整条消息后,都会发送一条反馈消息(如果接收到的消息为反馈消息则不对该消息反馈),通知发送方内容已被正确接收。如果发送方等待ls未收到反馈消息或反馈消息错误,则重新发送该帧并再次等待1S。若重发到三次,则判定为故障,停止发送并提示出错。否则继续发送下一条消息。这样就保证了每条消息发送的正确性。作为一种改进,所述的海量数据传输管理包括数据打包、数据发送、数据接收和数据解包。作为一种改进,所述的海量数据传输管理实现过程如下对于大于65536字节的数据,发送端将其分解成最大为65536字节的多条消息进行发送,在每条消息中定义一个包头,而接收端根据这个包头将接收到的多条消息重新解包。当接收端接收完一包后,进行消息响应,如果发送端收到接收端提示包接收出错,则重发一包。包头由两字节数据组成,包序号从0开始分配,最大到65535。与现有技术相比,本发明的有益效果是-本发明是针对小型系统应用和需求,开发的上层协议,实现了最大4GB海量数据传输。利用消息机制和海量数据传输机制,保障了数据传输的高效性与准确性。由于协议结构简单,具有占用资源少,效率高的特点。图l是本发明的系统结构图。图2是本发明的消息传输的流程图。图3是本发明的海量数据传输的流程图。具体实施例方式结合附图,下面通过具体实施例对本发明进行详细说明。MicroCAN采用服务器/客户机方式的主从连接方式。CAN总线是一种多主总线,总线上各节点都可以向其他节点发送消息。而在小型系统应用中,由主机掌控各个节点的消息传输和状态,以及保证消息响应的实时性,因此采用主从模式能够保证数据传输的稳定性和准确性。CAN控制器通过标识符判断优先级、接收条件、功能等,所以标识符是CAN传输协议的核心,MicroCAN协议对11位标识符进行分配,如表1所示。表1<table>tableseeoriginaldocumentpage7</column></row><table>在MicroCAN分配的标识符协议中,96bit表示节点地址,主机地址为0x0,从机地址可以为0xl0xE,OxF表示广播帧,52bit和10bit分别表示功能代码与子功能,内容分配如表2所示。表2<table>tableseeoriginaldocumentpage7</column></row><table><table>tableseeoriginaldocumentpage8</column></row><table>MicroCAN消息机制规范了主从设备之间数据传输协议,主从设备之间数据传输是以消息为单元,传输过程包括发送、接收、应答、重发等过程。每条消息可以是单帧数据,也可以是多帧数据,最大可发送65536个字节数据。定义消息结构如下typedefstruct—MCAN—MESSAGE—STRUCT{BOOLbServerSend;〃标识主机发送或接收的消息BYTEbyAddress;〃节点地址MCANMajorFunctionCommType;〃主功能描述MCANDeviceTypeHostDeviceType;〃主设备类型MCANDeviceTypeClientDeviceType;〃从设备类型BYTEbyCommParam;〃功能描述MCANMessageStateMessageState;〃消息状态WORDwDataLen;Z/数据长度BYTE*pData;〃数据—MCAN_MESSAGE—STRUCT*pNextMessage;〃下一条消息}MCANMessage;根据消息中不同的功能代码将消息打包成多帧进行发送,接收端同样根据接收到的消息中不同的功能代码将消息解包。每条消息发送完后,等待接收方的反馈消息(如果发送的为反馈消息则不再等待反馈),确认消息是否被正确接收,即接收方在接收完整条消息后,都会发送一条反馈消息(如果接收到的消息为反馈消息则不对该消息反馈),通知发送方内容已被正确接收。如果发送方等待Is未收到反馈消息或反馈消息错误,则重新发送该帧并再次等待ls。若重发到三次,则判断为故障,停止发送并提示出错。否则继续发送下一条消息。这样就保证了每条消息发送的正确性。只要根据需要发送的内容对消息结构进行填充,发送方将根据协议自动对发送消息进行打包,而接收方同样也将根据协议对接收信息进行解包,因此消息机制能保证消息发送和接收的正确性。基于MicroCAN消息机制传输协议可以保障一条不大于65536个字节数据消息传输成功,但对于65K以上的大包数据传输,则无法实现。鉴于该协议在大数据量传输过程存在的缺陷,需要进行扩展,使其满足大数据量传输的需求。MicroCAN协议规范了大数据量传输协议,包括对大数据进行分解、重新打包、发送、接收、解包、组合数据等步骤。接收方每次接收数据时先做一次是否为大包数据的检测,如果为大包则等所有包接收完后解包组合数据。包头由两字节数据组成,0x0000表示起始包,最大值为0xFFFF,由于每条消息最多可发送65535个字节的数据,因此一次数据传输最大容量可达4G。基于CAN总线构成的分布式系统除具有较高的实时性外,其协议中多种错误检测机制保证了通信的可靠性和抗干扰性,非常适合船舶舱内通信等空间狭小的应用场合。MicroCAN协议在保证较高的可靠性和稳定性的前提下,利用消息机制以及大数据量传输机制,具有占用资源少,传输效率高的特点,特别是在嵌入式小型系统中具有很好的实用性。应该理解到的是上述实施例只是对本发明的说明,而不是对本发明的限制,任何不超出本发明实质精神范围内的发明创造,均落入本发明的保护范围之内。权利要求1、基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于设备之间采用主从式连接,数据以无连接方式实现传输;数据传输采用消息机制,一条消息最多可发送65536个字节数据;当发送大于65536个字节数据时,采用打包方式,实现最大4G海量数据传输。2、根据权利要求1所述的基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于,所述的主从连接方式,只能有一个主设备,最多可以有十四个从设备;所有传输由主设备发起,主设备通过广播方式査询各从设备状态。3、根据权利要求2所述的基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于,所述的广播功能由主设备发送消息,各从设备通过响应广播消息实现主从设备的连接。4、根据权利要求1所述的基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于,所述的数据传输以无连接方式实现,所有数据发送给同一条总线,各设备通过帧识别码判断是否接收在总线上的数据。5、根据权利要求1所述的基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于,所述的消息机制包括数据打包、发送、接收、解包、应答和重发过程,所有消息都由主设备发起。6、根据权利要求5所述的基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于,所述的消息机制的每条消息是单帧数据,或者是多帧数据。7、根据权利要求5所述的基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于,所述的消息机制根据消息中不同的功能代码将消息打包成单帧或多帧进行发送,接收端同样根据接收到的消息中不同的功能代码将消息解包。8、根据权利要求5所述的基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于,所述的多帧数据包含一个帧序号,最大可发送65536个字节数据;多帧数据帧序号从0到255标志,序列号从l开始分配,并且连续地循环分配下去直到最后一个单独数据包,而单独数据包也应该从第一个单独数据包开始顺序发送;多帧数据除第一帧外,每帧数据必须包含一个序列号和7个字节数据。而第一帧包含数据长度信息。9、根据权利要求5所述的基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于,所述的消息机制在每条消息发送完后,等待接收方的反馈消息,如果发送的为反馈消息则不再等待反馈,确认消息是否被正确接收,即接收方在接收完整条消息后,都会发送一条反馈消息,如果接收到的消息为反馈消息则不对该消息反馈,通知发送方内容已被正确接收。如果发送方等待ls未收到反馈消息或反馈消息错误,则重新发送该帧并再次等待ls;若重发到三次,则判定为故障,停止发送并提示出错;否则继续发送下一条消息。10、根据权利要求1所述的基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于,所述的海量数据传输实现大于65536字节小于4GB数据量,发送端将数据分解成多条消息进行发送,在每条消息中定义一个包头,而接收端根据这个包头将接收到的多条消息重新解包;所述的海量数据传输中消息的包头由两个字节组成,包序号从0开始分配,最大到65535;所述的海量数据传输接收端接收完每包后,进行一次消息反馈,如果发送端收到接收端提示接收一包出错,则进行整包重发。全文摘要本发明公开了一种基于消息机制的用于海量数据传输的CAN总线通信协议,其特征在于设备之间采用主从式连接,数据以无连接方式实现传输;数据传输采用消息机制,一条消息最多可发送65536个字节数据;当发送大于65536个字节数据时,采用打包方式,实现最大4G海量数据传输。本发明是针对小型系统应用和需求,开发的上层协议,实现了最大4GB海量数据传输。利用消息机制和海量数据传输机制,保障了数据传输的高效性与准确性。由于协议结构简单,具有占用资源少,效率高的特点。文档编号H04L29/06GK101552785SQ20091009841公开日2009年10月7日申请日期2009年5月7日优先权日2009年5月7日发明者叶树明,汤亚伟,凯蒋申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1