一种报文调度方法和装置
技术领域
本申请涉及报文技术领域,特别是涉及一种报文调度方法。
背景技术
通信系统中,常常需要数据发送单元按照规定的时间间隔发送报文数据,即以时间触发的方式发送报文。该方式不但能够更有效的利用信道带宽,同时也有利于数据处理单元及时完成数据处理工作。
图1为现有技术以时间触发方式发送报文数据的结构示意图。现有技术以时间触发方式发送报文数据时,如图1所示,计时器M中设置当前的时间,存储单元N中分别通过时间缓存设置各个报文数据的触发周期。如,时间缓存N1中存储报文数据1的触发周期,时间缓存N2中存储报文数据2的触发周期,一直到时间缓存Ni中存储报文数据i的触发周期。现有技术中各个报文数据的首次发送时间相同,各个报文数据的触发周期存储在相应的时间缓存中。当计时器的值和报文数据的触发时间相等时,启动报文数据发送。
虽然现有技术可以实现报文数据触发,但是仍然存在以下两种情况。一方面是现有技术难以处理多个报文数据的同时触发。因为1个端口可能需要按照周期发送多种报文数据,则可能存在不同报文数据的预期发送时间重合的情况。假如在当前时刻需要发送报文数据1和报文数据2,计时器首先和报文数据1的时间匹配,则报文数据1进入发送状态。在对报文数据1进行时间比较等操作的过程中,计时器的值会走向下一时间,即超出报文数据2的发送时间。此时,虽然可以直接触发报文数据2,但是显然报文数据的发送触发晚于规定的时间。
另一方面是现有技术发送报文数据的定时不准确。因为端口发送报文数据需要一定的时间,因此在触发一种报文数据的发送的时候,发送端口可能仍处于发送状态。显然,即使报文数据的发送触发定时准确,数据端口上看到的报文数据时间间隔仍然会有变化。
因此,现有技术仍然不能准确地实现报文数据的定时触发。
发明内容
有鉴于此,本申请实施例提供一种报文调度方法,以解决现有技术可能存在不同报文的预期发送时间重合,而导致的报文发送时间晚于预期发送时间的问题。
为了实现上述目的,本申请实施例提供的技术方案如下:
一种报文调度方法,包括:
预设一个定时脉冲信号,以所述定时脉冲信号的输出频率进行计时,以所述定时脉冲信号作为计时的开始信号,且将所述定时脉冲信号的输出间隔作为时间片;
设置各个报文数据的初始触发时间和初始触发周期的值并进行存储,且各个所述报文数据的初始触发时间和初始触发周期均为所述时间片的正整数倍;
以所述定时脉冲信号作为检索控制的开始信号,在时间片范围内逐条对各个所述报文数据的触发时间进行检索,得到各个所述报文数据的触发时间;
将检索到的当前所述报文数据的触发时间与当前的计时时间相比较;
若当前检索到的所述报文数据的触发时间与当前的计时时间相等,则发送当前所述报文数据。
优选地,所述报文调度方法,还包括:
当前检索到的所述报文数据发送后,根据当前所述报文数据的触发时间和触发周期计算当前所述报文数据的下一次触发时间,且将当前所述报文数据的下一次触发时间进行存储。
优选地,若当前检索到的所述报文数据的触发时间与当前的计时时间相等,则发送当前所述报文数据,具体包括:
若当前检索到的所述报文数据的触发时间与当前的计时时间相等,则发送当前所述报文数据索引到输出队列;
检测所述输出队列是否为空,并且当所述输出队列为非空时,根据所述报文数据索引检索得到待发送报文数据并在定时脉冲有效时开始发送。
优选地,各个所述报文数据的初始触发时间可以为零或任意数值。
优选地,所述时间片的取值范围为0-10us。
一种报文调度装置,包括:
分频器、计时器、初始触发时间写入单元、初始触发周期写入单元、存储单元、检索控制单元、比较逻辑单元和发送单元,其中:
所述分频器用于产生定时脉冲信号;
所述计时器与所述分频器相连接,所述计时器以所述定时脉冲信号的输出频率进行计时,以所述分频器产生的定时脉冲信号作为计时器的开始信号,且将所述定时脉冲信号的输出间隔作为时间片;
初始触发时间写入单元与所述存储单元相连接,用于将多条所述报文数据的初始触发时间写入到所述存储单元内,且所述多条报文数据的初始触发时间为所述时间片的正整数倍;
所述初始触发周期写入单元与所述存储单元相连接,用于将多条所述报文数据的初始触发周期写入到所述存储单元内,且多条所述报文数据的初始触发周期为所述时间片的正整数倍;
所述检索控制逻辑单元一端与所述分频器相连接,另一端与所述存储单元相连接,所述检索控制逻辑单元用于以所述定时脉冲信号作为检索控制的开始信号,在时间片范围内逐条对所述存储单元中各个所述报文数据的触发时间进行检索,得到各个所述报文数据的触发时间;
比较逻辑单元的一端与所述存储单元相连接,另一端与所述计时器相连接,所述比较逻辑单元用于比较当前检索到的所述报文数据的触发时间和当前计时器的计时时间是否相等;
所述发送单元与所述比较逻辑单元相连接,用于当前检索到的所述报文数据的触发时间和当前计时器的计时时间相等时,将当前检索到报文数据进行发送。
优选地,所述报文调度装置,还包括后续触发时间设定单元,其中:
所述后续触发时间设定单元一端与所述存储单元相连接,另一端与所述检索控制逻辑单元相连接,所述后续触发时间设定单元用于当前所述报文数据发送后,根据所述存储单元中所存储的触发时间和触发周期计算当前所述报文数据的下一次触发时间并进行存储。
优选地,所述发送单元包括:输出队列、判断单元和发送子单元,其中:
所述输出队列与所述比较逻辑单元相连接,当所述比较逻辑单元当前检索到的数据的触发时间与当前计时时间相等时,所述比较逻辑单元获取当前所述报文数据的索引并发送到所述输出队列,所述输出队列用于将所述报文数据的索引按照队列形式排列;
所述判断单元用于判断所述输出队列内的报文数据索引是否为空;
所述发送子单元用于当所述报文数据索引为非空时,根据所述报文数据索引获取相应报文数据并在定时脉冲有效时开始发送。
优选地,各个所述报文数据的初始触发时间可以为零或任意数值。优选地,所述时间片的取值范围为0-10us。
由以上技术方案可见,本申请实施例所提供的报文调度方法,以定时脉冲信号的输出频率进行计时,以定时脉冲信号作为计时的开始信号,且以定时脉冲信号的输出间隔作为时间片。初始化各个报文数据的初始触发时间和触发周期,以定时脉冲信号作为检索控制的开始信号,在时间片范围内逐条检索各个报文数据的触发时间,并将检索得到的当前报文数据的触发时间与当前的计时时间相比较,若相等,则发送当前报文数据。
本申请实施例通过以定时脉冲信号的输出频率进行计时,使得报文数据只要在其规定的定时脉冲信号的时间片范围内发送,均为准确的定时触发,同时本申请设置各个报文数据的初始触发时间,通过各个报文的初始触发时间减小了发送端口在时间片范围内的工作量,使得端口在时间片范围内可以完成各个触发数据的发送任务。所以本申请能够准确的实现报文数据的定时触发。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术以时间触发方式发送报文数据的结构示意图;
图2为本申请实施例一所提供的一种报文调度方法的流程图;
图3为本申请实施例二所提供的实施例一中步骤S15的具体流程图;
图4为本申请实施例三所提供的一种报文调度装置结构示意图;
图5为本申请实施例三所提供的另一种报文数据的触发时间和触发周期存储结构示意图;
图6为本申请实施例四所提供的上述实施例三中的发送单元A8的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
实施例一
图2为本申请实施例一所提供的一种报文调度方法的流程图。
如图2所示,本申请所提供的报文调度方法的步骤如下:
S11、预设一个定时脉冲信号,以定时脉冲信号的输出频率进行计时,以定时脉冲信号作为计时的开始信号,且将定时脉冲信号的输出间隔作为时间片。
本申请实施例所提供的报文调度方法中首先预设一个定时脉冲信号,并且以此定时脉冲信号的输出频率进行计时,并且此定时脉冲信号作为计时的开始信号。由此可以看出,本申请所提供的报文调度方法中的所有步骤均在上述以定时脉冲信号作为计时信号的同一计时时间下进行。
本步骤中所提到的“将定时脉冲信号的输出间隔作为时间片”可以理解为:将定时脉冲信号的一次输出频率的长度作为时间片。
本步骤中所提到的“以此定时脉冲信号的输出频率进行计时”即当本申请所预设的定时脉冲信号的输出频率改变一次,本申请的计时数值改变一次。定时脉冲信号的输出频率改变一次的时间间隔为一个时间片,所以本步骤可以理解为:以初始计时为准,若本步骤规定的时间片范围为3us,当经过一个时间片3us以后,计时为1;当在经过一个时间片3us以后,计时为2;以此类推得到计时的数值。
此外,本步骤中所提到的“将此定时脉冲信号的输出间隔作为时间片”中的“时间片”的取值范围为0-10us。
S12、初始化各个报文数据的初始触发时间和触发周期,且各个报文数据的初始触发时间和触发周期均为时间片的正整数倍。
本步骤中所提到的“初始化各个报文数据的初始触发时间和触发周期”是指在本申请所提供的报文调度方法开始工作之前,预先存储上各个报文数据的初始触发时间和触发周期。此外,因为时间片在步骤S11中已有介绍,时间片为定时脉冲信号的输出间隔。所以,本步骤中所提到的“各个报文数据的初始触发时间和触发周期均为时间片的正整数倍”,可以理解为:在本申请所提供的报文调度方法开始工作之前,预先存储的各个报文数据的初始触发时间和触发周期是时间片的正整数倍。如:当要初始化的报文数据的初始触发时间为时间片的3倍时,预先存储的此报文数据的初始触发时间的值为3。
此外,本步骤中所提到的各个报文数据的初始触发时间可以为零或任意数值。
S13、以定时脉冲信号作为检索控制的开始信号,在时间片范围内逐条对各个报文数据的触发时间进行检索,得到各个报文数据的触发时间。
本申请所提供的报文调度方法的所有步骤在同一计时时间下进行,该方法以定时脉冲信号作为计时的开始信号,同时也将此定时脉冲信号作为检索控制的开始信号,在时间片的范围内对各个报文数据的触发时间进行检索,得到各个报文数据的触发时间。该步骤中的“在时间片范围内对各个报文数据的触发时间进行检索”指的是在同一个时间片范围内,实现对所有报文数据的触发时间的检索,得到各个报文数据的触发时间。当本申请所提供的报文调度方法进入下一个时间片以后,将在下一个时间片范围内,再次对所以报文数据的触发时间进行检索,得到各个报文数据的触发时间。
S14、将检索到的当前报文数据的触发时间与当前的计时时间相比较。
S15、若当前检索到的报文数据的触发时间与当前的计时时间相等,则发送当前报文数据。
本申请实施例所提供的报文调度方法中,将当前检索到的且需要发送的报文数据进行发送以后,需要根据当前发送报文数据的触发时间和发送周期计算当前发送报文数据的下一次触发时间,并且将当前发送报文数据的下一次触发时间进行存储。此外,“将当前发送报文数据的下一次触发时间进行存储”中所述的存储为将当前发送报文数据的下一次触发时间替换该报文数据的原有发送时间。
由以上技术方案可见,本申请实施例所提供的报文调度方法,以定时脉冲信号的输出频率进行计时,以定时脉冲信号作为计时的开始信号,且以定时脉冲信号的输出间隔作为时间片。初始化各个报文数据的初始触发时间和触发周期,以定时脉冲信号作为检索控制的开始信号,在时间片范围内逐条检索各个报文数据的触发时间,并将检索得到的当前报文数据的触发时间与当前的计时时间相比较,若相等,则发送当前报文数据。
本申请实施例通过以定时脉冲信号的输出频率进行计时,使得报文数据只要在其规定的定时脉冲信号的时间片范围内发送,均为准确的定时触发,同时本申请设置各个报文数据的初始触发时间,通过各个报文的初始触发时间减小了发送端口在时间片范围内的工作量,使得端口在时间片范围内可以完成各个触发数据的发送任务。所以本申请所提供的报文调度方法能够准确的实现报文数据的定时触发。
实施例二
图3为本申请实施例二所提供的实施例一中步骤S15的具体流程图。
如图3所示,实施例一中的步骤S15具体包括:
S151、若当前检索到的报文数据的触发时间与当前的计时时间相等,则发送当前报文数据索引到输出队列。
本步骤中所述的输出队列为存储单元,即在时间片内对所有的报文数据的触发时间进行检索,当检索到的报文数据的触发时间和当前的计时时间相等,则将当前报文数据的数据索引发送到输出队列。输出队列用于将接受到的报文数据的索引按照队列形式排列。
S152、检测输出队列是否为空。
S153、当输出队列为非空时,根据报文数据索引检索得到待发送报文数据。
S154、当定时脉冲有效时,发送待发送报文数据。
本步骤中所提到的“当定时脉冲有效时,发送待发送数据”中的“定时脉冲有效”的阶段是定时脉冲信号触发时的一小段时间,即经过一个时间片后,触发另一个时间片的一小段时间为定时脉冲信号的有效时间。
本步骤中所提到的发送报文数据,就是在定时脉冲有效的时间内,对待发送的报文数据进行发送。
由以上技术方案可见,本申请实施例所提供的是实施例一中步骤S15的具体实现流程,通过设置输出队列,先将待发送报文数据的索引发送到输出队列,然后检查输出队列是否为空,在输出队列为非空时,通过待发送数据的索引得到各个待发送数据并进行发送。通过使用输出队列,在正常情况下,队列中仅包含一个数据索引,不影响定时的准确性。但是,因为通信信道的带宽是有限的,如果发送逻辑要求发送的数据量长时间超过带宽限制,会出现数据发送周期大大超过设定周期的情况,通过输出队列满的长度可以对此异常状态进行检测。
实施例三
图4为本申请实施例三所提供的一种报文调度装置结构示意图。
如图4所示,为本申请实施例所提供的一种报文调度装置的结构,包括:存储单元A1、初始触发时间写入单元A2、触发周期写入单元A3、分频器A4、检索控制单元A5、计时器A6、比较逻辑单元A7和发送单元A8。
其中,初始触发时间写入单元A2和触发周期写入单元A3分别与存储单元A1相连接。初始触发时间写入单元主要是初始化各个报文数据的初始触发时间,并且将初始化的各个报文数据的初始触发时间存储在存储单元中;触发周期写入单元主要是初始化各个报文数据的触发周期,并且将初始化的各个报文数据的触发周期存储在存储单元中。
分频器A4的主要作用是产生定时脉冲信号,并且我们将定时脉冲信号的输出间隔称作时间片。其中,计时器A6与分频器A4相连接,主要是以分频器所产生的定时脉冲信号的输出频率进行计时,并且将定时脉冲信号作为计时器的开始信号。本申请实施例所提供的报文调度装置的各个部分均在同一时钟下进行工作,即以该计时器进行计时。
检索控制单元A5与分频器A4相连接,检索控制单元A5的主要作用是接受分频器A4产生的定时脉冲信号,并且以此定时脉冲信号作为检索控制单元进行工作的开始信号,在同一时间片内逐条对存储单元中所存储的各个报文数据的触发时间进行检索,同时将检索得到的各个报文数据的触发时间发送到与其相连接的比较逻辑单元A7中。
比较逻辑单元A7一端与计时器A6相连接,另一端与存储单元A1相连接。其中,比较逻辑单元A7的一端与计时器A6相连接的主要作用是实时获取计时器A6的当前计时时间;比较逻辑7的另一端与存储单元A1相连接的主要作用是接受检索控制单元A5在存储单元A1中检索得到的各个报文数据的触发时间,并且将得到的计时器的当前计时时间与检索控制单元从存储单元中检索到的当前报文数据的触发时间相比较,并且当比较结果相等时,通过与比较逻辑单元A7相连接的发送单元完成对当前报文数据的发送。
本申请实施例在初始化各个报文数据的初始触发时间和触发周期时,初始化的值均为时间片的正整数倍。
如图4所示,本身请实施例所提供的报文调度装置还包括:后续触发时间设定单元A9,后续触发时间设定单元A9与存储单元A1相连接。后续初始时间设定单元的主要是当前报文数据发送后,后续触发时间设定单元A9按照存储单元A1中所存储的当前报文数据的发送时间和存储周期,计算当前报文数据的下一次发送时间,并将此当前报文数据的下一次发送时间进行存储。此处的存储可以为将计算得到的下一次发送时间替换报文数据的当前发送时间。
图5为本申请实施例三所提供的另一种报文数据的触发时间和触发周期存储结构示意图。
图5所提供的报文数据的触发时间和触发周期存储结构主要是在图4所提供的报文调度装置的结构示意图的基础上对存储单元A1、初始触发时间写入单元A2、触发周期写入单元A3和后续触发时间设定单元A9的改进。
图5所提供的报文数据触发时间和触发周期存储结构包括:时间缓存B1和周期缓存B2。
图5所提供的报文调度装置中,由时间缓存B1和周期缓存B2直接初始化各个报文数据的初始触发时间和触发周期,并且将各个报文数据的初始触发时间存储在时间缓存B1中,各个报文数据的触发周期存储在周期缓存B2中。
其中,首先检索时间缓存B1中各个报文数据的触发时间,当当前检索到的报文数据的触发时间和当前的计时时间相等时,发送当前报文数据。当当前报文数据发送后,可以根据此当前报文数据在时间缓存B1中存储的触发时间和周期缓存B2中所存储的的触发周期,计算此当前报文数据的下一次触发时间,并且将此当前报文数据的下一次触发时间替换当前报文数据触发时间,存储在时间缓存B1中。
此外,本申请实施例所提供的时间片的取值范围为0-10us。
由此可见,本申请实施例所提供的报文调度装置,包括:分频器、检索控制单元、计时器、比较逻辑、存储单元、初始触发时间写入单元、触发周期写入单元和发送单元。本申请首先通过初始触发时间写入单元和触发周期写入单元分别在存储单元中初始化各个报文数据的初始触发时间和触发周期;然后通过分频器产生定时脉冲信号,并且计时器以此定时脉冲信号的输出频率进行计时,以定时脉冲信号的输出间隔作为时间片;检索控制单元以定时脉冲信号作为开始信号,在时间片范围内逐条对各个报文数据的初始触发时间进行检索,并将检索到的当前报文数据的触发时间与当前计时时间相比较,若相等,则发送数据。
本申请实施例通过以定时脉冲信号的输出频率进行计时,使得报文数据只要在其规定的定时脉冲信号的时间片范围内发送,均为准确的定时触发,同时本申请设置各个报文数据的初始触发时间,通过各个报文的初始触发时间减小了发送端口在时间片范围内的工作量,使得端口在时间片范围内可以完成各个触发数据的发送任务。所以本申请所提供的报文调度方法能够准确的实现报文数据的定时触发。
实施例四
图6为本申请实施例所提供的上述实施例三中的发送单元A8的具体结构示意图。
如图6所示,发送单元A8的具体结构包括:输出队列A11、判断单元A12和发送子单元A13。
如图6所示的存储单元A1、初始触发时间写入单元A2、触发周期写入单元A3、分频器A4、检索控制单元A5、计时器A6和比较逻辑单元A7的连接方式和功能参见实施例三所示。
如图6所示,为本申请实施例所提供的上述实施例三中的发送单元A8的具体结构示意图,包括:输出队列A11、判断单元A12和发送子单元A13。
其中,输出队列A11与比较逻辑单元A7相连接,主要作用是当比较逻辑中的当前检索到的报文数据的触发时间和当前计时时间相等时,接收比较逻辑单元所发送的当前报文数据索引,并将接收到的报文数据索引按照队列形式排列。
判断单元A12与输出对列A11相连接,它的主要作用是检索输出队列中的报文数据索引是否为空。
发送子单元A13与判断单元A12相连接,它的主要作用是当判断单元A12判断出输出队列A11中的数据索引为非空时,判断单元A12根据当前报文数据索引获取相应的报文数据,并将此报文数据在定时脉冲有效时通过发送子单元A13进行发送。
由此可见,本申请实施例所提供的主要是对本申请实施例三中的发送单元的具体结构示意图。本申请实施例所提供的发送单元的具体结构包括:输出队列、判断单元和发送子单元。输出队列与比较逻辑单元相连接,主要作用是接收待发送报文数据的索引,并且将报文数据索引按照队列形式排列;判断单元与输出队列相连接,用于判断输出队列中报文索引是否为空;发送子单元与判断单元相连接,当输出队列中的报文索引为非空时,根据报文索引得到报文数据并且在定时脉冲有效时进行发送。
因为通信信道的带宽是有限的,如果发送逻辑要求发送的数据量长时间超过带宽限制,会出现数据发送周期大大超过设定周期的情况,本申请实施例通过输出队列满的长度可以对此异常状态进行检测。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上仅是本申请的优选实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相相等的最宽的范围。