您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > CAN总线系统测试基础理论
1.OSEK/VDX网络管理体系目前,由不同的生产厂商提供的不同的电子控制单元被广泛应用到整车系统中,然后通过汽车总线连接成汽车网络,OSEK/VDX网络管理的主要目的就是保证由各个电子控制单元组成的车载通讯网络的可靠性和安全性,为各个ECU节点之间的网络互连提供一个规范化的网络连接标准。OSEK/VDX网络管理规定了应用程序接口规范和网络管理的相关机制。OSEK/VDX标准主要包含4个基本的模块,实际的操作系统OSEKOS模块、通讯子系统OSEKCOM模块、网络管理系统OSEKNM模块、实现语言OSEKOIL模块。各个模块版本可以分别定义。OSEK/VDX标准的体系结构如图1所示。OSEK网络管理提供了两种网络管理模式:直接网络管理和间接网络管理。直接网络管理是基于令牌环的网络结构来实现的,网络上的节点同时被其他节点监控,在总线上的节点都有一个地址队列,分别对应自己和逻辑环前后的节点状态,整个网路组成一个统一的环形结构,任何新节点的加入或取消都会使得环结构重新建立。间接网络管理是指在网络上有一个主控节点,由该节点通过网络周期监控其他节点的网络状态。逻辑环OSEKNM规定逻辑环中的消息是由网络地址小的节点传送到网络地址大的节点,网络地址最大的节点再将消息传给网络地址最小的节点,从而首尾相接组成了一个环结构。CAN网络中的消息是以广播的形式发送的,网络中的一个节点发送消息,网络中的其余节点都可以收到,收到消息的各个节点按照特定的后继检测算法,判断自己是不是发送方节点的逻辑后继,如果是,该节点就接收该消息,如果不是,则将消息抛弃,通过节点的消息过滤功能,实现消息按照逻辑环传输。逻辑环的消息传输结构如图所示。Node1广播一个消息,此时Node2和Node3同时收到,但是Node3根据后继检测算法判断发现自己不是Node1的后继,于是放弃这个消息,Node2通过后继检测算法判断之后,发现自己是该消息发送节点的后继节点,于是接收该消息,同理,Node3接收到Node2的网络管理消息,Node1接收到Node3的网络管理消息,从而组成一个逻辑环结构。(1)直接网络管理直接网络管理是通过专门的NM消息来实现的,这种管理方法会给整个网络带来较高的负载,但可以对网络信息进行精确的配置。直接网络管理功能可分为:启动时初始化、运行时节点状态监测、睡眠管理和相关的硬件操作。在OSEKNM中,每个节点都是一个独立的逻辑个体,具有各种状态,并且能够传输消息。OSEKNM中的每个节点都有一个唯一网络地址,也就是标识符。网络中的节点通过标识符发送特定的网络管理消息进行通信。主要的网络管理消息有alive消息,ring消息,limphome消息。Alive消息Alive消息主要是通知网络上的其他节点,本地节点要上线,即加入到逻辑环中。当网络管理功能启动之后,经过一系列初始化操作,节点开始发送的第一个消息是不带睡眠标志的alive消息,当节点被跳过时,节点同样发送不带睡眠标志的alive消息,告诉网络中的节点自己被跳过,请求重新加入到逻辑环中。网络中的节点收到alive消息之后,经过判断,找到该节点在逻辑环中的位置。Ring消息负责逻辑环的正常通信。当网络中的所有节点成功建立逻辑环之后,节点就在逻辑环中传输Ring消息,Ring消息的传输类似于令牌环机制,Ring消息相当于令牌。LimpHome消息在LimpHome模式下发送的周期性的网络管理消息,目的是为了保证网络中的其他节点能够监听到本地节点。当该节点能够成功接收到其他节点发送的网络管理消息时,说明节点已经恢复正常,它会发送Alive消息,重新加入逻辑环。直接网络管理逻辑状态转换NMOff状态是系统复位后的初始状态,通过调用网络管理初始化函数启动网络管理之后,网络便进入NMOn状态,这个状态是网络管理的运行状态,网络的故障检测和睡眠都是在这个状态完成的。网络进入NMOn状态之后,首先进入NMInit初始化状态,进行网络管理初始化操作。初始化操作完成之后,网络中的节点便进入NMAwake状态。NMAwake状态是网络没有进入睡眠的一种状态,系统一般会保持在该状态直到系统满足进入睡眠状态的条件,系统则进入睡眠状态。当网络进入NMBusSleep状态之后,网络中的节点也可以被唤醒,然后重新初始化、运行,进行正常的操作。从NMAwake状态默认进入的子状态是NMReset。在NMReset状态下,节点发送alive类型的网络管理消息。如果消息发送成功,节点将进入NMNormal状态,并在此状态下重复发送逻辑环消息——Ring消息,进行网络管理的相关检查等操作。如果alive消息发送不成功或者Ring消息接收或者发送失败,节点将进入NMLimpHome状态。进入NMLimpHome状态之后,节点周期性地发送LimpHome消息,以便及时报告自己的故障情况,同时它又不断的监听网络上的其它节点的网络管理消息,直到该故障节点可以成功传输网络管理消息并且它能够正确接收网络上其他节点的网络管理消息。此时,该节点重新进入NMReset状态进行重启,然后进行一般的网络管理操作。协商睡眠机制OSEK直接网络管理定义了一套睡眠协商机制,能够使网络上的所有节点在同一时刻进入睡眠。基本原理是:当某个节点不需要通信时,在发送自己的Ring消息时,将睡眠指示位置1,然后发送给自己的后继节点,其后继节点如果同意睡眠请求,则重复这一动作,如果不同意,可以将睡眠指示位置0,发送不带睡眠标志的Ring消息,将整个网络保持在唤醒状态。当网络中所有节点都同意睡眠,即带有睡眠标志的Ring消息在逻辑环中传递一周,发送睡眠标志的节点发送一个睡眠确认消息,网络中的节点都等待CANNM_MSG_WAIT_BUSSLEEP_TIME时间之后同时进入睡眠状态。睡眠协商的过程如图所示。应用程序通过网络管理模块的GotoMode(BusSleep)函数,设定睡眠操作码sleep.ind和sleep.ack控制节点进入睡眠状态。其中sleep.ind置1表示发送带有睡眠标志的网络管理消息,sleep.ack置1表示发送带有睡眠确认的网络管理消息。当应用程序调用GotoMode(Awake)或者ECU内部产生睡眠唤醒事件时,网络管理消息中的睡眠指示位被置0,节点进入NMReset状态,重新启动网络管理并构建逻辑环结构。在LimpHome状态下的节点接收到带有睡眠请求的网络管理消息,会将自己的睡眠标志置1,等待WaitBusSleepTime时间之后进入睡眠状态。(2)间接网络管理间接网络管理是通过监控网络管理消息来实现网络监控的。间接网络管理的实现很简单、负载也较低,但是容易受到应用消息的影响,相对直接网络管理来讲,很难提供网络配置的精确信息间接网络管理是通过监控应用消息来达到监控的目的,所以网络中的节点必须在正常操作模式下周期性地发送特定的消息。间接网络管理提供两种消息定时的方法:全局定时器和独立定时器。全局定时器是指总线上所有节点的周期性消息的发送均采用同一个定时器TIMEOUT_TIME。它具有占用资源少,实时性差等特点。但是,这种定时器不能保证系统的实时性。如果预定时间TIMEOUT_TIME之内没有收到其他节点的网络管理消息,则该节点认为网络上没有其他节点在线,如果在TIMEOUT_TIME超时之前收到来自其他节点的网络管理消息,则设置该消息的发送节点为在线状态。若节点超过预定时间TIMEOUT_TIME都没有收到自己发送的网络管理消息,则设置本地节点为静音模式,反之设为非静音模式。独立定时器是指为每个节点独立分配一个定时器Timerx,用于监控各个节点的周期性消息。每个节点可以根据自己的特点设置不同的定时时间,从而满足系统的实时性要求,但是独立定时器占用系统资源较多。如果节点n的定时器Timern超时,但是节点n并没有收到来自其他节点的网络管理消息,则设置其他节点为离线状态,反之,配置其他节点为在线状态。如果直到Timern超时,节点n都没有收到自己发送的网络管理消息,则设置自己为静音模式,反之设为非静音模式。间接网络管理状态转换间接网络管理的状态转换如图所示。间接网络管理主要包括NMOff和NMOn两种状态,其中NMOn状态又包括NMBusSleep和Awake两个子状态,Awake又包括子状态NMNormal、NMWaitBusSleep和NMLimpHome。NMAwake是系统进入NMOn之后的默认状态,而NMNormal又是进入Awake之后的默认状态。在间接网络管理中,只有当数据链路层出现重大错误时,节点才会进入NMLimpHome状态,这一转换条件与直接网络管理不同。当故障排除之后,节点将重新返回NMNormal状态。NMWaitBusSleep是节点进入睡眠状态之前的一个等待状态。当计时器WAIT_BUSSLEEP_TIME超时后,所有节点进入睡眠状态。在间接网络管理中,节点睡眠不采用直接网络管理的协商机制,而是采用主节点控制的管理方法。当从节点需要睡眠时便向主节点发出睡眠请求,主节点询问其他从节点,若有从节点不同意睡眠,则网络维持在唤醒状态,若网络中节点都同意睡眠,则主节点发送睡眠命令,控制所有从节点进入等待睡眠状态,然后等待定时器WaitBusSleepTime超时之后,网络进入睡眠状态。2.AUTOSAR网络管理体系AUTOSAR定义的通信系统总体架构可以分为两个大方面:面向用户的调用接口层,包括COM层以及PDURouter层,对应ISO/OSI模型的应用层与会话层;面向不同总线的通信栈,包括CAN/LIN/FlexRayTransPort层、CAN/LIN/FlexRayInterface层以及CAN/LIN/FlexRayDriver层,分别对应ISO/OSI模型的网络层、数据链路层。AUTOSARCOM各个层次之间的关系如图所示,COM层和PDURouter层处理的数据协议单元称为I-PDU,CANTransPort层处理的数据协议单元称为CANN-PDU,CANInterface层处理数据协议单元称为CANL-PDU,CANDriver层处理数据协议单元称为CANFrame。与COM联系密切的AUTOSAR的四个基础软件组:DCM(DiagnosticCommunicationManager)诊断通信管理器DCM为诊断提供通信服务,为DEM提供诊断数据,同时从DEM中获取外部诊断工具所需要的信息并通过COM通信系统传递。DEM(DiagnosticEventManager)诊断事件管理器DEM的主要任务是处理和存储诊断事件和相关数据。DEM根据COM通信系统传递到的一些信息和相关标准生成一个故障码,并通过COM通信系统将故障码传递到外部诊断工具。DET(DevelopmentErrorTracer[35])开发错误跟踪器当程序运行期间出现错误时,COM系统会实时将错误出现的模块以及对应的错误代码上报给DET模块,DET根据用户配置决定如何处理错误。ECUStateManager(EcuSM,ECU状态管理器)EcuSM是AUTOSAR的架构中处理ECU事件、管理ECU中所有组件的模块,同时也是开启COM通信功能的模块。此外,COM需要提供了EcuSM状态查询、事件查询以及事件通知的接口,方便其管理组件。网络管理模块位于通信服务模块之中,其主要功能是负责通信管理,防止因为节点故障而浪费通信资源,第二个功能是节点状态监控,通过保证每个节点最基本的管理帧发送,使每个节点能够被其它节点发现。AUTOSAR网络管理的基本状态转换如图。AUTOSAR网络管理采用分布式的直接网络管理方法,网络状态的变化是由周期性NMPDU的接收情况和节点请求网络的状态综合考虑的。当节点接收到一个NMPDU时,意味着该网络管理消息的发送节点意图保持网络的唤醒状态。如果某个节点停止发送NMPDU,意味着该节点准备进入睡眠状态。但是,只要该节点接收到来自其它节点的NMPDU,就重新启动等待定时器,推迟进入睡眠状态的时间。如果直到CANNM_MSG
本文标题:CAN总线系统测试基础理论
链接地址:https://www.777doc.com/doc-5215660 .html