专利名称:一种基于can网络的osek com消息动态调度方法
技术领域:
本发明属于CAN网络通讯技术领域,尤其是指一种基于CAN网络的OSEK COM消息动态调度方法。
技术背景应用软件的可移植性和不同厂商的控制模块间的可兼容性,促使德国汽车 工业界在1993年联合提出了汽车电子的开放式系统及接口一 OSEK (Open Systems and the Corresponding Interface For Automotive Electronics )规范,旨在为汽车上的分布控制单元提供一个开放结构的工业标准。其中OSEK通讯规范 (OSEK COM)规定了ECU内部以及多个ECU之间的数据交换行为,为汽车 控制单元的应用软件之间提供统一的通讯环境。图1是OSEKCOM的层次模型图。很多人研究在CAN网络上的消息调度问题,由于CAN上层网络的不确定性, 这些研究基本上是通用的CAN消息调度问题。不适用于在OSEK COM作为CAN上层的通讯系统中。CAN总线协议只定义了物理层和数据链路层,未定义应用层,没有规定CAN 帧的标识符的产生方式。如果我们使用CAN帧作为OSEK COM的底层通讯网络, 需要解决两个问题1) OSEK COM层的IPDU在C認网络上调度的问题。2)长度 大于8个字节的I-PDU的传送问题。本发明提出了一种CAN消息的动态调度方 法,与OSEK COM模块紧密的结合,组成了 OSEK COM通讯系统,适用于汽车电 子领域的通讯行为。发明内容为了解决以上问题,本发明提出一种基于CAN网络的OSEK COM消息动态 调度方法。OSEK COM层的IPDU在CAN网络上能够动态调度,保证不会出现某个节点饿死。一种基于CAN网络的OSEK COM消息动态调度方法,在以CAN网络为基 础的OSEK COM通讯系统中,扩展CAN帧标识符高位的第二个域由IPDU ID组 成,在同-个ECU上,IPDU ID越小的数据单元,拥有越高的优先级;每个ECU 节点分配一个节点优先级,并在网络的运行过程中动态的调整各个ECU的节点 优先级,尽量的保证IPDU消息不被饿死。进一歩的,所述节点优先级是扩展CAN帧的CAN ID的最高域,在CAN 网络上的每个ECU节点都允许拥有n个节点优先级,且互不相同,但在某一个 时刻,节点只允许有一个节点优先级。进一步的,所述节点优先级根据网络的实际情况在本节点允许的范围内动 态进行调整,其动态调整的策略如下用户根据节点i的实际情况配置节点i的调整优先级时间为L ms,并配 置用户在L ms的时间内能够忍受的最大失败次数Mi次,在CAN总线上广 播消息,总线上的所有节点均同时收到这个消息,所有收到消息的本地节点 按照下面的协议更新节点优先级;每个节点有周期性的触发时间Li,在这个时 亥U,节点i:(l).检査在L时间内是否发送失败的次数超过了Mi,如果超过了,Go to 2;否则不做任何操作;(2) .节点i在它的节点优先级允许的范围内提高他的优先级,如果CurrentNodePrioi = x(目前i的节点优先级是x),在提高之后,CurrentNodePrioi =x<n x : x-n。 Go to 3;(3) .广播一个特殊的标准CAN帧通知其它节点降低它们的节点优先级; 在节点i广播特殊标准CAN帧之后,所有的其它节点1) .所有的其他节点在同时收到特殊的标准CAN帧;2) .其他节点全部减少他们的节点优先级;以j为例,如果 CurrentNodePrioj = y (the current node priority of node j is y), 贝U调整之后, CurrentNodeProj = y>(n-l)*n y : y+n。更进一步的,所述(3)中特殊的标准CAN帧的CANID为节点编号,数据长度为0。进一步的,所述扩展CAN帧为29位的扩展帧格式,把CAN ID分为4个域, 在发送时,发送方把大于8个字节的消息切分成合适的CAN帧,把相关的分段 控制信息放到IPDUFragNum和IPDUFraglndex中, 一起发送出去;接收方接收 到CAN帧之后,按照IPDUFragNum和IPDUFraglndex两个域把分段的CAN帧 组装成完整的IPDU消息。在本协议中,如果一个节点长时间不发送数据,或者一个节点的当前节点 优先级完全能够满足本节点的数据发送请求,那么我们就降低本节点的节点优 先级。而对于经常发送并且消息实时性要求比较高的节点,本协议会提高本节 点的节点优先级。这种特性是与许多的实际应用相吻合的。如果在某一时刻,所有节点都不需要调整节点优先级,即节点优先级的不断调整使网络达到一种稳定的状态,本协议不再需要额外的网络负载。此时本策略的开销相当于静态优先级产生的CAN ID。本发明使用扩展CAN帧(29位的CAN ID)解决IPDU的灵活调度和分片问 题。OSEKCOM并未指定具体的底层网络。本发明中,我们使用CAN网络(目 前使用最广泛的总线之一)作为OSEK COM的底层通讯网络,与OSEKCOM 一起组成完整的OSEK COM通讯系统。在OSEK COM的框架下,提出一种 OSEK COM框架下的CAN优先级动态分配算法,解决OSEK COM与CAN网 络之间的映射问题。
图1 OSEK COM的层次模型图 图2 CAN ID的组成示意图 图3节点i的数据流程4桑塔纳测试平台以及开发板组成的软件架构 图5桑塔纳测试平台的逻辑连线示意图具体实施方式
每个ECU内部,OSEK COM层的每个IPDU数据单元都有一个IPDU ID来寻址 不同IPDU,本设计把IPDU ID作为CAN ID的一个重要组成部分。在同一个ECU 上,IPDU ID越小的数据单元,拥有越高的优先级。如图2所示,IPDU ID占8 14 的7位, 一个ECU上最多有2'7二128个IPDU。一个ECU内部,IPDU之间的优先级容易确定。但是在不同的ECU之间,IPDU 的优先级确定比较困难。为协调不同ECU之间的IPDU优先级,本设计引入了节点优先级(Node Priority),作为CAN ID的重要的组成部分。如图2所示,Node Priority占15~29的14位。CAN网络上最多可以分配2'14个节点优先级。C認 ID的Node Priority域会根据网络上的实际状况,进行调整。网络上最多允许 挂载sqrt(2'14) = 2 — 7 二 128个CAN节点。在ECU内部我们使用固定优先级调度,在ECU外部,我们通过调整Node Priority来进行节点间的动态优先级调度。保证不会出现某个节点饿死,并会 根据网络上的实际情况不断调整形成愈加合理的Node Priority分配方式。下面我们详细介绍Node Priority的更新协议。假设网络上有n个节点,节点编号为0,l,2,…,n-1。每个节点分配n个节 点优先级。例如节点i分配的n个节点优先级为0牝+ i, l*n + i, 2*n + i ,,(ir"l)*n + i 。用户根据网络初始的状态,配置各个节点的初始节点优先级。用户根据节点i的实际情况配置节点i的调整优先级时间为L ms,并配置 用户在L ms的时间内能够忍受的最大失败(超时)次数Mi次。为了保证不会 发生节点优先级反转。本发明使用一个简单的协议,在CAN总线上广播消息, 总线上的所有节点均同时收到这个消息,所有收到消息的本地节点按照下面的 协议更新节点优先级。每个节点有周期性的触发时间Li,在这个时刻,节点i:1. 检查在L时间内是否发送失败的次数超过了Mi,如果超过了, Go to 2;否则不做任何操作。2. 节点i在它的节点优先级允许的范围内提高他的优先级。例如,如果 CurrentNodcPrioi = x(目前i的节点优先级是x),在提高之后, CurrentNodePrioi 二 x<n 7 x : x_n。 Go to 3。3.广播一个特殊的标准CAN帧通知其它节点降低它们的节点优先级。在CAN总线上发送的标准的CAN帧作为一个信号通知其它节点调整节点优 先级。这个特殊CAN帧的CAN ID为节点编号,数据长度为0。这个CAN帧会增 加44位的额外传输。在节点i广播特殊标准帧之后,所有的其它节点1. 所有的其他节点在同时收到特殊的标准CAN帧。2. 其他节点全部减少他们的节点优先级。以j为例,如果CurrentNodePrioj =y (the current node priority of node j is y),贝ll调整之后,CurrerrtNodeProj =y〉(n-l)氺n 7 y : y+n。节点i发送数据和调整节点优先级的流程图如图3所示。为了解决I-PDU的分片问题,本设计把IPDU的分片总数(IPDUFragNum)、 本CAN帧数据在IPDU中的偏移(IPDUFraglndex)作为CAN ID的其中两个组成 部分。IPDU的分片按照IPDUFraglndex的大小,按序到达接收方。如图2所示, IPDUFi'agNum占4~7的4位,IPDUFraglndex占0 3的4位。每个IPDU最长为 21*8=128个字节,发送方和接收方按照这两个域对IPDU分片和重组。设计的软件环境CAN调试工具ZLGCANTest来测试CAN接收到的数据 帧;Code Warrior IDE用来编译烧写至HCS12, HCS12X和Embest S3CEV40中的代码。各个模块的软件架构见图4。共有5个模块,收集信号模块和控制模块 (HCS12开发板),控制前端灯模块(HCS12X开发板,它也是控制中心模块), 显示模块(ARM7)和控制和现实模块(PC端)。设计的硬件环境桑塔纳测试平台,我们选择1块用作CAN节点的开发板 HCS12和HCS12X (HCS12和HCS12X开发板将CAN控制器集成在该开发板 中), 一块Embest S3CEV40开发板以及连接成CAN网络所需要的一些CAN总 线等。
具体实施方式
可按照图5所示的连线逻辑进行连线。开发板HCS12X负 责控制左前车灯和右前车灯,HCS12负责控制左后车灯和右后车灯,HCS12与 HCS12X之间用CAN总线进行通讯。Embest S3CEV40与HCS12开发板之间用 RS-232串口线连接。Embest S3CEV40通过串口协议与HCS12之间进行交互, 读取相应的CAN网络信息,并把消息封装,发给PC端的相应软件进行显示。通过该测试可以证明,该方法能够使得发送节点成功发送数据,接收节点 接收到数据,而且尽量的避免了IPDU的饿死现象,从而保证了数据接收的可靠 正确性、实时性。
权利要求
1. 一种基于CAN网络的OSEK COM消息动态调度方法,其特征在于在以CAN网络为基础的OSEK COM通讯系统中,扩展CAN帧标识符高位的第二个域由IPDU ID组成,在同一个ECU上,IPDU ID越小的数据单元,拥有越高的优先级;每个ECU节点分配一个节点优先级,并在网络的运行过程中动态的调整各个ECU的节点优先级,尽量的保证IPDU消息不被饿死。
2. 根据权利要求1所述的基于CAN网络的OSEK COM消息动态调度方法,其 特征在于所述节点优先级是扩展CAN帧的CANID的最高域,在CAN网 络上的每个ECU节点都允许拥有n个节点优先级,且互不相同,但在某一个 时刻,节点只允许有一个节点优先级。
3. 根据权利要求1或2所述的基于CAN网络的OSEK COM消息动态调度方法, 其特征在于所述节点优先级根据网络的实际情况在本节点允许的范围内动 态进行调整,其动态调整的策略如下用户根据节点i的实际情况配置节点i的调整优先级时间为L ms,并配 置用户在L ms的时间内能够忍受的最大失败次数Mi次,在CAN总线上广 播消息,总线上的所有节点均同时收到这个消息,所有收到消息的本地节点 按照下面的协议更新节点优先级;每个节点有周期性的触发时间Li,在这个时 亥lj,节点i:(1) .检查在L时间内是否发送失败的次数超过了 Mi,如果超过了 , Go to 2; 否则不做任何操作;(2) .节点i在它的节点优先级允许的范围内提高他的优先级,如果 CurrentNodePrioi = x(目前i的节点优先级是x),在提高之后,CurrentNodePrioi =x<n x : x-n。 Go to 3;(3).广播一个特殊的标准CAN帧通知其它节点降低它们的节点优先级; 在节点i广播特殊标准CAN帧之后,所有的其它节点1) .所有的其他节点在同时收到特殊的标准CAN帧;2) .其他节点全部减少他们的节点优先级;以j为例,如果 CurrentNodePrioj = y (the current node priority of node j is y), 贝廿调整之后, CurrentNodeProj = y>(n-l)*n y : y+n。
4. 根据权利要求3所述的基于CAN网络的OSEKCOM消息动态调度方法,其 特征在于所述(3)中特殊的标准CAN帧的CANID为节点编号,数据长度为O。
5. 根据权利要求1所述的基于CAN网络的OSEK COM消息动态调度方法,其 特征在于所述扩展CAN帧为29位的扩展帧格式,把CANID分为4个域, 在发送时,发送方把大于8个字节的消息切分成合适的CAN帧,把相关的分 段控制信息放到IPDUFragNum和IPDUFraglndex中, 一起发送出去;接收方 接收到CAN帧之后,按照IPDUFragNum和IPDUFraglndex两个域把分段的 CAN帧组装成完整的IPDU消息。
全文摘要
本发明属于CAN网络通讯技术领域,尤其是指一种基于CAN网络的OSEK COM消息动态调度方法,在以CAN网络为基础的OSEK COM通讯系统中,扩展CAN帧标识符高位的第二个域由IPDU ID组成,在同一个ECU上,IPDU ID越小的数据单元,拥有越高的优先级;每个ECU节点分配一个节点优先级,并在网络的运行过程中动态的调整各个ECU的节点优先级,尽量的保证IPDU消息不被饿死。本发明使用扩展CAN帧(29位的CAN ID)解决IPDU的灵活调度和分片问题。在OSEK COM的框架下,提出一种OSEK COM框架下的CAN优先级动态分配算法,解决OSEK COM与CAN网络之间的映射问题。
文档编号H04L12/56GK101547149SQ20091009783
公开日2009年9月30日 申请日期2009年4月20日 优先权日2009年4月20日
发明者吴朝晖, 张吕红, 张培锋, 红 李, 杨国青, 赵民德 申请人:浙江大学