车载网络管理的重要作用是协调网络中的节点同步进入睡眠状态。此外,车载网络管理还应具备网络监测和诊断、网络配置管理的作用。
FlexRay总线协议是FlexRay联盟(FlexRay Consortium)制定的适用于汽车高速网络的新一代车载总线,具备高传输速率、硬实时、安全性和灵活性的特点。FlexRay联盟目前只规定了物理层协议和数据链路层协议,没有制定网络管理方面的标准。
FlexRay总线协议特性分析
(1)通信机制确定性
FlexRay总线采用周期通信的方式,一个通信周期(Communication Cycle)可以划分为静态部分、动态部分、特征窗(SW, Symbol Window)和网络空闲时间(NIT, Network Idle Time)4个部分(图1)。静态部分和动态部分用来传输总线数据,即FlexRay报文。特征窗用来发送唤醒特征符(WUS, Wake Up Symbol)和媒介访问检测特征符(MTS, Media Access Test Symbol)。网络空闲时间用来实现分布式的时钟同步和节点参数的初始化。FlexRay总线所有节点的通信周期必须保持同步。
图1:FlexRay通信周期示例。
FlexRay节点如果通过发送网络管理协议数据单元(NMPDU,Network Management Protocol Data Unit)进行网络管理,NMPDU可以在静态部分或动态部分周期性传输。而NMPDU发送的允许或禁止由节点网络管理状态决定,因此所有FlexRay节点的网络管理状态转换必须在通信周期的间隔处执行。然而,FlexRay总线的通信周期为全局时间,在总线运行过程中会根据部分节点的时间进行实时调整,所以网络管理状态转换不能以内部定时器的方式实现,必须使用计数器的方式配合总线通信周期实现,才能满足所有节点同步转换的要求。
(2)通信调度灵活性
FlexRay总线在一个通信周期采用了两种接入时序:静态部分采用时分多址(TDMA, Time Division Multiple Access)的接入时序,动态部分采用柔性时分多址(FTDMA, Flexible TDMA)的接入时序。(图1)静态部分将通信时间划分为多个等时长的静态时隙(Static Slot),不同帧ID的静态帧在相应ID的时隙内发送,实现了报文发送的确定性。动态部分将通信时间划分为多个等时长的微时隙(Mini Slot),不同帧ID的动态帧在相应ID的动态时隙(Dynamic Slot)内发送。一个动态时隙可以占用一个或多个微时隙,动态帧的发送时间并不确定,根据动态部分的负载情况可能延后发送,甚至延后到下一周期。在双信道传输时,两个信道的动态帧的传输时间也可能不同。动态帧的使用有效地提高了总线的实际带宽,适用于发送对实时性要求不高的事件型报文,例如诊断报文、标定报文。
FlexRay总线的NMPDU需要根据静态帧和动态帧的特点,选择合适的发送方式。静态帧能够实现严格的周期性发送,但是静态帧的资源受限——出于安全性的考虑,同一ID的静态时隙只能分配给一个节点。所以,使用静态帧发送NMPDU需要考虑网络的资源情况。而同一ID的动态时隙可以分配给多个节点,以提高总线的利用率,但是动态帧要考虑总线实际负载情况造成的发送延时。
(3)应用层硬件支持
FlexRay总线协议的数据帧包含起始段(Header Segment)、净荷段(Payload Segment)和结束段(Trailer Segment)(图2)。起始段中的净荷段指示位(Payload Preamble Indicator)指出在净荷段开头是否包含可选变量。如果是静态帧,此位置1时表示净荷段首先发送网络管理向量(NM Vector),长度为0-12字节(所有节点NM Vector长度相同);如果是动态帧,此位置1时表示净荷段首先发送消息标识符(Message ID),长度为2字节。
图2:FlexRay数据帧结构。
FlexRay协议规定了净荷段可选变量由数据链路层实现自动写入和读取的服务,由FlexRay通信控制器芯片实现该功能,以简化软件并提高读取速率。如果使用静态帧的NM Vector发送NMPDU,接收节点可以通过读取NM Vector寄存器,快速识别多个节点的网络请求,从而有效提高信息的更新速率。
FlexRay总线网络管理需求
车载网络管理的重要作用是协调网络中的节点同步进入睡眠状态,适合FlexRay总线的网络管理除了要求实现网络管理的功能外,还需要:
(1)采用分布式网络管理方式。
FlexRay总线协议适用于分布式控制网络,在通信调度表的实现和时钟同步方面均采用了分布式的控制方式,即网络中不存在Master或Slave节点。因此FlexRay总线也须采用分布式的网络管理机制,即每个总线节点独立的执行其网络管理行为,状态转换基于自身的网络请求条件和接收的NMPDU。
(2)通过周期性报文发送NMPDU
由于FlexRay总线采用确定性通信方式,网络节点的所有报文需要按照通信调度发送和接收。任何通信调度表设计之外的报文均有可能占用分配给其它节点的总线时间,从而破坏总线通信。所以,FlexRay总线不支持事件触发的非确定性报文,NMPDU必须通过周期性报文在确定的时间发送。根据实际网络要求,网络管理周期可以设为FlexRay通信周期的整数倍,每个节点在一个网络管理周期内发送其NMPDU一次。
(3)节点的网络管理状态转换和NM-Task必须与FlexRay通信周期配合执行。
由于FlexRay总线采用周期通信的方式,FlexRay节点的网络管理状态转换必须在FlexRay通信周期的间隔处执行,NM-Task的执行需要在上一周期所有其它节点的NMPDU接收完成和下一周期发送本节点NMPDU之前完成。然而,FlexRay总线的全局时间每两个通信周期调整一次,所以上述二者不能采用定时器方式执行,必须与FlexRay通信周期配合执行,以实现网络范围的同步执行。
(4)根据两种接入时序的特点,灵活使用静态帧与动态帧。
FlexRay静态帧严格按照报文周期发送,但是静态帧会占用一个静态时隙。如果所有NMPDU均占用一个静态时隙并且其发送周期远大于通信周期,则造成了带宽的浪费。而一个动态帧ID可以分配给多个节点,不同节点的NMPDU可以通过设定相同的帧ID,不同的循环计数值(Cycle Counter)在多个通信周期的相同动态时隙发送,有效的提高了带宽利用率。实际上,帧ID最小的动态帧同样可以满足严格周期性发送。所以,静态帧和动态帧均可以用来发送NMPDU,需考虑网络和节点通信的实际情况灵活使用。
(5)合理利用静态帧的NM Vector。
在FlexRay静态帧中使用NM Vector可以显著的提高网络管理信息的更新速率,但是NM Vector的长度为0-12字节,且要求所有节点长度相同。如果NM Vector长度较短,如1-2字节,则可以同应用报文合并一起发送,以避免带宽的浪费。所以,可在NM Vector中只发送关于节点地址、网络请求状态的信息,使用动态帧发送NMPDU中可选的用户数据(User Data)。
OSEK网络管理协议
OSEK网络管理可以监控网络中每个节点的状态,向上层软件提供当前网络的配置,并使网络中的节点能够协商进入睡眠状态。OSEK网络管理采用分布式网络管理方式,定义了两种网络管理机制:直接网络管理和间接网络管理。
1.直接网络管理
直接网络管理使用特定的网络管理报文,利用令牌环机制监控网络。网络中,每个节点都有一个后继节点,逻辑环的第一个节点是该逻辑环最后一个节点的后继节点,从而所有节点组成一个逻辑环。直接网络管理要求网络中所有的节点参与网络管理并分配唯一的静态节点地址。节点通过发送NMPDU进行网络管理,OSCK NMPDU举例如图3所示。
图3:OSEK NMPDU举例。
节点通过发送Alive报文建立令牌环,功能正常的节点发送周期性(周期TTYP)的Ring报文指示该节点的功能正常,功能不正常的节点发送周期性(周期TError)的Limphome报文指示该节点的跛行状态。请求网络睡眠的节点将NMPDU中的Sleep.Ind置1并发送请求,逻辑环中最后一个节点同意睡眠后发送Sleep.Ack置1的NMPDU。所有节点接收到Sleep.Ack置1的NMPDU后,等待相同时间(TWaitBussleep)后转至睡眠状态。
相应的,OSEK直接网络管理的网络状态分为NMAwake状态和NMBusSleep状态。在NMAwake状态下按照网络配置区分为NMNormal子状态和NMLimphome子状态。网络状态间的转换基于内部定时器及不同类型NMPDU文的接收。
2.间接网络管理
间接网络管理不需要NMPDU,而是通过监控节点的周期性应用报文,实现网络的监控。节点发送的周期性应用报文被成功接收即被认为在线,在预定时间内没有被成功接收即被认为离线。间接网络管理不需要网络中的所有节点分配网络管理报文ID,较直接网络管理简单灵活,网络开销小。但是对于应用上只需要接收网络报文或只发送事件触发报文的节点需要增加专门的周期性报文。
OSEK网络管理虽然没有指定总线类型,但是其特性决定了其只适合于事件触发的总线协议,如CAN总线,而不能用于FlexRay总线协议,因为:节点网络管理状态的转换和NM-Task的执行基于定时器的超时,无法与FlexRay通信周期同步;直接网络管理采用令牌环机制,与FlexRay报文的确定性发送方式不符。
此外OSEK网络管理没有考虑FlexRay总线的不同接入时序、硬件支持和双通道通信等特点。
AUTOSAR网络管理协议
AUTOSAR组织提出了标准化的软件平台及不同总线协议的网络管理规范。AUTOSAR网络管理使用分布式的直接网络管理机制,网络状态转换基于节点请求网络的状态及周期性NMPDU的接收。节点接收到一个广播发送的NMPDU表明发送节点意图保持网络的唤醒状态。如果某节点准备进入总线睡眠状态,则停止发送NMPDU,但只要接收到其它节点发送的NMPDU,就推迟总线睡眠模式的转换。最终,如果节点因为接收不到NMPDU而使预设的时间(FlexRay通信周期计数器)溢出,节点便进入总线睡眠状态。如果网络中的任意节点需要总线通信,它可以通过发送NMPDU将网络从总线睡眠状态唤醒。
AUTOSAR网络管理功能通过网络管理模块和网络管理接口模块实现。网络管理模块实现上述的网络管理机制,根据不同网络类型(CAN、FlexRay)的特点规定了不同的网络状态定义、通信调度和附加功能等。网络管理接口模块实现了网络管理模块和上层应用软件的隔离及网络管理的协调功能。协调功能在网关中应用,除规定不同类型网络的网络管理协调外,还规定了AUTOSAR网络管理同OSEK网络管理间的协调。
AUTOSAR FlexRay网络管理充分考虑了FlexRay总线周期性通信的特点,创造性地对NMPDU进行了分离,充分发挥了静态帧和动态帧的优势。同时在网络管理状态方面进行了简化,取消了Limphome状态,使网络状态向睡眠的转换更加迅速,也降低了开发难度。更重要地是,AUTOSAR网络管理在架构上考虑了网关节点的实现及与OSEK网络管理的协作,迎合了FlexRay总线作为数据主干网的发展趋势。
对比和结论
根据上文的论述,可以得出OSEK直接/间接网络管理与AUTOSAR FlexRay NM的对比(图4)。
图4:网络管理协议比较。
OSEK网络管理中状态转换的执行基于定时器,此特点决定了其适用于事件触发的总线协议,而FlexRay总线是确定性通信总线。OSEK网络管理无法满足网络管理状态转换和NM-Task与FlexRay通信周期配合执行的需求,进而无法实现分布式控制网络的状态同步转换,不能用于FlexRay总线。
AUTOSAR FlexRay网络管理充分考虑了FlexRay总线的特点及应用领域,满足FlexRay总线高速、确定性通信的需求并体现了FlexRay总线硬件支持、灵活性的优势,是目前唯一适用于FlexRay总线的网络管理协议。