一种周期型数据报文传输方法、系统、装置和存储介质与流程

文档序号:17860448发布日期:2019-06-11 22:49阅读:397来源:国知局
一种周期型数据报文传输方法、系统、装置和存储介质与流程

本发明涉及数据传输技术领域,尤其是一种周期型数据报文传输方法、系统、装置和存储介质。



背景技术:

在can和canfd等总线型数据传输系统的应用领域,经常会根据负载率来对数据传输系统进行配置。负载率是数据传输系统的实际数据传输速率与理论最大数据传输速率的比值,它可以反映当前总线资源的使用情况,但是不能充分地评估总线的有效性和扩展性。

现有技术中,普遍依赖负载率来对数据传输系统进行控制,例如将控制目标设置为“负载率不超过30%”,此时负载率是作为对数据传输系统负反馈控制中的一个参量。但负载率本身是一个非常粗糙的指标,并没有考虑到总线型数据传输系统尤其是传输周期型数据报文时的具体技术问题,其中一个最显著的问题是数据传输的延迟问题。在周期型数据报文的传输过程中,数据报文的传输顺序是由数据报文中的标识符决定的,一般来说,标识符的数值越小,该数据报文的优先级越高,越先被进行传输。现有技术中,对标识符的设计不合理,经常发生长周期的数据报文的优先级高于短周期的数据报文的情况,这样,在总线系统中,短周期的数据报文的传输便会受到长周期的数据报文的竞争,使得短周期的数据报文的传输延迟很大,整个数据传输系统的总体延迟也会变得很大,严重降低了数据传输效率,如果重要的信息均存储在短周期的数据报文中,就会造成重要信息的传输缓慢。但现有技术所依赖的负载率并不能传输延迟的问题,因此围绕负载率设计的数据传输控制方法也就不能解决传输延迟的问题。



技术实现要素:

为了解决上述技术问题,本发明的目在于提供一种周期型数据报文传输方法、系统、装置和存储介质。

一方面,本发明实施例包括一种周期型数据报文传输方法,各所述数据报文均被分配标识符,各所述数据报文按照各自标识符数值大小所对应的优先级确定的传输顺序进行传输;各所述标识符是通过以下步骤分配至各所述数据报文的:

根据各数据报文的周期设定各数据报文对应的待分配id范围;

根据各数据报文的允许最大延迟和传输时间计算各数据报文的组内序号;所述组内序号用于表示数据报文在多个同类数据报文组成的数据报文集合中的排列顺序,所述同类数据报文为对应着相同待分配id范围的数据报文;

当所述数据报文独占一个组内序号时,将相应待分配id范围中与该组内序号对应的待分配id作为标识符分配给该数据报文。

进一步地,当多个同类数据报文具有相同的组内序号时,执行以下步骤:

查找所述多个同类数据报文的发送来源;

对查找到的发送来源所发出的报文总数进行统计;

按所对应发送来源发出的报文总数由少至多的顺序,对所述多个同类数据报文进行排序;

将相应待分配id范围中与该组内序号对应的待分配id作为标识符分配给所述多个同类数据报文中排序第一的数据报文;

将相应待分配id范围中与该组内序号对应的待分配id之后的其他待分配id按顺序逐一分配给所述多个同类数据报文中其他数据报文。

进一步地,各所述数据报文的允许最大延迟是根据数据报文对应的发送来源和接收终端参数设定的。

进一步地,各所述数据报文的允许最大延迟是根据数据报文的周期和以下对应关系设定的:

周期10ms:允许最大延迟20%;

周期20ms:允许最大延迟18%;

周期40ms或50ms:允许最大延迟15%;

周期100ms、200ms、500ms或100ms,允许最大延迟10%。

进一步地,各所述数据报文对应的待分配id范围的数值大小与数据报文的周期大小具有正相关关系。

进一步地,各所述数据报文对应的待分配id范围是根据数据报文的周期与以下对应关系设定的:

周期10ms:待分配id范围最小值0x100,待分配id范围最大值0x17f;

周期20ms:待分配id范围最小值0x180,待分配id范围最大值0x1ff;

周期40ms:待分配id范围最小值0x200,待分配id范围最大值0x24f;

周期50ms:待分配id范围最小值0x250,待分配id范围最大值0x28f;

周期100ms:待分配id范围最小值0x290,待分配id范围最大值0x34f;

周期200ms:待分配id范围最小值0x350,待分配id范围最大值0x37f;

周期500ms或100ms:待分配id范围最小值0x380,待分配id范围最大值0x3ff。

进一步地,所述根据各数据报文的允许最大延迟和传输时间计算各数据报文的组内序号这一步骤所用的计算公式为式中,n为数据报文的组内序号,tdelay为数据报文的允许最大延迟,tcan为数据报文的传输时间。

另一方面,本发明实施例还包括一种周期型数据报文传输系统,各所述数据报文均被分配标识符,各所述数据报文按照各自标识符数值大小所对应的优先级确定的传输顺序进行传输;所述系统包括:

待分配id范围确定模块,用于根据各数据报文的周期设定各数据报文对应的待分配id范围;

组内序号计算模块,用于根据各数据报文的允许最大延迟和传输时间计算各数据报文的组内序号;所述组内序号用于表示数据报文在多个同类数据报文组成的数据报文集合中的排列顺序,所述同类数据报文为对应着相同待分配id范围的数据报文;

标识符分配模块,用于在所述数据报文独占所述组内序号时,将相应待分配id范围中与该组内序号对应的待分配id作为标识符分配给该数据报文。

另一方面,本发明实施例还包括一种周期型数据报文传输装置,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行本发明数据报文传输方法。

另一方面,本发明实施例还包括一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行本发明数据报文传输方法。

本发明的有益效果是:本发明通过数据报文的周期确定数据报文能分配到的标识符数值所在的范围,相当于大致确定了数据报文的优先级,然后再根据数据报文的允许最大延迟和传输时间,进一步确认数据报文的标识符,即确定数据报文的优先级。本发明方法从根据数据报文本身的特征来确认数据报文的传输优先级,考虑了整个总线型数据传输系统中传输的所有数据报文的整体延迟,使得整个数据传输系统的整体延迟是最优的,克服了现有技术中仅考虑负载率这一过于粗糙的指标造成传输延迟过大、传输效率不高的缺点。

附图说明

图1和图2为本发明数据报文传输方法实施例的流程图。

具体实施方式

本实施例中,所述“传输”包括“发送”和“接收”等过程,发送节点发送出一条数据报文,接收节点接收该数据报文,则完成一条数据报文的传输过程。由于“发送”和“接收”的步骤是相对应的,本领域技术人员根据数据报文的发送过程即可理解数据报文的接收过程,因此本实施例只对数据报文的发送过程进行说明,且不对“传输”、“发送”和“接收”等概念进行区分。

本实施例中所述的数据报文是指周期型数据报文。周期型数据报文是与事件型数据报文相区别的一种数据报文,周期型数据报文对应有一定的传输周期,每当经过一个传输周期时便进行一次传输过程。传输周期一般为10ms、20ms和50ms等,也就是每经过10ms进行一次传输过程。

本实施例中的传输是在can或canfd等总线型数据传输系统中进行的。在这些总线型数据传输系统中,每条数据报文的优先级与其分配到的标识符的数值大小有关,标识符的数值越小,数据报文的优先级越高,优先级越高的数据报文越先被传输。

由于数据报文的传输本身属于现有技术,本实施例主要对数据报文标识符的分配方法进行说明。本实施例中,参照图1,通过以下步骤向各所述数据报文分配标识符:

s1.根据各数据报文的周期设定各数据报文对应的待分配id范围;

s2.根据各数据报文的允许最大延迟和传输时间计算各数据报文的组内序号;所述组内序号用于表示数据报文在多个同类数据报文组成的数据报文集合中的排列顺序,所述同类数据报文为对应着相同待分配id范围的数据报文;

s3.当所述数据报文独占一个组内序号时,将相应待分配id范围中与该组内序号对应的待分配id作为标识符分配给该数据报文。

步骤s1为各条数据报文确定待分配id范围,待分配id范围限定了各条数据报文在步骤s3中被分配到的标识符的数值范围。步骤s1中,每条数据报文所能分配到的待分配id范围与数据报文的周期有关,在本实施例中,具有相同周期的不同数据报文都将对应相同的待分配id范围,而数据报文与标识符应该是一一对应的,因此待分配id范围应该设置得足够大,使得待分配id范围内具有足够多的待分配id来作为标识符分配给具有该周期的数据报文。例如,周期为10ms的数据报文对应第一待分配id范围,周期为20ms的数据报文对应第二待分配id范围。

步骤s1中,每条数据报文均对应其发送节点和接收节点。发送节点可以设置数据报文的最快刷新时间,接收节点可以设置数据报文的最快处理时间,数据报文的周期由最快刷新时间和最快处理时间共同确定。

步骤s2中,将对应相同待分配id范围的数据报文,也可以说,将具有相同周期的数据报文归为一个数据报文集合,并称它们为同类数据报文,即一个数据报文集合内的全部数据报文为同类数据报文。步骤s2计算出来的组内序号用于表示一条数据报文在相应的数据报文集合内部的次序。步骤s2中,每条数据报文的组内序号是由其允许最大延迟和传输时间计算出来的,此时组内序号的意义是数据报文集合内部优先级大于该条数据报文的数据报文条数。

步骤s2中所用的数据报文的允许最大延迟,在can和canfd中有不同的算法。在can中,式中为数据报文m的允许最大延迟,a为can中数据报文的传输时间,x为与数据报文m对应不同控制器、具有更高优先级的数据报文的总数,y为与数据报文m对应同一控制器、具有更高优先级的数据报文的总数。在canfd中,式中为数据报文m的允许最大延迟,tni为与数据报文m对应不同控制器、具有更高优先级的数据报文的总的传输时间,tki为与数据报文m对应同一控制器、具有更高优先级的数据报文的总的传输时间,i为控制器的序号。

步骤s2中,不同的数据报文的允许最大延迟以及传输时间一般不会对应相同。但同一数据报文集合中,不同的数据报文的组内序号都是通过数据报文的允许最大延迟以及传输时间计算出来的,有可能出现同一数据报文集合中不同的数据报文均对应同一组内序号的情况。

步骤s3用于处理数据报文独占组内序号的情况,这种情况下,一个数据报文集合中,一个组内序号只对应一条数据报文,并未出现一个组内序号对应多条数据报文的情况。这种情况下,直接将相应待分配id范围中与该组内序号对应的待分配id作为标识符分配给该数据报文。步骤s3中,如果计算得到一条数据报文的组内序号为n,那么可以将相应待分配id范围中第n个待分配id作为标识符分配给该数据报文。

进一步作为优选的实施方式,参照图2,当步骤s3中出现多个同类数据报文具有相同的组内序号的情况时,执行以下步骤:

s4.查找所述多个同类数据报文的发送来源;

s5.对查找到的发送来源所发出的报文总数进行统计;

s6.按所对应发送来源发出的报文总数由少至多的顺序,对所述多个同类数据报文进行排序;

s7.将相应待分配id范围中与该组内序号对应的待分配id作为标识符分配给所述多个同类数据报文中排序第一的数据报文;

s8.将相应待分配id范围中与该组内序号对应的待分配id之后的其他待分配id按顺序逐一分配给所述多个同类数据报文中其他数据报文。

步骤s4-s8用于处理多个同类数据报文具有相同的组内序号的情况,这种情况下,一个数据报文集合中,一个组内序号对应多条数据报文。由于一个待分配id只能分配给一条数据报文,因此这种情况下不能直接将相应待分配id范围中与该组内序号对应的待分配id作为标识符分配给这些数据报文。

步骤s4中,如果计算得到m1、m2和m3这三条周期均为10ms的同类数据报文的组内序号均为n,那么就查找m1、m2和m3这三条同类数据报文的发送来源或发送节点。在can或canfd中,m1、m2和m3来自不同的控制器,假设m1来自eps,m2来自esp,m3来自vcu。

步骤s5中,对eps、esp和vcu发出的报文总数进行统计。本实施例中,所统计的报文的周期与的m1、m2和m3周期相同,统计得到eps共发送2条周期为10ms的报文,esp共发送4条周期为10ms的报文,vcu共发送6条周期为10ms的报文。根据步骤s6的规则,由于eps发出的报文总数最少,因此eps发出的数据报文m1应排第一,同理m2排第二,m3排第三。

步骤s7中,将相应待分配id范围中第n个待分配id作为标识符分配给排第一的数据报文m1。

步骤s8中,将相应待分配id范围中第n+1个待分配id作为标识符分配给排第二的数据报文m2,将相应待分配id范围中第n+2个待分配id作为标识符分配给排第三的数据报文m3。

如果步骤s5中,统计到至少两个发送来源发出的报文总数相同,则步骤s6中对应这两个发送来源的同类数据报文的排序可以随机安排。例如,统计得到eps共发送2条周期为10ms的报文,esp共发送2条周期为10ms的报文,vcu共发送6条周期为10ms的报文,eps和esp发送的周期为10ms的报文的总数均为2条,那么m1和m2的两者之间的排序可以随机安排,既可以是m1排第一、m2排第二、m3排第三,也可以是m2排第一、m1排第二、m3排第三。

进一步作为优选的实施方式,各所述数据报文的允许最大延迟是根据数据报文对应的发送来源和接收终端参数设定的。本实施例中,数据报文的允许最大延迟可以由发送来源或接收终端的硬件参数决定。也可以根据实际使用环境的需求进行设定。优选地,对数据报文设定的允许最大延迟应当与该数据报文的周期具有一定对应关系,才能使得各条数据报文传输时造成的总的延迟最小化。本实施例中,各所述数据报文的允许最大延迟及其周期具有以下对应关系:

周期10ms:允许最大延迟20%;

周期20ms:允许最大延迟18%;

周期40ms或50ms:允许最大延迟15%;

周期100ms、200ms、500ms或100ms,允许最大延迟10%。

上述对应关系中,允许最大延迟用百分数来表示,可以由相应的周期来计算允许最大延迟的具体值。例如,当数据报文的周期为10ms时,允许最大延迟为20%,允许最大延迟的具体值为10ms*20%=2ms;当数据报文的周期为20ms时,允许最大延迟为18%,允许最大延迟的具体值为20ms*18%=3.6ms。

进一步作为优选的实施方式,各所述数据报文对应的待分配id范围的数值大小与数据报文的周期大小具有正相关关系。即数据报文的周期越大,所对应的待分配id范围中,每条待分配id的数值越大。本实施例的设置,使得周期越大的数据报文的优先级越低,周期较小的数据报文因其优先级而先被传输,因此周期较小的数据报文受到的延迟影响较小。而周期较大的数据报文可能因优先级较低而受到较大的延迟影响,但由于它们的周期较大,因此相同的延迟时长所占的比重较低,可以减弱延迟对整个传输系统带来的总体不良影响。

进一步作为优选的实施方式,各所述数据报文对应的待分配id范围是根据数据报文的周期与以下对应关系设定的:

周期10ms:待分配id范围最小值0x100,待分配id范围最大值0x17f;

周期20ms:待分配id范围最小值0x180,待分配id范围最大值0x1ff;

周期40ms:待分配id范围最小值0x200,待分配id范围最大值0x24f;

周期50ms:待分配id范围最小值0x250,待分配id范围最大值0x28f;

周期100ms:待分配id范围最小值0x290,待分配id范围最大值0x34f;

周期200ms:待分配id范围最小值0x350,待分配id范围最大值0x37f;

周期500ms或100ms:待分配id范围最小值0x380,待分配id范围最大值0x3ff。

本实施例中,每个待分配id范围都是由相应的待分配id范围最小值和待分配id范围最大值确定的,在待分配id范围最小值和待分配id范围最大值之间有多个待分配id。例如,周期10ms对应的待分配id范围中,按照待分配id数值由小到大的顺序进行排序,排第一的待分配id为0x100,排第二的待分配id为0x101,排第三的待分配id为0x102;周期为10ms的数据报文可能被分配到的待分配id为0x100-0x17f之间的任一值。

进一步作为优选的实施方式,所述根据各数据报文的允许最大延迟和传输时间计算各数据报文的组内序号这一步骤所用的计算公式为式中,n为数据报文的组内序号,tdelay为数据报文的允许最大延迟,tcan为数据报文的传输时间。

本发明方法的优点主要在于对数据报文的标识符分配方法进行了改进,首先由数据报文的周期确定数据报文能分配到的标识符数值所在的范围,相当于大致确定了数据报文的优先级,然后再根据数据报文的允许最大延迟和传输时间,进一步确认数据报文的标识符,即确定数据报文的优先级。本发明方法从根据数据报文本身的特征来确认数据报文的传输优先级,考虑了整个总线型数据传输系统中传输的所有数据报文的整体延迟,克服了现有技术中仅考虑负载率这一过于粗糙的指标造成传输效率不高的缺点。进一步地,本发明方法还给出了针对can和canfd系统各种周期的数据报文的最优标识符范围。

本实施例还包括一种周期型数据报文传输系统,包括:

待分配id范围确定模块,用于根据各数据报文的周期设定各数据报文对应的待分配id范围;

组内序号计算模块,用于根据各数据报文的允许最大延迟和传输时间计算各数据报文的组内序号;所述组内序号用于表示数据报文在多个同类数据报文组成的数据报文集合中的排列顺序,所述同类数据报文为对应着相同待分配id范围的数据报文;

标识符分配模块,用于在所述数据报文独占所述组内序号时,将相应待分配id范围中与该组内序号对应的待分配id作为标识符分配给该数据报文。

所述待分配id范围确定模块、组内序号计算模块和标识符分配模块可以是发送端和接收端的硬件模块,也可以是安装在发送端和接收端上的软件模块。

本实施例还包括一种周期型数据报文传输装置,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行本发明数据报文传输方法。所述存储器和处理器可以安装在发送端和接收端上。

本实施例还包括一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行本发明数据报文传输方法。所述存储介质可以安装在发送端和接收端上。

本实施例中的数据报文传输系统、装置和存储介质,可以执行本发明的数据报文传输方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。

以上是对本发明的较佳实施进行了具体说明,但对本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1