基于OSEK网络管理的CAN网络管理方法
技术领域
本发明涉及一种基于OSEK网络管理的一种新型网络管理策略设计,尤其提出了虚拟网络的构想,在多节点情况下应用虚拟网络实现需要网络管理的模块进行建环通讯,不需要的网络管理模块可以休眠。这样可以达到减少总线负载率,降低电气干扰性,有利于优化总线网络的目的。
背景技术
由于现代汽车电子的技术水平大幅提高,要求能对更多的汽车运行参数进行精确控制,因而汽车控制器的数量在不断的上升,从开始的几个发展到几十个以至于上百个控制单元。控制单元数量的增加,使得它们互相之间的信息交换也越来越密集,为了节省车上的布线空间即迅速的进行信息传递,采用CAN局域网来实现控制器之间的数据交换,从而达到调控的最佳状态。但是控制模块越多,所带来的电气干扰越严重,通讯时效性越低,总线负载率越高。如何降低负载率,减少干扰,优化网络,成为一项比较困难的问题。
发明内容
针对上述现有技术的不足,本发明设计了一种基于OSEK(汽车电子开放式系统及其接口)网络管理的CAN网络管理方法。
为了解决上述技术问题,本发明基于OSEK网络管理的CAN网络管理方法予以实现的技术方案是:该网络管理方法由OSEK网络转换处理模块和应用层-网络接口处理模块共同作用来实现,车身所有ECU节点以CAN总线连接,所述OSEK网络转换处理模块包括故障处理模块、休眠及初始化处理模块和虚拟网络处理模块;实现ECU节点网络状态转换的过程如下;
a.网络初始化;
b.网络复位:依据下述定义的虚拟网络管理报文帧建立虚拟网络,所述虚拟网络由ECU节点动态组合而形成,所述网络管理报文帧的定义如下:
其中:在报文ID与各自ECU ID之间建立一一对应的关系;数据场字节0中的虚拟网络ID位定义了虚拟网络的编号,与此同时,数据场字节0中还定义了虚拟网络报文帧类型Alive、Ring、Limphome与不同显示位之间一一对应的关系;数据场字节1-7中的虚拟网络ECU节点ID定义了虚拟网络需要通知的ECU节点的地址;
c.所述OSEK网络转换处理模块和应用层-网络接口处理模块共同作用完成ECU节点网络状态的转换,包括有以下几种情形:
ECU节点虚拟网络激活状态到非激活状态的转换:所述ECU节点所在的虚拟网络不需要通讯时,所述ECU节点就停止发送Ring类型的虚拟网络管理报文帧,虚拟网络计时器等于0时,所述ECU节点停止发送信号和接收信号,进入虚拟网络非激活状态;当虚拟网络中所有ECU节点都不需要通讯时,ECU节点应用层-网络接口处理模块发送应用层关闭虚拟网络的请求;此时整个虚拟网络就进入到关闭状态,同时关闭报文发送逻辑,设置虚拟网络激活位为0、虚拟网络Alive报文帧的发送标志位置0,虚拟网络Ring报文帧的发送标志位置0,停止发送信号,停止接收信号;
ECU节点虚拟网络非激活状态到激活状态的转换:当虚拟网络休眠后,若处于休眠的ECU节点收到其他节点发出的虚拟网络Alive报文帧,则会将寄存器对应的发送虚拟网络Alive报文帧的标志位置1,此时,该ECU节点检测到自身发出的Alive报文帧,该ECU节点会进入激活状态,重新加入虚拟网络;
ECU发送节点虚拟网络激活状态的自身转换:ECU发送节点发送第一帧虚拟网络管理报文帧后,将虚拟网络Alive报文帧的发送标志位置0,并设置虚拟网络Ring报文为等待发送状态;在虚拟网络Ring报文发送后,所述ECU发送节点检测到这个事件,这时设置其允许发送和接收信号,并且更新虚拟网络计时器为8s;
ECU接收节点虚拟网络激活状态的自身转换:ECU接收节点由无虚拟网络管理报文帧发送请求状态进入到虚拟网络管理报文帧发送激活状态,当虚拟网络管理报文帧发送后,产生Alive报文帧发送事件,这时接收节点允许其发送和接收信号,同时设置虚拟网络计时器为8s;
ECU节点虚拟网络激活状态到网络Limphome状态的转换:ECU节点处在虚拟网络激活状态,若无法发送虚拟网络管理报文帧,并且试图连续发送虚拟网络管理报文帧的次数超过8次,则ECU节点进入到网络Limphome状态;
ECU节点虚拟网络非激活状态到网络Limphome状态的转换:ECU节点处在虚拟网络非激活状态,若无法发送虚拟网络管理报文帧,并且试图连续发送虚拟网络管理报文帧的次数超过8次,则ECU节点进入到网络Limphome状态;
ECU节点虚拟网络非激活状态到网络等待休眠状态的转换:当虚拟网络计时器时间减少到0秒,并且外部虚拟网络激活标志位为0,应用层-虚拟网络接口激活标志位为0时,设置等待休眠计时器为1.5s,ECU节点进入到网络等待休眠状态;
ECU节点网络等待休眠状态到虚拟网络激活状态的转换:ECU节点处于网络等待休眠状态时,在等待休眠计时器设置的1.5S内收到来自应用层-虚拟网络接口激活请求,ECU节点会进入到虚拟网络激活状态;
ECU节点虚拟网络激活状态到网络复位的转换:ECU节点在虚拟网络激活状态下,如果ECU重启,则ECU节点进入到网络复位状态。
进一步讲,本发明基于OSEK网络管理的CAN网络管理方法,其中,所述虚拟网络管理报文帧定义中,在报文ID与各自ECU ID之间建立一一对应的关系,是指:每一个ECU节点发出的虚拟网络管理报文的ID与ECU节点之间是一一对应的,不同的ECU节点发出的虚拟网络管理报文对应的ID是不同的。
所述网络管理报文帧定义中,数据场字节0中的虚拟网络ID位定义了虚拟网络的编号,是指:标识一个虚拟网络的编码,由ECU节点动态组成的不同的虚拟网络通过该编码来区分,这个虚拟网络里的ECU节点也通过该编码来确认该ECU节点在这个虚拟网络里。
所述网络管理报文帧定义中,数据场字节0中定义了虚拟网络报文帧类型Alive、Ring、Limphome与不同显示位之间一一对应的关系,是指:显示位表示的不同数值代表其中一种报文类型,1表示Alive类型的报文,2表示Ring类型的报文,3表示Limphome类型的报文。
所述网络管理报文帧定义中,数据场字节1-7中的虚拟网络ECU节点ID定义了虚拟网络需要通知的ECU节点的地址,是指:一个确定的虚拟网络是由一些确定的ECU节点组建而成,虚拟网络管理报文帧的数据场字节1-7中,列出了组建这个虚拟网络的ECU节点ID地址或者是这些ID地址一一对应的标识数值。
与现有技术相比,本发明的有益效果是:
(1)提出虚拟网络构想,可以根据实际各网络节点需要随机进行自网络的构建。由于虚拟网络是一个发送与接收信号的集合,可以控制这些信号的收发与关闭。采用虚拟网络将需要通讯的模块组成子网络,进行通讯,不需要通讯的模块可以继续休眠。当需要休眠的网络模块通讯时,通过发送名称定义为虚拟网络管理报文帧的报文,唤醒模块构建子网络。不同的子网之间也可以共用模块。这样就很好的解决了由于ECU节点繁多导致的CAN总线负载率高的问题,优化了网络管理。
(2)极大的降低了总线负载率,减少了电气干扰。一款CAN总线上含有十二个车身ECU节点的SUV车型,在没有使用本发明所设计的网络管理方法之前,用VECTOR CANoe工具测试SUV车的车身CAN总线负载率为29%,容易发生总线通讯数据丢失现象;使用本发明所设计的基于OSEK网络管理的CAN网络管理方法,测试SUV车的车身CAN总线负载率为15%,能够保证CAN总线通讯的稳定性,不会发生通讯数据丢失现象。另外,由于总线负载率降低,总线上数据通讯的平均数据流量变小,数据信号通讯引起的“波”传播干扰减少,很好的减轻了车身电气干扰。
(3)降低了总线故障。如果车辆上总线负载率过高,容易引起总线bus off故障,导致ECU节点总线故障和网络总线故障。使用虚拟网络技术,一方面通过降低总线负载率减少bus off故障出现的可能性,另一方面虚拟网络组成一个独立的网络,可以继续完成车辆要求的功能,从一定程度上忽略发生故障ECU节点所带来的影响。
附图说明
图1是本发明基于OSEK网络管理的CAN网络管理方法网络状态转换流程图;
图2是本发明CAN网络管理方法中ECU节点报文发送处理逻辑框图;
图3是本发明CAN网络管理方法中ECU节点报文接收处理逻辑框图;
图4是本发明CAN网络管理方法中应用层-虚拟网络接口处理逻辑框图。
具体实施方式
下面结合具体实施方式对本发明作进一步详细地描述。
本发明基于OSEK网络管理的CAN网络管理方法,由OSEK网络转换处理模块和应用层-网络接口处理模块共同作用来实现的,车身所有ECU节点以CAN总线连接,所述OSEK网络转换处理模块包括故障处理模块、休眠及初始化处理模块和虚拟网络处理模块;本发明网络管理方法中所涉及到的网络管理状态转换主要是规定不同状态间的转换条件,明确ECU节点的不同状态。当系统上电后,首先进入到网络初始化状态,ECU节点进行内部初始化。随后ECU节点进入到网络复位状态101,设置整体逻辑计时器为8s,设置虚拟网络Alive报文帧的发送标志位为1。ECU节点由无虚拟网络管理报文帧发送请求状态进入到虚拟网络发送激活状态201,同时初始化虚拟网络管理报文帧,ECU节点由虚拟网络发送激活状态转换到Alive报文等待状态205。
发送节点发送虚拟网络管理报文帧,接收节点接收虚拟网络管理报文帧。当ECU发送节点发送第一帧网络管理报文后,ECU节点会检测到Alive发送事件并进入到虚拟网络激活状态206,并设置节点能够发送和接收信号,设置虚拟网络计时器为8s。
ECU接收节点默认状态为虚拟网络非激活状态,当ECU接收节点收到虚拟网络Alive报文帧请求后,设置外部虚拟网络激活标志位为1。ECU接收节点由虚拟网络接收节点非激活状态进入到虚拟网络接收节点激活状态301,ECU接收节点被激活。接收节点激活后设置虚拟网络Alive报文发送标志位为1,激活报文发送逻辑,ECU接收节点由无虚拟网络管理报文帧发送请求状态进入虚拟网络管理报文帧发送激活状态201。虚拟网络管理报文帧发送后,产生Alive发送事件。此时允许ECU接收节点能够发送和接收信号;同时设置虚拟网络计时器为8s。
ECU发送节点发送第一帧虚拟网络管理报文帧后,将发送虚拟网络Alive报文帧的标志位置0,ECU节点由虚拟网络管理报文帧发送激活状态进入到Ring报文等待状态203。在虚拟网络Ring报文发送后,所述ECU发送节点检测到这个事件,这时设置其允许发送和接收信号,并且更新虚拟网络计时器为8s,ECU节点由Ring报文等待状态进入到虚拟网络管理报文帧发送激活状态204;
所述ECU节点所在的虚拟网络不需要通讯时,所述ECU节点就停止发送Ring类型的虚拟网络管理报文帧,虚拟网络计时器等于0时,所述ECU节点停止发送信号和接收信号,ECU节点由虚拟网络管理报文帧发送激活状态进入到虚拟网络非激活状态202;当虚拟网络中所有ECU节点都不需要通讯时,ECU节点应用层-网络接口处理模块发送应用层关闭虚拟网络的请求403,此时整个虚拟网络就进入到关闭状态,同时关闭报文发送逻辑,设置虚拟网络激活位为0、发送虚拟网络Alive报文帧的标志位置0,发送虚拟网络Ring报文帧的标志位置0,停止发送信号,停止接收信,106;
当虚拟网络休眠后,若处于休眠的ECU节点收到其他节点发出的虚拟网络Alive报文帧,则会将寄存器对应的发送虚拟网络Alive报文帧帧的标志位置1,此时,该ECU节点检测到自身发出的Alive报文帧,该ECU节点会进入激活状态,重新加入虚拟网络109;
当虚拟网络计时器时间减少到0秒,并且外部虚拟网络激活标志位为0、应用层-虚拟网络接口激活标志位为0时,设置等待休眠计数器为1.5s,ECU节点进入到网络等待休眠状态110。如果ECU节点在1.5s内没有接收到其它虚拟网络管理报文帧组建虚拟网络的请求并且整体逻辑计时器为0时,ECU节点确认可以进入到休眠,整个网络也进入到休眠112。如果ECU节点在1.5s内接收到了应用层-虚拟网络接口通讯请求402,会设置虚拟网络Alive报文发送标志位为1、虚拟网络Ring报文发送标志位为1、应用层-虚拟网络激活标志位为1,使ECU节点重新进入到虚拟网络激活状态111。
ECU节点处于网络休眠状态,如果收到唤醒事件或者虚拟网络报文帧时401,ECU节点进入到网络初始化状态113。
ECU节点在正常通讯时,如果遇到致命总线错误,如bus off错误时,ECU节点会进入到网络Limphome状态108,并设置外部虚拟网络激活标志位为0、应用层-虚拟网络激活标志位为0、虚拟网络Alive报文发送标志位为0、虚拟网络Ring报文发送标志位为0,此时的ECU节点无法与网络中的其它节点建环。
处于Limphome状态的ECU节点接收到网络上的虚拟网络管理帧要求其建环时,ECU节点进入到网络复位状态114;处于Limphome状态的ECU节点在8s内没有接收到唤醒事件和虚拟网络管理帧时,ECU节点会进入到Limphome休眠请求状态118,在整体逻辑计时器减小到0时,ECU节点进入到网络等待休眠状态107。
处于虚拟网络激活状态下的ECU节点,如果ECU重启,则ECU节点进入到网络复位状态103;如果处于网络复位状态下的ECU节点接收不到网络上其它节点发送的虚拟网络管理报文帧,并且自身试图连续发送的虚拟网络管理报文帧的不成功次数超过4,则ECU节点进入到网络Limphome状态115。
处于虚拟网络激活状态下的ECU节点,如果自身试图连续发送的虚拟网络管理报文帧的不成功次数超过8,则ECU节点进入到网络Limphome状态116。
处于虚拟网络非激活状态下的ECU节点,如果自身试图连续发送的虚拟网络管理报文帧的不成功次数超过8,则ECU节点进入到网络Limphome状态117。
以下通过实施例进一步讲述本发明的详细过程,提供实施例是为了理解的方便,而不是限制本发明。
实施例
以一个CAN总线上含有十二个车身ECU节点的SUV车辆为例,十二个车身ECU节点通过CAN总线连接形成一个CAN网络,按照本发明设计的网络管理方法和虚拟网络思想,每个车身ECU节点都要按照如图1、图2、图3和图4所示的网络状态转换流程、报文发送逻辑、报文接收逻辑、应用层-虚拟网络接口处理逻辑进行报文处理。
如图2表示,ECU节点默认报文发送时的状态为无虚拟网络发送请求状态,此时的ECU节点不允许发送和接收虚拟网络报文。当虚拟网络Alive报文发送标志位置1或者虚拟网络Ring报文发送标志位置1时,ECU节点进入到虚拟网络激活状态201。ECU节点在接收到第一帧虚拟网络管理报文后,设置虚拟网络Alive报文发送标志位为1,ECU节点进入到Alive报文等待状态205,Alive报文等待状态是一个过渡状态,在连续收到唤醒请求或者请求建环的虚拟网络报文时,ECU节点要发送的虚拟网络管理报文会在Alive报文等待状态下等待发送。
当虚拟网络管理报文帧第一次发送后,会产生Alive报文发送事件,同时设置虚拟网络Alive报文发送标志位为0,ECU节点进入到Ring报文等待状态203。Ring报文等待状态也是一个过渡状态。当虚拟网络Ring报文发送时,产生Ring报文发送事件,该事件的标志位使得虚拟网络会重复发送105。如图1所示,Alive报文发送事件也会使处于虚拟网络激活状态的ECU节点重发报文104。Alive报文发送事件和Ring报文发送事件是控制节点发送报文的直接因素。
如图3所示,ECU节点默认报文接收时的状态为虚拟网络接收节点非激活状态,当ECU节点接收到虚拟网络管理Alive报文帧请求303,或接收到虚拟网络管理Ring报文帧请求后304,设置外部虚拟网络激活标志位为1。ECU接收节点由虚拟网络接收节点非激活状态进入到虚拟网络接收节点激活状态301,ECU接收节点被激活。
接收节点激活后设置虚拟网络Alive报文发送标志位为1,外部虚拟网络激活请求标志位为1见附图标记305,并激活报文发送逻辑,ECU接收节点由无虚拟网络管理报文帧发送请求状态进入虚拟网络管理报文帧发送激活状态201。虚拟网络管理报文帧发送后,产生Alive发送事件。此时允许ECU接收节点能够发送和接收信号;同时设置虚拟网络计时器为8s。处于虚拟网络接收节点激活状态的ECU节点在没有通讯需求时,设置外部虚拟网络激活标志位为0、虚拟网络Alive报文发送标志位为0、虚拟网络Ring报文发送标志位为0见附图标记306,ECU节点由虚拟网络接收节点激活状态进入到虚拟网络接收节点非激活状态302。
如图4所示,ECU节点应用层与网络管理之间的接口逻辑按照应用层-虚拟网络接口通讯请求等待状态的规定进行处理。如果ECU节点外部虚拟网络激活标志位为0、整体逻辑计时器为0、等待休眠的计时器为不为0,处于应用层-虚拟网络接口通讯请求等待状态的ECU节点已经进入到等待休眠状态,若此时接收到应用层-虚拟网络接口通讯请求,即应用层唤醒请求,则设置虚拟网络Alive报文发送标志位为1、虚拟网络Ring报文发送标志位为1、应用层-虚拟网络激活标志位为1,ECU节点被唤醒401,进入到图1所示的网络初始化状态101。
如果ECU节点虚拟网络计时器为0、外部虚拟网络激活标志位为0、应用层-虚拟网络激活标志位为0、等待休眠的计时器大于0,则ECU节点处于等待休眠状态。若此时ECU节点接收到应用层-虚拟网络接口通讯请求402,即应用层唤醒请求,则设置虚拟网络Alive报文发送标志位为1、虚拟网络Ring报文发送标志位为1、应用层-虚拟网络激活标志位为1,ECU节点被唤醒,进入到图1所示的虚拟网络激活状态111。
当应用层不需要通讯时,应用层会发送应用层-虚拟网络接口关闭通讯请求403。ECU节点由虚拟网络激活状态转换到虚拟网络非激活状态,并设置外部虚拟网络激活标志位为0、停止发送信号和接收信号,关闭虚拟网络。
SUV车型上各车身ECU节点按照上述逻辑进行报文处理,可以动态的组建虚拟网络,实现CAN总线网络优化,降低总线负载、电气干扰和总线故障风险。
尽管上面结合图和SUV车型对本发明进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨的情况下,还可以做出很多变形,这些均属于本发明的保护之内。