一种基于模拟首部添加的车用总线协议转换方法转让专利

申请号 : CN201110451359.7

文献号 : CN102571784B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘彪庄江丽王立德

申请人 : 北京交通大学

摘要 :

本发明涉及一种基于模拟首部添加的车用总线协议转换方法,该方法包括CAN或者LIN总线向FlexRay总线的数据转发过程和FlexRay总线向CAN或者LIN总线的数据转发过程;所述CAN或者LIN总线向FlexRay总线的数据转发过程中在车用总线适配器的应用层添加模拟首部,并将1至10个CAN或者LIN的数据帧封装在FlexRay数据帧中进行转发;所述FlexRay总线向CAN或者LIN总线的数据转发过程中在车用总线适配器的应用层对模拟首部进行解析,并将FlexRay数据帧中所含的1至10个CAN或者LIN的数据帧提取出来。本发明这种方法能实现FlexRay总线与车载CAN总线和LIN总线的协议转换,达到双方数据的透明传输,避免网关对全部有效数据的解析过程,降低网络时延。

权利要求 :

1.一种基于模拟首部添加的车用总线协议转换方法,其硬件载体为用于FlexRay与CAN或者LIN总线协议转换的车用总线适配器,适配器带有FlexRay、CAN和LIN总线接口,可以分别与FlexRay、CAN和LIN总线通信,其特征在于,该方法包括CAN或者LIN总线向FlexRay总线的数据转发过程和FlexRay总线向CAN或者LIN总线的数据转发过程;所述CAN或者LIN总线向FlexRay总线的数据转发过程中由车用总线适配器生成模拟首部,并将模拟首部和待转发的CAN或者LIN总线的有效数据封装在FlexRay数据帧的数据部分;所述FlexRay总线向CAN或者LIN总线的数据转发过程中由车用总线适配器对FlexRay数据帧中已添加好的模拟首部进行解析,并将根据解析结果将FlexRay数据帧中所含的CAN或者LIN总线的有效数据提取出来,两种数据转发过程中添加模拟首部或者对模拟首部进行解析的过程均在车用总线适配器的应用层实现。

2.根据权利要求1所述的一种基于模拟首部添加的车用总线协议转换方法,其特征在于,

所述CAN或者LIN总线向FlexRay总线的数据转发过程的具体步骤为:

1.1车用总线适配器接收CAN或者LIN总线发来的数据帧,根据当前接收得数据帧的优先级和时间选定其中准备转发到FlexRay总线的1至10个CAN数据帧或者1至10个LIN数据帧;

1.2车用总线适配器提取所选定数据帧中的有效信息和有效数据,所述有效信息包括CAN数据帧的ID号、有效数据的长度或者LIN数据帧的源地址、目的地址、有效数据的长度;

1.3车用总线适配器根据步骤1.2提取的有效信息对步骤1.1选定的1至10个CAN数据帧或者1至10个LIN数据帧生成模拟首部;

1.4车用总线适配器将步骤1.3生成的模拟首部以及步骤1.2提取的有效数据封装在FlexRay数据帧的数据部分,生成一帧新的FlexRay数据帧;

1.5按照FlexRay总线标准,车用总线适配器为步骤1.4生成的FlexRay数据帧分配一个与现有FlexRay总线上发送时隙不重复的时隙,并在该时隙到来时将步骤1.4生成的FlexRay数据帧采用广播的方式发送出去;

1.6FlexRay总线上的节点接收到车用总线适配器发送的FlexRay数据帧后,从其模拟首部中解析出有效信息,并根据有效信息提取数据帧中有效数据,并按照需求对有效数据进行进一步的处理。

3.根据权利要求1所述的一种基于模拟首部添加的车用总线协议转换方法,其特征在于,

所述FlexRay总线向CAN或者LIN总线的数据转发过程的具体步骤为:

2.1FlexRay总线上的节点根据要发送的目的网络、目的节点和有效数据长度生成模拟首部,并将模拟首部和要发送的有效数据封装在FlexRay数据帧中,在本数据帧所属的发送时隙将该数据帧发送出去;

2.2车用总线适配器接收到FlexRay总线上发来的数据帧后,根据发送时隙判断其是否为需向CAN或者LIN总线转发的数据帧,如果不是则丢弃并结束本次数据转发过程,如果是则提取其中的模拟首部并进入步骤2.3;

2.3车用总线适配器对步骤2.2提取的模拟首部进行解析,根据模拟首部的格式提取其中的有效信息和有效数据,所述有效信息包括CAN数据帧的ID号、有效数据的长度或者LIN数据帧的源地址、目的地址、有效数据的长度;

2.4车用总线适配器的应用层根据步骤2.3所提取的有效信息,将有效数据按照CAN或者LIN总线标准生成新的CAN或者LIN总线数据帧;

2.5车用总线适配器将步骤2.4生成的CAN或者LIN总线数据帧发送到CAN或者LIN总线上;

2.6CAN或者LIN总线接收到车用总线适配器发送的数据帧后,按照各自总线的标准对数据帧进行处理。

4.根据权利要求2或3所述的一种基于模拟首部添加的车用总线协议转换方法,其特征在于,所述CAN或者LIN总线向FlexRay总线的数据转发过程和所述FlexRay总线向CAN或者LIN总线的数据转发过程中的模拟首部均设计为采用5字节对齐的方式,分为固定部分和可变部分,其中固定部分长度为5个字节,可变部分长度为5N个字节,N为FlexRay数据帧中所含CAN或者LIN总线的数据帧数量且1≤N≤10;固定部分位于FlexRay数据帧的首部之后,可变部分位于固定部分之后,FlexRay数据帧的尾部位于可变部分之后。

5.根据权利要求4所述的一种基于模拟首部添加的车用总线协议转换方法,其特征在于,所述模拟首部中5个字节的固定部分包括6个字段,按先后顺序分别为:第0-2位为网络标识符,代表与FlexRay通信的网络类型;第3-7位为对应FlexRay帧中所带CAN或者LIN总线数据帧的数量;第8-15位为模拟首部长度,表示整个模拟首部所占用的字节数;第

16-23位为数据总长度,表示FlexRay数据帧中模拟首部和有效数据总长;第24-31位为预留字段,以便后期功能扩展;第32-39位为首部校验字段,用于实现对模拟首部的差错校验。

6.根据权利要求4所述的一种基于模拟首部添加的车用总线协议转换方法,其特征在于,FlexRay与CAN总线进行数据转发时,模拟首部的可变部分包括两类字段:IDn和Pn,其顺序为ID1、P1、ID2、P2……IDn、Pn……IDN、PN,其中n为FlexRay数据帧中所含每个CAN数据帧的序号且1≤n≤10,N为FlexRay数据帧中所含CAN总线的数据帧数量且1≤N≤10,其中的IDn字段占4字节,由32位的CAN总线ID号构成的,可兼容CAN总线的标准帧和扩展帧,通过对ID字段的解析推断出当前帧格式为标准帧还是扩展帧,并获得当前帧在CAN总线中的ID号;Pn占8位,表示每个CAN数据帧的偏移量,以字节为单位,该偏移量是指每个CAN数据帧有效数据的第一个字节在整个FlexRay数据部分中的字节序号。

7.根据权利要求4所述的一种基于模拟首部添加的车用总线协议转换方法,其特征在于,如果与FlexRay总线通信的网络为LIN总线,模拟首部的可变部分包括五类字段:IDn、LENn、SAn、DAn和Pn,其顺序为ID1、LEN1、SA1、DA1、P1、ID2、LEN2、SA2、DA2、P2……IDn、LENn、SAn、DAn、Pn……IDN、LENN、SAN、DAN、PN,其中n为FlexRay数据帧中所含每个LIN数据帧的序号且

1≤n≤10,N为FlexRay数据帧中所含LIN总线的数据帧数量且1≤N≤10,其中IDn为对应第n个LIN数据帧的标识符且IDn占1个字节,LENn为对应第n个LIN数据帧的帧长度且LENn占1个字节,SAn为对应第n个LIN数据帧的源地址且SAn占1个字节,DAn为对应第n个LIN数据帧的目的地址且DAn占1个字节,Pn占1个字节且为Pn对应第n个LIN数据帧的帧首字节偏移量,该偏移量以字节为单位,是指每个LIN数据帧有效数据的第一个字节在整个FlexRay数据部分中的字节序号。

说明书 :

一种基于模拟首部添加的车用总线协议转换方法

技术领域

[0001] 本发明涉及一种基于模拟首部添加的车用总线协议转换方法,应用于汽车电子技术领域。

背景技术

[0002] 随着汽车电子技术的发展,人们对汽车安全性能的要求越来越高。越来越多汽车上的电控模块都是由车载网络连接,使得通信系统的复杂程度变高。FlexRay作为新一代汽车内部网络的主干网络,采用基于时间驱动机制,具有高带宽、容错性能好等特点,在实时性、可靠性和灵活性方面具有一定的优势。
[0003] 然而现在车用主干控制网络仍以CAN总线为主流,同时并存着LIN总线和MOST总线(用于车载多媒体),因此为了能够让FlexRay总线更快的融入到车载控制网络中,作为过渡方案,需要设计一种基于FlexRay总线的适配器。
[0004] 目前也存在一些FlexRay总线与CAN总线或者LIN总线的协议转换方法,但是其多为将双方的数据内容及相关ID信息作出解析,进行复杂的处理后再转换成对方协议格式内容进行转发,增加了用于协议转换的适配器或者网关的复杂程度,同时网关需要保存双方完整的协议内容,对每一次数据转发均需要对其有效数据进行解析,而最终网络接收节点同样要进行数据解析,无形增加了网络的时延。

发明内容

[0005] 为了避免以上现有技术的不足,本发明提出一种基于首部添加的FlexRay协议转换方法,用以实现FlexRay总线与车载CAN总线和LIN总线的协议转换,达到双方数据的透明传输,避免网关对全部有效数据的解析过程,降低网络时延。
[0006] 本发明的技术方案为:
[0007] 一种基于模拟首部添加的车用总线协议转换方法,其硬件载体为用于FlexRay与CAN或者LIN总线协议转换的车用总线适配器,适配器带有FlexRay、CAN和LIN总线接口,可以分别与FlexRay、CAN和LIN总线通信,该方法包括CAN或者LIN总线向FlexRay总线的数据转发过程和FlexRay总线向CAN或者LIN总线的数据转发过程;所述CAN或者LIN总线向FlexRay总线的数据转发过程中由车用总线适配器生成模拟首部,并将模拟首部和待转发的CAN或者LIN总线的有效数据封装在FlexRay数据帧的数据部分;所述FlexRay总线向CAN或者LIN总线的数据转发过程中由车用总线适配器对FlexRay数据帧中已添加好的模拟首部进行解析,并将根据解析结果将FlexRay数据帧中所含的CAN或者LIN总线的有效数据提取出来。
[0008] 进一步,所述CAN或者LIN总线向FlexRay总线的数据转发过程的具体步骤为:
[0009] 1.1车用总线适配器接收CAN或者LIN总线发来的数据帧,根据当前接收得数据帧的优先级和时间选定其中准备转发到FlexRay总线的1至10个CAN数据帧或者1至10个LIN数据帧;
[0010] 1.2车用总线适配器提取所选定数据帧中的有效信息和有效数据,所述有效信息包括CAN数据帧的ID号、有效数据的长度或者LIN数据帧的源地址、目的地址、有效数据的长度;
[0011] 1.3车用总线适配器根据步骤1.2提取的有效信息对步骤1.1选定的1至10个CAN数据帧或者1至10个LIN数据帧生成模拟首部;
[0012] 1.4车用总线适配器将步骤1.3生成的模拟首部以及步骤1.2提取的有效数据封装在FlexRay数据帧的数据部分,生成一帧新的FlexRay数据帧;
[0013] 1.5按照FlexRay总线标准,车用总线适配器为步骤1.4生成的FlexRay数据帧分配一个与现有FlexRay总线上发送时隙不重复的时隙,并在该时隙到来时将步骤1.4生成的FlexRay数据帧采用广播的方式发送出去;
[0014] 1.6FlexRay总线上的节点接收到车用总线适配器发送的FlexRay数据帧后,从其模拟首部中解析出有效信息,并根据有效信息提取数据帧中有效数据,并按照需求对有效数据进行进一步的处理。
[0015] 进一步,所述FlexRay总线向CAN或者LIN总线的数据转发过程的具体步骤为:
[0016] 2.1FlexRay总线上的节点根据要发送的目的网络、目的节点和有效数据长度生成模拟首部,并将模拟首部和要发送的有效数据封装在FlexRay数据帧中,在本数据帧所属的发送时隙将该数据帧发送出去;
[0017] 2.2车用总线适配器接收到FlexRay总线上发来的数据帧后,根据发送时隙判断其是否为需向CAN或者LIN总线转发的数据帧,如果不是则丢弃并结束本次数据转发过程,如果是则提取其中的模拟首部并进入步骤2.3;
[0018] 2.3车用总线适配器对步骤2.2提取的模拟首部进行解析,根据模拟首部的格式提取其中的有效信息和有效数据,所述有效信息包括CAN数据帧的ID号、有效数据的长度或者LIN数据帧的源地址、目的地址、有效数据的长度;
[0019] 2.4车用总线适配器的应用层根据步骤2.3所提取的有效信息,将有效数据按照CAN或者LIN总线标准生成新的CAN或者LIN总线数据帧;
[0020] 2.5车用总线适配器将步骤2.4生成的CAN或者LIN总线数据帧发送到CAN或者LIN总线上;
[0021] 2.6CAN或者LIN总线接收到车用总线适配器发送的数据帧后,按照各自总线的标准对数据帧进行处理。
[0022] 进一步,所述CAN或者LIN总线向FlexRay总线的数据转发过程和所述FlexRay总线向CAN或者LIN总线的数据转发过程中的模拟首部均设计为采用5字节对齐的方式,分为固定部分和可变部分,其中固定部分长度为5个字节,可变部分长度为5N个字节,N为FlexRay数据帧中所含CAN或者LIN总线的数据帧数量且1≤N≤10;固定部分位于FlexRay数据帧的首部之后,可变部分位于固定部分之后,FlexRay数据帧的尾部位于可变部分之后。
[0023] 进一步,所述模拟首部中5个字节的固定部分包括6个字段,按先后顺序分别为:第0-2位为网络标识符,代表与FlexRay通信的网络类型;第3-7位为对应FlexRay帧中所带CAN或者LIN总线数据帧的数量;第8-15位为模拟首部长度,表示整个模拟首部所占用的字节数;第16-23位为数据总长度,表示FlexRay数据帧中模拟首部和有效数据总长;第
24-31位为预留字段,以便后期功能扩展;第32-39位为首部校验字段,用于实现对模拟首部的差错校验。
[0024] 进一步,FlexRay与CAN总线进行数据转发时,模拟首部的可变部分包括两类字段:IDn和Pn,其顺序为ID1、P1、ID2、P2……IDn、Pn……IDN、PN,其中n为FlexRay数据帧中所含每个CAN数据帧的序号且1≤n≤10,N为FlexRay数据帧中所含CAN总线的数据帧数量且1≤N≤10,其中的IDn字段占4字节,由32位的CAN总线ID号构成的,可兼容CAN总线的标准帧和扩展帧,通过对ID字段的解析推断出当前帧格式为标准帧还是扩展帧,并获得当前帧在CAN总线中的ID号;Pn占8位,表示每个CAN数据帧的偏移量,以字节为单位,该偏移量是指每个CAN数据帧有效数据的第一个字节在整个FlexRay数据部分中的字节序号。
[0025] 进一步,如果与FlexRay总线通信的网络为LIN总线,模拟首部的可变部分包括五类字段:IDn、LENn、SAn、DAn和Pn,其顺序为ID1、LEN1、SA1、DA1、P1、ID2、LEN2、SA2、DA2、P2……IDn、LENn、SAn、DAn、Pn……IDN、LENN、SAN、DAN、PN,其中n为FlexRay数据帧中所含每个LIN数据帧的序号且1≤n≤10,N为FlexRay数据帧中所含LIN总线的数据帧数量且1≤N≤10,其中IDn为对应第n个LIN数据帧的标识符且IDn占1个字节,LENn为对应第n个LIN数据帧的帧长度且LENn占1个字节,SAn为对应第n个LIN数据帧的源地址且SAn占1个字节,DAn为对应第n个LIN数据帧的目的地址且DAn占1个字节,Pn占1个字节且为Pn对应第n个LIN数据帧的帧首字节偏移量,该偏移量以字节为单位,是指每个LIN数据帧有效数据的第一个字节在整个FlexRay数据部分中的字节序号。
[0026] 本发明的优点为:
[0027] 本发明中,应用层可以通过模拟首部内容可以对相关信息直接解析,或者通过收到CAN或LIN总线的信息直接生成模拟首部,不需要事先对适配器本身进行配置,即可同时实现多个网络的互联。
[0028] 本发明采用隧道技术实现了数据的透明传输,例如在应用于FlexRay与CAN通信时,将CAN总线的4字节的ID内容直接封装在模拟首部中,不需要对其内容进行判断;也不需要像其他适配器或网关要对具体双方有效数据进行解析后另行封装,而是直接将数据字节在最终帧接收节点再进行解析。

附图说明

[0029] 图1:本发明基于首部添加的FlexRay协议转换方法网关中的协议层次结构及转换流程图;
[0030] 图2:FlexRay总线的数据帧格式;
[0031] 图3:CAN总线的数据帧格式;
[0032] 图4:LIN总线的数据帧格式;
[0033] 图5:适配器的结构示意图;
[0034] 图6:本发明实施例网络拓扑结构图;
[0035] 图7:模拟首部和有效数据部分在整个FlexRay数据帧中的位置;
[0036] 图8:FlexRay总线与CAN总线通信时模拟首部和有效数据部分;
[0037] 图9:FlexRay总线与LIN总线通信时模拟首部和有效数据部分;
[0038] 图10:本发明应用在混合动力客车上的网络拓扑结构示意图;
[0039] 图11:应用在混合动力客车上电机信号在FlexRay总线中的整体帧格式图。

具体实施方式

[0040] 本发明设计原理和思路如下:
[0041] 模拟首部添加的车用总线协议转换方法,其硬件载体为用于FlexRay与CAN或者LIN总线协议转换的车用总线适配器,适配器带有FlexRay、CAN和LIN总线接口,可以分别与FlexRay、CAN和LIN总线通信。
[0042] 以FlexRay和CAN总线为例来进行分析。两者均为现场总线,相对于标准ISO/OSI的7层协议较为简单,自下向上依次包括物理层、数据链路层、表示层(CAN协议中称为目标层)和应用层。由于应用层之外的其他协议层均已被固化到网络控制器中,本文的方案只对协议的应用层进行设计与改造。
[0043] 本文中的适配器用于FlexRay总线与其他总线通信过程中的协议转换,设计思路是:在应用层将CAN或者LIN总线上的1个或多个数据帧整合后与FlexRay总线上的1个数据帧对应,CAN和LIN总线的有效数据全部封装在FlexRay总线的数据部分,为了能够将其解析出来,添加了模拟首部,占用了FlexRay数据帧中的部分数据字节。CAN或LIN总线向FlexRay发送数据时,在应用层进行模拟首部的添加;而相反方向即当FlexRay向CAN或LIN总线发送数据时,此时FlexRay帧中数据部分已经提前加入了模拟首部,适配器需要对首部内容进行解析,并将解析后的结果发送到对应的总线上。以FlexRay和CAN总线通信为例,网关中的协议层次结构如图1所示,其中虚线表示数据流程。
[0044] LIN协议的结构与CAN总线也基本类似,均可以按照图1中CAN总线的方式实现与FlexRay的通信。
[0045] 鉴于上述的基本思路,最重要的就是要保证FlexRay总线能够有足够的数据场来保证所增加模拟首部的开销。FlexRay、CAN、LIN总线的数据帧格式分别如图2、图3和图4所示,其中FlexRay数据场为0-254字节,其数据场前面部分可称为FlexRay首部,后面部分可称为FlexRay尾部,CAN的数据场为0-8字节,LIN的数据场为2、4或8个字节。
[0046] 上述帧格式中,需要进行转换的主体为数据场部分、源地址、目的地址以及相关帧标识,在经过适配器之后仅需提取其中的关键信息比如数据长度等加入到模拟首部中,其余的帧信息比如校验信息和同步信息等不属于应用层的服务内容且仅在自己的网络内部通信时起作用。
[0047] 而FlexRay的数据场最大长度可达254字节,是数倍于CAN和LIN总线的,因此一个FlexRay帧在添加模拟首部后仍可以兼容多个CAN或LIN帧,完全可以满足现场应用的需要。
[0048] 根据本文添加模拟首部的思路可知,其他网络发给FlexRay的数据帧都需要在本适配器应用层解析后加上模拟首部后再行转发,而FlexRay中欲发送给其他网络的数据帧也必须在源节点产生数据帧的同时产生模拟首部,以备本适配器在向其他网络转发时进行解析。
[0049] 本发明的这种基于模拟首部添加的车用总线协议转换方法,其硬件载体为用于FlexRay与CAN或者LIN总线协议转换的车用总线适配器,适配器用于连接FlexRay总线和CAN总线或者LIN总线,适配器的结构示意图如图5所示,主控制器采用了FreeScale公司的MC9S12XF512芯片,芯片本身集成了FlexRay控制器、CAN控制器以及RS232控制器,使得设计比较简单,TJA1080、TJA1020和82C250分别作为FlexRay、LIN和CAN总线的收发器,对内与主控制器连接,对外与网络对应总线连接,其中FlexRay采用了双路冗余的方式。
[0050] 本发明的这种基于模拟首部添加的车用总线协议转换方法,其具体过程可分为两个部分:一为CAN或者LIN总线向FlexRay总线的数据转发过程,在此过程中需要在车用总线适配器的应用层添加模拟首部,并将1至10个CAN或者LIN的数据帧封装在FlexRay数据帧中进行转发;另一为FlexRay总线向CAN或者LIN总线的数据转发过程,在此过程中需要在车用总线适配器的应用层对模拟首部进行解析,并将FlexRay数据帧中所含的1至10个CAN或者LIN的数据帧提取出来;上述两种数据转发过程中添加模拟首部或者对模拟首部进行解析的过程均在车用总线适配器的应用层实现;上述FlexRay总线采用时分复用的工作方式;
[0051] 上述FlexRay数据帧所含的CAN或者LIN的数据帧的数量也可以不限于10个,理论上最大可以包含19个,但是为了使FlexRay数据帧不至于过大,将其数量最大值限定为10个。
[0052] CAN或者LIN总线向FlexRay总线的数据转发过程的具体步骤为:
[0053] 1.1车用总线适配器接收CAN或者LIN总线发来的数据帧,根据当前接收得数据帧的优先级和时间选定其中准备转发到FlexRay总线的1至10个CAN数据帧或者1至10个LIN数据帧;
[0054] 1.2车用总线适配器在其应用层提取所选定数据帧中的有效信息和有效数据,所述有效信息包括CAN数据帧的ID号、有效数据的长度或者LIN数据帧的源地址、目的地址、有效数据的长度;
[0055] 1.3车用总线适配器根据步骤1.2提取的有效信息对步骤1.1选定的1至10个CAN数据帧或者1至10个LIN数据帧生成模拟首部;
[0056] 1.4车用总线适配器将步骤1.3生成的模拟首部以及步骤1.2提取的有效数据封装在FlexRay数据帧的数据部分,生成一帧新的FlexRay数据帧;
[0057] 1.5按照FlexRay总线标准,车用总线适配器为步骤1.4生成的FlexRay数据帧分配一个与现有FlexRay总线上发送时隙不重复的时隙,并在该时隙到来时将步骤1.4生成的FlexRay数据帧采用广播的方式发送出去;
[0058] 1.6FlexRay总线上的节点接收到车用总线适配器发送的FlexRay数据帧后,从其模拟首部中解析出有效信息,并根据有效信息提取数据帧中有效数据,并按照需求对有效数据进行进一步的处理。
[0059] FlexRay总线向CAN或者LIN总线的数据转发过程的具体步骤为:
[0060] 2.1FlexRay总线上的节点根据要发送的目的网络、目的节点、和有效数据长度生成模拟首部,并将模拟首部和要发送的有效数据封装在FlexRay数据帧中,在本数据帧所属的发送时隙将该数据帧发送出去;
[0061] 2.2车用总线适配器接收到FlexRay总线上发来的数据帧后,根据发送时隙判断其是否为需向CAN或者LIN总线转发的数据帧,如果不是则丢弃并结束本次数据转发过程,如果是则提取其中的模拟首部并进入步骤2.3;
[0062] 2.3车用总线适配器对步骤2.2提取的模拟首部进行解析,根据模拟首部的格式提取其中的有效信息和有效数据,所述有效信息包括CAN数据帧的ID号、有效数据的长度或者LIN数据帧的源地址、目的地址、有效数据的长度;
[0063] 2.4车用总线适配器的应用层根据步骤2.3所提取的有效信息,将有效数据按照CAN或者LIN总线标准生成新的CAN或者LIN总线数据帧;
[0064] 2.5车用总线适配器将步骤2.4生成的CAN或者LIN总线数据帧发送到CAN或者LIN总线上;
[0065] 2.6CAN或者LIN总线接收到车用总线适配器发送的数据帧后,按照各自总线的标准对数据帧进行处理。
[0066] 上述步骤中的模拟首部均设计为采用5字节对齐的方式,分为固定部分和可变部分,其中固定部分长度为5个字节,可变部分长度为5N个字节,N为FlexRay数据帧中所含CAN或者LIN总线的数据帧数量且1≤N≤10,固定部分位于FlexRay数据帧的首部之后,可变部分位于固定部分之后,FlexRay数据帧的尾部位于可变部分之后。模拟首部及有效数据部分具体格式如图6所示。
[0067] 由图6可见,首部中固定部分包括6个字段,其中A为网络标识符,占3位,其标号代表与FlexRay通信的网络类型,例如CAN总线为2,LIN总线为3,因此可识别8种不同类型的网络;B为对应FlexRay帧中所带对方网络数据帧的数量,占5位,即最多可以带32组数据帧;C为首部总长度,占8位,表示整个模拟首部的长度;D为数据帧总长度,占8位,表示FlexRay帧中模拟首部和有效数据总长;E为预留字节,占8位,以便后期功能扩展;F为首部校验和,占8位,用于实现对模拟首部的差错校验。
[0068] 上述模拟首部和有效数据部分在整个FlexRay数据帧中的位置如图7所示。
[0069] 上述模拟首部中的可变部分根据与FlexRay总线通信的网络类型而不同:
[0070] 如果与FlexRay总线通信的网络为CAN总线,模拟首部的可变部分包括两类字段:IDn和Pn,其顺序为ID1、P1、ID2、P2……IDn、Pn……IDN、PN,其中n为FlexRay数据帧中所含每个CAN数据帧的序号且1≤n≤10,N为FlexRay数据帧中所含CAN总线的数据帧数量
且1≤N≤10,其中的IDn字段是由的4字节(32位)的CAN总线ID号构成的,可兼容CAN
总线的标准帧和扩展帧,通过对ID字段的解析可推断出当前帧格式为标准帧还是扩展帧,并获得当前帧在CAN总线中的ID号;Pn占8位,表示每个CAN数据帧的偏移量,以字节为单位,该偏移量是指每个CAN数据帧有效数据的第一个字节在整个FlexRay数据部分中的字节序号;模拟首部的可变部分后面为有效数据部分,FlexRay所带的第i个CAN数据帧的起始字节和终止字节按照第i个数据帧对应的偏移量Pi和第i+1个数据帧对应的偏移量Pi+1来计算得出。其模拟首部和有效数据部分如图8所示。
[0071] 如果与FlexRay总线通信的网络为LIN总线,模拟首部的可变部分包括五类字段:IDn、LENn、SAn、DAn和Pn,其顺序为ID1、LEN1、SA1、DA1、P1、ID2、LEN2、SA2、DA2、P2……IDn、LENn、SAn、DAn、Pn……IDN、LENN、SAN、DAN、PN,其中n为FlexRay数据帧中所含每个LIN数据帧的序号且1≤n≤10,N为FlexRay数据帧中所含LIN总线的数据帧数量且1≤N≤10,其中IDn为对应第n个LIN数据帧的标识符且IDn占1个字节,LENn为对应第n个LIN数
据帧的帧长度且LENn占1个字节,SAn为对应第n个LIN数据帧的源地址且SAn占1个字
节,DAn为对应第n个LIN数据帧的目的地址且DAn占1个字节,Pn占1个字节且为Pn对
应第n个LIN数据帧的帧首字节偏移量,该偏移量以字节为单位,是指每个LIN数据帧有效数据的第一个字节在整个FlexRay数据部分中的字节序号;模拟首部的可变部分后面为有效数据部分,FlexRay所带的第i个LIN数据帧的起始字节和终止字节按照第i个数据帧对应的偏移量Pi和第i+1个数据帧对应的偏移量Pi+1来计算得出。其模拟首部和有效数据部分如图9所示。
[0072] 下面结合附图和实施例对本发明做进一步说明。
[0073] 在混合动力客车上利用本发明这种方法进行小规模组网试验已验证其功能,网络拓扑结构如图10所示。其中整车控制器作为整个组网的核心,采用本发明的硬件载体——车用总线适配器来实现,电机、电池通过FlexRay总线连接到整车控制器上,发动机、离合器和变速箱通过CAN总线连接到整车控制器上,加速度传感器和车速传感器通过LIN总线挂接到整车控制器上。
[0074] 以其中电机节点的一帧数据经过整车控制器发送至CAN总线为例来说明FlexRay总线和CAN总线的协议转换过程,电机信号在FlexRay总线中的整体帧格式需要设计如图11所示,其中仅为了说明模拟首部的作用,没有具体给出FlexRay帧中首部和尾部。
[0075] 当整车控制器收到图中数据帧后,提取如图11所示FlexRay帧中的数据部分,可得到模拟首部和有效数据部分,其中模拟首部中字段A为2,则判断为发往CAN总线的帧;字段B为3则判断其中有3个完整的CAN数据帧;根据字段ID1可判断其第1帧的ID为
0x18FEBF0B,为扩展帧,根据P1字段的0x14和P2字段的0x1C推断出从第20字节开始
(定义模拟首部首字节为0字节),第27字节结束;根据字段ID2可判断其第2帧的ID为
0x18FED9EF,为扩展帧,根据P2字段的0x1C和P3字段的0x24推断出从第28字节开始,第
35字节结束;根据字段ID3可判断其第3帧的ID为0x18F00F52,为扩展帧,根据P3字段的
0x24和D字段的0x2C推断出从第36字节开始,第43字节结束。根据上述内容可解析出3个CAN总线数据帧的所有信息,然后将其按照CAN总线的格式以广播方式发送到CAN总线上即可。从CAN总线经过整车控制器向FlexRay总线发送数据则为上述解析过程的一个逆向组合过程。
[0076] 以加速度传感器和车速传感器的数据经过整车控制器发送给FlexRay总线上为例来说明FlexRay总线和LIN总线的通信过程。当整车控制器收到加速度传感器和车速传感器通过LIN总线各发来的1帧数据后,弃掉其中的同步间隔、同步字段,根据标识符字段提取出各自的标识符和数据长度,根据数据字段提取出其源节点、目的节点和有效数据。将该2帧数据组合成1帧FlexRay数据,仅需计算一下每个帧的偏移量即可。
[0077] 以上对本发明所提供的一种基于模拟首部添加的车用总线协议转换方法行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。