OSEK-NM直接网络管理一:概念部分

OSEK-NM直接网络管理一:概念部分

前言:

之前有处理过OSEK直接网络管理的项目,但是想要系统的把它阐述表达出来时,还是做不到。
准备从概念和行为两个部分对OSEK直接网络管理做一个总结,这样才能加深自己对OSEK直接网络管理的理解。其中概念部分包括OSEK直接网络管理的功能、PDU数据协议单元、逻辑环、OSEK直接网络管理的状态等内容;行为部分则阐述OSEK直接管理如何建立逻辑环及其实现算法、OSEK直接网络管理如何协调总线上的节点同步进入休眠及其实现算法、OSEK直接网络管理的状态调转机制(超时机制)及其实现算法。
本部分内容是OSEK直接网络管理的概念部分。

1:背景

随着整车网络中由不同制造商提供的电控单元日益增长,一个旨在避免开发过充中不必要的变体和节省开发时间的基础、非竞争机制的基础结构标准就尤为必要了。
网络管理的首要任务是确保通信的安全性和可靠性。

2:功能

网络管理为了实现确保通信安全性和可靠性的首要任务,提供如下的功能:

  • 初始化ECU资源(网络接口)
  • 启动网络
  • 提供网络配置功能
  • 管理不同的节点监控机制
  • 检测、通知和处理网络节点的工作状态
  • 读取设置网络和节点指定的参数
  • 协调全局的工作模式(协调网络节点同步进入休眠功能)
  • 支持诊断

3:OSEK直接网络管理的硬件基础

直接网络管理要求ECU的电源由KL30(永久电源)提供,K15作为ECU的唤醒信号或者CAN网络的唤醒信号。
直接网络管理:ECU在KL15为 OFF状态 时可进行 CAN 通信,并遵循 OSEK 直接网络管理进行同步休眠和唤醒;

4:OSEK直接网络管理的功能

  • 协调各ECU同时进入网络睡眠状态
  • 检测和监控网络的配置
  • 提供系统的状态
  • 网络BUSOFF处理

5:NM协议数据单元(PDU)

在这里插入图片描述

  • Address Field:NM 地址场
    Source Id:源地址,CAN 报文标识符场,可分解为基地址和 ECU 地址;
    Dest. Id:目标地址,CAN 报文数据场第 1 个字节 Byte(0)。
  • Control Field:NM 控制场
    Opcode:操作码,CAN 报文数据场第 2 个字节 Byte(1)。
  • Data Field:NM 数据场
    Data:特定应用数据(可选),CAN 数据场第 3-8 个字节 Byte(2)-Byte(7)。

5.1: 地址

在这里插入图片描述

5.2 操作码

网络管理报文类型分为以下3种类型:
在这里插入图片描述

  • Alive报文
    ECU 上电或唤醒后,如果需要请求网络通信则发送 Alive 报文声明自身在线并建立逻辑环;
    在逻辑环运行过程中,若 ECU 检测到自己被跳过,则发送 Alive 报文以重新加入并建立逻辑环。
  • Ring报文
    正常运行状态,所有 ECU 依次发送 Ring 报文形成逻辑环通信。
  • LimpHome报文
    若节点连续发生发送或接收故障则进入 NMLimphome 状态,发送LimpHome 报文。

在这里插入图片描述

在这里插入图片描述

5.3:数据

数据字节是由 NM 报文数据场第 3-8 个字节 Byte(2)-Byte(7)组成,用以存储特殊的应用数据。系统配置信息、总线故障信息、总线唤醒原因、保持唤醒原因、逻辑环稳定状态等信息可以在数据字节中存储。
本平台不使用数据字节,必须将 NM 报文 3-8 字节置为默认值 0x00。

6:逻辑环

逻辑环,通俗的来说,就是由若干个节点组成的环状结构,每个节点都有一个逻辑上的后继节点,而最后一个节点的后继节点又是第一个节点,这样就组成了一个环状的结构,有点类似于数据结构里面的循环链表那种结构。
OSEK直接网络管理通过发送和接收两种类型的消息来建立逻辑环:Alive message和Ring message。其中,Alive message是一个节点要加入逻辑环时要发送的消息,Ring message是网络正常工作时的环消息,是从一个节点传递给下一个节点,依次在逻辑环中传递,以表示网络中的节点正常工作。当某一节点功能不正常时,就会周期性的向网络中发送LimpHome message。
在这里插入图片描述

7:OSEK直接网络管理的状态

OSEK直接网络管理分为如下三种状态,在这三种状态下又分为各种子状态。
在这里插入图片描述

  • NMOFF
  • NMON
    • NMInit
    • NMAwake
      • NMReset
      • NMNormal
      • NMLimpHome
    • NMBusSleep
    • NMActive
    • NMPassive
  • NMShutDown

7.1:OSEK直接网络管理主状态

ECU上电以后处于NMOff状态,通过任务调用StartNM,启动NM,这时候NM进入NMON状态开始运行,直到调用StopNM接口,状态又会跳到NMShutDown,进而进入NMOFF状态。如下图所示:
在这里插入图片描述

7.2:NMON子状态

在NMON状态下,首先是进行初始化,进行一些网络配置,然后在有通信请求的时候处于NMAwake的状态,没有通信请求的时候就进入NMBusSleep的状态。
当应用程序不再需要 CAN 通信,通过“GotoMode(BusSleep)”服务进入NMBusSleep状态去释放网络,同时,在下次发送 NM 报文时会将其睡眠指示位置位,即 Sleep.Ind=1,此时 ECU睡眠条件满足。
如果应用程序需要 CAN 通信,通过调用“GotoMode(Awake)”服务来请求网络重新进入NMAwake状态,如果此时 ECU 不在网络激活状态,该 ECU 将向总线发送 Alive 报文。睡眠指示位将被复位,即 Sleep.Ind=0,此时 ECU 睡眠条件不满足。
注:NMActive(主动状态)和NMPassive(被动状态)为这NMON状态下三种状态的内部状态,由于NMBusSleep和NMInit状态下本身不存在通信,我们这里将这两种状态理解为NMAwake状态下的内部状态。
其中NMActive理解为可以收发报文的主动状态,NMPassive理解为只可以监听报文的被动状态。

如下图所示:
在这里插入图片描述

7.3:NMAwake子状态

在NMAwake状态中,首先进入NMReset状态,没有错误跳入NMNormal状态,在NMNormal下逻辑环上就开始进行周期性发送和接收消息,并且同时对网络的配置进行管理,如果Ring message发送(接收)超时又会跳回NMReset状态。当没有NM消息传输的时候或者总线错误时会进入NMLimpHome状态,如果错误解除则跳转回NMReset状态。
在这里插入图片描述

7.4: OSEK直接网络管理状态图

在这里插入图片描述

8:OSEK直接网络管理参数

8.1:定时参数

如下表所示:
OSEK直接网络管理的四种典型的时间参数+一种节点内部的时间参数
在这里插入图片描述
在这里插入图片描述

8.2:计数器

  • NMrxcount
    接收功能失败计数器
  • NMtxcount
    发送功能失败计数器

8.3:单节点状态时序

如下图所示:
在单节点状态下时,tType、tMax、tError的状态显示。
注:这里有两个疑问:
1:为什么tType的状态显示为Alive msg到Ring msg的时间间隔?
2:为什么tMax的状态显示为Ring msg到Alive msg的时间间隔?
关于这两个问题,我们在下一个专题“行为部分”对单节点工况下的状态跳转进行单独的讲解

在这里插入图片描述

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值