一文读懂OSEK网络管理(初中高级网络管理分类认知)

电子说

1.2w人已加入

描述

OSEK初级认知

有几个小朋友要玩“击鼓传花”游戏,游戏规则很简单:
1、想玩的人自己随机报个数,所有人报完后自己心里排个序,花从小数往大数传,最大数者传给最小数,花到谁手里谁发言:表明想继续玩还是想退出。
2、第一个报数的人等一段时间后看没人再报数了就可以开始传花了。
3、花到谁手里发言前,他需要检查一下是否所有人都申请过想退出,如果是,他就通知大家:散场。
4、当然如果中途有人表明:想继续玩,那他之前所有人的申请都作废,大家重新表明态度,直到出现第一个发现所有人都提过申请退出的人,这个人才正式通知大家:散场。

初级中规则其实是为了让大家好几好回忆,理解规则后现在上数据玩真的

OSEK中级认知

实际场景中遇到的情况主要有以下四种情况:

正常上线、建环、传递令牌(Taken)及休眠(初级中描述的情况)

已建环有新节点插入

已建环现有节点异常掉线

上线未发现其他节点建环失败(跛足模式)

结构说明

data[1]表明自己节点当前状态

0x01 Alive(上线,玩游戏前自我报数过程)

0x02 Ring(建环,玩游戏传花中)

0x04 LimpHome(跛足,网络无人响应无法建环)

0x10 SleepIndicatio(休眠申请,游戏中申请退出)

0x20 SleepAcknowledege(应答申请,游戏中通知大伙散场)

以上命令可以组合比如建环中想申请休眠就是0x12

OSEK网络管理报文CAN ID 一般为4XX,其中XX就是自己的网络ID,data[0]在Alive状态时填充自己ID,但注意[1]建环前表明身份还是靠监听CAN ID XX而不是Alive时的data[0],在Ring状态时填充传递Taken的ID

OSEK

1. 正常上线、建环、传递令牌(Taken)及休眠

注意几个点:

表格中时间是时间间隔,Alive在100ms内随机响应,Ring响应间隔是100ms

当轮到自己发言0x12表明休眠申请后,只需处理3种状态:

Taken未到自己(即下轮发言未轮到自己)时监听到休眠应答(其他节点发22或32)则进入休眠等待(1.5s)

Taken未到自己时监听到有节点不想休眠发02,则退出休眠申请状态,轮到自己时重新发起

Taken到自己时监听并检查所有节点都发出过10休眠申请,则自己发32广播集体休眠,进入休眠等待(1.5s)

发出32休眠应答命令1.5s内有任何报文,则退出休眠重新申请
-

OSEK


[ tWaitBusSleep = 1500ms ]

2. 已建环有403新节点插入

OSEK

新节点03发Alive表明上线,同时节点00将下家节点从07更新为03

OSEK

03上线后监听到09有发言,就把自己的下家节点更新为09

OSEK

OSEK

03上线后只有09号比自己大,就理所当然到发言时通知09,这让07发现自己被忽略了

OSEK

07继续通知09,不再发02Ring报文,而是发01Alive广播(这就是注意[1]里的原因,Alive时data[0]也不一定代表自己),次时03发现有个07在自己和下家09之间,则更新下家为07

OSEK

OSEK

3. 已建环现有节点403异常掉线

以下图文是演示403节点掉线又上线的过程,如果403直接掉线,则400把Taken传给403超时未响应时,所有节点重新发Alive报文重新建环

OSEK

OSEK

4. 上线未发现其他节点建环失败(跛足模式)

OSEK

发Alive报文100m后发特殊Ring报文(正常的Ring报文data[0]应该指示下家节点,现在找不到只能填充自己节点ID)并监听网络,260ms超时后再次重发Alive报文

OSEK

OSEK

OSEK高级认知网络管理分类

直接网络管理(OSEK, AUTOSAR等专门网络报文进行整车节点控制唤醒休眠)

间接网络管理(个人理解就是没有网络管理,IGN ON 发应用报文,OFF停发应用报文)

(本文中提及的网络管理都是指直接网络管理)

网络管理作用(巧记:同时休眠,提供状态)

协调各ECU节点同时进入休眠

监控网络配置

提供本身系统状态

时间参数

ECU本地唤醒(IGN等)一般要求150ms内使能CAN接收处理应用报文,并在200ms内发出第一条报文且必须为Alive报文而非应用报文,并在第一条Alive后[60~120ms]间发送第一条应用报文,在700ms内所有周期报文至少发送一次(此要求依赖车厂)

OSEK


2.ECU远程唤醒(收到网络报文)一般要求50ms内发出第一帧Alive报文,并在700ms内发送完成所有周期报文
3.ECU休眠 当节点发出休眠申请后开始监听网络,当收到休眠应答(或轮到自己广播休眠应答)后进入1500ms休眠等待时间,时间到后关闭所有发送进入休眠。未避免反复唤醒,唤醒后至少5s才能下一轮休眠
4.ECU跛足模式 当ECU连续4次发Alive报文无法建环时,进入LimpHome模式,以1000ms周期发送LimpHome 04报文

OSEK


5.时间参数

OSEK

OSEK网络管理总结

1、建环机制:网络管理报文ID从小到大发送,然后从最大节点到最小节点依次建成逻辑环。

2、OSEK网络管理报文规则:ID:4xx,其中4代表此帧报文为网络管理报文。xx代表当前节点的基地址,在OSEK网络管理中会给每个节点分配一个基地址(00~FF)

Byte0:代表此帧网络管理报文发送的目标地址(一般情况)。通俗说就是这帧网络管理报文是发送给BCM还是给PEPS或者其他节点。

Byte1:代表发送的网络管理报文的类型即是ring报文还是Alive报文或者LimpHome报文;

01:代表 Alive报文,在总线上声明自己的存在,请求其他节点与自己建环。

02:代表Ring报文;

12:代表当前节点已无通讯请求(睡眠标志位ind置位),即告知其他节点我已满足睡眠条件;

32:即将其睡眠应答位置1,当检测到其他节点都在发送12ring报文后,最后一个节点发送此应答报文,告知其他节点当前整个网络无通信请求,可以睡眠。此时进入睡眠等待状态即Twbs状态。

04:代表跛行报文,如果网络管理报文接收计数器和发送计数器超限后,发送跛行报文即无其他节点与此节点建环,只有一个节点存在。

其余字节预留。

3、OSEK网络管理可以被应用报文唤醒。
编辑:hfy

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分