CN118075359A - 基于can通信的数据组包方法、装置、电子设备及介质 - Google Patents

基于can通信的数据组包方法、装置、电子设备及介质 Download PDF

Info

Publication number
CN118075359A
CN118075359A CN202410209166.8A CN202410209166A CN118075359A CN 118075359 A CN118075359 A CN 118075359A CN 202410209166 A CN202410209166 A CN 202410209166A CN 118075359 A CN118075359 A CN 118075359A
Authority
CN
China
Prior art keywords
data
frame data
classified
packet
frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410209166.8A
Other languages
English (en)
Inventor
谭超
李兴国
黄彬彬
李旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CRSC Research and Design Institute Group Co Ltd
China Railway Signal and Communication Corp Ltd CRSC
Original Assignee
CRSC Research and Design Institute Group Co Ltd
China Railway Signal and Communication Corp Ltd CRSC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CRSC Research and Design Institute Group Co Ltd, China Railway Signal and Communication Corp Ltd CRSC filed Critical CRSC Research and Design Institute Group Co Ltd
Priority to CN202410209166.8A priority Critical patent/CN118075359A/zh
Publication of CN118075359A publication Critical patent/CN118075359A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40208Bus networks characterized by the use of a particular bus standard
    • H04L2012/40215Controller Area Network CAN

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种基于CAN通信的数据组包方法、装置、电子设备及介质,其中,基于CAN通信的数据组包方法包括:从第一目标缓存获取原始CAN帧数据,并对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据;对各所述分类CAN帧数据确定组包关联标识;根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据。本发明实施例的技术方案能够提高CAN通信系统的运行效率和实时性,保证CAN通信系统的通信质量,从而提高CAN通信系统的适用性和可扩展性。

Description

基于CAN通信的数据组包方法、装置、电子设备及介质
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种基于CAN通信的数据组包方法、装置、电子设备及存储介质。
背景技术
CAN(Controller Area Network,控制器局域网络)是一种能够实现分布式实时控制的串行通信网络,其通过两条通信线(双绞线)产生的电压差传输数据,一个CAN网络里的所有节点都挂在这两条通信线上,使用差分信号半双工通信。
在现有的CAN通信中,进行通信的数据类型往往是处理单一类型的应用数据,实行接收一帧数据处理一帧数据的工作机制。
发明人在实现本发明的过程中,发现现有技术存在如下缺陷:目前这种CAN通信的工作机制只适用于数据量较小或通信速率较低的通信场景中,且会大量占用CAN通信系统中CPU(Central Processing Unit,中央处理器)主程序的运行时间,从而降低CAN通信系统整体的运行效率,影响CAN通信系统的实时性。以CAN通信数据接收为例,CAN接收的方式是通过CAN轮巡或者CAN中断进行。例如,当使用CAN轮巡接收数据时,若接收数据的通信速率较高或者通信数据量较大,往往会因为CAN通信系统中接收任务的运行调度速率和CAN邮箱轮巡的速率之间的差异,即接收任务的运行调度速率小于数据接收速率,而导致CAN通信数据内存溢出,进而导致CAN通信数据的丢失。CAN中断接收数据的方式存在相同的问题,会由于中断速率和接收任务运行调度速率的差异,而导致CAN通信数据的丢失。
发明内容
本发明实施例提供一种基于CAN通信的数据组包方法、装置、电子设备及存储介质,能够提高CAN通信系统的运行效率和实时性,保证CAN通信系统的通信质量,从而提高CAN通信系统的适用性和可扩展性。
根据本发明的一方面,提供了一种基于CAN通信的数据组包方法,包括:
从第一目标缓存获取原始CAN帧数据,并对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据;
对各所述分类CAN帧数据确定组包关联标识;
根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据。
根据本发明的另一方面,提供了一种基于CAN通信的数据组包装置,包括:
分类CAN帧数据获取模块,用于从第一目标缓存获取原始CAN帧数据,并对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据;
组包关联标识确定模块,用于对各所述分类CAN帧数据确定组包关联标识;
CAN组包数据获取模块,用于根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的基于CAN通信的数据组包方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的基于CAN通信的数据组包方法。
本发明实施例通过从第一目标缓存获取到原始CAN帧数据后,对原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据,并对各分类CAN帧数据确定组包关联标识,以根据组包关联标识对各分类CAN帧数据进行数据组包处理,得到各分类CAN帧数据对应的CAN组包数据,解决现有CAN通信系统无法同时处理多类型应用数据以及高速率数据接收场景下通信质量较差等问题,能够提高CAN通信系统的运行效率和实时性,保证CAN通信系统的通信质量,从而提高CAN通信系统的适用性和可扩展性。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种基于CAN通信的数据组包方法的流程图;
图2是本发明实施例二提供的一种基于CAN通信的数据组包方法的流程图;
图3是本发明实施例二提供的一种CAN通信系统对接收的原始CAN帧数据进行数据处理流程的示意图;
图4是本发明实施例二提供的一种基于CAN通信的数据组包方法的流程示意图;
图5是本发明实施例二提供的一种基于CAN通信的数据处理流程的示意图;
图6是本发明实施例三提供的一种基于CAN通信的数据组包装置的示意图;
图7为本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1是本发明实施例一提供的一种基于CAN通信的数据组包方法的流程图,本实施例可适用于根据组包关联标识对每一类CAN帧数据进行组包处理的情况,该方法可以由基于CAN通信的数据组包装置来执行,该装置可以由软件和/或硬件的方式来实现,并一般可集成在电子设备中,该电子设备可以是终端设备,也可以是服务器设备,只要能够应用于CAN通信系统以处理基于CAN通信的数据组包方法即可,本发明实施例并不对电子设备的具体设备类型进行限定。相应的,如图1所示,该方法包括如下操作:
S110、从第一目标缓存获取原始CAN帧数据,并对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据。
其中,第一目标缓存可以是CAN通信系统中用于缓存接收数据的内存资源。原始CAN帧数据可以是CAN通信系统接收的通信数据,该通信数据可以是外部设备发送的。可选的,原始CAN帧数据可以包括多个不同协议类型的CAN帧数据。分类CAN帧数据可以是对原始CAN帧数据进行分类处理后得到的多个类型的CAN帧数据。
在本发明实施例中,外部设备可以基于CAN通信系统中任何可用的通信协议生成通信数据,并发送至CAN通信系统中。相应的,CAN通信系统接收到各类原始CAN帧数据后,可以将底层的原始CAN帧数据存储至第一目标缓存中,以平衡CAN通信系统中处理器接收任务调度速率和数据接收速率之间的差异,避免接收数据的溢出,解决CAN通信数据因速率差异而产生数据丢失的问题,从而提高CAN通信系统的运行效率和实时性,保证CAN通信系统的通信质量。同时,将各类原始CAN帧数据存储至第一目标缓存,还可以便于CAN通信系统统一对第一目标缓存中的原始CAN帧数据进行归纳整理,以梳理出不同类型的数据并对其进行组包处理,从而使得CAN通信系统可以同时处理多类型应用数据,提高CAN通信系统的适用性和可扩展性。
相应的,CAN通信系统在组包过程中,可以对原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据。每一组分类CAN帧数据可以包括多个CAN帧数据,每组分类CAN帧数据中包括的各个CAN帧数据的类型相同。
可选的,CAN通信系统可以根据CAN帧数据的协议类型对原始CAN帧数据进行分类,分类得到的每组分类CAN帧数据可以对应一个协议类型。或者,CAN通信系统还可以根据CAN帧数据的数据类型对原始CAN帧数据进行分类,分类得到的每组分类CAN帧数据可以对应一个数据类型。也即,只要能够保证分类CAN帧数据中是同类型的CAN帧数据即可,本发明实施例并不对原始CAN帧数据的具体分类方式进行限定。
S120、对各所述分类CAN帧数据确定组包关联标识。
其中,组包关联标识可以是用于对分类CAN帧数据进行组包处理所参考的标识信息。
相应的,在对原始CAN帧数据进行分类得到多个类型的分类CAN帧数据之后,CAN通信系统可以进一步解析分类CAN帧数据,以根据分类CAN帧数据的解析结果确定用于对分类CAN帧数据进行组包处理的组包关联标识。示例性的,组包关联标识例如可以包括但不限于分类CAN帧数据对应的原始大包数据的标识以及该分类CAN帧数据在原始大包数据中的相对位置等。
可选的,当分类CAN帧数据的类型为多个时,各分类CAN帧数据可以同步并行执行数据的解析过程,各分类CAN帧数据的解析过程彼此不受影响。
需要说明的是,一般在使用CAN通信系统时,CAN通信系统可以的一帧CAN数据最多是8个字节,但是CAN通信系统采用的各类通信协议或者实现通信的数据可能会超出一帧8个字节的范围。因此,外部设备向CAN系统发送通信数据之前,如果确定一个大包数据超过了8个字节,往往需要首先对一个完整的大包数据进行拆分处理。在进行拆包时,需要确定数据分包的大小和数据,根据需要传输的数据量和传输时间,确定每个数据分包的大小和数量,以将需要传输的大包数据按照每个数据分包的大小进行划分,并将每个数据分包进行编号。每包数据包含分包总数据和数据分包编号。同时,对拆解得到数据分包封装CAN数据帧,得到原始CAN帧数据并发送至CAN通信系统。
由此可见,原始CAN帧数据中可以包括大包序号、CAN ID(数据分包编号,也可称为CAN帧数据标识)、数据长度以及数据内容等信息。相应的,CAN通信系统可以将对原始CAN帧数据解析得到的大包序号和CAN ID等作为组包关联标识。
S130、根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据。
其中,CAN组包数据也即对分类CAN帧数据进行组包处理后得到的大包数据。
可选的,由于组包关联标识可以反应当前分类CAN帧数据对应的拆包信息,因此,可以根据组包关联标识确定当前分类CAN帧数据对应的大包类型以及在对应大包中的拆分位置等。所以,CAN通信系统可以根据各组分类CAN帧数据对应解析的组包关联标识对各组分类CAN帧数据进行排序和组包处理,从而将各类分类CAN帧数据组包成一个完整的大包,得到对应的CAN组包数据。可以理解的是,一种类型的分类CAN帧数据可以对应组成一个或多个CAN组包数据。
可选的,当分类CAN帧数据的类型为多个时,各分类CAN帧数据可以同步并行执行数据组包处理过程,各分类CAN帧数据的数据组包处理过程彼此不受影响。
由此可见,上述技术方案中,CAN通信系统可以同时处理多类型协议的数据,通过对不同类型的通信数据进行分类处理和组包处理,可以实现并行处理不同类型的应用数据。同时,通过设置第一目标缓存存储尚未处理的原始CAN帧数据,可以避免接收数据丢失的问题,保证所有接收数据均被处理器所处理,从而提高CAN通信系统的运行效率和实时性,保证CAN通信系统的通信质量。
本发明实施例通过从第一目标缓存获取到原始CAN帧数据后,对原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据,并对各分类CAN帧数据确定组包关联标识,以根据组包关联标识对各分类CAN帧数据进行数据组包处理,得到各分类CAN帧数据对应的CAN组包数据,解决现有CAN通信系统无法同时处理多类型应用数据以及高速率数据接收场景下通信质量较差等问题,能够提高CAN通信系统的运行效率和实时性,保证CAN通信系统的通信质量,从而提高CAN通信系统的适用性和可扩展性。
实施例二
图2是本发明实施例二提供的一种基于CAN通信的数据组包方法的流程图,本实施例以上述实施例为基础进行具体化,在本实施例中,给出了对原始CAN帧数据进行分类以及根据组包关联标识对各分类CAN帧数据进行数据组包处理的多种具体可选的实现方式。相应的,如图2所示,本实施例的方法可以包括:
S210、接收多协议类型的原始CAN帧数据,将所述原始CAN帧数据存储至第一目标缓存。
在本发明实施例中,可以分别设置不同等级的目标缓存以支持CAN通信系统完成数据组包处理的各个处理环节。示例性的,可以配置第一目标缓存存储接收的原始CAN帧数据,可以配置第二目标缓存存储分类完成的分类CAN帧数据,同时可以配置第三目标缓存存储组包完成的CAN组包数据。各个目标缓存的存储空间大小和配置方式可以根据实际需求设置,例如,第一目标缓存可以是一级缓存FIFO(First In First Out,异步数据传输时经常使用的存储器,数据先进先出,软件类的缓存),第二目标缓存可以是二级缓存FIFO,第二目标缓存可以是三级缓存FIFO等,本发明实施例并不对各个目标缓存的配置方式进行限定。
图3是本发明实施例二提供的一种CAN通信系统对接收的原始CAN帧数据进行数据处理流程的示意图。在本发明实施例的一个具体的例子中,如图3所示,可选的,原始CAN帧数据可以是CAN通信系统支持的多种不同协议类型的帧数据。可选的,CAN通信系统可以通过CAN中断接收单元通过CAN中断接收的方式接收原始CAN帧数据,并将底层的原始CAN帧数据发送至一级缓存FIFO中缓存,以避免数据丢失。
S220、从第一目标缓存获取原始CAN帧数据,并对所述原始CAN帧数据进行解析,得到所述原始CAN帧数据的数据类型标识。
其中,数据类型标识可以用于标识原始CAN帧数据的数据类型。
S230、根据所述数据类型标识对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据。
S240、确定各所述分类CAN帧数据的分类数据类型,根据所述分类数据类型将各所述分类CAN帧数据存储至第二目标缓存。
其中,第二目标缓存可以用于按分类数据类型分类存储分类CAN帧数据。可选的,第二目标缓存可以是二级FIFO。
在一个具体的例子中,如图3所示,CAN通信系统中的协议数据分类单元可以从一级FIFO中获取原始CAN帧数据,并对原始CAN帧数据进行解析,以提取原始CAN帧数据的数据类型标识。可选的,协议数据分类单元可以解析获取原始CAN帧数据的CAN ID标识,并对CANID标识进一步解析确定该原始CAN帧数据的数据类型标识,从而根据解析的数据类型标识对原始CAN帧数据进行分类识别,得到多个类型的分类CAN帧数据。同时,协议数据分类单元可以将分类识别后的CAN帧数据按分类数据类型存入各自的二级缓存FIFO中存储。可选的,每组类型的分类CAN帧数据可以统一存储在一个完整的二级缓存FIFO中,也还可以分别存储不同分区的二级缓存FIFO中,只要能够区分每组分类CAN帧数据即可,本发明实施例并不对分类CAN帧数据在二级缓存FIFO中的存储方式进行限制。
S250、对各所述分类CAN帧数据确定组包关联标识,根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据。
在本发明的一个可选实施例中,所述组包关联标识可以包括组包标识和数据包顺序标识;所述根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据,可以包括:获取当前分类CAN帧数据,将所述当前分类CAN帧数据暂存至目标缓冲器;在确定所述当前分类CAN帧数据是首帧分类CAN帧数据的情况下,确定所述当前分类CAN帧数据的目标组包标识;在确定所述当前分类CAN帧数据是非首帧尾帧分类CAN帧数据,且确定所述当前分类CAN帧数据的组包标识为所述目标组包标识的情况下,返回执行获取并暂存当前分类CAN帧数据的操作,直至确定当前分类CAN帧数据为尾帧分类CAN帧数据,且确定当前分类CAN帧数据的组包标识为所述目标组包标识;在确定所述目标缓冲器中所述目标组包标识的各个分类CAN帧数据存储完成的情况下,将所述目标组包标识的各个分类CAN帧数据组成目标大包数据,并将所述目标大包数据发送至第三目标缓存中存储。
其中,组包标识例如可以是原始CAN帧数据所属的大包数据的标识。数据包顺序标识可以是原始CAN帧数据中包括的数据内容在所属的大包数据中对应顺序位置的标识。目标缓冲器可以用于暂存从第二目标缓存中获取的数据。首帧分类CAN帧数据也即第一帧分类CAN帧数据。目标组包标识可以是当前分类CAN帧数据所属的大包序号等大包标识。非首帧尾帧分类CAN帧数据也即除第一帧分类CAN帧数据和最后一帧分类CAN帧数据之外的其他帧分类CAN帧数据。尾帧分类CAN帧数据可以是最后一帧分类CAN帧数据。目标大包数据可以是各个属于同一大包的分类CAN帧数据重新组成的大包数据。第三目标缓存可以用于存储组包完成的CAN组包数据,也可以称为大包数据。可选的,第三目标缓存的数量可以是多个,每个第三目标缓存可以分别存储某一类型的组包完成的大包数据。
在一个具体的例子中,如图3所示,可以由CAN通信系统中的协议数据组包单元对已分类的二级缓存FIFO中的分类CAN帧数据进行数据组包处理。图4是本发明实施例二提供的一种基于CAN通信的数据组包方法的流程示意图。在一个具体的例子中,如图4所示,对于各类分类CAN帧数据可以分别存储在不同的第二目标缓存中。例如,第一类分类CAN帧数据可以存储在二级缓存FIFO2-1中,第二类分类CAN帧数据可以存储在二级缓存FIFO2-2中,以此类推,第n类分类CAN帧数据可以存储在二级缓存FIFO2-n中。针对每个第二目标缓存,可以同时并行处理其组包过程,也还可以按需启动处理器组包过程,各第二目标缓存对应的组包处理过程彼此不受影响。同理,组包完成的CAN大包数据也可以存储在各自的第三目标缓存中。例如,第一类大包数据可以存储在三级缓存FIFO3-1中,第二类大包数据可以存储在三级缓存FIFO3-2中,以此类推,第n类大包数据可以存储在三级缓存FIFO3-n中。对每个第三目标缓存,可以同时并行处理其组包过程,也还可以按需启动处理器组包过程,各第三目标缓存对应的组包处理过程彼此不受影响。
相应的,如图4所示,针对当前的二级缓存FIFO2-n,协议数据组包单元可以从二级缓存FIFO2-n中按数据帧的缓存顺序获取当前分类CAN帧数据,将获取的当前分类CAN帧数据暂存至大包buffer(缓冲器)中,并判断当前分类CAN帧数据是否为首帧分类CAN帧数据。如果确定当前分类CAN帧数据是首帧分类CAN帧数据,则可以进一步确定当前分类CAN帧数据的目标组包标识,如根据当前分类CAN帧数据中存储的相关字段标识确定该当前分类CAN帧数据所属的大包序号等。相应的,如果确定当前分类CAN帧数据不是首帧分类CAN帧数据也不是尾帧分类CAN帧数据,则可以判断当前分类CAN帧数据的组包标识与首帧分类CAN帧数据的组包标识是否相同,如大包序号是否相同。如果确定当前分类CAN帧数据的组包标识与首帧分类CAN帧数据的组包标识相同,表明前分类CAN帧数据与首帧分类CAN帧数据属于同一个大包的分包数据。此时,可以返回执行获取当前分类CAN帧数据的操作,依次循环判断每个二级缓存FIFO2-n中的分类CAN帧数据,直至判断到尾帧分类CAN帧数据。当确定大包buffer中目标组包标识的各个分类CAN帧数据存储完成时,可以进一步解析大包buffer中目标组包标识的各个分类CAN帧数据的数据包顺序标识,如帧序号等,以按照数据包顺序标识的顺序将大包buffer中各个分类CAN帧数据存储至对应的三级FIFO3-n中,例如按帧序号依次将各个分类CAN帧数据存储至对应的三级FIFO3-n中。至此,一个CAN协议类型的数据大包组包完成。在此过程中,一旦发现中间帧的分类CAN帧数据的大包序号不正确,则代表数据传输过程中出现了错误,此时可以清空暂存大包buffer中的数据,并重新确定二级缓存FIFO2-n重复执行上述组包流程。
在本发明的一个可选实施例中,所述分类CAN帧数据包括状态帧数据、数据帧数据以及配置帧数据:所述第三目标缓存包括状态帧数据缓存、数据帧数据缓存以及配置帧数据缓存;其中,所述状态帧数据缓存可以用于存储组包完成的状态帧数据;所述数据帧数据缓存可以用于存储组包完成的数据帧数据;所述配置帧数据缓存可以用于存储组包完成的配置帧数据。
其中,状态帧数据可以用于存储状态类信息。数据帧数据可以用于存储具体的CAN通信数据。配置帧数据可以用于存储配置类信息。相应的,当分类CAN帧数据包括状态帧数据、数据帧数据以及配置帧数据三种类型的数据时,第三目标缓存也可以配置为状态帧数据缓存、数据帧数据缓存以及配置帧数据缓存三种类型的缓存。不同的第三目标缓存可以用于分别存储对应类型组包完成的大包数据。
需要说明的是,分类CAN帧数据不仅限于状态帧数据、数据帧数据以及配置帧数据等类型的数据,还可以根据协议类型适当扩展,例如还可以包括校验帧数据等,本发明实施例并不对分类CAN帧数据的数据类型进行限定。
S260、确定CAN组包数据的预设输出数量,获取所述预设输出数量的CAN组包数据输出至上层应用。
其中,预设输出数量可以根据实际需求设定,且不同类型的CAN组包数据可以配置不同的预设输出数量,本发明实施例并不对预设输出数量的具体数值进行限定。
图5是本发明实施例二提供的一种基于CAN通信的数据处理流程的示意图。在一个具体的例子中,如图5所示,基于CAN通信的整体数据处理流程如下:对于外部设备发送过来的多类型CAN帧数据,通过CAN中断对所有类型的CAN帧数据进行接收,同时存入一级缓存FIFO中进行缓存。然后,通过CAN协议数据分类单元依据CAN ID中的类型标识对多种类型的CAN数据进行分类识别,并将分类识别后的CAN帧数据按类型存入各自的二级FIFO中缓存。例如,假设有三种CAN协议数据:状态帧、数据帧以及配置帧,分类识别后,状态帧缓存在二级FIFO2-1,数据帧缓存在二级FIFO2-2,配置帧缓存在二级FIFO2-3中。进一步的,对已分类的二级缓存FIFO中的CAN帧数据按大包序号进行组大包。具体组包处理逻辑可以包括:从二级缓存FIFO2-n按帧取出CAN帧数据并暂存至大包buffer中,首先根据CAN帧数据中的首包标识判断是否为首包。如果是首包,则提取CAN帧数据的大包序号。进一步的,依次判断后续CAN帧数据与首帧CAN帧数据是否为同一个大包,如果是同一大包,则继续按帧取出CAN帧数据并反复执行上述流程,直至判断到尾包,并按帧序号依次将大包buffer中存储的数据存入三级FIFO3-n,一个CAN协议数据大包组包完成。或者,也还可以在每确定同一个大包的CAN帧数据后,实时将该CAN帧数据存入三级FIFO3-n,如确定首帧后实时将其存入三级FIFO3-n,并在确定后续CAN帧数据与首帧CAN帧数据为同一个大包后实时将其存入三级FIFO3-n。最终,通过协议数据输出单元对大包CAN通信协议数据进行输出,如按约定的大包数量从三级FIFO3-n中提取CAN数据提供给上层应用软件。可选的,不同三级FIFO3-n的数据提取操作可并行同步执行,本发明实施例对此并不进行限制。
上述技术方案,针对CAN通信数据量大,数据种类多时易发生丢包的问题,提供了一种CAN通信协议数据组包方法,通过对每一帧CAN数据解析组包信息,并配合不同缓存存储对应的数据,来解决通信数据类型单一、通信数据易丢失以及通信吞吐量低的问题,不仅能够同时处理多种类型的CAN通信协议数据,还可降低CAN通信系统中处理器如CPU的占用率,可增加一次性CAN接收的数据量,提高CAN通信应用协议数据的吞吐量。同时,三级目标缓存的设计,可平衡CAN通信系统中处理器上层应用接收处理任务和底层CAN中断接收之间的速率差异,避免通信数据丢失,能够提高CAN通信系统的运行效率和实时性,保证CAN通信系统的通信质量,从而提高CAN通信系统的适用性和可扩展性。
需要说明的是,以上各实施例中各技术特征之间的任意排列组合也属于本发明的保护范围。
实施例三
图6是本发明实施例三提供的一种基于CAN通信的数据组包装置的示意图,如图6所示,所述装置包括:分类CAN帧数据获取模块310、组包关联标识确定模块320以及CAN组包数据获取模块330,其中:
分类CAN帧数据获取模块310,用于从第一目标缓存获取原始CAN帧数据,并对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据;
组包关联标识确定模块320,用于对各所述分类CAN帧数据确定组包关联标识;
CAN组包数据获取模块330,用于根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据。
本发明实施例通过从第一目标缓存获取到原始CAN帧数据后,对原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据,并对各分类CAN帧数据确定组包关联标识,以根据组包关联标识对各分类CAN帧数据进行数据组包处理,得到各分类CAN帧数据对应的CAN组包数据,解决现有CAN通信系统无法同时处理多类型应用数据以及高速率数据接收场景下通信质量较差等问题,能够提高CAN通信系统的运行效率和实时性,保证CAN通信系统的通信质量,从而提高CAN通信系统的适用性和可扩展性。
可选的,基于CAN通信的数据组包装置还可以包括原始CAN帧数据存储模块,用于:接收多协议类型的原始CAN帧数据;将所述原始CAN帧数据存储至所述第一目标缓存。
可选的,分类CAN帧数据获取模块310具体用于:对所述原始CAN帧数据进行解析,得到所述原始CAN帧数据的数据类型标识;根据所述数据类型标识对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据。
可选的,基于CAN通信的数据组包装置还可以包括分类CAN帧数据存储模块,用于:确定各所述分类CAN帧数据的分类数据类型;根据所述分类数据类型将各所述分类CAN帧数据存储至第二目标缓存。
可选的,所述组包关联标识包括组包标识和数据包顺序标识;CAN组包数据获取模块330具体用于:获取当前分类CAN帧数据,将所述当前分类CAN帧数据暂存至目标缓冲器;在确定所述当前分类CAN帧数据是首帧分类CAN帧数据的情况下,确定所述当前分类CAN帧数据的目标组包标识;在确定所述当前分类CAN帧数据是非首帧尾帧分类CAN帧数据,且确定所述当前分类CAN帧数据的组包标识为所述目标组包标识的情况下,返回执行获取并暂存当前分类CAN帧数据的操作,直至确定当前分类CAN帧数据为尾帧分类CAN帧数据,且确定当前分类CAN帧数据的组包标识为所述目标组包标识;在确定所述目标缓冲器中所述目标组包标识的各个分类CAN帧数据存储完成的情况下,将所述目标组包标识的各个分类CAN帧数据组成目标大包数据,并将所述目标大包数据发送至第三目标缓存中存储。
可选的,所述分类CAN帧数据包括状态帧数据、数据帧数据以及配置帧数据:所述第三目标缓存包括状态帧数据缓存、数据帧数据缓存以及配置帧数据缓存;其中,所述状态帧数据缓存用于存储组包完成的状态帧数据;所述数据帧数据缓存用于存储组包完成的数据帧数据;所述配置帧数据缓存用于存储组包完成的配置帧数据。
可选的,基于CAN通信的数据组包装置还可以包括CAN组包数据输出模块,用于:确定CAN组包数据的预设输出数量;获取所述预设输出数量的CAN组包数据输出至上层应用。
上述基于CAN通信的数据组包装置可执行本发明任意实施例所提供的基于CAN通信的数据组包方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的基于CAN通信的数据组包方法。
由于上述所介绍的基于CAN通信的数据组包装置为可以执行本发明实施例中的基于CAN通信的数据组包方法的装置,故而基于本发明实施例中所介绍的基于CAN通信的数据组包方法,本领域所属技术人员能够了解本实施例的基于CAN通信的数据组包装置的具体实施方式以及其各种变化形式,所以在此对于该基于CAN通信的数据组包装置如何实现本发明实施例中的基于CAN通信的数据组包方法不再详细介绍。只要本领域所属技术人员实施本发明实施例中基于CAN通信的数据组包方法所采用的装置,都属于本申请所欲保护的范围。
实施例四
图7示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图7所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如基于CAN通信的数据组包方法。
可选的,基于CAN通信的数据组包方法可以包括:从第一目标缓存获取原始CAN帧数据,并对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据;对各所述分类CAN帧数据确定组包关联标识;根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据。
在一些实施例中,基于CAN通信的数据组包方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的基于CAN通信的数据组包方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行基于CAN通信的数据组包方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。

Claims (10)

1.一种基于CAN通信的数据组包方法,其特征在于,包括:
从第一目标缓存获取原始CAN帧数据,并对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据;
对各所述分类CAN帧数据确定组包关联标识;
根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据。
2.根据权利要求1所述的方法,其特征在于,在所述获取原始CAN帧数据之前,还包括:
接收多协议类型的原始CAN帧数据;
将所述原始CAN帧数据存储至所述第一目标缓存。
3.根据权利要求1所述的方法,其特征在于,所述对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据,包括:
对所述原始CAN帧数据进行解析,得到所述原始CAN帧数据的数据类型标识;
根据所述数据类型标识对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据。
4.根据权利要求1所述的方法,其特征在于,在所述对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据之后,还包括:
确定各所述分类CAN帧数据的分类数据类型;
根据所述分类数据类型将各所述分类CAN帧数据存储至第二目标缓存。
5.根据权利要求1所述的方法,其特征在于,所述组包关联标识包括组包标识和数据包顺序标识;
所述根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据,包括:
获取当前分类CAN帧数据,将所述当前分类CAN帧数据暂存至目标缓冲器;
在确定所述当前分类CAN帧数据是首帧分类CAN帧数据的情况下,确定所述当前分类CAN帧数据的目标组包标识;
在确定所述当前分类CAN帧数据是非首帧尾帧分类CAN帧数据,且确定所述当前分类CAN帧数据的组包标识为所述目标组包标识的情况下,返回执行获取并暂存当前分类CAN帧数据的操作,直至确定当前分类CAN帧数据为尾帧分类CAN帧数据,且确定当前分类CAN帧数据的组包标识为所述目标组包标识;
在确定所述目标缓冲器中所述目标组包标识的各个分类CAN帧数据存储完成的情况下,将所述目标组包标识的各个分类CAN帧数据组成目标大包数据,并将所述目标大包数据发送至第三目标缓存中存储。
6.根据权利要求5所述的方法,其特征在于,所述分类CAN帧数据包括状态帧数据、数据帧数据以及配置帧数据:所述第三目标缓存包括状态帧数据缓存、数据帧数据缓存以及配置帧数据缓存;其中,
所述状态帧数据缓存用于存储组包完成的状态帧数据;
所述数据帧数据缓存用于存储组包完成的数据帧数据;
所述配置帧数据缓存用于存储组包完成的配置帧数据。
7.根据权利要求1所述的方法,其特征在于,在所述根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据之后,还包括:
确定CAN组包数据的预设输出数量;
获取所述预设输出数量的CAN组包数据输出至上层应用。
8.一种基于CAN通信的数据组包装置,其特征在于,包括:
分类CAN帧数据获取模块,用于从第一目标缓存获取原始CAN帧数据,并对所述原始CAN帧数据进行分类,得到多个类型的分类CAN帧数据;
组包关联标识确定模块,用于对各所述分类CAN帧数据确定组包关联标识;
CAN组包数据获取模块,用于根据所述组包关联标识对各所述分类CAN帧数据进行数据组包处理,得到各所述分类CAN帧数据对应的CAN组包数据。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一所述的基于CAN通信的数据组包方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一所述的基于CAN通信的数据组包方法。
CN202410209166.8A 2024-02-26 2024-02-26 基于can通信的数据组包方法、装置、电子设备及介质 Pending CN118075359A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410209166.8A CN118075359A (zh) 2024-02-26 2024-02-26 基于can通信的数据组包方法、装置、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410209166.8A CN118075359A (zh) 2024-02-26 2024-02-26 基于can通信的数据组包方法、装置、电子设备及介质

Publications (1)

Publication Number Publication Date
CN118075359A true CN118075359A (zh) 2024-05-24

Family

ID=91098560

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410209166.8A Pending CN118075359A (zh) 2024-02-26 2024-02-26 基于can通信的数据组包方法、装置、电子设备及介质

Country Status (1)

Country Link
CN (1) CN118075359A (zh)

Similar Documents

Publication Publication Date Title
CN115567589A (zh) Json数据的压缩传输方法、装置、设备及存储介质
CN117997802A (zh) 一种网络抖动检测方法、装置、设备及介质
CN118075359A (zh) 基于can通信的数据组包方法、装置、电子设备及介质
CN114567687B (zh) 报文转发方法、装置、设备、介质及程序产品
CN114500398B (zh) 一种处理器协同加速的方法、装置、设备及介质
CN109857359A (zh) Mipi数据处理方法、装置和电路
CN110661731B (zh) 一种报文处理方法及其装置
CN209690900U (zh) Mipi数据处理电路
CN113961641A (zh) 数据库同步方法、装置、设备和存储介质
CN115705244A (zh) 网络资产的探测方法、装置和服务器
EP3588901A1 (en) Scalable packet processing
CN114338543B (zh) 一种网络访问限速方法、装置、设备及存储介质
CN114553894B (zh) 数据同步方法、装置、系统及存储介质
CN117112162B (zh) 一种数据处理方法、装置、设备和存储介质
CN117221245A (zh) 一种消息发送方法、装置、电子设备及存储介质
CN114363209B (zh) 基于tcp网络的性能探测方法、装置、设备和存储介质
CN118199810B (zh) 一种数据处理方法及装置、电子设备和存储介质
CN114928581B (zh) 基于autosar架构的can报文转发方法、装置、设备及存储介质
CN114785631B (zh) 通信协议栈复用方法、通信方法、计算机设备及介质
CN118673321A (zh) 一种嵌入表模型训练方法、装置、设备及存储介质
CN118714039A (zh) 网络质量检测的方法、装置、电子设备和存储介质
CN116346735A (zh) 数据包处理方法及装置
CN118055068A (zh) 基于dpdk的报文处理方法、装置、设备和介质
CN118509501A (zh) 一种分片报文处理方法、装置、设备及存储介质
CN118631753A (zh) 一种报文处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination