CN113079074A - 一种基于can总线的协议栈通信方法、装置和存储介质 - Google Patents
一种基于can总线的协议栈通信方法、装置和存储介质 Download PDFInfo
- Publication number
- CN113079074A CN113079074A CN202110318942.4A CN202110318942A CN113079074A CN 113079074 A CN113079074 A CN 113079074A CN 202110318942 A CN202110318942 A CN 202110318942A CN 113079074 A CN113079074 A CN 113079074A
- Authority
- CN
- China
- Prior art keywords
- message
- bus
- protocol stack
- packet
- transmission
- 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
Links
- 238000004891 communication Methods 0.000 title claims abstract description 79
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000005540 biological transmission Effects 0.000 claims abstract description 84
- 238000012163 sequencing technique Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 11
- 238000005215 recombination Methods 0.000 claims description 2
- 230000006798 recombination Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
本申请公开了一种基于CAN总线的协议栈通信方法,装置、系统、电子设备和计算机可读存储介质,该方法包括:当获取到应用层的消息后,将消息进行拆分,得到目标报文;根据消息对应的传输格式,将目标报文填充到传输格式的数据域,并将目标报文对应的报文参数添加到传输格式的ID域,生成CAN报文;将CAN报文添加到CAN总线进行传输;当接收方从CAN总线接收到CAN报文后,根据CAN报文的ID域中的报文参数,对CAN报文进行重组,得到消息并存储到接收端内存,以使接收方读取消息。该方法不存在主从结构,各个节点设备之间相互独立,能够降低CAN总线在应用层中的协议复杂度,有效保证消息传输的实时性。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种基于CAN总线的协议栈通信方法、装置、系统、电子设备和计算机可读存储介质。
背景技术
在常用的低速设备通信连接中,CAN作为一种串行差分通信总线,具有较高的抗干扰、高稳定、低物理复杂度的优点。
由于CAN总线的提出最初是适用于工业现场总线,只定义了物理层和数据链路层,并未对更高层的应用提出规范或建议。相关技术中采用CANOpen等作为协议栈对整个总线进行统一管理,相应地,将CAN总线从无主机结构降级成为了主-从结构,这种主从结构的机制,要求主设备一直在线,从设备脱离主设备不能运行;且数据传输过程中,需要反复确认数据是否送达,当确认送达以后,才能继续传输数据,这种往复确认的方式导致批量数据传输的效率低实时性差,同时,协议的复杂度较高,不利于简化的嵌入式系统使用。
发明内容
本申请的目的是提供一种基于CAN总线的协议栈通信方法,能够降低CAN总线在应用层中的协议复杂度,提高消息传输效率,有效保证消息传输的实时性。其具体方案如下:
第一方面,本申请公开了一种基于CAN总线的协议栈通信方法,包括:
当获取到应用层的消息后,将所述消息进行拆分,得到目标报文;
根据所述消息对应的传输格式,将所述目标报文填充到所述传输格式的数据域,并将所述目标报文对应的报文参数添加到所述传输格式的ID域,生成CAN报文;
将所述CAN报文添加到CAN总线进行传输;
当接收方从所述CAN总线接收到所述CAN报文后,根据所述CAN报文的ID域中的报文参数,对所述CAN报文进行重组,得到所述消息并存储到接收端内存,以使接收方读取所述消息。
可选的,所述当接收方从所述CAN总线接收到所述CAN报文后,根据所述CAN报文的ID域中的报文参数,对所述CAN报文进行重组,得到所述消息,包括:
当接收方从所述CAN总线接收到所述CAN报文后,根据所述CAN报文的ID域中所述报文参数的消息组,对所述CAN报文进行分组;
对分组后的CAN报文,根据所述报文参数中的报文序号,对所述CAN报文进行排序,生成所述消息。
可选的,根据所述报文参数中的报文序号,对所述CAN报文进行排序,生成所述消息,包括:
根据所述报文参数中的报文序号,对所述CAN报文进行排序,生成初始消息;
当检测到所述初始消息存在遗漏的CAN报文,发送远程报文请求,以使所述遗漏的CAN报文重新发送;
将所述遗漏的CAN报文添加到所述初始消息,得到所述消息。
可选的,当接收方从所述CAN总线接收到所述CAN报文之后,根据所述CAN报文的ID域的报文参数,对所述CAN报文进行重组之前,还包括:
根据所述CAN报文的ID域中的兼容校验位进行校验;
若校验通过,则执行所述根据所述CAN报文的ID域的报文参数,对所述CAN报文进行重组的步骤;
若校验未通过,则将未校验通过的CAN报文抛弃或添加到其他待处理队列。
可选的,将所述CAN报文添加到CAN总线进行传输,包括:
将所述CAN报文添加到CAN发送缓冲区;
若检测到当前网络良好或所述CAN总线空闲时,将所述CAN发送缓存区的所述CAN报文发送至所述CAN总线进行传输。
第二方面,本申请公开了一种基于CAN总线的协议栈通信装置,包括:
拆分模块,用于当获取到应用层的消息后,将所述消息进行拆分,得到目标报文;
生成模块,用于根据所述消息对应的传输格式,将所述目标报文填充到所述传输格式的数据域,并将所述目标报文对应的报文参数添加到所述传输格式的ID域,生成CAN报文;
添加模块,用于将所述CAN报文添加到CAN总线进行传输;
重组模块,用于当接收方从所述CAN总线接收到所述CAN报文后,根据所述CAN报文的ID域中的报文参数,对所述CAN报文进行重组,得到所述消息并存储到接收端内存,以使接收方读取所述消息。
第三方面,本申请公开了一种基于CAN总线的协议栈通信系统,包括:
发送方,用于发送消息至协议栈;
所述协议栈,用于执行所述计算机程序时实现如上述基于CAN总线的协议栈通信方法的步骤;
接收方,用于从所述协议栈的接收端内存中读取所述消息。
可选的,所述发送方和所述接收方还用于根据所述消息的特征,约定所述消息的消息类型,并根据所述消息类型,选取对应的通信端口。
第四方面,本申请公开了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述基于CAN总线的协议栈通信方法的步骤。
第五方面,本申请公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述基于CAN总线的协议栈通信方法的步骤。
本申请提供一种基于CAN总线的协议栈通信方法,包括:当获取到应用层的消息后,将所述消息进行拆分,得到目标报文;根据所述消息对应的传输格式,将所述目标报文填充到所述传输格式的数据域,并将所述目标报文对应的报文参数添加到所述传输格式的ID域,生成CAN报文;将所述CAN报文添加到CAN总线进行传输;当接收方从所述CAN总线接收到所述CAN报文后,根据所述CAN报文的ID域中的报文参数,对所述CAN报文进行重组,得到所述消息并存储到接收端内存,以使接收方读取所述消息。
可见,本申请通过将消息按照传输格式进行填充,生成CAN报文,当接收方从所述CAN总线接收到该CAN报文后,再对CAN报文进行重组得到原始消息即应用层的消息并存储到接收端内存,以供接收方读取。即本申请不存在主从结构,各个节点设备之间相互独立,不依赖任何设备,也就是说脱离其他设备也可正常运行,只需要对消息拆分、重组以及格式改变,接收方就可得到发送方的消息,避免了相关技术中采用CANOpen等方式对整个总线进行统一管理,从而降级为主从结构,限制了总线网络中设备功能独立性,且数据传输交互复杂度高实时性差的缺陷。本申请能够降低CAN总线在应用层中的协议复杂度,提高了消息传输效率,有效保证消息传输的实时性。本申请同时还提供了一种基于CAN总线的协议栈通信装置、一种基于CAN总线的协议栈通信系统、一种电子设备和计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种基于CAN总线的协议栈通信方法的流程图;
图2a为本申请实施例所提供的一种具体的单报文发送的流程示意图;
图2b为本申请实施例所提供的一种具体的单报文接收的流程示意图;
图3a为本申请实施例所提供的一种具体的数据流或数据帧发送的流程示意图;
图3b为本申请实施例所提供的一种具体的数据流或数据帧接收的流程示意图;
图4为本申请实施例所提供的一种基于CAN总线的协议栈通信装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
由于CAN总线只定义了物理层和数据链路层,并未对更高层的应用层提出规范或建议。相关计划中采用CANOpen等作为协议栈对整个总线进行统一管理,将CAN总线从无主机结构降级成为了主-从结构,限制了整个总线网络中的设备功能独立性,并在数据块传输中带来复杂的传输交互流程及实时性问题,以及使用时间触发、消息触发等机制对CAN总线标准的限制;或者在应用层中需要根据CAN通信的特点制定服务之间的通信方式及结构,增加了应用层的复杂度和重复开发。基于上述技术问题,本实施例提供一种基于CAN总线的协议栈通信方法,不存在主从结构,各个节点设备之间相互独立,不依赖任何设备,能够降低CAN总线在应用层中的协议复杂度,提高了消息传输效率,有效保证消息传输的实时性,具体请参考图1,图1为本申请实施例所提供的一种基于CAN总线的协议栈通信方法的流程图,具体包括:
S101、当获取到应用层的消息后,将消息进行拆分,得到目标报文。
可以理解的是,本实施例的执行主体可以为协议栈。本实施例中的消息为CAN总线应用层中发送的一个消息体,具备优先级、类型、端口号、数据体、数据长度。本实施例并不限定消息的消息长度,可根据实际情况进行设定。本实施例也不限定消息的消息类型,可以是单报文的类型,可以是数据流类型,可以是消息帧类型。其中,单报文指使用1帧CAN报文即目标报文传输1个消息;数据流指协议栈在数据传输中,将消息处理为有序的数据队列,并不保证数据包粘连处理;数据帧指传输过程中,将消息处理为有边界、长度的数据格式,提供对消息的完整性、粘包处理;可选地,可提供对消息的顺序保证。本实施例中当接收到发送方的消息后,拆分该消息得到目标报文。本实施例并不限定目标报文的数量,根据消息的消息长度而定,具体的,若消息的消息长度为N,那么目标报文的数量可以是N/8或N/8+1。相应的,本实施例也不限定目标报文的类型,根据消息的消息类型而定。
S102、根据消息对应的传输格式,将目标报文填充到传输格式的数据域,并将目标报文对应的报文参数添加到传输格式的ID域,生成CAN报文。
本实施例并不限定传输格式的具体格式,可以是拓展帧格式,可以是标准帧格式。可以理解的是,若当前的通信端口属于拓展帧格式的端口,那么目标报文按照拓展帧格式进行数据域和ID域填充;若当前的通信端口属于标准帧格式的端口,那么目标报文按照标准帧格式进行数据域和ID域填充。可以理解的是,数据域中填充的是数据内容(用于传输消息中数据的分段内容),也就是拆分成的目标报文。本实施例中并不限定目标报文填充在数据域中的顺序,可以是顺序填充,也可以是逆序填充。ID域中填充的是目标报文对应的报文参数。本实施例中的ID域可分为优先级、识别码、端口号、消息组、兼容校验、报文序号等可选的6段,并可根据需求,最少可只实现其中的端口号、报文序号两段。本实施例并不限定报文参数的具体内容,可以包括端口号、报文序号,还可以包括优先级、识别码、兼容检验、消息组,可根据具体选择的目标帧格式而定。
需要说明的是,本实施例中的端口号指的是应用层用于通信中约定收发地址,在同一消息中不会变化;端口号可根据服务需求制定。报文序号,用来标识多帧报文在本消息中的编号,用于接收方对消息进行还原、重排等操作;同一消息中的不同报文具有不同报文序号。优先级,用于在CAN总线传输目标报文时,手动调整目标报文在竞争中的硬件优先级,由CAN硬件设备处理。识别码,用于分辨消息或目标报文的消息类型,在同一类型消息中应相同或有关联;可包括但不限于单报文、数据流、数据帧起始、数据帧传输、数据帧结束。兼容校验,用于对ID域中除校验位外的报文参数进行规则校验,检测目标报文是否是来自与本协议系统兼容的设备,计算方式可包括奇偶校验或异或校验等。消息组,用于区分不同的消息编号,在发送时,同一个消息的不同报文具有相同的消息组;对于批量数据而言不同消息中应具有不同的消息组序号即消息组。
本实施例中并不限定拓展帧格式的具体形式,下面给出一种具体的拓展帧格式的示例。ID域中的29bit报文参数排序顺序可以为bit0~7:报文序号,bit8~11:消息组,bit12:兼容校验,bit13~24:端口号,bit25~26:识别码,bit27~28:优先级;数据域可以为byte0~7:数据内容。本实施例中也不限定标准格式的具体形式,例如可以是bit0~5:报文序号,bit6~10:端口号;数据域可以为byte0~7:数据内容。
S103、将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设备硬件发送FIFO,也可以是软件实现的CAN发送FIFO等。当硬件、软件系统将在可以发送CAN报文时,将CAN发送缓冲区的CAN报文发送到CAN总线中。能够利用CAN总线自身的竞争机制,提高发送的成功率和传输效率。
S104、当接收方从CAN总线接收到CAN报文后,根据CAN报文的ID域中的报文参数,对CAN报文进行重组,得到消息并存储到接收端内存,以使接收方读取消息。
本实施例中当接收到CAN报文后,根据ID域中的报文参数对CAN报文进行重组,并将得到的消息存储到接收端内存供接收方读取消息。可以理解的是,本实施例中的接收方为实现本协议栈接收重组功能的、在CAN总线中等待数据的设备。对应的,发送方指的是实现了本协议栈发送功能的,需要在CAN总线中发送数据的设备。本实施例中的接收端内存即为通信接收端口,具有明确端口号、能对消息进行存储、解析的一系列内存实例、软件算法、回调对象等资源的集合。本实施例中的发送方与接收方通过CAN总线连接。
本实施例并不限定对CAN报文重组的具体过程。在一种具体的实施例中,当接收方从CAN总线接收到CAN报文后,根据CAN报文的ID域中的报文参数,对CAN报文进行重组,得到消息,可以包括:
当接收方从CAN总线接收到CAN报文后,根据CAN报文的ID域中报文参数的消息组,对CAN报文进行分组;
对分组后的CAN报文,根据报文参数中的报文序号,对CAN报文进行排序,生成消息。
可以理解的是,消息组是用来区别目标报文是否属于同一消息的,若消息组相同,则代表属于同一消息;若消息组不同,则属于不同的消息。也就是对消息组相同的CAN报文进行分组划分为同一消息。还可以理解的是,对消息进行拆分为N/8或N/8+1条目标报文,各个目标报文需要用报文序号来表示在消息中的顺序。所以,本实施例对CAN报文进行分组后,还需要根据各个目标报文的报文序号进行排序,生成得到消息。
本实施例也不限定对CAN报文进行排序,生成消息的具体过程。在一种具体的实施例中,根据报文参数中的报文序号,对CAN报文进行排序,生成消息,可以包括:
根据报文参数中的报文序号,对CAN报文进行排序,生成初始消息;
当检测到初始消息存在遗漏的CAN报文,发送远程报文请求,以使遗漏的CAN报文重新发送;
将遗漏的CAN报文添加到初始消息,得到消息。
本实施例在根据报文序号对CAN报文进行排序后,还进行了是否存在遗漏的CAN报文的判断;当检测到存在遗漏的情况时,通过发送远程请求,以使遗漏的CAN报文重新发送。可以理解的是,在协议栈的通信发送端口可对目标报文进行一定周期的暂存,当接收到该远程报文请求后,在暂存的数据即所有目标报文中查找到对应的报文再次启动其发送。需要说明的是,本实施例中的通信发送端口,可记录发送端口的端口号、消息组、序号、识别码、报文等数据的内存或软件算法资源集合。当得到遗漏的CAN报文后,将该报文再添加到初始消息中,还原得到最终的消息。
在一种具体的实施例中,为了保证本协议栈系统内的其他设备正常通信,当接收方从CAN总线接收到CAN报文之后,根据CAN报文的ID域的报文参数,对CAN报文进行重组之前,还可以包括:
根据CAN报文中ID域中的兼容校验位进行校验;
若校验通过,则执行根据CAN报文的ID域的报文参数,对CAN报文进行重组的步骤;
若校验未通过,则将未校验通过的CAN报文抛弃或添加到其他待处理队列。
即本实施例中对CAN报文进行重组之前,还需对CAN报文中的兼容校验位进行校验,例如可以根据格式拓展帧中的bit12的数值进行校验,判断是否与本协议栈系统兼容,若校验未通过,可将未通过的CAN报文抛弃或添加到其他待处理队列以供兼容性处理。能够保证本协议栈系统内的其他设备正常通信,防止被协议栈不兼容的设备干扰。
基于上述技术方案,本实施例中CAN总线设备不存在主从结构,各个节点设备之间相互独立,不依赖任何设备,脱离其他设备也可正常运行,只需要对消息拆分、重组以及格式改变,接收方就可得到发送方的消息,避免了相关技术中采用CANOpen方式对整个总线进行统一管理,从而降级为主从结构,限制了总线网络中设备功能独立性,且数据传输交互复杂度高实时性差的缺陷,能够降低CAN总线在应用层中的协议复杂度,在保证消息安全的同时尽可能满足单报文传输的实时性、长数据即数据流或数据帧传输的易用性。
下面提供针对不同的消息类型进行协议栈通信的具体实施例,其中,协议栈分为发送拆分和接收重组两部分。
1、单报文类型
(1)单报文发送
使用单报文时,消息长度不应超过一个报文可发送的数据长度,消息拆分将只拆分成1个目标报文;
根据消息类型修改识别码,即将识别码设置为单报文对应的识别码;
修改消息组、修改报文序号,可以理解为针对单报文的端口拓展的子协议组序号修改;即,对应端口可以传输多种不同的数据格式,每一种数据格式对应一种特定的消息组、报文序号组合。
(2)单报文接收
将生成的消息放入到匹配的通信接收端口内存即接收端内存中,待持有对应资源的软件进行读取操作;
对通信接收端口匹配的回调对象进行回调操作。
图2a为本实施例提供的一种具体的单报文发送的流程示意图,图2b为本实施例提供的一种具体的单报文接收的流程示意图。
2、数据流类型
(1)数据流发送
消息将被拆分成N/8个目标报文;
根据消息类型修改识别码,即将识别码设置为数据流对应的识别码;
修改消息组,即对现有消息组序号进行变更;
修改报文序号,可以为根据目标报文在消息中的顺序,对报文序号进行从0开始的递增,或为自上次成功发送后的序号继续增量编号;
收到远程报文请求后,在通信发送端口的暂存数据中查找对应的目标报文并再次启动其发送。
(2)数据流接收
对接收到的CAN报文,先按消息组进行分组;
对分组后的CAN报文,按报文序号进行排序,排序方式可参考数据流发送;
对排序后,存在遗漏的CAN报文,视为传输错误,可通过发送规则推导对应缺失的CAN报文ID域,并通过远程报文请求重发该遗漏的CAN报文;
对排序后序号连续的CAN报文,组合成为消息放入到匹配的通信接收端口内存中;
对匹配的回调对象进行回调操作。
3、数据帧类型
(1)数据帧发送
消息将被拆分成N/8个报文;
若最后一个报文数据长度为8,则再追加1个数据长度为0的数据报文;
根据消息类型修改识别码,可以理解为即将第0个报文的识别码设置为数据帧起始、中间报文的识别码设置为数据帧传输;最后一个报文的识别码设置为数据帧结束;或将所有的报文识别码均设置为相同的数据帧识别码,结合消息序号、最后一个报文长度进行判断数据帧起始、数据帧结束。
修改消息组,即对现有消息组序号进行变更。
修改报文序号,可以为根据目标报文在消息中的顺序,对报文序号进行从0开始的递增,或报文总数开始递减。
收到远程帧请求后,在通信发送端口的暂存数据中查找对应的报文并再次启动其发送。
(2)数据帧接收
对接收到的CAN报文,按消息组进行分组并检查完整性;
收到报文数据长度不为8或收到明确的数据帧结束时,对相应分组后的CAN报文,按报文序号进行排序,排序方式参考数据帧发送;
对排序后,中间遗漏的CAN报文,视为传输错误;通过发送规则推导对应缺失的CAN报文的ID域,并通过远程报文请求重发该遗漏的CAN报文;
对排序后序号连续的CAN报文,组合成为消息放入到匹配的通信接收端口内存中;
对匹配的回调对象进行回调操作。
图3a为本实施例提供的一种具体的数据流或数据帧发送的流程示意图,图3b为本实施例提供的一种具体的数据流或数据帧接收的流程示意图。
以下为本申请实施例提出了又一种基于CAN2.0B拓展帧的实现方法的具体实施例。通过对拓展帧格式的ID域的结构充分使用,实现了带4096个消息端口、单次消息传输可以最大2048字节或可实现2048个单报文的子协议。可以理解的是,本实施例提出的优先级、兼容校验、消息组等概念,是基于硬件优先级需求、安全等方面原因提出的;通过对优先级、兼容校验、消息组的精简,抛弃远程报文请求并压缩端口号、报文序号的位长度,可得到标准帧格式。
在一种具体的拓展帧格式的实施例中,ID域中的29bit报文参数排序顺序可以为bit0~7:报文序号,bit8~11:消息组,bit12:兼容校验,bit13~24:端口号,bit25~26:识别码,bit27~28:优先级;数据域可以为byte0~7:数据内容。在一种具体的标准帧格式的实施例中,ID域中的报文参数排序可以为bit0~5:报文序号,bit6~10:端口号;数据域可以为byte0~7:数据内容。
下面为本实施例所定义的基于CAN2.0B拓展帧格式的ID域位划分方式,可以包括:
2bit优先级;默认为3。
2bit识别码;包含:0-单报文、1-数据流、2-数据帧;
12bit端口号;
3bit消息组;
8bit报文序号;
通信发送端口,可包含:发送方发送的端口号、消息类型、上次传输报文序号、报文缓存空间即CAN报文在通信发送端口暂存位置;
通信接收端口,可包含:接收方实现接收的端口号、接收类型、接收报文缓存空间即接收端内存、消息数据空间、定义的自协议及对应的回调函数;
校验方法:通过对bit28~bit9除去bit12外进行从高到低异或校验;
未实现远程报文重传请求。
下面对本申请实施例提供的一种基于CAN总线的协议栈通信装置进行介绍,下文描述的基于CAN总线的协议栈通信装置与上文描述的基于CAN总线的协议栈通信方法可相互对应参照,相关模块均设置于中,参考图4,图4为本申请实施例所提供的一种基于CAN总线的协议栈通信装置的结构示意图,包括:
在一些具体的实施例中,具体包括:
拆分模块401,用于当获取到应用层的消息后,将消息进行拆分,得到目标报文;
生成模块402,用于根据消息对应的传输格式,将目标报文填充到传输格式的数据域,并将目标报文对应的报文参数添加到传输格式的ID域,生成CAN报文;
添加模块403,用于将CAN报文添加到CAN总线进行传输;
重组模块404,用于当接收方从CAN总线接收到CAN报文后,根据CAN报文的ID域中的报文参数,对CAN报文进行重组,得到消息并存储到接收端内存,以使接收方读取消息。
在一些具体的实施例中,重组模块404,包括:
分组单元,用于当接收方从CAN总线接收到CAN报文后,根据CAN报文的ID域中报文参数的消息组,对CAN报文进行分组;
排序单元,用于对分组后的CAN报文,根据报文参数中的报文序号,对CAN报文进行排序,生成消息。
在一些具体的实施例中,排序单元,包括:
排序子单元,用于根据报文参数中的报文序号,对CAN报文进行排序,生成初始消息;
重新请求子单元,用于当检测到初始消息存在遗漏的CAN报文,发送远程报文请求,以使遗漏的CAN报文重新发送;
添加子单元,用于将遗漏的CAN报文添加到初始消息,得到消息。
在一些具体的实施例中,还包括:
校验模块,用于根据CAN报文中ID域中的兼容校验位进行校验;
抛弃添加模块,用于若校验未通过,则将未校验通过的CAN报文抛弃或添加到其他待处理队列。
在一些具体的实施例中,添加模块,包括:
添加单元,用于将CAN报文添加到CAN发送缓冲区;
发送单元,用于若检测到当前网络良好或CAN总线空闲时,将CAN发送缓存区的CAN报文发送至CAN总线进行传输。
由于基于CAN总线的协议栈通信装置部分的实施例与基于CAN总线的协议栈通信方法部分的实施例相互对应,因此基于CAN总线的协议栈通信装置部分的实施例请参见基于CAN总线的协议栈通信方法部分的实施例的描述,这里暂不赘述。
本申请还公开一种基于CAN总线的协议栈通信系统,包括:
发送方,用于发送消息至协议栈;
协议栈,用于执行计算机程序时实现如上述基于CAN总线的协议栈通信方法的步骤;
接收方,用于从协议栈的接收端内存中读取消息。
在一些具体的实施例中,发送方和接收方还用于根据消息的特征,约定消息的消息类型,并根据消息类型,选取对应的通信端口。
本实施例并不限定特征的具体内容,可以包括消息长度、消息结构、频率、是否可丢失、消息边界是否可确认等。可以理解的是,本实施例中的消息长度可以小于8字节,可以大于8字节,可根据实际情况进行设定;本实施例中的消息结构可理解为当消息的长度为20字节时,前10个字节对应名字,第11个字节对应年龄,第12个字节对应工作时间等。可选的,为了能够有效提升资源的利用率,当消息的消息长度小于等于8字节时,可选择单报文进行数据传输。能够有效提升资源的利用率,提高数据传输效率,避免使用数据流或数据帧进行数据传输,产生很多无效位,造成资源浪费的缺陷。
由于基于CAN总线的协议栈通信系统部分的实施例与基于CAN总线的协议栈通信方法部分的实施例相互对应,因此基于CAN总线的协议栈通信系统部分的实施例请参见基于CAN总线的协议栈通信方法部分的实施例的描述,这里暂不赘述。
下面对本申请实施例提供的一种电子设备进行介绍,下文描述的电子设备与上文描述的基于CAN总线的协议栈通信方法可相互对应参照。
本申请还公开一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述基于CAN总线的协议栈通信方法的步骤。
CAN收发器,与处理器连接并受处理器控制,可以将CAN报文发送到CAN总线和/或从CAN总线中接收CAN报文。
由于电子设备部分的实施例与基于CAN总线的协议栈通信方法部分的实施例相互对应,因此电子设备部分的实施例请参见基于CAN总线的协议栈通信方法部分的实施例的描述,这里暂不赘述。
下面对本申请实施例提供的一种计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的基于CAN总线的协议栈通信方法可相互对应参照。
本申请还公开一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述基于CAN总线的协议栈通信方法的步骤。
由于计算机可读存储介质部分的实施例与基于CAN总线的协议栈通信方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见基于CAN总线的协议栈通信方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种基于CAN总线的协议栈通信方法、装置、系统、电子设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (10)
1.一种基于CAN总线的协议栈通信方法,其特征在于,包括:
当获取到应用层的消息后,将所述消息进行拆分,得到目标报文;
根据所述消息对应的传输格式,将所述目标报文填充到所述传输格式的数据域,并将所述目标报文对应的报文参数添加到所述传输格式的ID域,生成CAN报文;
将所述CAN报文添加到CAN总线进行传输;
当接收方从所述CAN总线接收到所述CAN报文后,根据所述CAN报文的ID域中的报文参数,对所述CAN报文进行重组,得到所述消息并存储到接收端内存,以使接收方读取所述消息。
2.根据权利要求1所述的基于CAN总线的协议栈通信方法,其特征在于,所述当接收方从所述CAN总线接收到所述CAN报文后,根据所述CAN报文的ID域中的报文参数,对所述CAN报文进行重组,得到所述消息,包括:
当接收方从所述CAN总线接收到所述CAN报文后,根据所述CAN报文的ID域中所述报文参数的消息组,对所述CAN报文进行分组;
对分组后的CAN报文,根据所述报文参数中的报文序号,对所述CAN报文进行排序,生成所述消息。
3.根据权利要求2所述的基于CAN总线的协议栈通信方法,其特征在于,根据所述报文参数中的报文序号,对所述CAN报文进行排序,生成所述消息,包括:
根据所述报文参数中的报文序号,对所述CAN报文进行排序,生成初始消息;
当检测到所述初始消息存在遗漏的CAN报文,发送远程报文请求,以使所述遗漏的CAN报文重新发送;
将所述遗漏的CAN报文添加到所述初始消息,得到所述消息。
4.根据权利要求1所述的基于CAN总线的协议栈通信方法,其特征在于,当接收方从所述CAN总线接收到所述CAN报文之后,根据所述CAN报文的ID域的报文参数,对所述CAN报文进行重组之前,还包括:
根据所述CAN报文的ID域中的兼容校验位进行校验;
若校验通过,则执行所述根据所述CAN报文的ID域的报文参数,对所述CAN报文进行重组的步骤;
若校验未通过,则将未校验通过的CAN报文抛弃或添加到其他待处理队列。
5.根据权利要求1所述的基于CAN总线的协议栈通信方法,其特征在于,将所述CAN报文添加到CAN总线进行传输,包括:
将所述CAN报文添加到CAN发送缓冲区;
若检测到当前网络良好或所述CAN总线空闲时,将所述CAN发送缓存区的所述CAN报文发送至所述CAN总线进行传输。
6.一种基于CAN总线的协议栈通信装置,其特征在于,包括:
拆分模块,用于当获取到应用层的消息后,将所述消息进行拆分,得到目标报文;
生成模块,用于根据所述消息对应的传输格式,将所述目标报文填充到所述传输格式的数据域,并将所述目标报文对应的报文参数添加到所述传输格式的ID域,生成CAN报文;
添加模块,用于将所述CAN报文添加到CAN总线进行传输;
重组模块,用于当接收方从所述CAN总线接收到所述CAN报文后,根据所述CAN报文的ID域中的报文参数,对所述CAN报文进行重组,得到所述消息并存储到接收端内存,以使接收方读取所述消息。
7.一种基于CAN总线的协议栈通信系统,其特征在于,包括:
发送方,用于发送消息至协议栈;
所述协议栈,用于执行所述计算机程序时实现如权利要求1至5任一项所述基于CAN总线的协议栈通信方法的步骤;
接收方,用于从所述协议栈的接收端内存中读取所述消息。
8.根据权利要求7所述的基于CAN总线的协议栈通信系统,其特征在于,所述发送方和所述接收方还用于根据所述消息的特征,约定所述消息的消息类型,并根据所述消息类型,选取对应的通信端口。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述基于CAN总线的协议栈通信方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述基于CAN总线的协议栈通信方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110318942.4A CN113079074A (zh) | 2021-03-25 | 2021-03-25 | 一种基于can总线的协议栈通信方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110318942.4A CN113079074A (zh) | 2021-03-25 | 2021-03-25 | 一种基于can总线的协议栈通信方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113079074A true CN113079074A (zh) | 2021-07-06 |
Family
ID=76610263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110318942.4A Pending CN113079074A (zh) | 2021-03-25 | 2021-03-25 | 一种基于can总线的协议栈通信方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113079074A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113810471A (zh) * | 2021-08-18 | 2021-12-17 | 深圳市元征科技股份有限公司 | 一种数据传输方法、发送设备及接收设备 |
CN115314338A (zh) * | 2022-07-27 | 2022-11-08 | 湖南航天机电设备与特种材料研究所 | 一种实时性运动控制方法及系统 |
CN115442177A (zh) * | 2022-08-22 | 2022-12-06 | 远峰科技股份有限公司 | 一种can网络的数据通信方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560806A (zh) * | 2004-03-04 | 2005-01-05 | 深圳市泛海三江电子有限公司 | 基于can2.0b的火灾报警应用层数据传输方法 |
CN101764730A (zh) * | 2009-12-18 | 2010-06-30 | 航天东方红卫星有限公司 | 一种can总线数据传输方法 |
CN102932224A (zh) * | 2012-11-23 | 2013-02-13 | 哈尔滨工业大学 | 基于can网络的数据通讯系统及基于该系统的数据通讯方法 |
CN107147478A (zh) * | 2017-07-07 | 2017-09-08 | 河南辉煌科技股份有限公司 | 基于can2.0长报文数据标准帧的组织算法 |
CN107919947A (zh) * | 2017-11-28 | 2018-04-17 | 南瑞集团有限公司 | 一种can总线长报文传输的编码方法 |
WO2020148746A1 (en) * | 2019-01-20 | 2020-07-23 | Arilou Information Security Technologies Ltd. | System and method for data compression based on data position in frames structure |
-
2021
- 2021-03-25 CN CN202110318942.4A patent/CN113079074A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560806A (zh) * | 2004-03-04 | 2005-01-05 | 深圳市泛海三江电子有限公司 | 基于can2.0b的火灾报警应用层数据传输方法 |
CN101764730A (zh) * | 2009-12-18 | 2010-06-30 | 航天东方红卫星有限公司 | 一种can总线数据传输方法 |
CN102932224A (zh) * | 2012-11-23 | 2013-02-13 | 哈尔滨工业大学 | 基于can网络的数据通讯系统及基于该系统的数据通讯方法 |
CN107147478A (zh) * | 2017-07-07 | 2017-09-08 | 河南辉煌科技股份有限公司 | 基于can2.0长报文数据标准帧的组织算法 |
CN107919947A (zh) * | 2017-11-28 | 2018-04-17 | 南瑞集团有限公司 | 一种can总线长报文传输的编码方法 |
WO2020148746A1 (en) * | 2019-01-20 | 2020-07-23 | Arilou Information Security Technologies Ltd. | System and method for data compression based on data position in frames structure |
Non-Patent Citations (1)
Title |
---|
许杭等: "CAN总线上层协议的设计", 《计算机工程》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113810471A (zh) * | 2021-08-18 | 2021-12-17 | 深圳市元征科技股份有限公司 | 一种数据传输方法、发送设备及接收设备 |
CN113810471B (zh) * | 2021-08-18 | 2024-05-14 | 深圳市元征科技股份有限公司 | 一种数据传输方法、发送设备及接收设备 |
CN115314338A (zh) * | 2022-07-27 | 2022-11-08 | 湖南航天机电设备与特种材料研究所 | 一种实时性运动控制方法及系统 |
CN115314338B (zh) * | 2022-07-27 | 2024-03-12 | 湖南航天机电设备与特种材料研究所 | 一种实时性运动控制方法及系统 |
CN115442177A (zh) * | 2022-08-22 | 2022-12-06 | 远峰科技股份有限公司 | 一种can网络的数据通信方法和装置 |
CN115442177B (zh) * | 2022-08-22 | 2023-09-29 | 远峰科技股份有限公司 | 一种can网络的数据通信方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101298407B1 (ko) | 데이터 패킷의 송신 방법 및 장치, 데이터 패킷의 수신 방법 및 장치 | |
CN113079074A (zh) | 一种基于can总线的协议栈通信方法、装置和存储介质 | |
CN111083161A (zh) | 数据传输的处理方法及装置、物联网设备 | |
CN112153696B (zh) | Rlc sdu分段处理方法、装置及终端 | |
CN108632326B (zh) | 一种协议数据单元传输数据的方法及装置 | |
WO2023098430A1 (zh) | 一种数据包的处理方法、通信装置及通信系统 | |
US9819602B2 (en) | Efficient datagram segmentation and reassembly for packet-switched networks | |
CN113938431B (zh) | 突发数据包传输方法、装置和电子设备 | |
WO2021208694A1 (zh) | 一种数据传输方法及网络设备 | |
CN105763375B (zh) | 一种数据包发送方法、接收方法及微波站 | |
CN113556290B (zh) | 基于帧特征符的fc帧冗余接收方法、系统、设备及介质 | |
CN114499777B (zh) | 一种集群无人系统数据传输方法 | |
WO2022105753A1 (zh) | 网络数据编码传输方法及装置 | |
CN115348336A (zh) | 异构数据流的通用传输架构 | |
CN115714991A (zh) | 时间明晰网络数据包的传输方法、设备及存储介质 | |
KR100918735B1 (ko) | 이동통신 시스템에서 패킷 송수신 방법 및 장치 | |
CN114070475A (zh) | 比特块的发送方法及装置 | |
EP3829134B1 (en) | Method for transferring large amounts of data through a telematic network in an efficient and reliable manner and at high-speed | |
CN116032421B (zh) | 以太网链路控制装置和存储介质 | |
CN117955926B (zh) | 毫米波的数据面调度方法、装置及设备 | |
EP1873995A2 (en) | Data transmission device, data reception device and data communication method | |
CN116963163A (zh) | 状态报告生成方法、装置、计算机设备及可读介质 | |
CN116582598A (zh) | 一种物联网设备轻量级通信方法、系统、设备及介质 | |
CN118540283A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210706 |
|
RJ01 | Rejection of invention patent application after publication |