车载CAN总线数据与FlexRay总线数据之间的转换系统及方法与流程

文档序号:12067935阅读:1147来源:国知局
车载CAN总线数据与FlexRay总线数据之间的转换系统及方法与流程

本发明涉及汽车通信技术,更为具体地,涉及车载CAN总线数据与FlexRay总线数据之间的转换技术。



背景技术:

CAN(Controller Area Network)总线协议是ISO国际标准化串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,开发了各种各样的电子控制系统,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个网络,进行大量数据的高速通信”的需要,博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898进行了标准化,目前已是汽车网络的标准协议。

目前车辆主要采用CAN总线及LIN总线进行通信,然而当车辆功能越来越强,智能化程度越来越高,总线的信号量逐渐增大,对通信的可靠性及实时性要求进一步提高,传统的CAN/LIN混合网络已无法满足需求,尤其是面对新一代以线控制(X-BY-WIRE)技术,传统的CAN/LIN网络面临更大的挑战。

FlexRay由于其“时间触发”以及“双通道冗余传输”的特性,在实时性和可靠性方面体现了出了更大的优势。同时由于CAN/LIN技术的成熟,规模效应带来的低成本也使得越来越多的汽车会出现多种总线并存的局面。

传统的车载网关,主要实现将多路CAN的报文互相路由转发,或者将LIN总线和CAN总线消息相互之间进行报文路由。CAN转FlexRay的网关,是一种新型的网关,它可以实现将CAN协议和FlexRay协议相互转换,实现两种完全不同网络之间的互联。

由于FlexRay协议是一个比较新的总线协议,协议对软硬件提出了很高的要求,因此将FlexRay总线应用在整车上,要远比CAN总线难度大,成本高,且开发调试的时间长。

申请号为200810201830.5、名称为“一种FlexRay-CAN通信网关及实现方法”的我国专利公开了一种FlexRay-CAN通信网关及实现方 法,一方面可接收FlexRay协议数据,经协议转换、封装等处理后以CAN协议发送至CAN总线设备,也通过RS232接口发送至上位计算机;另一方面可接收CAN协议数据,经协议转换、封装等处理后以FlexRay协议发送至FlexRay总线设备,或通过RS232接口发送至上位计算机,实现基于微控制器的FlexRay总线与CAN总线的协议转换。但该发明其功能有限,不适合用在车载网络中。

申请号为201110193320.X、名称为“FlexRay总线与LIN总线的协议转换装置及方法”的我国专利申请提供了FlexRay总线与LIN总线的协议转换装置及方法,以解决CAN总线的局限性问题。但此发明提出了的LIN与FlexRay的转换关系,因作为速率极低的LIN总线和可达10M带宽的FlexRay总线,将FlexRay总线消息转到LIN上,相当于从高速公路开到了单行道上,只能转发极少量的报文,总线带宽达不到,因此不适用于用在整车网络中。



技术实现要素:

有鉴于此,本发明提供车载CAN总线数据与FlexRay总线数据之间的转换系统,该系统包括:第一CAN总线收发器,用于接收发送到第一CAN总线上的数据或将所述第一CAN总线上的数据发出;第二CAN总线收发器,用于接收发送到第二CAN总线上的数据或将所述第二CAN总线上的数据发出;第三CAN总线收发器,用于接收发送到第三CAN总线上的数据或将所述第三CAN总线上的数据发出;FlexRay总线收发器,用于接收发送到FlexRay总线上的数据或将所述FlexRay总线上的数据发出;数据转换模块,其用于将接收受的来自CAN总线的数据转换成FlexRay总线数据并将转换后的数据发送给FlexRay总线,以及将接收的CAN总线数据转换成FlexRay总线数据并将转换后的数据发送给接收其的CAN总线;以及控制模块,其与第一CAN总线收发器、第二CAN总线收发器、第三CAN总线收发器、FlexRay总线收发器、数据转换模块均电连接,并控制它们的运行;其中,所述第一CAN总线收发器、第二CAN总线收发器、第三CAN总线收发器之间互相电连接、且均与数据转换模块电连接,所述FlexRay总线收发器与所述数据转换模块电连接。

可选地,根据本发明示例的车载CAN总线数据与FlexRay总线数据之间的转换系统,所述系统还包括诊断模块,其配置成监控所述第一 间的转换方法的流程图。

具体实施方式

现在参照附图描述本发明的示意性示例,相同的附图标号表示相同的元件。下文描述的各实施例有助于本领域技术人员透彻理解本发明,且意在示例而非限制。图中各元件、部件、单元、装置的图示不一定按比例绘制,仅示意性表明这些元件、部件、模块、装置之间的相对关系。

图1是根据本发明示例的车载CAN总线数据与FlexRay总线数据之间的转换系统的结构示意图。如图所示,该车载CAN总线数据与FlexRay总线数据之间的转换系统包括第一CAN总线收发器10、第二CAN总线收发器12、第三CAN总线收发器14、FlexRay总线收发器16、数据转换模块18以及控制模块20。

第一CAN总线收发器10、第二CAN总线收发器12及第三CAN总线收发器14每一个都与控制模块20电连接,控制模块20还与FlexRay总线收发器16以及数据转换模块18电连接。第一CAN总线收发器10、第二CAN总线收发器12、第三CAN总线收发器14之间互相电连接、且均与数据转换模块18电连接,所述FlexRay总线收发器16与所述数据转换模块18电连接。

第一CAN总线收发器10接收发送到第一CAN总线上的数据或将该第一CAN总线上的数据发出。第二CAN总线收发器12接收发送到第二CAN总线上的数据或将该第二CAN总线上的数据发出。第二CAN总线收发器14接收发送到第三CAN总线上的数据或将该第三CAN总线上的数据发出。控制模块20控制第一CAN总线收发器10、第二CAN总线收发器12、第三CAN总线收发器14、FlexRay总线收发器16、数据转换模块18均电连接的运行。

示例地,图1所示的车载CAN总线数据与FlexRay总线数据之间的转换系统中,第一CAN总线收发器10上的数据可以发送给第二CAN总线收发器12,相应地,第二CAN总线收发器12上的数据可以发送给第一CAN总线收发器10。进一步,第一CAN总线收发器10与第二CAN总线收发器12上的数据均可经由数据转换模块18进行转换,将其从CAN总线数据转换为FlexRay总线数据,从而发送到FlexRay总线收发器16。相 应地,FlexRay总线收发器16发出的FlexRay总线数据也可由数据转换模块18进行转换,转换成CAN总线数据,从而再发送到CAN总线收发器上。

根据本发明的示例,数据转换模块18包括第一单元180,其用于将要发送到第一CAN总线收发器10、第二CAN总线收发器12及第三CAN总线收发器14中任意一个的FlexRay数据分成n帧CAN数据,每帧CAN数据具有相同周期不同ID,其中n基于FlexRay数据长度与该车载CAN协议下的CAN数据长度确定。数据转换模块18还包括第二单元182,其用于将要发送到FlexRay总线收发器16的来自第一CAN总线收发器10、第二CAN总线收发器12及第三CAN总线收发器14中任意一个的CAN数据构造成FlexRay数据。

在举例说明数据转换模块18的运行之前,在此先分别简述一下CAN总线数据与FlexRay总线数据。

CAN报文包含CAN报文标识(CAN ID)及有效数据两部分,每帧报文的CAN ID是唯一的,而有效数据的长度一般为8个字节,在某些情况下,每帧报文的有效数据长度可以小于8字节。CAN总线是一种广播式总线,每一个CAN节点都可向总线上广播数据,每帧报文没有明显的优先级,报文发送不分先后,当总线空闲时,谁先抢占到总线,谁就可以向总线广播数据,若其它节点要发送报文,只能等总线空闲时发送。可以说,CAN总线是可抢占的总线。

FlexRay总线是一种非抢占式总线,其报文发送具有严格的时序,报文发送的先后顺序在通信调度表有规定,不允许某一个节点违背调度表规定,独自向总线发送数据。FlexRay总线的报文格式与CAN报文有差别,其中,FlexRay总线的有效数据长度可以很大,最多达254个字节,其长度可变。

FlexRay总线数据分为静态段报文与动态段报文,静态段报文数据是一些周期性发送且长度固定的报文,动态段报文一般是一些非周期的且长度不等的报文。

根据本发明的一个具体示例来阐述第一单元180将FlexRay总线数据转换为CAN总线数据的情况。假设FlexRay总线数据,亦即FlexRay报文的有效数据为32字节,第一单元180基于车载CAN协议下的CAN数据,亦即CAN报文的有效数据为8个字节,则基于FlexRay报文与CAN 报的有效数据,可确定n为4,亦即将32字节的FlexRay报文分成4帧CAN报文,且第一单元180向每帧CAN报文分配不同的ID。假设FlexRay报文的有效数据为80字节,第一单元180基于车载CAN协议下的CAN数据,亦即CAN报文的有效数据为8个字节,则基于FlexRay报文与CAN报的有效数据,可确定n为10,亦即将80字节的FlexRay报文分成10帧CAN报文,且第一单元180向每帧CAN报文分配不同的ID。

根据本发明的示例,同一网络中,静态段FlexRay的报文的有效数据长度最好设计成相同的,这样有利于网络中的网关进行统一的数据拆包打包。

根据本发明的一个具体示例来阐述第二单元182将CAN总线数据转换为FlexRay总线数据的情况。假设FlexRay总线数据的静态段有效数据为32字节,则可将4帧周期相同的CAN报文合成一帧FlexRay报文发到FlexRay的静态段。如果4帧CAN报文周期不等,则选4帧报文中周期最小的作为此FlexRay报文的周期,这样就不会损失通信质量。

根据本发明的示例,将FlexRay静态段有效数据长度设为16字节。

FlexRay总线报文与CAN总线报文在周期上不同,CAN总线报文是基于事件触发的,每一个报文的周期并不非常精确,接收方只需识别CAN ID就可知道是哪帧报文;但FlexRay总线报文与CAN总线报文不同,FlexRay总线报文是基于时间触发的,它的每一帧报文在时间上都是确定的,且不能简单通过FlexRay的帧识别号(Frame ID)来确定到底是哪帧报文,而是通过一张调度表,将过FlexRay的Frame ID以及其循环计数(Cycle Count)和调度表对照,便知道是FlexRay网络中哪一个节点发来的报文。FlexRay一般以64个Cycle Count(Cycle 0-Cycle 63)为一个完整的周期,因此FlexRay的静态段报文周期一般是单个Cycle Count周期的整数倍。

本发明将单个Cycle Count的周期设计成5ms,一个完整的通信大周期为5ms*64=320ms,因此FlexRay总线上的周期将是5ms的整数倍,即5ms、10ms、15ms等。CAN总线的报文周期相对灵活,有10ms,12ms,15ms,20ms等,对于类似12ms的报文,转到FlexRay总线上,需将其转发成10ms报文,以保证通信不损失速率,不丢失数据。

根据本发明的示例,车载CAN总线数据与FlexRay总线数据之间的转换系统还包括诊断模块。诊断模块配置成监控所述第一CAN总线、 CAN总线、第二CAN总线以及第三CAN总线的运行。

可选地,根据本发明示例的车载CAN总线数据与FlexRay总线数据之间的转换系统,所述第三CAN总线配置成通过其管理所述诊断模块以及通过其进行FlexRay报文路由与诊断路由。

可选地,根据本发明示例的车载CAN总线数据与FlexRay总线数据之间的转换系统,所述数据转换模块包括:第一单元,其用于将要发送到第一CAN总线、第二CAN总线及第三CAN总线中任意一个的FlexRay数据分成n帧CAN数据,每帧CAN数据具有相同周期不同ID,其中n基于FlexRay数据长度与该车载CAN协议下的CAN数据长度确定;第二单元,其用于将要发送到FlexRay总线的来自第一CAN总线收发器、第二CAN总线收发器及第三CAN总线收发器中任意一个的CAN数据构造成FlexRay数据。

可选地,根据本发明示例的车载CAN总线数据与FlexRay总线数据之间的转换系统,所述第二单元配置成将若干帧CAN报文数据构造成一帧FlexRay报文数据,且以所述若干帧CAN报文数据中周期最小的周期作为所构成的FlexRay报文数据的传送周期。

还提供一种车载CAN总线数据与FlexRay总线数据之间的转换方法,其特征在于,所述方法包括:接收要转换成FlexRay总线数据的CAN总线数据,将若干帧所接收的CAN总线数据构造成一帧FlexRay数据;接收要转换成CAN总线数据的FlexRay总线数据,将一帧FlexRay总线数据分成n帧CAN总线数据,每帧CAN数据具有相同周期不同ID,其中n基于FlexRay数据长度与该车载CAN协议下的CAN数据长度确定。

可选地,根据本发明示例的车载CAN总线数据与FlexRay总线数据之间的转换方法,将若干帧所接收的CAN总线数据构造成一帧FlexRay数据时,以所述若干帧CAN报文数据中周期最小的周期作为所构成的FlexRay报文数据的传送周期。

附图说明

图1是根据本发明示例的车载CAN总线数据与FlexRay总线数据之间的转换系统的结构示意图。

图2示出了的通过CAN网络诊断FlexRay节点的通信过程。

图3是根据本发明示例的车载CAN总线数据与FlexRay总线数据之 第二CAN总线以及第三CAN总线的运行。且第三CAN总线被配置成通过其管理所述诊断模块以及通过其进行FlexRay报文路由与诊断路由。

诊断模块在诊断过程中,对于CAN网络诊断报文,要符合ISO15765-2中规定的TP层协议,以及ISO14229-2中规定的诊断应用层协议,对于FlexRay网络诊断报文,要符合ISO10681-2中规定的TP层协议及ISO14229-2诊断应用层协议。

概括地说,CAN网络的诊断报文符合CAN的要求,FlexRay网络上的诊断报文符合FlexRay要求。

根据本发明的示例,对于本系统,诊断口直接网关,诊断报文需要先经过网关,数据转换模块根据CAN ID判断出诊断报文是给FlexRay网络的,则将报文由数据转换模块18处理成FlexRay格式的报文。CAN报文和FlexRay报文是可以一一对应的,一帧CAN诊断报文可以对应一个FlexRay诊断报文。CAN诊断报文有效数据长度为8字节,FlexRay网络的诊断报文有效数据长度定为16字节。

根据本发明的示例,数据转换模块18可实现在车辆的电控单元ECU中。

图2示出了的通过CAN网络诊断FlexRay节点的通信过程。CAN诊断仪首先将诊断报文发给网关,再由数据转换模块18进行数据转换后转发至FlexRay网络上的某个节点,FlexRay节点接收到诊断报文后,回复相应的报文至网关,数据转换模块18再进行协议转换处理后,将报文转发至CAN网络,诊断仪便可接收到此报文。其中CAN网络中的多帧传输,可与FlexRay网络中的多帧传输一一对应。在此,数据转换模块18可配置成网关内。

在图2中,1(SF)是单帧诊断报文,诊断目标节点是FlexRay网络上的ECU;2(STF)是FlexRay的一个单帧诊断报文;3(STF)是FlexRay网络的多帧传输,是对诊断仪的多帧响应报文;4(FF)是CAN网络的多帧传输;5(FC)是CAN网络上的流控制信息;6(FC)是FlexRay网络上的流控制信息;7(LF)是FlexRay网络诊断回复多帧传输的最后一帧;8(CF)是CAN网络上诊断报文回复多帧传输的最后一帧。

示例地,在此说明如何将CAN诊断报文转换成FlexRay诊断报文以及其通信细节。

条件

例如:读取参数标识(PID)C000的命令,指令格式为241 03 22 C0 00,则诊断模块发送:

241 03 22 C0 00(241表示某一ECU诊断地址,03是TP层信息,表示有效诊断数据长度为3字节,22为诊断服务号,表示读取某个PID,符合ISO 14229及ISO 15765-2诊断规范)

总线回复:641 10 0A 62 C0 00 00 00 00

诊断模块发送:241 30 00 00(流控制帧)

总线回复:641 21 01 03 FF FF 00 00 00

传输流程

0x241为ECU的地址,0x641为诊断仪的地址,数据流如表1所示:

表1中,对传输层来说,斜体字部分为有效数据;加粗部分为传输层协议控制信息;其余数据为填充数据。表1的第1列的标号所代表的各行,说明如下:

●1和2都为单帧请求读取PID,2中0241为ECU的地址,0641为诊断仪的地址,40是FlexRay的STF的通信层协议控制信息,03为本帧的有效数据的长度(即FPL),0003为单帧或者多帧的传输数据的长度(即ML),2为一个单帧传输。

●3为多帧传输,是对诊断仪的多帧响应,其中,0641为诊断仪地址,0241为ECU地址,40为STF,06为FPL长度,000A为ML,后面6字节为有效数据域。

●5为诊断仪收到多帧请求的第一帧后发送的流控制帧,6为网关把收到的流控制帧转为FlexRay的通信层的流控制帧,0241为ECU地址,0641为诊断仪地址,83为CTS的流控制帧,00为BC(Bandwidth Control),0F FF为网络层Buffer,需要说明的是,该网络层Buffer在CAN的当前流控制帧是没有的,因此网关转发的时候需要添加,来表征诊断仪的网络层的Buffer。

●7为ECU发送的连续帧,06 41为诊断仪地址,02 41为ECU地址,90为最后一帧(LF),04为FPL,00 0A为ML(与前面的STF的ML相等),后面四个字节为通信层有效的数据字节。

由于通过第三CAN总线来对FlexRay网络进行诊断,当诊断模块通过第三CAN总线来接收总线消息并记录时,由于数据量大,无法实现全部数据同时监控记录。当FlexRay网络向第三CAN总线进行报文路由时,将报文进行分组路由。根据本发明,网关对FlexRay网络上的各个模块进行报文分组,本发明的FlexRay网络中可以包含8个ECU节点,编号从1至8,则将节点1、节点2、节点3分为A组,将节点4、节点5、节点6分为B组,将节点7、节点8分为C组。通过向网关发送控制命令,可以切换网关的路由模式。网关针对FlexRay网络向诊断口CAN网络(亦即,诊断模块与第三CAN总线的接口)的报文路由模式分为三种,模式1、模式2、模式3。

若网关工作在路由模式1,则网关将A组FlexRay报文转发至CAN3网络,以供数据分析及数据记录;若网关工作在模式2,则网关将B组FlexRay报文转发至CAN3网络,若网关工作在模式3,则网关将C组FlexRay报文转发至CAN3网络。CAN3网络指的是第三CAN总线及其收发器以及借由第三CAN总线互相连接的元件而构成的网络。

针对FlexRay网络,本发明所述网关支持跨网络总线程序刷新功能。所谓总线程序刷新,是指不通过单片机烧写口,把通信网络作为传输介质,采用诊断服务中的程序刷新服务来实现网络中各个模块程序刷新的功能。采用FlexRay诊断仪,可直接连接到FlexRay网络中对各模块进行刷新。本发明所述网关支持诊断路由功能,其中诊断服务包含程序刷新所需的各项服务。通过本发明所述网关的CAN-FlexRay诊断路由功能,将程序刷新报文路由转发至FlexRay网络,实现对FlexRay网络中节点的刷新。

针对FlexRay网络,本发明所述网关支持跨网络总线程序刷新功能。所谓总线程序刷新,是指不通过单片机烧写口,把通信网络作为传输介质,采用诊断服务中的程序刷新服务来实现网络中各个模块程序刷新的功能。采用FlexRay诊断仪,可直接连接到FlexRay网络中对各模块进行刷新。本发明所述网关支持诊断路由功能,其中诊断服务包含程序刷新所需的各项服务。通过本发明所述网关的CAN-FlexRay 诊断路由功能,将程序刷新报文路由转发至FlexRay网络,实现对FlexRay网络中节点的刷新。

其中电源模式管理模块,由两部分组成,一部分是输入开关电路,另一部分是输出继电器电路。其中输入开关电路,外接三路硬线输入,通过电平转换后连接到单片机上。三路硬线输入分别为ACC、RUN、CRANK,与整车点火开关相连。点火开关有4个位置,分别为OFF、ACC、RUN、CRANK。其中输出继电器电路,有三个输出端外接继电器,三个输出端分别为ACC Relay输出端、RAP Relay输出端、RUN/CRANK Relay输出端。

当钥匙转到OFF时,三个硬线输入均为低电平,整车处于OFF模式,此时三个继电器输出端均为低电平,此时3路CAN与1路FlexRay处于休眠状态,无总线通信;当钥匙转到ACC时,ACC输入端为高电平,其它两路输入为低电平,整车处于ACC模式下,此时ACC Relay及RAP Relay均为高电平,此时3路CAN与1路FlexRay均处于唤醒状态,有总线通信及报文路由;当钥匙转到RUN时,ACC、RUN输出端均为高电平,整车处于RUN模式,此时ACC Relay、RAP Relay及RUN/CRANK Relay均为高电平,3路CAN与1路FlexRay处于唤醒状态,有总线通信及报文路由;当钥匙转到CRANK时,RUN输入端与CRANK输出端为高电平,ACC输入端为低电平,整车处于CRANK模式,此时ACC Relay及RUN/CRANK Relay为高电平,RAP Relay为低电平,整车处于点火状态,发动机在马达带动下执行点火动作,总线处于唤醒状态。CRANK是一个不稳定状态,当整车点火成功后,自动退出CRANK模式,进入到RUN模式,钥匙会自动从CRANK位置回弹到RUN位置。

由点火钥匙所处的位置,决定了整车的供电模式以及网络的休眠唤醒状态,完成了整车网络管理。当点火钥匙从ACC转到OFF时,整车网络不会立刻进入休眠,网关会启动一个定时器,当定时结束后,整个网络才会进入休眠,停止通信。

根据本发明的示例,还提供一种车载CAN总线数据与FlexRay总线数据之间的转换方法。图3是该方法的流程示意图。如图所示,在步骤30,接收要转换成FlexRay总线数据的CAN总线数据。在步骤32,将若干帧所接收的CAN总线数据构造成一帧FlexRay数据,其中,所构成的FlexRay数据。在步骤34,接收要转换成CAN总线数据的FlexRay总线数据。在步骤36,将一帧FlexRay总线数据分成n帧CAN总线数据,每帧CAN数据具有相同周期不同ID,其中n基于FlexRay数据长度与该车载CAN 协议下的CAN数据长度确定。如图3所示的方法可结合如图1所示的车载CAN总线数据与FlexRay总线数据之间的转换系统来实现。

尽管已结合附图在上文的描述中,公开了本发明的具体实施例,但是本领域技术人员可以理解到,可在不脱离本发明精神的情况下,对公开的具体实施例进行变形或修改。本发明的实施例仅用于示意并不用于限制本发明。

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