一种can总线系统中的应用层通讯方法

文档序号:7744241阅读:116来源:国知局

专利名称::一种can总线系统中的应用层通讯方法
技术领域
:本发明涉及CAN(ControllerAreaNetwork,控制器领域网络)总线,具体涉及一种CAN总线系统及其中的应用层通讯方法。
背景技术
:CAN总线最初是由德国Bosch公司为了解决汽车中众多控制器与测量设备之间的数据交换而开发的一种串行数据通信总线(可参见Bosch.CANSpecification,version2.0,1991,9),后发展为国际标准13011898。CAN总线的最大特点在于数据链路层采用了消息优先性仲裁、自动应答,CRC(CyclicalRedundancyCheck,循环冗余码校验)自动校验、错误重发等机制。由于CAN总线具有可靠性高,传输速率快,通信距离较远,易于使用、维护和网络扩展,目前已广泛应用于各种工业现场控制领域。但是,CAN只定义了IS0/0SI中的物理层和数据链路层规范,这种设计要求用户在应用CAN协议时,必须自行定义应用层协议。实践表明,即使最简单的CAN分布式系统,仅仅靠两层协议规范是不够的,要进行高效率的通讯还需要进一步明确应用层协议。目前,CAN总线应用层协议种类很多,但这些协议或者是非常复杂的通用型协议,比如CANopen,DeviceNet,或者是基于特定应用领域的专用协议,如J1939标准。使用复杂的通用性协议,一般会增加CAN总线节点的开销,增加开发周期和成本。而特定的协议一般会使得应用存在较大的局限性,增加了修改和移植的成本。
发明内容本发明的目的是提供一种CAN总线系统中的应用层通讯方法,它根据对CAN总线应用层设计在工业现场应用中需求出发,结合CAN总线数据链路层的特点,CAN总线通讯模式以及CAN节点寄存器模型提出了一套完整通用的CAN总线应用层通讯方案,效率高,协议代价小,简单实用,便于推广和移植,可以适合于很多使用CAN总线的工业自动化设备或移动设备上。为了解决
背景技术
中所存在的问题,本发明是采用以下技术方案将设备内部的功能分成若干个通道,每个功能通道都有自己的属性,这样就能清晰地将CAN总线上的数据对象,按照功能划分开来。结合CAN总线通讯的特点,再将设备的功能及其属性进行编号,某个虚拟数据对象,将由一个通道号和一个属性值完全对应。因此,一个通道号和一个属性值被称为虚拟数据对象的索引。在发送应用层消息是,虚拟数据通道的索引信息,被直接放置在了ID之上,直接提高了通讯效率。不同的设备具有不同的通道和属性,因此,需要有一个对应的虚拟数据对象表来记录虚拟数据对象的索引。每个虚拟数据对象的实际物理意义,数据类型,读写权限,都将记录在虚拟数据表中。本发明主要针对工业现场与移动设备中广泛使用的主从式CAN总线拓扑结构,提出了一个完整的基于虚拟数据对象的一般性应用层通讯方案,易于推广和移植,适用性强。本发明的技术方案在基于ARM的系统级集成运动控制系统中得到了应用和验证。实验结果3表明本通讯方案具有使用简明,资源占用少等优点。图1是本发明基于CAN总线的应用层协议的结构示意图;图2是本发明应用层协议读取虚拟数据对象的流程图;图3是本发明应用层协议写入虚拟数据对象的流程图;图4是本发明应用层协议使用BOOST方式读取虚拟数据对象的流程图。具体实施例方式参看图1,本具体实施方式采用以下技术方案它包括CAN总线虚拟数据对象、虚拟数据对象表、虚拟数据对象的读写操作。所述CAN总线应用层协议的数据通讯过程,是通过向CAN总线上发送扩展帧格式的数据帧或远程帧来完成的。CAN总线系统的链路层协议是一个面向CANID的一种通讯方式,CAN总线数据通信的对象是CANID,而不是某个设备的地址,因此,如何分配CANID来实现不同设备之间的数据交互就是所述虚拟数据对象所解决的问题。虚拟数据对象是所述CAN总线应用层协议通讯的最小单元,其表示了设备的某个功能属性。每个遵循所述应用层协议的设备都必须有一个数据对象表,该表中保存了每个虚拟数据对象的索引、含义、数据类型、数据长度,从这个意义上来讲,每个虚拟对象是被事先定义好的。所述虚拟数据对象的索引值是由通道和属性来完成的。通道值表示了一个设备的某个功能,通道属性表示了该通道功能的不同的属性。每个属性具有不同的数据类型和读写权限。设备通过检索通道号以及属性值,即可访问到指定的虚拟数据对象。每个遵循所述CAN总线应用层协议的设备都必须有一个特殊的通道,即系统通道,该系统通道用于表示设备和应用层协议的各种配置与状态属性。这些通用属性中,某些属性是强制执行的,某些是可选的。当设备需要对CAN总线上的虚拟数据对象进行读操作或者写操作时,需要向CAN总线上发送一个应用层消息,应用层消息是由一个CAN的数据帧或者远程帧来承载的。应用层消息包含了虚拟数据对象所在的设备地址,消息的优先级,虚拟数据对象的索引(通道号和属性值)以及携带的数据(用来作数据请求的远程帧不携带数据)。为了充分利用CAN总线链路层所提供的功能,减小协议开销,应用层消息中的设备地址,消息优先级,虚拟数据对象的索引,被直接放置在了CAN总线数据帧或者远程帧的ID上。优先级被放置在了ID的高位,值越小,优先级越高,这种设计,直接使用了CAN总线链路层优先级仲裁机制。进一步地,所述的虚拟数据对象所在的设备地址,包含普通设备地址和广播设备地址。设备地址为普通地址时,应用层消息只对设备地址所指定的设备有效。设备地址为广播地址时,应用层消息对CAN总线网络上所有的设备有效。所述虚拟数据对象的写操作需要使用CAN数据帧来承载数据,同时要求所写入的虚拟数据对象所在的CAN节点根据系统通道中的配置信息来决定是否发送应答信息,应答信息用来指示该次写操作的成功是否,如图3所示。所述虚拟数据对象的读操作可分为两种形式,即查询模式与BOOST模式。查询模式,如图1所示,即需要读取虚拟数据对象的节点向CAN总线上发送一个应用层消息(CAN总线的远程帧),该消息中包含了消息的优先级,待读取数据对象所在的设备地址,通道号,属性值。被读取的设备收到了该应用层消息之后,根据所请求的通道号与属性值,生成一个数据帧(该数据帧具有与请求数据的远程帧相同的CANID值),并将该数据帧发送到CAN总线上。在查询模式下,每次读取虚拟数据对象时,需要先发送一个远程帧,再等待被读取设备发送应答的数据帧,整个过程需要一个来回,总线利用率并不高,比较适合小数据量低速读取。BOOST模式,如图4所示,即要读取虚拟数据对象的节点,向CAN总线上发送一个携带BOOST请求的应用层消息(CAN数据帧),该消息中包含了消息的优先级,待读取数据对象所在的设备地址,通道号,属性值,以及对被读取设备BOOST通道的配置信息。进一步地,BOOST通道的配置信息,包括发送间隔时间,发送次数,待发送的虚拟数据对象的索引,以及通道的使能信息。被读取设备收到了携带BOOST请求的应用层消息之后,根据所请求的配置信息的内容,向总线上以一定的时间间隔,发送一定数目的指定虚拟数据对象的数据。在BOOST模式下,读取方只需要在开始的时候发送一个BOOST请求到被读取方,被读取方在收到请求之后将按照BOOST请求所设置的方式来主动向CAN总线上发送数据帧。这种方式对总线带宽的利用率较高,适合高速的数据传输。实施例一一种CAN总线系统中的应用层通讯方法,所述CAN总线系统包括CAN总线、若干个CAN节点;各CAN节点之间通过所述CAN总线,根据CAN应用层协议收发应用层消息,以进行应用层通讯;下面将具体描述所述CAN应用层协议。首先,CAN总线协议支持四种通讯帧数据帧,远程帧,错误帧,以及超载帧。其中数据帧实现发送节点到接收节点的数据传递,本实施例中,所述CAN节点在进行应用层通讯时,写入虚拟数据对象使用的是数据帧,以查询方式读取虚拟数据对象使用的是远程帧请求,数据帧返回。在实际应用时,也不排除用其它帧进行承载。根据CAN协议版本的不同,通讯帧的格式分为扩展帧和普通帧,本实例中,所有的通讯帧均使用扩展帧格式。在实际应用时,也不排除使用普通帧以及两者混用的方式进行传输。如表1所示,所述CAN节点在进行应用层通讯时,所收发的CAN通讯帧的29位ID号的各位的含义进行了定义。表一、CAN总线ID含义表<table>tableseeoriginaldocumentpage5</column></row><table>其中R:执行标准定义。长度lbitR=0,表示该ID遵守所述应用层协议。R=1,表示该ID不遵守所述应用层协议。Priority消息优先级。长度4bits该字段用于标明消息的优先级。优先级越大,字段值越小,如Priority=0时优先级最高。DeviceID设备ID。长度8bits用于标识总线中的某个设备。该字段一般由设备本身决定,如设备上的拨码开关,或者固化在设备内部。DeviceID值为OxFF时,为广播ID。Channel通道号。长度8bits用于表示器件内部各个功能模块的通道值。Property通道属性值。长度Abits用于标识某个功能通道的属性。在所述应用层协议通讯中,最小通讯单元是某个设备的某个通道的某个属性值。这个属性类似于存储器中断的某个地址,有些是只读的,有些是只写的,有些是可读写的。每个遵守所述应用层协议的设备,都需要提供一个属性分配表,用来说明每个属性所表示的意义以及其数据类型和长度。也就是说,这里提到的每个属性都是事先定义好的。当DeviceID值为OxFF时,为广播消息,总线上所有设备都应该可以响应该消息。当Channel值为0是,表示系统通道,系统通道用来表示系统的通用属性,这些通用属性中,某些属性是强制执行的,某些是可选的。在所述应用层协议通讯中的属性值通过远程帧进行读取,通过数据帧进行写入。如想要读取某个电机控制器中当前电机的转速,这里假设器件ID为0x01,电机通道0的通道值为1,转速属性的值为3,则需要向CAN总线上发送ID为0x00010103的远程帧。电机控制器收到该远程帧的请求之后,将回复一个与发送ID相同的数据帧,该数据帧中包含了当前通道0上电机的转速。数据帧中电机的转速的数据长度,数据类型可以通过属性分配表来查得。在某些应用场合,需要不停地读取数据,或者需要较高的采样频率。在所述应用层协议中提供一种叫做Boost读取的方式可以有效满足上面提到的要求。通过Boost读取方式可以使得CAN总线设备在没有收到远程请求的情况下自动的按照一定的时间间隔,发送若干次指定的属性值。Boost读取方式是通过发送一个系统类中的Boost属性的数据帧来启动或者停止的。一个设备中可以支持最多8个Boost通道,每个通道都可以单独地进行打开,关闭和配置。Boost数据帧中的数据格式如下<table>tableseeoriginaldocumentpage6</column></row><table><formula>formulaseeoriginaldocumentpage7</formula>其中On/Off表示是否使能指定Boost通道号。0关闭,1使能Boost通道号用来指定待操作的Boost通道号。重复次数取值范围广255,该Boost通道需要自动向CAN总线上发送待读取ID的次数。当Boost通道完成指定的发送次数之后,将自动关闭。当重复次数取值为0xFF时,表示无限次。发送间隔取值范围广65535,单位是ms,表示每次发送数据之间的间隔时间。待读取ID表示需要设备向CAN总线上发送数据的ID。权利要求一种CAN总线系统中的应用层通讯方法,其特征在于它包含CAN总线虚拟数据对象、虚拟数据对象表、虚拟数据对象的读写操作;所述CAN总线应用层协议的数据通讯过程,是通过向CAN总线上发送扩展帧格式的数据帧或远程帧来完成的。2.根据权利要求1所述的一种CAN总线系统中的应用层通讯方法,其特征在于CAN总线系统包括CAN总线、若干个CAN节点;需要对其它CAN节点进行操作的CAN节点发送应用层消息给所述CAN总线,在应用层消息中携带了待操作数据对象功能信息;CAN总线根据所述应用层消息中携带的所述接收者标识将应用层消息传送给相应的CAN节点;接收应用层消息的CAN节点根据应用层消息中携带的所述功能信息进行相应操作。3.根据权利要求1所述的一种CAN总线系统中的应用层通讯方法,其特征在于所述的所述读操作可以使用CAN远程帧来发起,即查询模式,也可以使用BOOST读取方式进行,即BOOST模式,CAN总线节点接收到读取请求之后,将向CAN总线上发送远程帧中所请求的虚拟数据对象所包含的数据;写操作需要使用CAN数据帧来承载数据,同时要求所写入的虚拟数据对象所在的CAN节点根据需要发送应答信息,应答信息包含了该次操作的状态。4.根据权利要求1所述的一种CAN总线系统中的应用层通讯方法,其特征在于所述的虚拟数据对象是所述CAN总线应用层协议通讯的最小单元,其表示了设备的某个功能属性;每个遵循所述应用层协议的设备都必须有一个数据对象表,该表中保存了每个虚拟数据对象的索引、含义、数据类型、数据长度,从这个意义上来讲,每个虚拟对象是被事先定义好的;虚拟数据对象的索引值是由通道和属性来完成的;通道值表示了一个设备的某个功能,通道属性表示了该通道功能的不同的属性;每个属性具有不同的数据类型和读写权限;设备通过检索通道号以及属性值,即可访问到指定的虚拟数据对象;每个遵循所述CAN总线应用层协议的设备都必须有一个特殊的通道,即系统通道,该系统通道用于表示设备和应用层协议的各种配置与状态属性;这些通用属性中,某些属性是强制执行的,某些是可选的。5.根据权利要求3所述的一种CAN总线系统中的应用层通讯方法,其特征在于BOOST模式使用当虚拟数据对象使能了BOOST通讯之后和,该对象所在的CAN节点将主动按照协议规定的时间间隔与发送次数向CAN总线上发送包含该虚拟数据对象数据的CAN数据帧。6.根据权利要求2所述的一种CAN总线系统中的应用层通讯方法,其特征所述的应用层消息使用CAN扩展帧格式进行传输;应用层消息包含了所操作的虚拟数据对象所在的设备地址,虚拟数据对象所在的分类索引,消息的优先级;这些信息被放置在了CAN总线消息的ID上。7.根据权利要求1所述的一种CAN总线系统中的应用层通讯方法,其特征在于所述的设备地址包含普通设备地址和广播设备地址;设备地址为普通地址时,应用层消息只对设备地址所指定的设备有效;设备地址为广播地址时,应用层消息对CAN总线网络上所有的设备有效。全文摘要一种CAN总线系统中的应用层通讯方法,它涉及控制器领域网络总线。以CAN总线上的虚拟数据对象为目标识别单位,虚拟数据对象,以数据对象表为参照,用以说明虚拟数据对象的实际含义,读写权限及其数据类型;应用层协议通讯方式包括普通通讯方式以及boost通讯方式;本发明简单实用,有利于推广和移植,对设备的存储器与运算速度要求较低,可以适合于很多使用CAN总线的工业自动化工艺设备上。文档编号H04L29/08GK101808132SQ20101013035公开日2010年8月18日申请日期2010年3月23日优先权日2010年3月23日发明者周伟,李一鹏,林敬桥,郭盖华,闫学凯,陈志发申请人:武汉若比特机器人有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1