一种CAN总线长报文传输的编码方法技术

技术编号:17737240 阅读:24 留言:0更新日期:2018-04-18 13:20
本发明专利技术公开了一种CAN总线长报文传输的编码方法,包括以下步骤:步骤1、对CAN扩展帧中的29位标识符进行定义,定义规则为每帧信息包含了帧类型、目标地址、源地址、帧序号、报文序号以及要传送的有效数据;步骤2、发送节点按与步骤1一样的定义规则对长报文进行拆分打包,接收节点对每帧报文进行分析;步骤3、报文序号相同的帧,按帧序号0‑n从小到大一帧一帧顺序拼接起来,完成报文的拼接重组。本发明专利技术所述的编码方法,不占用数据区空间,8个字节的数据区可以全部用来传输数据。实现了CAN总线长报文数据的高效传输,通讯速率也仅受限于硬件设计,最高可达1Mbps。

A coding method for long message transmission of CAN bus

The invention discloses an encoding method for CAN bus long packet transmission, which comprises the following steps: 1, to expand the CAN 29 bit identifier in the frame definition, the definition of rules for each frame contains valid data frame type, destination address, source address, frame number, serial number and message transmission procedures; 2, according to the sending node and step 1 define rules the same to split long message package, the receiving node to analyze packets per frame; frame 3, the same steps according to the message sequence number, frame number 0 N from a frame sequence together, complete splicing recombinant message. The encoding method described in the present invention does not occupy the data area space, and the data area of the 8 bytes can be all used to transmit data. The high efficient transmission of long message data of CAN bus is realized, and the communication rate is limited to the hardware design, up to 1Mbps.

【技术实现步骤摘要】
一种CAN总线长报文传输的编码方法
本专利技术涉及通信
,尤其涉及一种CAN总线长报文传输的编码方法。
技术介绍
CAN总线是国际上应用最广泛的现场总线之一,被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。但是CAN总线数据帧长度最多为8个字节,当需要传输的数据多于8个字节时,发送节点需要把数据拆分成多帧发送,接受接收节点需要把接收到的多帧数据按顺序拼接成一个完整的报文。目前主流的CAN总线应用层通讯协议采用的多帧拼接编码支持的最大报文长度不到2000字节,不能满足工控领域一些具有大容量测点模件数据传输的需求,且有效报文传输速率较低。由于CAN总线一对多及广播集中方式传送和接受数据。针对多于8个字节的数据报文,是否能正确拼接报文直接影响到通讯数据的正确性。
技术实现思路
有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是提供一种CAN总线长报文传输的编码方法,相比目前的主流CAN总线应用层通信协议,有效提升了报文传输最大长度,可以在不影响传输效率的情况下保证长报文数据传输的正确性及报文传输速率。为实现上述目的,本专利技术提供了一种CAN总线长报文传输的编码方法,其特征在于,包括以下步骤:步骤1、对CAN扩展帧中的29位标识符进行定义,定义规则为每帧信息包含了帧类型、目标地址、源地址、帧序号、报文序号以及要传送的有效数据;步骤2、发送节点按与步骤1一样的定义规则对长报文进行拆分打包,接收节点对每帧报文进行分析;步骤3、报文序号相同的帧,按帧序号0-n从小到大一帧一帧顺序拼接起来,完成报文的拼接重组。进一步地,所述CAN扩展帧中的29位标识符的第1位标识符为帧类型高位。进一步地,所述CAN扩展帧中的29位标识符的第2到8位标识符为目标地址。进一步地,所述CAN扩展帧中的29位标识符的第9位标识符为帧类型低位。进一步地,所述CAN扩展帧中的29位标识符的第10到16位为源地址位。进一步地,所述CAN扩展帧中的29位标识符的第17到26位为帧序号位。进一步地,所述CAN扩展帧中的29位标识符的第27到29位为报文序号位。本专利技术的有益效果是:本专利技术所述的编码方法,不占用数据区空间,8个字节的数据区可以全部用来传输数据。每帧信息的29位标识符包含了包间拼接重组所需要的所有信息,因此也不需要特别的管理连接。最多可传输0x3ff(1023)包数据,即可传输的报文最长为1023*8=8184字节。从而实现了CAN总线长报文数据的高效传输,通讯速率也仅受限于硬件设计,最高可达1Mbps。以下将结合附图对本专利技术的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本专利技术的目的、特征和效果。附图说明图1是本专利技术的流程图。具体实施方式CAN基本协议规定了物理层和数据链路层,用户在应用CAN总线时,需要自行设计应用层协议。如SAEJ1939,它描述了重型车辆现场总线的一种网络应用,包括CAN网络物理层定义、数据链路层定义、应用层定义、网络层定义、故障诊断和网络管理。SAEJ1939在通讯中其功能分为数据的拆分打包和重组及连接管理两部分。其数据帧是以PDU(协议数据单元)为单位传送信息,每个PDU相当于CAN协议中的一帧。PDU由29位标识符和0~8个字节的数据所组成,如表l所示。SAEJ1939利用29位标识符(CAN扩展帧)提供一种完整的网络定义。表1中,P位为决定报文优先级的前3位;R是保留位:DP是数据页位;PF场识别两个PDI格式(PDUl、PDU2):替代远程请求位SRR和标识符扩展位IDE在CAN2.0B中己详细定义,并未包含在PDU内;PS场由PF值决定其包含一个目标地址(DA)还是包含一个对PDU格式PF的组扩展(GE);SA为源地址。应用层定义了针对车辆应用的信号(参数)和报文(参数组)。应用层通过参数描述信号,给每个参数分配了一个19位的可疑参数编号(SP-N);此外还通过参数组描述报文,给每个参数组分配了一个24位的参数组编号(PGN)。SPN用来标识与ECU相关的故障诊断元素、部件或参数组中参数;PGN用来唯一标识一个特定参数组。SAEJ1939协议在数据链路层定义了多包数据传输的方法。在进行长报文数据传输时,规定了每帧信息数据区首字节定义为帧编号,其余7个字节为有效数据,通过帧编号来进行多帧报文的分拆与拼接。表1SAEJ1939帧格式SAEJ1939协议在数据链路层定义了多包数据传输的方法。在进行长报文数据传输时,规定了每帧信息数据区首字节定义为帧编号,其余7个字节为有效数据的帧编号需要占用数据区的1个字节,这样每帧信息所携带的有效数据就比正常CAN帧少了一个字节。按SAEJ1939协议长报文编码方法,最多可传输255包数据,即可传输的报文最长仅为255*7=1784字节。在SAEJ1939协议中,为完成长报文数据传输,需要先在节点之间建立连接管理,节点开始通信和结束通信前需要进行“握手”和“分离”,用于管理节点间连接的建立与关闭。这样的通信机制虽然进一步确保了CAN通信的可靠性,但实际却降低了有效报文的传输速率,因此在SAEJ1939协议中,实际的长报文通讯速率最大为250Kbps左右,小于CAN总线规定的正常速率(500kbps)。SAEJ1939协议指定了传输类型、报文结构及其分段、流量检查等,对报文内容本身也做了确切的定义,应用程序代码包含了CAN总线非常具体的应用层协议,修改和移植非常不方便,且通讯速率只能达到250kbps,因此有非常大的局限性。本专利技术提出的编码方法,完全基于异步通信的机制,使CAN总线应用层通讯不需要特殊的连接管理,能在更高通讯速率下完成CAN总线更长报文的正确传输。如图1所示,在本专利技术中,CAN总线网通讯是在遵循CAN2.0B协议基础上,每个通讯帧信息包含标识符和应用层数据两部分。为了实现CAN总线长报文的通讯,又不影响通讯速率和数据传输效率,本专利对CAN扩展帧中的29位标识符进行了定义(见表2所示)。每帧信息包含了帧类型、目标地址、源地址、帧序号,报文序号以及要传送的有效数据,这样每帧报文都有了确定的描述,发送节点按此规则对长报文进行拆分打包,接收节点对每帧报文进行分析,报文序号相同的帧,按帧序号0-n从小到大一帧一帧顺序拼接起来,完成报文的拼接重组,从而实现CAN总线的长报文通讯。表2标识符定义表3帧类型定义:例如节点1向节点2第3次发送报文,该报文有4000个字节数据。那么该报文需要拆分成500帧数据连续发送,首帧、中间帧、尾帧的编码如下表4所示。表4相比现有的CAN多包传输机制,本专利技术所述的编码方法,不占用数据区空间,8个字节的数据区可以全部用来传输数据。每帧信息的29位标识符包含了包间拼接重组所需要的所有信息,因此也不需要特别的管理连接。最多可传输0x3ff(1023)包数据,即可传输的报文最长为1023*8=8184字节。从而实现了CAN总线长报文数据的高效传输,通讯速率也仅受限于硬件设计,最高可达1Mbps。以上详细描述了本专利技术的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本专利技术的构思做出诸多修改和变化。因此,凡本
中技术人员依本专利技术的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技本文档来自技高网
...
一种CAN总线长报文传输的编码方法

【技术保护点】
一种CAN总线长报文传输的编码方法,其特征在于,包括以下步骤:步骤1、对CAN扩展帧中的29位标识符进行定义,定义规则为每帧信息包含了帧类型、目标地址、源地址、帧序号、报文序号以及要传送的有效数据;步骤2、发送节点按与步骤1一样的定义规则对长报文进行拆分打包,接收节点对每帧报文进行分析;步骤3、报文序号相同的帧,按帧序号0‑n从小到大一帧一帧顺序拼接起来,完成报文的拼接重组。

【技术特征摘要】
1.一种CAN总线长报文传输的编码方法,其特征在于,包括以下步骤:步骤1、对CAN扩展帧中的29位标识符进行定义,定义规则为每帧信息包含了帧类型、目标地址、源地址、帧序号、报文序号以及要传送的有效数据;步骤2、发送节点按与步骤1一样的定义规则对长报文进行拆分打包,接收节点对每帧报文进行分析;步骤3、报文序号相同的帧,按帧序号0-n从小到大一帧一帧顺序拼接起来,完成报文的拼接重组。2.如权利要求1所述的CAN总线长报文传输的编码方法,其特征在于:所述CAN扩展帧中的29位标识符的第1位标识符为帧类型高位。3.如权利要求1所述的CAN总线长报文传输的编码方法,其特征在...

【专利技术属性】
技术研发人员:周霞彭文才熊光亚孙延岭徐方明赵涌刘成俊丁志宇郭壁垒
申请(专利权)人:南瑞集团有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1