一种CAN自动路由系统和方法与流程

文档序号:11147843阅读:501来源:国知局
一种CAN自动路由系统和方法与制造工艺

本发明涉及互联网领域,更具体地说,涉及一种CAN自动路由系统和方法。



背景技术:

由于现有车辆前装CAN网络的设计越来越复杂,各ECU节点单元也越来越多,各ECU独立单元需要对CAN网络进行对应的设计。目前汽车产业更加产业化、智能化。其CAN网络设计应用越来越广泛。而在整个CAN网络中如何更好更快去找寻自己的ECU单元(CAN ID),如何能轻松访问并发送数据,在用户数据多包发送更为突出,而现有系统未能整体去实现CAN网络的应用层、链路层,导致需要开发CAN网络的厂家设计上比较困难,独立去做的复杂度相对高,通过CAN网络路由功能可实现应用层轻松使用CAN网络,能快速实现网络的开发,最终可实现产品的快速开发。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种CAN自动路由系统和方法。

本发明解决其技术问题所采用的技术方案是:提供一种CAN自动路由系统,包括:硬件模块、硬件驱动模块、自动链路模块和自动路由模块;所述硬件模块、所述硬件驱动模块、所述自动链路模块和所述自动路由模块依次 连接;所述硬件模块连接于链路层,用于为数据传输提供硬件基础;所述自动链路模块用于标准的CAN链路层数据接收或发送;所述自动路由模块用于用户注册,并根据所述硬件驱动模块和所述自动链路模块的工作状态生成相应的描述符;所述硬件驱动模块用于根据所述描述符驱动所述硬件模块接收或发送数据。

在本发明的CAN自动路由系统中,所述自动路由模块还用于在所述硬件驱动模块和所述自动链路模块的工作状态正常的情况时生成成功描述符;在所述硬件驱动模块和所述自动链路模块的工作状态不正常或产生错误时生成错误描述符。

在本发明的CAN自动路由系统中,

所述自动路由模块还用于直接将需要发送的所述数据发送至所述自动链路模块;所述自动链路模块还用于根据所述数据的长度大小,对所述数据进行分包发送。

在本发明的CAN自动路由系统中,

用户发送所述数据的接口为:can_write(fd,buf,len);

其中,fd为系统自动分派的有效描述符;buf为用户需要发送的数据缓冲区地址;len为用户发送数据的长度。

在本发明的CAN自动路由系统中,

所述自动链路模块还用于自动链路接收所述数据,并将所述数据发送到所述自动路由模块;所述自动路由模块还用于把接收到的数据通过所述描述符与ECU节点信息对应进行数据发送。

在本发明的CAN自动路由系统中,

用户发送所述数据的接口为:can_read(fd,buf,len);

其中,fd为系统自动分派的有效描述符;buf为用户需要接收的数据缓冲区地址;len为用户接收数据的长度。

本发明还提供一种CAN自动路由方法,涉及上述的CAN自动路由系统,包括步骤:

S1、开启所述硬件模块,系统初始化;

S2、用户通过所述自动路由模块进行注册,再通过所述自动链路模块接收或发送标准的CAN链路层数据;

S3、所述自动路由模块根据所述硬件驱动模块和所述自动链路模块的工作状态生成相应的描述符;所述硬件驱动模块根据所述描述符驱动所述硬件模块接收或发送数据。

在本发明的CAN自动路由方法中,所述步骤S3还包括:

判断所述硬件驱动模块和所述自动链路模块的工作状态是否正常;若是,则生成成功描述符;若否,则生成错误描述符。

在本发明的CAN自动路由方法中,所述步骤S3还包括:

所述自动路由模块直接将需要发送的所述数据发送至所述自动链路模块;所述自动链路模块根据所述数据的长度大小,对所述数据进行分包发送;

用户发送所述数据的接口为:can_write(fd,buf,len);

其中,fd为系统自动分派的有效描述符;buf为用户需要发送的数据缓冲区地址;len为用户发送数据的长度。

在本发明的CAN自动路由方法中,所述步骤S3还包括:

所述自动链路模块自动链路接收所述数据,并将所述数据发送到所述自 动路由模块;所述自动路由模块把接收到的数据通过所述描述符与ECU节点信息对应进行数据发送;

用户发送所述数据的接口为:can_read(fd,buf,len);

其中,fd为系统自动分派的有效描述符;buf为用户需要接收的数据缓冲区地址;len为用户接收数据的长度。

实施本发明的的CAN自动路由系统和方法具有以下有益效果:自动实现底层CAN网络协议的链路层协议,可进行有效的封装,开发者不需要关心底层链路如何实现,大大节省了开发时间。自动实现各ECU单元(CAN ID寻址)的自动路由供功能,让用户/开发者像网络编程一样简单。让用户/开发者实现硬件的无关性,只关注应用层的开发设计,达到硬件无关性。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明CAN自动路由系统的系统方框图;

图2是本发明CAN自动路由方法的流程方框图。

具体实施方式

本发明针对的是在现有技术中未能整体去实现CAN网络的应用层、链路层,导致需要开发CAN网络的厂家设计上比较困难,独立去做的复杂度相对高的问题,提供一种CAN自动路由系统和方法,能够自动实现底层CAN网络协议的链路层协议,可进行有效的封装,开发者不需要关心底层链路如何实现,大大节省了开发时间。自动实现各ECU单元(CAN ID寻址)的自动路由 供功能,让用户/开发者像网络编程一样简单。让用户/开发者实现硬件的无关性,只关注应用层的开发设计,达到硬件无关性。

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

如图1所示,CAN(Controller Area Network),中文名称为控制器局域网络,通常称为CAN bus,即CAN总线。是目前在国际上应用最广泛的开放式现场总线之一。CAN网络广泛应用于工业现场。汽车CAN网络通讯目前成为车辆最稳定的局域网通讯系统,承载着汽车各ECU控制单元的控制与通讯。

本发明提供了一种CAN自动路由系统,包括:硬件模块10、硬件驱动模块20、自动链路模块30和自动路由模块40;

硬件模块10、硬件驱动模块20、自动链路模块30和自动路由模块40依次连接;在本发明的一优选实施例中,硬件模块10通常包括CAN网络硬件部分,如CAN控制器、收发器等。

硬件模块10连接于链路层,用于为数据传输提供硬件基础;系统初始化时,通常首先要打开CAN网络设备,包括启用硬件模块10。

自动链路模块30用于标准的CAN链路层数据接收或发送;对CAN底层网络的数据的链路实现,主要针对数据多包收发的自动化实现。

自动路由模块40用于用户注册,并根据硬件驱动模块20和自动链路模块30的工作状态生成相应的描述符;实现系统自动路由功能,用户只需要动态注册一个ECU单元,即CAN ID网络节点,CAN自动路由模块就自动实现数据的收发功能。

硬件驱动模块20用于根据描述符驱动硬件模块10接收或发送数据。硬 件驱动模块20提供了标准的CAN网络数据接收发空,CAN网络参数设置接口,如CAN网络的波特率等接口。

进一步地,自动路由模块40还用于在硬件驱动模块20和自动链路模块30的工作状态正常的情况时生成成功描述符。即在硬件驱动模块20和自动链路模块30的工作状态正常的情况时自动路由模块40自动分派路由接口,并成功返回自动链路描述符fd到用户,即系统中唯一动态分派的路由成功标识符,相当于套接字描述符。在硬件驱动模块20和自动链路模块30的工作状态不正常或产生错误时生成错误描述符。

当用户需要发送接收CAN数据时,直接操作申请的描述符,并用自动路由模块40成功分派的描述符调用接口进行收发CAN数据。自动路由模块40还用于直接将需要发送的数据发送至自动链路模块30;自动链路模块30还用于根据数据的长度大小,对数据进行分包发送。通常自动链路模块30根据数据的长度大小,按照CAN标准链路层协议对数据进行分包发送,实现标准的CAN链路层数据发送。

用户发送数据的接口为:can_write(fd,buf,len);

其中,fd为系统自动分派的有效描述符;buf为用户需要发送的数据缓冲区地址;len为用户发送数据的长度。

自动链路模块30还用于自动链路接收数据,并将数据发送到自动路由模块40;当用户需要接收数据时,只有用户成功注册的描述符对应的有效CAN ID才能被有效接收,否则无法接收到底层的对应用户数据。自动路由模块40还用于把接收到的数据通过描述符与ECU节点信息对应进行数据发送。即把接收的数据通过描述符与CAN ID的对应关系进行数据分发,发送到对应的 用户,实现CAN数据的接收。

用户发送数据的接口为:can_read(fd,buf,len);

其中,fd为系统自动分派的有效描述符;buf为用户需要接收的数据缓冲区地址;len为用户接收数据的长度。

如图2所示,本发明还提供了一种CAN自动路由方法,包括上述的CAN自动路由系统,包括步骤:

S1、开启硬件模块10,系统初始化;通常首先要打开CAN网络设备。在本发明的一优选实施例中,硬件模块10通常包括CAN网络硬件部分,如CAN控制器、收发器等。

S2、用户通过自动路由模块40进行注册,再通过自动链路模块30接收或发送标准的CAN链路层数据;对CAN底层网络的数据的链路实现,主要针对数据多包收发的自动化实现。

S3、自动路由模块40根据硬件驱动模块20和自动链路模块30的工作状态生成相应的描述符;硬件驱动模块20根据描述符驱动硬件模块10接收或发送数据。实现系统自动路由功能,用户只需要动态注册一个ECU单元,即CAN ID网络节点,CAN自动路由模块就自动实现数据的收发功能。硬件驱动模块20提供了标准的CAN网络数据接收发空,CAN网络参数设置接口,如CAN网络的波特率等接口。

进一步地,

判断硬件驱动模块20和自动链路模块30的工作状态是否正常;若是,则生成成功描述符;若否,则生成错误描述符。通常在硬件驱动模块20和自动链路模块30的工作状态正常的情况时自动路由模块40自动分派路由接口, 并成功返回自动链路描述符fd到用户,即系统中唯一动态分派的路由成功标识符,相当于套接字描述符。

进一步地,步骤S3还包括:

当用户需要发送接收CAN数据时,直接操作申请的描述符,并用自动路由模块40成功分派的描述符调用接口进行收发CAN数据。自动路由模块40直接将需要发送的数据发送至自动链路模块30;自动链路模块30根据数据的长度大小,对数据进行分包发送;通常自动链路模块30根据数据的长度大小,按照CAN标准链路层协议对数据进行分包发送,实现标准的CAN链路层数据发送。

用户发送数据的接口为:can_write(fd,buf,len);

其中,fd为系统自动分派的有效描述符;buf为用户需要发送的数据缓冲区地址;len为用户发送数据的长度。

进一步地,步骤S3还包括:

自动链路模块30自动链路接收数据,并将数据发送到自动路由模块40;当用户需要接收数据时,只有用户成功注册的描述符对应的有效CAN ID才能被有效接收,否则无法接收到底层的对应用户数据。自动路由模块40把接收到的数据通过描述符与ECU节点信息对应进行数据发送;即把接收的数据通过描述符与CAN ID的对应关系进行数据分发,发送到对应的用户,实现CAN数据的接收。

用户发送数据的接口为:can_read(fd,buf,len);

其中,fd为系统自动分派的有效描述符;buf为用户需要接收的数据缓冲区地址;len为用户接收数据的长度。

综上,本发明自动实现底层CAN网络协议的链路层协议,可进行有效的封装,开发者不需要关心底层链路如何实现,大大节省了开发时间。自动实现各ECU单元CAN ID寻址的自动路由供功能,让用户/开发者像网络编程一样简单。让用户/开发者实现硬件的无关性,只关注应用层的开发设计,达到硬件无关性。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

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