一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种实现Can数据透传质量提升的方法及其装置与流程

2023-03-29 06:26:50 来源:中国专利 TAG:

一种实现can数据透传质量提升的方法及其装置
技术领域
1.本发明涉及数据传输技术领域,具体是一种实现can数据透传质量提升的方法及其装置。


背景技术:

2.实现can数据透传在车辆远程诊断场景下非常有意义。为了实现车辆远程诊断,一般有两种方式:1、把专业诊断仪接到故障车辆上,专业诊断仪解析数据后通过网络与远方的技师端软件进行互动。这种方法需要专业诊断仪厂家对现有诊断仪器进行改造实现远程功能。2、安装can透传设备a、和透传设备b。透传设备a安装到现场故障车上,透传设备b安装到技师端。使用时技师把诊断设备的接头通过obdii接口接到透传设备b上,这样好像在本地使用诊断仪一样远程跟故障车辆交互。
3.现有技术中存在如下问题:
4.设备a和设备b通过网络进行通讯。通讯方式采用tcp或者udp协议。一种采用tcp协议,虽然tcp传送可以确保不丢包以及数据包的传送次序,但在一般网络条件下,tcp机制会延迟过长,特别是采用移动网络时,延迟可能达到数百毫秒。iso14229等国际标准车辆诊断协议对can通讯有明确的延迟定义,can连续帧之间一般不超过200ms。因此tcp通讯方式显然不适合此种场景。一种采用udp方式,这种方式解决了数据延迟的问题,一般延迟达到30-50ms,但会导致新的问题是udp网络传送可能丢失数据包和数据包没有按照次序到达。
5.综上所述,本发明提供了一种实现can数据透传质量提升的方法及其装置。


技术实现要素:

6.本发明的目的在于提供一种实现can数据透传质量提升的方法及其装置,以保证数据包的按次序和及时的传送。
7.为实现上述目的,本发明提供如下技术方案:一种实现can数据透传质量提升的方法,所述方法包括:
8.步骤s100对每一个can数据帧进行封装,增加数据包头、can数据流水号和crc校验;
9.步骤s200透传设备设定一个接收缓冲区和发送缓冲区;
10.步骤s300透传设备从can总线上接收的每一个数据按(0-254)顺序循环编号(到254后,下一个can数据编号为0),按编号封装好帧后放入发送缓冲区数组中对应位置;同时通过网络接口发送该帧;
11.步骤s400透传设备从网络接口上接收数据帧,按帧定义校验该帧数据完整性;
12.步骤s500透传设备接收到控制帧后,从发送缓冲区数组中lostidbeg的位置找到相应帧,并再次通过网络发送从lostidbeg到lostidend之间的所有帧;
13.步骤s600透传设备在发出控制帧后200ms仍未能接收正确编号的帧,则跳过该缺失的编号,并设置处于同步状态。
14.作为本发明所述的一种优选实施方案,所述can数据帧格式如下:
15.字节1,0x24;字节2,flowid;字节3-字节14,can数据帧;字节15,crc校验码;其中flowid为255的帧为控制帧;控制帧用于区别数据帧。
16.作为本发明所述的一种优选实施方案,所述步骤s200中接收缓冲区存放从网络udp接口上接收的数据帧;发送缓冲区为从can总线上获得的can数据。发送缓冲和接收缓冲都定义为255*15的数组。
17.作为本发明所述的一种优选实施方案,所述步骤s400详细步骤如下:
18.如该帧数据完整,按帧中flowid的编号放入接收缓冲区中对应的数组位置中;如果该帧flowid为接收的上一帧的flowid 1,则判断为编号连续,马上发送到can网络中。
19.作为本发明所述的一种优选实施方案,所述步骤s400中由于网络传送原因可能丢失其中的部分帧,导致接收的编号并不连续;透传设备判断到帧不连续后,马上发送控制帧给对方。
20.作为本发明所述的一种优选实施方案,所述控制帧格式如下:
21.字节1,0x24;字节2,0xff;字节3,0x01;字节4,lostidbeg;字节5,lostidend;字节6-字节14,空;字节15,crc校验码;字节3中的0x1表示补充数据控制帧;字节4中为接收方缺失的开始帧编号,字节5位当前接收到的编号,这两者之间的为丢失掉的帧。
22.作为本发明所述的一种优选实施方案,本方法中还包括同步控制帧,所述同步控制帧用于使通讯双方在通讯开始时或者通讯中断一段时间后能够保持同步,其具体使用步骤如下:
23.通讯一方判断超过500ms没有接收到数据时,发送一个同步帧给对方;同步帧中的字节3 0x02表示此帧为同步控制帧;字节四synid表示本方接下来开始发送数据的帧编号;对方接收到同步帧后,默认synid为接下来接收到的帧编号,这样让双方保持同步,不会因此误判为帧丢失;
24.其中同步控制帧格式如下:字节1,0x24;字节2,0xff;字节3,0x02;字节4,synid;字节5-字节14,空;字节15,crc校验码。
25.作为本发明所述的一种优选实施方案,在本方法中所述接收缓冲区发送到can总线的流程处理流程如下:
26.接收缓冲区从udp端口读取帧数据,并发送到can网络中去;
27.i、接收到最新的数据帧,按数据帧字节2的序号i,把该帧放入接收缓冲区列表i的位置;
28.ii、判断发送列表位置i的数据帧的字节1是否为0x42,如果是0x42则回到步骤i,等待读取新帧;
29.iii、如果不是0xff,则发送当前帧数据到can网络,并把字节1设置为0x42即表示本条数据已经发送过给can网络;并且i=i 1;回到步骤ii。
30.作为本发明所述的一种优选实施方案,在本方法中发送缓冲区发送到网络总线的流程处理如下:发送缓冲区从can网络中读取数据,并把每一个can数据帧按(0-254循环)编号放入对应的发送缓冲区中;
31.i、监听can网络和
32.ii、接收到最新的can数据帧,按顺序编号为i,并把该帧放入发送缓冲区列表i的
位置;
33.iii、监听补发帧信号,如果有接收到补发数据帧;则进入步骤iv;否则发送当前位置i数据帧;并把该帧第一个字节标记为0x42(表示已经发送过),i=i 1;回到步骤i;
34.iv、判断补发数据帧中的lostidbeg和lostidend之间的数据帧是否第一个字节都为0x42;如果都是0x42表示可以发送这些帧的数据;按顺序发送这些帧到网络;否则表示缓冲区中的数据被更新过,缓冲区数据已经失效不能补帧操作;回到步骤i。
35.一种实现can数据透传质量提升的装置,所述装置用于执行上述方法。
36.与现有技术相比,本发明的有益效果是:按本发明定义的方法进行数据透传,在udp数据包丢失率为1%-2%的网络上,能够实现can数据的有效透传,能够满足目前绝大多数专业诊断仪的远程诊断要求。
附图说明
37.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
38.图1为本发明一种实现can数据透传质量提升的方法及其装置的应用场景示意图;
39.图2为本发明一种实现can数据透传质量提升的方法及其装置的can数据帧封装格式图;
40.图3为本发明一种实现can数据透传质量提升的方法及其装置的控制帧格式图;
41.图4为本发明一种实现can数据透传质量提升的方法及其装置的同步控制帧格式图。
具体实施方式
42.为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
43.请参阅图1-图4,本发明提供一种实现can数据透传质量提升的方法,所述方法包括:
44.步骤s100对每一个can数据帧进行封装,增加数据包头、can数据流水号和crc校验;
45.步骤s200透传设备设定一个接收缓冲区和发送缓冲区;
46.步骤s300透传设备从can总线上接收的每一个数据按(0-254)顺序循环编号(到254后,下一个can数据编号为0),按编号封装好帧后放入发送缓冲区数组中对应位置;同时通过网络接口发送该帧;
47.步骤s400透传设备从网络接口上接收数据帧,按帧定义校验该帧数据完整性;
48.步骤s500透传设备接收到控制帧后,从发送缓冲区数组中lostidbeg的位置找到相应帧,并再次通过网络发送从lostidbeg到lostidend之间的所有帧;
49.步骤s600透传设备在发出控制帧后200ms仍未能接收正确编号的帧,则跳过该缺失的编号,并设置处于同步状态。
50.作为本发明所述的一种优选实施方案,所述can数据帧格式如下:
51.字节1,0x24;字节2,flowid;字节3-字节14,can数据帧;字节15,crc校验码;其中flowid为255的帧为控制帧;控制帧用于区别数据帧。
52.作为本发明所述的一种优选实施方案,所述步骤s200中接收缓冲区存放从网络udp接口上接收的数据帧;发送缓冲区为从can总线上获得的can数据。发送缓冲和接收缓冲都定义为255*15的数组。
53.作为本发明所述的一种优选实施方案,所述步骤s400详细步骤如下:
54.如该帧数据完整,按帧中flowid的编号放入接收缓冲区中对应的数组位置中;如果该帧flowid为接收的上一帧的flowid 1,则判断为编号连续,马上发送到can网络中。
55.作为本发明所述的一种优选实施方案,所述步骤s400中由于网络传送原因可能丢失其中的部分帧,导致接收的编号并不连续;透传设备判断到帧不连续后,马上发送控制帧给对方。
56.作为本发明所述的一种优选实施方案,所述控制帧格式如下:
57.字节1,0x24;字节2,0xff;字节3,0x01;字节4,lostidbeg;字节5,lostidend;字节6-字节14,空;字节15,crc校验码;字节3中的0x1表示补充数据控制帧;字节4中为接收方缺失的开始帧编号,字节5位当前接收到的编号,这两者之间的为丢失掉的帧。
58.作为本发明所述的一种优选实施方案,本方法中还包括同步控制帧,所述同步控制帧用于使通讯双方在通讯开始时或者通讯中断一段时间后能够保持同步,其具体使用步骤如下:
59.通讯一方判断超过500ms没有接收到数据时,发送一个同步帧给对方;同步帧中的字节3 0x02表示此帧为同步控制帧;字节四synid表示本方接下来开始发送数据的帧编号;对方接收到同步帧后,默认synid为接下来接收到的帧编号,这样让双方保持同步,不会因此误判为帧丢失;
60.其中同步控制帧格式如下:字节1,0x24;字节2,0xff;字节3,0x02;字节4,synid;字节5-字节14,空;字节15,crc校验码。
61.作为本发明所述的一种优选实施方案,在本方法中所述接收缓冲区发送到can总线的流程处理流程如下:
62.接收缓冲区从udp端口读取帧数据,并发送到can网络中去;
63.i、接收到最新的数据帧,按数据帧字节2的序号i,把该帧放入接收缓冲区列表i的位置;
64.ii、判断发送列表位置i的数据帧的字节1是否为0x42,如果是0x42则回到步骤i,等待读取新帧;
65.iii、如果不是0xff,则发送当前帧数据到can网络,并把字节1设置为0x42即表示本条数据已经发送过给can网络;并且i=i 1;回到步骤ii。
66.作为本发明所述的一种优选实施方案,在本方法中发送缓冲区发送到网络总线的流程处理如下:发送缓冲区从can网络中读取数据,并把每一个can数据帧按(0-254循环)编号放入对应的发送缓冲区中;
67.i、监听can网络和
68.ii、接收到最新的can数据帧,按顺序编号为i,并把该帧放入发送缓冲区列表i的
位置;
69.iii、监听补发帧信号,如果有接收到补发数据帧;则进入步骤iv;否则发送当前位置i数据帧;并把该帧第一个字节标记为0x42(表示已经发送过),i=i 1;回到步骤i;
70.iv、判断补发数据帧中的lostidbeg和lostidend之间的数据帧是否第一个字节都为0x42;如果都是0x42表示可以发送这些帧的数据;按顺序发送这些帧到网络;否则表示缓冲区中的数据被更新过,缓冲区数据已经失效不能补帧操作;回到步骤i。
71.实施例:
72.请参阅说明书附图1-4,其中本方法实际使用流程如下:
73.1、对每一个can数据帧进行封装,增加数据包头、can数据流水号和crc校验,其封装格式如图2,其中flowid为255的帧为控制帧。控制帧用于区别数据帧。
74.2、透传设备设定一个接收缓冲区和发送缓冲区。接收缓冲区存放从网络udp接口上接收的数据帧。发送缓冲区为从can总线上获得的can数据。发送缓冲和接收缓冲都定义为255*15的数组。
75.3、透传设备从can总线上接收的每一个数据按(0-254)顺序循环编号(到254后,下一个can数据编号为0),按编号封装好帧后放入发送缓冲区数组中对应位置。同时通过网络接口发送该帧。
76.4、透传设备从网络接口上接收数据帧,按帧定义校验该帧数据完整性。如完整,按帧中flowid的编号放入接收缓冲区中对应的数组位置中。如果该帧flowid为接收的上一帧的flowid 1,则判断为编号连续,马上发送到can网络中。由于网络传送原因可能丢失其中的部分帧,导致接收的编号并不连续。透传设备判断到帧不连续后,马上发送控制帧给对方。控制帧格式如图3。
77.字节3中的0x1表示补充数据控制帧。字节4中为接收方缺失的开始帧编号,字节5位当前接收到的编号,这两者之间的为丢失掉的帧。
78.5、透传设备接收到控制帧后,从发送缓冲区数组中lostidbeg的位置找到相应帧,并再次通过网络发送从lostidbeg到lostidend之间的所有帧。
79.6、透传设备在发出控制帧后200ms仍未能接收正确编号的帧,则跳过该缺失的编号。并设置处于同步状态。
80.7、其中同步控制帧格式如图4。
81.为了使通讯双方在通讯开始时或者通讯中断一段时间后能够保持同步,需要同步帧。当通讯一方判断超过500ms没有接收到数据时,发送一个同步帧给对方。同步帧中的字节30x02表示此帧为同步控制帧。字节四synid表示本方接下来开始发送数据的帧编号。对方接收到同步帧后,默认synid为接下来接收到的帧编号,这样让双方保持同步,不会因此误判为帧丢失。
82.8、接收缓冲区发送到can总线的流程处理:
83.接收缓冲区从udp端口读取帧数据,并发送到can网络中去:
84.i、接收到最新的数据帧,按数据帧字节2的序号i,把该帧放入接收缓冲区列表i的位置。
85.ii、判断发送列表位置i的数据帧的字节1是否为0x42,如果是0x42则回到步骤i,等待读取新帧,
86.iii、如果不是0xff,则发送当前帧数据到can网络,并把字节1设置为0x42(表示本条数据已经发送过给can网络)。并且i=i 1;回到步骤ii。
87.9、发送缓冲区发送到网络总线的流程处理。
88.发送缓冲区从can网络中读取数据,并把每一个can数据帧按(0-254循环)编号放入对应的发送缓冲区中。
89.i、监听can网络和
90.ii、接收到最新的can数据帧,按顺序编号为i,并把该帧放入发送缓冲区列表i的位置。
91.iii、监听补发帧信号,如果有接收到补发数据帧。则进入步骤iv。否则发送当前位置i数据帧。并把该帧第一个字节标记为0x42(表示已经发送过),i=i 1;回到步骤i。
92.iv、判断补发数据帧中的lostidbeg和lostidend之间的数据帧是否第一个字节都为0x42。如果都是0x42表示可以发送这些帧的数据。按顺序发送这些帧到网络。否则表示缓冲区中的数据被更新过,缓冲区数据已经失效不能补帧操作。回到步骤i。
93.综上所述,按此定义的方法进行数据透传,在udp数据包丢失率为1%-2%的网络上,能够实现can数据的有效透传,能够满足目前绝大多数专业诊断仪的远程诊断要求。
94.示例性的,处理器从存储器中逐条取出指令、分析指令,然后根据指令要求完成相应操作,产生一系列控制命令,使计算机各部分自动、连续并协调动作,成为一个有机的整体,实现程序的输入、数据的输入以及运算并输出结果,这一过程中产生的算术运算或逻辑运算均由运算器完成;所述存储器包括只读存储器(read-only memory,rom),所述只读存储器用于存储计算机程序,所述存储器外部设有保护装置。
95.示例性的,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
96.本领域技术人员可以理解,上述服务设备的描述仅仅是示例,并不构成对终端设备的限定,可以包括比上述描述更多或更少的部件,或者组合某些部件,或者不同的部件,例如可以包括输入输出设备、网络接入设备、总线等。
97.所称处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,上述处理器是上述终端设备的控制中心,利用各种接口和线路连接整个用户终端的各个部分。
98.上述存储器可用于存储计算机程序和/或模块,上述处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现上述终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如信息采集模板展示功能、产品信息发布功能等)等;存储数据区可存储根据泊位状态显示系统的使用所创建的数据(比如不同产品种类对应的产品信息采集模板、不同产品提供方需要发布的产品信息等)等。此外,存储器可以包括高
速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
99.终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例系统中的全部或部分模块/单元,也可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个系统实施例的功能。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。
100.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
101.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献