基于CAN2.0长报文数据标准帧的组织算法的制作方法

文档序号:11234359阅读:937来源:国知局

本发明涉及一种算法,具体的说,涉及了一种基于can2.0长报文数据标准帧的组织算法。



背景技术:

can总线协议是一种用于实时应用的串行通讯总线协议,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。最开始can总线协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。该协议的健壮性使其用途延伸到其他自动化和工业应用,例如航空航天、机器人、数控机床、医疗器械及传感器等。can协议的特性包括完整性的串行数据通讯、提供实时支持、传输速率高达1mb/s、同时具有11位的寻址以及检错能力。can总线协议规定一帧数据最多携带8个字节的数据,这使得利用can总线协议传送长数据报文时必须将完整的用户报文拆分成若干帧can协议帧,通常情况下,用户数据报文都分为许多不同类型的数据,以让can总线上的通信结点区分所接受到的数据类型,现有的数据帧没有帧序号的标识,出现混乱时难以区分。因此,如何区分用户数据类型,以及如何使can协议帧的组织变得简单清晰、易于实现,就成为了一个工程师不得不面对的问题。

为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。



技术实现要素:

本发明的目的是针对现有技术的不足,从而提供一种设计科学、简单清晰、通用性高、稳定性强、识别快速准确的基于can2.0长报文数据标准帧的组织算法。

为了实现上述目的,本发明所采用的技术方案是:一种基于can2.0长报文数据标准帧的组织算法,标准帧的11位标识符分为报文类型部分和帧序号部分,所述报文类型部分为高8位,所述帧序号部分为低3位。

基于上述,包括以下步骤:1)根据报文长度计算需要发送的总帧数;2)第一个标准帧记录本次报文的总帧数,且第一个标准帧的帧序号为0;3)从第二个标准帧开始到最后一个标准帧结束,其标准帧的帧序号从1-7循环使用。

基于上述,总帧数的计算方法为n=((userdatalen+7)/8)+1其中n为总帧数,userdatalen为报文字节数。

本发明相对现有技术具有突出的实质性特点和显著的进步,具体的说,本发明采用can2.0标准帧格式,该格式含有11位标识符,将11位标识符分为两部分,第一部分为高8位,用来存放用户定义的数据报文的类型;第二部分为低3位,用来在发送can数据帧时存放帧序号用,接受can数据帧时用以根据帧序号先后顺序组织用户报文。其具有设计科学、简单清晰、通用性高、稳定性强、识别快速准确的优点。

具体实施方式

下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。

一种基于can2.0长报文数据标准帧的组织算法,采用can2.0标准帧格式进行数据传输,兼容can2.0a和can2.0b协议。将标准帧的11位标识符分为报文类型部分和帧序号部分,所述报文类型部分用于区分报文数据的类型,所述报文类型部分为高8位,所述帧序号部分为低3位。当接收端接收到can数据帧后,通过取得11位标识符高8位解析出来报文类型,通过取得11位标识符的低3位解析出来帧序号。根据报文类型和帧序号准确判断数据帧是否发生丢帧等混乱,如果发生混乱,则及时丢弃数据,避免数据错误。

优选地,该组织算法包括以下步骤:1)根据报文长度计算需要发送的总帧数;2)第一个标准帧记录本次报文的总帧数,且第一个标准帧的帧序号为0;3)从第二个标准帧开始到最后一个标准帧结束,其标准帧的帧序号从1-7循环使用。

当接收端接收到can数据帧后,通过取得11位标识符高8位解析出来用户报文类型,通过取得11位标识符的低3位解析出来帧序号,如果帧序号为0,则该帧为第1帧,根据该第1帧的8字节内容解析得出本次接收后续还有多少帧。接收过程中可通过判断帧序号是否连续来识别出是否有丢帧。

优选地,总帧数的计算方法为n=((userdatalen+7)/8)+1,其中n为总帧数,userdatalen为报文字节数。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。



技术特征:

技术总结
本发明提供了一种基于CAN2.0长报文数据标准帧的组织算法,标准帧的11位标识符分为报文类型部分和帧序号部分,所述报文类型部分为高8位,所述帧序号部分为低3位。该基于CAN2.0长报文数据标准帧的组织算法具有设计科学、简单清晰、通用性高、稳定性强、识别快速准确的优点。

技术研发人员:王晓帅;赵金磊;张豪楷
受保护的技术使用者:河南辉煌科技股份有限公司
技术研发日:2017.07.07
技术公布日:2017.09.08
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1