数据传输方法及装置、存储介质、处理器与流程

文档序号:18226584发布日期:2019-07-19 23:30阅读:169来源:国知局
数据传输方法及装置、存储介质、处理器与流程

本发明涉及数据处理领域,具体而言,涉及一种数据传输方法及装置、存储介质、处理器。



背景技术:

目前,利用双can总线进行通信的系统,如图1所示,基本有三种思路:1、两条总线一条作为主通信总线,另一条备用。主总线进行通信出现故障之后,备用总线上升为主总线,进行数据通信;2、两条总线同时发送相同数据,用来降低数据出错的概率。如果两条总线上通信数据均正确,采用最先到达的数据;如果一条总线上的数据出错就采用另一条总线上发送的数据;如果两条总线上的数据均出错则表明发送失败;3、两条总线承载不同的业务,当两条总线其中一条发生故障后,不同的数据业务在同一条总线上传输。

这三种策略均没能够充分利用双can总线带来的带宽增益,不够灵活;其中,思路1的备用总线带宽完全闲置;思路2对于can链路较好的环境中带来的降低数据出错的收益较低,且如果一条总线传输数据成功实际上没有必要在另一条总线上再次传输该请求,这实际上也是对带宽的浪费;思路3由于不同的业务数据量不同也有可能造成带宽的闲置。

针对相关技术中,在多总线系统中,由于无法灵活的利用主备总线来传输数据,进而导致的浪费总线带宽等技术问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种数据传输方法及装置、存储介质、处理器,以至少解决相关技术中,在多总线系统中,由于无法灵活的利用主备总线来传输数据,进而导致的浪费总线带宽等技术问题。

根据本发明实施例的一个方面,提供了一种数据传输方法,包括:将主站中的第一数据请求分成n份数据,将n份数据对应放置在所述主站设置的n个队列,其中n为大于1的整数;从所述n个队列中按照指定规则选取第二数据请求分别配置到n个链路的n个缓存区中,发送n个缓存区中的所述第二数据请求至从站,以使所述从站依次响应所述n个缓存区中的所述第二数据请求,并向所述主站返回与所述n个缓存区中的所述第二数据请求对应的数据,其中,所述n个链路与n个缓存器一一对应。

进一步地,当n=2,n个队列包括:第一队列和第二队列,将所述主站中的第一数据请求分为2份,将所述2份数据对应放置在所述主站设置的2个队列,其中,所述方法还包括:从所述第一队列和所述第二队列中按照指定规则选取第三数据请求分别配置到第一链路中的第一缓存区中和第二链路中的第二缓存区中,发送所述第一缓存区中和所述第二缓存区中的所述第二数据请求至从站,以使所述从站依次响应所述第一缓存区中和所述第二缓存区中的所述第三数据请求,并向所述主站返回与所述第一缓存区中和所述第二缓存区中的所述第三数据请求对应的数据,其中,所述第一链路所述第一缓存区对应,所述第二链路与所述第二缓存器对应。

进一步地,所述方法还包括:在所述主站获取第三数据请求成功的信息时,从所述第三数据请求对应的队列中取出第四数据请求更新所述第三数据请求;在所述主站获取所述第三数据请求失败的信息时,则将所述第三数据请求放入与第五数据请求对应的队列中,从所述第五数据请求对应的队列中发送所述数据请求,其中,所述第五数据请求与所述第三数据分别属于所述第一队列中和所述第二队列中的数据请求。

进一步地,当所述从站至少为两个时,所述方法还包括:所述主站接收所述缓存区中发送的所述第二数据请求在多个从站中的轮询结果;如果所述轮询结果循环冗余数据校验出错或轮询时间超过第一预设阈值时,显示所述主站的所述数据请求轮询失败。

进一步地,当所述从站至少为两个时,所述方法还包括:当所述主站中的所述第一数据请求在从站中轮询成功或者所述第一数据请求总轮询时间超过第二预设阈值时,所述主站将所述n个队列清空。

根据本发明实施例的另一方面,还提供了一种数据传输方法,包括:接收主站通过n个缓存区依次发送的n个数据请求,其中,n个数据请求包括从n个链路的n个队列中按照指定规则选取的所述数据请求,将主站中的所述数据请求分成n份数据后,将n份数据对应放置在所述n个队列中,所述n个链路与n个缓存区一一对应;依次响应所述n个缓存区中的所述数据请求,并向所述主站返回与所述n个缓存区中的所述数据请求对应的数据。

进一步地,当从站至少为两个时,所述方法还包括:接收主站通过n个缓存区依次发送的n个数据请求,其中,n个数据请求包括从n个链路的n个队列中按照指定规则选取的所述数据请求,将主站中的所述数据请求分成n份数据后,将n份数据对应放置在所述n个队列中,所述n个链路与n个缓存区一一对应;轮询所述n个缓存区中的所述数据请求,并向所述主站返回与所述n个缓存区中的所述数据请求对应的数据。

根据本发明实施例的另一方面,还提供了一种数据传输装置,包括:划分单元,用于将主站中的第一数据请求分成n份数据,将n份数据对应放置在所述主站设置的n个队列,其中n为大于1的整数;处理单元,用于从所述n个队列中按照指定规则选取第二数据请求分别配置到n个链路的n个缓存区中,发送n个缓存区中的所述第二数据请求至从站,以使所述从站依次响应所述n个缓存区中的所述第二数据请求,并向所述主站返回与所述n个缓存区中的所述第二数据请求对应的数据,其中,所述n个链路与n个缓存器一一对应。

根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述任一项所述的数据传输方法。

根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任一项所述的数据传输方法。

在本发明实施例中,通过将主站中的第一数据请求分成n份数据,将n份数据对应放置在主站设置的n个队列,其中n为大于1的整数;从n个队列中按照指定规则选取第二数据请求分别配置到n个链路的n个缓存区中,发送n个缓存区中的第二数据请求至从站,以使从站依次响应n个缓存区中的第二数据请求,并向主站返回与n个缓存区中的第二数据请求对应的数据,其中,n个链路与n个缓存器一一对应,从而提高了数据传输过程中数据可靠性以及实现了数据传输的实时性的技术效果,进而解决了相关技术中数据传输过程中数据的是可靠性低和实时性不高的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是现有技术中利用双can总线进行通信的系统示意图;

图2是根据本发明实施例的数据传输方法的流程图;

图3是根据本发明实施例的又一数据传输方法的流程图;

图4是根据本发明优选实施例的数据请求的发生过程的示意图;以及

图5是根据本发明实施例的数据传输装置的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例,提供了一种数据传输的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

下面将对本发明实施例的数据传输方法进行详细说明。

图2是根据本发明实施例的数据传输方法的流程图,如图2所示,该数据传输方法包括如下步骤:

步骤s202,将主站中的第一数据请求分成n份数据,将n份数据对应放置在主站设置的n个队列,其中n为大于1的整数。

例如,在可以将主站的第一数据请求分为2份数据,将2份数据对应放置在主站设置的2个队列。即在有10个数据请求时,可以平均也可以不平均的分成2份,在2个队列中分别放置5个数据请求。

步骤s204,从n个队列中按照指定规则选取第二数据请求分别配置到n个链路的n个缓存区中,发送n个缓存区中的第二数据请求至从站,以使从站依次响应n个缓存区中的第二数据请求,并向主站返回与n个缓存区中的第二数据请求对应的数据,其中,n个链路与n个缓存器一一对应。

需要说明的是。上述n条链路可以理解为n个总线,即链路是总线。

其中,在n条链路中,可以为一条主链路n-1条备链路,也可以为两天链路,n-2条备链路,就对于主备链路的具体条数不做具体的限定。

需要说明的是,当n=2,n个队列可以包括:第一队列和第二队列,将主站中的第一数据请求分为2份,将2份数据对应放置在主站设置的2个队列,其中,方法还包括:从第一队列和第二队列中按照指定规则选取第三数据请求分别配置到第一链路中的第一缓存区中和第二链路中的第二缓存区中,发送第一缓存区中和第二缓存区中的第二数据请求至从站,以使从站依次响应第一缓存区中和第二缓存区中的第三数据请求,并向主站返回与第一缓存区中和第二缓存区中的第三数据请求对应的数据,其中,第一链路第一缓存区对应,第二链路与第二缓存器对应。

其中,在主站获取第三数据请求成功的信息时,从第三数据请求对应的队列中取出第四数据请求更新第三数据请求;在主站获取第三数据请求失败的信息时,则将第三数据请求放入与第五数据请求对应的队列中,从第五数据请求对应的队列中发送数据请求,其中,第五数据请求与第三数据分别属于第一队列和第二队列的数据请求。

例如,在有n个队列的数据进行传输请求的时候,当数据请求在第一队列中请求失败的时候,则可以将数据请求放在第二队列中的末尾进行数据请求,当在第二队列进行数据请求失败的时候,可以将数据请求放入第三队列中进行数据请求,依此类推,第n个队列中的失败请求,放在第一个队列末尾以期再次发送。

通过上述步骤,将主站中的第一数据请求分成n份数据,将n份数据对应放置在主站设置的n个队列,其中n为大于1的整数;从n个队列中按照指定规则选取第二数据请求分别配置到n个链路的n个缓存区中,发送n个缓存区中的第二数据请求至从站,以使从站依次响应n个缓存区中的第二数据请求,并向主站返回与n个缓存区中的第二数据请求对应的数据,其中,n个链路与n个缓存器一一对应,从而提高了数据传输过程中数据可靠性以及实现了数据传输的实时性的技术效果,进而解决了相关技术中,在多总线系统中,由于无法灵活的利用主备总线来传输数据,进而导致的浪费总线带宽等技术问题。

作为一种可选的实施例,当从站至少为两个时,上述方法还可以包括:主站接收缓存区中发送的第二数据请求在多个从站中的轮询结果;如果轮询结果循环冗余数据校验出错或轮询时间超过第一预设阈值时,显示主站的数据请求轮询失败。

作为一种可选的实施例,当从站至少为两个时,上述方法还可以包括:当主站中的第一数据请求在从站中轮询成功或者第一数据请求总轮询时间超过第二预设阈值时,主站将n个队列清空。

图3是根据本发明实施例的又一数据传输方法的流程图,如图3所示,该数据传输方法包括如下步骤:

步骤s302,接收主站通过n个缓存区依次发送的n个数据请求,其中,n个数据请求包括从n个链路的n个队列中按照指定规则选取的数据请求,将主站中的数据请求分成n份数据后,将n份数据对应放置在n个队列中,n个链路与n个缓存区一一对应。

步骤s304,依次响应n个缓存区中的数据请求,并向主站返回与n个缓存区中的数据请求对应的数据。

需要说明的是,当从站至少为两个时,上述方法还可以包括:接收主站通过n个缓存区依次发送的n个数据请求,其中,n个数据请求包括从n个链路的n个队列中按照指定规则选取的数据请求,将主站中的数据请求分成n份数据后,将n份数据对应放置在n个队列中,n个链路与n个缓存区一一对应;轮询n个缓存区中的数据请求,并向主站返回与n个缓存区中的数据请求对应的数据。

本发明还提供了一种优选实施例,该优选实施例提供了一种基于双can总线的io_bus轮询数据通讯方法。

利用io_bus实现主站对从站的数据轮询,io_bus用两条can总线实现。在io_bus主站内部预留两条发送数据队列分别为l1和l2,两条can总线分别有一个发送缓存m1和m2,发送过程描述如步骤如下:具体的实现流程如图4所示,数据请求的发生过程示意图。

1、在数据发送前分别将要轮询的请求数据包队列平均分为两份放置在两条队列l1与l2里。

2、分别从l1和l2取出一个轮询数据包分别放入m1和m2。

3、将m1和m2的请求数据分别从can1和can2发送出去,并接收can1和can2的轮询结果,如果轮询结果crc校验出错或超时则标示轮询失败。

4、对于某个can总线canx而言,如果轮询结果成功,则保留轮询结果并从lx上取出新一个请求存入mx,覆盖mx原有数据;如果轮询结果失败,则将mx的数据放入另一条请求队列的ly末尾,并从lx取出一个新的请求放入mx。

需要说明的是,在重复上述步骤2-4,直到所有轮询数据均成功或系统总轮询时间超时,此时将l1和l2清空,并开始新一轮的数据轮询。

通过上述优先实施例,数据采集轮询的机制,避免了从站数据同步造成的复杂性,实现简单;双can总线同时对不同的io_bus从站进行轮询,充分利用带宽,最好的情况下完成一次完整轮询所需的时间为原来的一半;一定程度上排除can总线的瞬时故障。

根据本发明实施例,还提供了一种数据传输装置实施例,需要说明的是,该数据传输装置可以用于执行本发明实施例中的数据传输方法,也即本发明实施例中的数据传输方法可以在该数据传输装置中执行。

图5是根据本发明实施例的数据传输装置的示意图,如图5所示,该数据传输装置可以包括:划分单元51以及处理单元53。详细描述如下。

划分单元51,用于将主站中的第一数据请求分成n份数据,将n份数据对应放置在主站设置的n个队列,其中n为大于1的整数。

处理单元53,用于从n个队列中按照指定规则选取第二数据请求分别配置到n个链路的n个缓存区中,发送n个缓存区中的第二数据请求至从站,以使从站依次响应n个缓存区中的第二数据请求,并向主站返回与n个缓存区中的第二数据请求对应的数据,其中,n个链路与n个缓存器一一对应。

需要说明的是,该实施例中的划分单元51可以用于执行本发明实施例中的步骤s202,该实施例中的处理单元53可以用于执行本发明实施例中的步骤s204。上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。

根据本发明实施例的另外一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,程序运行时控制存储介质所在设备执行以下操作:将主站中的第一数据请求分成n份数据,将n份数据对应放置在主站设置的n个队列,其中n为大于1的整数;从n个队列中按照指定规则选取第二数据请求分别配置到n个链路的n个缓存区中,发送n个缓存区中的第二数据请求至从站,以使从站依次响应n个缓存区中的第二数据请求,并向主站返回与n个缓存区中的第二数据请求对应的数据,其中,n个链路与n个缓存器一一对应。

根据本发明实施例的另外一个方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行以下操作:将主站中的第一数据请求分成n份数据,将n份数据对应放置在主站设置的n个队列,其中n为大于1的整数;从n个队列中按照指定规则选取第二数据请求分别配置到n个链路的n个缓存区中,发送n个缓存区中的第二数据请求至从站,以使从站依次响应n个缓存区中的第二数据请求,并向主站返回与n个缓存区中的第二数据请求对应的数据,其中,n个链路与n个缓存器一一对应。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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