一种基于汽车CAN总线数据采集系统的数据采集方法与流程

文档序号:12134111阅读:526来源:国知局

本发明属于汽车电子技术领域,具体涉及一种基于汽车CAN总线数据采集系统的数据采集方法。



背景技术:

在汽车电子领域,整车网络化是最为重要的发展趋势。在网络化的情况下,各个电子系统采用统一的总线进行通信。如今,CAN总线已发展为车辆电子系统的主流总线,因此车载电子设备采用CAN通信标准交换数据是今后的发展方向。随着数字技术的进步,软件就是仪器的思想已广泛运用到各种领域的监测和控制系统中。将嵌入式计算机应用于汽车领域,用软件的方法实现汽车仪表和汽车信息系统,改善了仪表的精度、实时性和档次,使原来只有豪华级汽车才能采用的技术应用于针对普通消费者的汽车中,从而可以满足人们对汽车综合性能的要求。在这种情况下,现场采集数据是非常重要的。

现场数据采集一般有两CAN总线与RS485总线两种有线组网方式,但是RS485采用主从多址轮询的方式,实现多址介入,轮询周期随着节点数量的增大而加长,影响数据传输的实时性。而CAN总线是一宗有效支持分布式控制或实时控制的串行通信网络,它可靠性高,且网络内的节点个数在理论上不受限制,各节点之间实现自由通信。因此,出现了基于CAN总线汽车数据采集的方法。作为目前最流行的现场总线技术之一的CAN总线,是一种串行通讯协议,是一种基于微控制器件的网络,其通讯接口中集成了CAN协议的物理层和数据链接层功能。

基于CAN总线汽车数据采集的方法的缺陷在于:CAN总线会受到空间干扰、电源波动的影响,有时候会启动错误帧,通知发送器重发数据,同时丢掉错误的数据帧。另一方面,CAN总线在不同状态中节点的发送有不同的延迟。



技术实现要素:

针对上述现有技术中存在的问题,本发明的目的在于提供一种可避免出现上述技术缺陷的基于汽车CAN总线数据采集系统的数据采集方法,以便在CAN通信设备驱动程序中,增强CAN通信的通信能力、提高通信效率。

为了实现上述发明目的,本发明提供的技术方案如下:

一种基于汽车CAN总线数据采集系统的数据采集方法,通过汽车CAN总线数据采集系统进行数据采集,所述汽车CAN总线数据采集系统包括依次连接的系统CAN总线、CAN驱动器、CAN模块以及分别与CAN模块相连接的SD卡模块、LED模块、上位机交互模块。

进一步地,所述数据采集方法包括:

系统CAN总线与汽车CAN总线对接,设置好波特率;

CAN驱动器将采集到的CAN数据先保存到一个环形缓冲区里面,以供给多个模块调用;

CAN模块从CAN驱动器中获取数据,将数据写入另一个环形缓冲区中,然后再将数据过滤转发给SD卡模块或LED模块或上位机交互模块;

上位机交互模块接收CAN模块过滤转发的数据并进行分析处理,然后根据从电脑终端输入的命令来执行电脑终端命令数据操作。

进一步地,所述电脑终端命令数据操作包括帮助命令、版本命令、显示数据命令、设置波特率、发送数据帧、设置过滤模式、实时发送数据。

进一步地,所述CAN模块包括槽,所述槽内包括CAN过滤器和环形缓冲区。

进一步地,所述SD卡模块包括互相连接的微处理器和SD卡,所述微处理器与CAN模块相连接。

进一步地,所述LED模块包括互相连接的微处理器和LED,所述微处理器与CAN模块相连接。

本发明提供的基于汽车CAN总线数据采集系统的数据采集方法,将CAN总线发出的数据都放在同一个环形缓冲区,使用环形缓冲区可以使得读写数据并发执行,方便了缓存的使用和管理,提高了CAN总线的通信效率和通信能力,同时在上位机中使用本系统设置的命令来查看所需的CAN总线发送的时间和数据,提高了系统的实时性和可靠性,提高了通信效率;本发明可以实时采集车辆状况的数据,并通过CAN总线把数据传至上位机,上位机动态显示数据变化,同时采集器的命令可由上位机进行设定,比如可以设置CAN总线工作模式的波特率,使采集器和汽车CAN总线互相通讯;也可以通过设置过滤模式进入ID列表,了解它有哪些ID的数据帧是已经发送过来的,还可以将这些采集到的数据保存到SD卡指定的文件或新生成的文件中,可以很好地满足实际应用的需要。

附图说明

图1为汽车CAN总线数据采集系统的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施例对本发明做进一步说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

一种基于汽车CAN总线数据采集系统的数据采集方法,通过汽车CAN总线数据采集系统进行数据采集,如图1所示,所述汽车CAN总线数据采集系统包括依次连接的系统CAN总线、CAN驱动器、CAN模块以及分别与CAN模块相连接的SD卡模块、LED模块、上位机交互模块Mutual;所述SD卡模块包括互相连接的微处理器stm32和SD卡,所述微处理器stm32与CAN模块相连接;所述LED模块包括互相连接的微处理器stm32和LED,所述微处理器stm32与CAN模块相连接。

所述基于汽车CAN总线数据采集系统的数据采集方法包括以下步骤:

系统CAN总线与汽车CAN总线对接,设置好波特率;

CAN驱动器将采集到的CAN数据先保存到一个环形缓冲区里面,以供给多个模块调用;

CAN模块从CAN驱动器中获取数据,将数据写入另一个环形缓冲区中,然后再将数据过滤转发给SD卡模块或LED模块或上位机交互模块Mutual;

上位机交互模块Mutual接收CAN模块过滤转发的数据并进行分析处理,然后根据从电脑终端输入的命令来执行电脑终端命令数据操作。

所述电脑终端命令数据操作包括帮助命令、版本命令、显示数据命令、设置波特率、发送数据帧、设置过滤模式、实时发送数据。

CAN驱动器是进行汽车CAN数据采集的中心,将采集到的CAN数据先保存到一个环形缓冲区RingBuffer里面,可以供给多个模块调用,CAN收发器芯片使用TJA1041型号。

所述CAN模块包括槽,所述槽内包括CAN过滤器和环形缓冲区。所述槽可以注册多个子槽,如图1中所示子槽1、子槽2……子槽n,用来放置多个功能函数并且将所有槽均置为可用,然后主函数即可获取一个可用的子槽来操作CAN模块。CAN模块会从CAN驱动器中获取数据,将数据写入另一个环形缓冲区RingBuffer中,然后再将数据从已分配的槽中过滤转发。如图1中所示,子槽1通过槽端口1与上位机交互模块Mutual相连接,子槽2通过槽端口2与SD卡模块的stm32相连接,子槽3通过槽端口3与LED模块的stm32相连接。

当CAN总线数据帧传送到CAN模块时,所有的ID都会经过CAN过滤器过滤。CAN过滤器可以把一个ID加入CAN过滤器,并允许这个ID的数据帧通过;也可以把一个ID从过滤器中删除,这个ID的帧将不能从过滤器中通过;还可以判断一个ID是否是有效ID,有效ID将被允许通过,无效ID不被允许通过。

当识别到有CAN总线的数据帧传送过来时,汽车CAN总线数据采集系统会在LED模块的stm32中打开定时器,使红色和绿色LED灯交替闪烁。

当上位机使用命令data或者retrans时,汽车CAN总线数据采集系统会将读取的数据保存到SD卡指定的文件或新生成的文件中。

上位机交互模块Mutual是整个系统的控制中心,是跟电脑终端的交互模块,使用串口线和电脑终端的串行通讯端口相连,首先设置一个槽端口接收CAN盒里面过滤转发的数据并分析处理,接下来是根据从电脑终端输入的命令来执行以下电脑终端命令数据操作:

1.帮助命令(help):显示帮助手册;

2.版本命令(version):显示软件版本;

3.显示数据命令(data):显示CAN总线传送过来的数据,具体格式如下所示;

(1)data-o:设置传输模式;

(2)data-n:关闭传输模式;

(3)data[-f<filename>][-i|-e]<-a|-d><ID>:-f表示数据会被写入命名的文件中,filename:表示文件将被创建或被创建;

4.设置波特率(setbd):设置CAN总线工作的波特率,具体格式如下所示:

(1)setbd[-p<port>]<value>:value表示波特率的数值,单位是K;

(2)setbd[-p<port>]-a:-a表示自动探索汽车CAN总线工作的波特率;

-p<port>:指定CAN总线端口设置;port:1或2,默认是两个;

5.发送数据帧(send),格式如下所示:

(1)send[-p<port>]<id><byte0><byte1>...:发送1帧数据或者是反复发送1针数据;<id>:表示id的十六进制数据帧,应该介于0-3ff之间;<byte>:十六进制字节的数据,单独的每个字节使用空间,只有第一个是8个字节;

(2)send[-p<port>]-s<series_nr>:发送预先定义一系列的多个数据帧;Series_nr表示预定义的一系列数据将被发送;

6.设置过滤模式(filter),格式如下所示:

(1)filter-I:进入包含模式;

(2)filter-E:进入排除模式;

(3)filter-l:列出包含和排除列表;

(4)filter-m:获取ID列表;

(5)filter-s:一步一步进入设置模式;

(6)filter[-i|-e]<-a|-d><ID>

-i:包含模式进入增加或删除操作;

-e:排除模式进入增加或删除操作;

-a:把ID加入过滤器中;

-d:把ID从过滤器中删除;

ID:这个ID发送的数据;

7.实时发送数据(retrans),格式如下所示:

(1)retrans[filename][-o|-n port]:

-n:数据将从端口发出;

-o:数据不会从端口发出;

-l:显示状态;

filename:创建文件并将数据写进去。

本发明提供的基于汽车CAN总线数据采集系统的数据采集方法,将CAN总线发出的数据都放在同一个环形缓冲区,使用环形缓冲区可以使得读写数据并发执行,方便了缓存的使用和管理,提高了CAN总线的通信效率和通信能力,同时在上位机中使用本系统设置的命令来查看所需的CAN总线发送的时间和数据,提高了系统的实时性和可靠性,提高了通信效率;本发明可以实时采集车辆状况的数据,并通过CAN总线把数据传至上位机,上位机动态显示数据变化,同时采集器的命令可由上位机进行设定,比如可以设置CAN总线工作模式的波特率,使采集器和汽车CAN总线互相通讯;也可以通过设置过滤模式进入ID列表,了解它有哪些ID的数据帧是已经发送过来的,还可以将这些采集到的数据保存到SD卡指定的文件或新生成的文件中,可以很好地满足实际应用的需要。

以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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