欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > AUTOSAR CAN Network Management

AUTOSAR CAN Network Management

2024/10/24 6:26:16 来源:https://blog.csdn.net/weixin_48120109/article/details/140893428  浏览:    关键词:AUTOSAR CAN Network Management

功能概述

  • AUTOSAR CanNm基于分布式直接网络管理策略,这意味着每个网络节点仅根据通信系统内接收或传输的网络管理 PDU执行自给自足的活动。
  • AUTOSAR CanNm算法基于周期性的网络管理PDU,集群中的所有节点通过广播传输接收这些PDU。网络管理PDU的接收表明发送节点希望保持网络管理集群的唤醒状态。如果任何节点准备好进入总线睡眠模式,它将停止发送网络管理PDU,但只要收到其他节点的网络管理PDU就推迟向总线睡眠模式的转换。最后,如果由于不再收到网络管理 PDU而导致专用定时器超时,则每个节点都会启动向总线休眠模式的过渡。
  • 如果网络管理集群中的任何节点需要总线通信,它可以通过发送网络管理PDU将网络管理集群从总线休眠模式唤醒。

功能需求及实现

关键需求:

  • 只要需要总线通信,CanNm集群中的每个网络节点都应定期传输网络管理PDU;否则不应传输任何网络管理 PDU。
  • 如果CanNm集群中的总线通信被释放,并且在由CanNmTimeoutTime + CanNmWaitBusSleepTime(两个配置参数)决定的可配置时间内总线上没有网络管理PDU,则应过渡到总线休眠模式。

运行模式(Operational Modes)

AUTOSAR CanNm 应包含模块接口可见的三种运行模式:

  • 网络模式(Network Mode)
  • 预备总线休眠模式(Prepare Bus-Sleep Mode)
  • 总线休眠模式(Bus-Sleep Mode)

AUTOSAR CanNm运行模式的更改应通过回调函数通知上层。调用CanNm_GetState时,CanNm返回当前的NM 状态和模式。

网络模式(Network Mode)

网络模式由三个内部状态组成:

  • 重复报文状态(Repeat Message State)
  • 正常运行状态(Normal Operation State)
  • 准备睡眠状态(Ready Sleep State)
  1. Bus-Sleep Mode式进入Network Mode时,默认情况下 CanNm模块应进入Repeat Message State
  2. Prepare Bus- Sleep Mode模式进入Network Mode时,默认情况下CanNm模块应进入Repeat Message State
  3. 进入Network Mode后,CanNm模块应启动网络管理超时定时器NM-Timeout
  4. 进入Network Mode后,CanNm应通过调用回调函数Nm_NetworkMode通知上层当前的新运行模式。
  5. Network Mode下成功接收网络管理PDU时(调用CanNm_RxIndication),如果启用了PDU传输能力,CanNm模块应重新启动NM-Timeout定时器。
  6. Network Mode下成功发送网络管理 PDU 时(调用CanNm_TxConfirmation 时为E_OK),CanNm 模块应重新启动 NM-Timeout定时器。
重复报文状态(Repeat Message State)

对于非被动模式的节点,Repeat Message State可确保网络上的其他节点看到从Bus-SleepPrepare Bus-SleepNetwork Mode的任何转换。此外,它还确保任何节点在最短的时间内保持活动状态。它可用于检测当前节点。
进入Repeat Message State后,CanNm 模块将(重新)开始传输网络管理PDU,除非启用了被动模式(passive mode)和/或禁用了通信。

  1. Repeat Message State下,当网络管理定时器NM-Timeout到期时,CanNm 模块应(重新)启动网络管理NM-Timeout超时定时器。
  2. 网络管理状态机应在Repeat Message State下停留一定时间,该时间由CanNmRepeatMessageTime(配置参数)决定;之后,CanNm 模块应离开Repeat Message State
  3. 离开Repeat Message State后,如果已请求网络,CanNm模块将进入Normal Operation State
  4. 离开Repeat Message State状态后,如果网络已被释放,CanNm模块应进入Ready Sleep State
  5. 如果CanNmNodeDetectionEnabled设置为 “TRUE”,则CanNm应在离开Repeat Message State时清除"重复报文(Repeat Message Bit)"位。
  6. 如果在Repeat Message StatePrepare Bus-Sleep ModeBus-Sleep Mode下调用CanNm_RepeatMessageRequest服务,CanNm模块将不执行该服务并返回E_NOT_OK 。
正常运行状态(Normal Operation State)

正常操作状态确保只要网络被请求,任何节点都可以保持网络管理集群的唤醒状态。

  1. Ready Sleep State状态进入Normal Operation State状态后,CanNm模块将开始传输网络管理PDU。注意: 如果启用了被动模式(passive mode)或禁用了网络管理PDU传输功能,则不会传输NM PDU,因此无需执行任何操作。
  2. Ready Sleep State下的NM 超时定时器NM-Timeout到期时,CanNm 模块应(重新)启动NM超时NM-Timeout定时器。
  3. 当网络释放且当前状态为Normal Operation State时,CanNm模块应进入Ready Sleep state
  4. 如果CanNmNodeDetectionEnabled设置为 “TRUE”,并且在Normal Operation State下接收到重复信息请求位,则 CanNm 模块将进入Repeat Message State
  5. 如果CanNmNodeDetectionEnabled设置为 “TRUE”,并且在 Normal Operation State下调用函数 CanNm_RepeatMessageRequest,则CanNm模块将进入Repeat Message State
  6. 如果CanNmNodeDetectionEnabled设置为 “TRUE”,并且在Normal Operation State下调用了函数 CanNm_RepeatMessageRequest,则 CanNm模块应设置重复消息位(Repeat Message Bit)。
准备睡眠状态(Ready Sleep State)

Ready Sleep State确保只要有其他节点保持网络管理群集中的唤醒状态,网络管理群集中的任何节点都会等待过渡到Prepare Bus-Sleep Mode的转换。

  1. 当从Repeat Message StateNormal Operation State进入Ready Sleep State时,CanNm模块应停止传输网络管理 PDU。注意: 如果启用了被动模式(passive mode)或禁用了网络管理PDU传输功能,则不会传输NM PDU,因此无需执行任何操作。
  2. Ready Sleep State下,当NM超时定时器NM-Timeout到期时,CanNm 模块应进入Prepare Bus-Sleep Mode
  3. 当网络被请求并且当前状态为Ready Sleep State时,CanNm模块应进入Normal Operation State
  4. 如果CanNmNodeDetectionEnabled设置为 “TRUE”,并且在Ready Sleep State下接收到重复信息请求位,则CanNm 模块应进入Repeat Message State
  5. 如果CanNmNodeDetectionEnabled设置为 “TRUE”,并且在 Ready Sleep State下调用函数 CanNm_RepeatMessageRequest,则CanNm模块将进入Repeat Message State
  6. 如果CanNmNodeDetectionEnabled设置为 “TRUE”,并且在Ready Sleep State下调用了函数 CanNm_RepeatMessageRequest,则 CanNm模块应设置重复消息位(Repeat Message Bit)。
预备总线休眠模式(Prepare Bus-Sleep Mode)

Prepare Bus-Sleep Mode的目的是确保在进入Bus-Sleep Mode之前,所有节点都有时间停止网络活动。在Prepare Bus-Sleep Mode下,总线活动将趋于平静(即传输队列报文,以使所有Tx 缓冲区为空),最终在 Prepare Bus-Sleep Mode下总线上没有任何活动。

  1. 当进入Prepare Bus-Sleep Mode时,CanNm模块应通过调用Nm_PrepareBusSleepMode通知上层。
  2. CanNm模块应在Prepare Bus-Sleep Mode中保持一段可配置的时间,该时间由CanNmWaitBusSleepTime(配置参数)决定;之后应退出Prepare Bus-Sleep Mode并进入Bus-Sleep Mode
  3. Prepare Bus-Sleep Mode下成功接收网络管理PDU后,CanNm模块应进入Network Mode;默认情况下,CanNm 模块应进入Repeat Message State
  4. Prepare Bus-Sleep Mode模式下请求网络时,CanNm模块应进入Network Mode;默认情况下,CanNm 模块应进入Repeat Message State
  5. Prepare Bus-Sleep Mode模式下请求网络且CanNm模块已进入Network Mode,并且 CanNmImmediateRestartEnabled(配置参数)设置为 "true "时,CanNm模块应发送网络管理PDU。
    理由依据:集群中的其他节点仍处于Prepare Bus-Sleep Mode;在上述特殊情况下,应避免过渡到Bus-Sleep Mode,并尽快恢复总线通信。
    由于CanNm中网络管理PDU的传输偏移,Repeat Message State下第一个网络管理PDU的传输可能会严重延迟。为了避免延迟重启网络,可以立即请求传输网络管理PDU。
    注意:如果将CanNmImmediateRestartEnabled设为 “TRUE”,并使用唤醒线路,则在Prepare Bus-Sleep Mode下,如果所有网络节点都收到网络请求,就会发生网络管理PDU突发。
总线休眠模式(Bus-Sleep Mode)

Bus-Sleep Mode的目的是在不交换信息时降低节点的功耗。在Bus-Sleep Mode下,通信控制器进入休眠模式,启动相应的唤醒机制,最终将功耗降至适当水平。
如果网络管理集群中的所有节点都配置了由CanNmTimeoutTime + CanNmWaitBusSleepTime(两个配置参数)决定的可配置时间,则网络管理集群中使用AUTOSAR NM算法进行协调的所有节点都会在大致相同的时间过渡到Bus-Sleep Mode
注意:在网络管理集群的所有网络节点中,参数CanNmTimeoutTime 和 CanNmWaitBusSleepTime的值应该相同。根据具体实施情况,进入Bus-Sleep Mode的时间会完全相同或大致相同;这一转换的时间抖动取决于以下因素:

  • 内部时钟精度(振荡器漂移)
  • NM任务周期时间(如果任务未与全局时间同步)
  • 网络管理PDU在Tx队列中的等待时间(如果在传输请求后立即进行传输确认)

在最佳情况下,只需考虑振荡器漂移的可配置时间,该时间由 CanNmTimeoutTime + CanNmWaitBusSleepTime(两个配置参数)决定。

  1. 进入总Bus-Sleep Mode时(初始化时的默认情况除外),CanNm模块应通过调用回调函数Nm_BusSleepMode通知上层。
  2. 当CanNm模块在Bus-Sleep Mode下成功接收到网络管理PDU(调用CanNm_RxIndication)时,CanNm模块应通过调用回调函数Nm_NetworkStartIndication通知上层。
    理由依据:为避免出现网络管理和模式管理之间的竞争条件和状态不一致,CanNm不会自动执行从Bus-Sleep ModeNetwork Mode的转换。CanNm只通知必须做出唤醒决定的上层。总线休眠模式下的网络管理PDU接收必须根据 ECU关闭/启动过程的当前状态进行处理。
  3. 当CanNm模块在Bus-Sleep Mode下成功接收到网络管理PDU(调用CanNm_RxIndication)时,CanNm模块应向 DET报告错误CANNM_E_NET_START_IND。
  4. 如果在Bus-Sleep ModePrepare Bus-Sleep Mode下调用CanNm_PassiveStartUp,CanNm模块应进入Network Mode;默认情况下,CanNm 模块应进入Repeat Message State
    注意:在Prepare Bus-Sleep ModeBus-Sleep Mode中,假定网络已释放,除非明确请求总线通信。
  5. Bus-Sleep Mode下请求网络时,CanNm 模块应进入Network Mode;默认情况下,CanNm模块应进入Repeat Message State

网络状态(Network states)

网络状态(即 "请求(requested)"和 “释放(released)”)是AUTOSAR CanNm状态机的两个附加状态,与状态机并行存在。网络状态表示软件组件是否需要在总线上通信(此时网络状态为 “请求”);或者软件组件是否不需要在总线上通信(此时总线网络状态为 “释放”);请注意,如果网络被释放,ECU 可能仍会通信,因为其他 ECU 仍会请求使用网络。
网络状态(即“请求”和“释放”)是AUTOSAR CanNm状态机的两个附加状态,与状态机并行存在。网络状态表示软件组件是否需要在总线上通信(然后“请求(requested)”网络状态);或者软件组件是否不必在总线上通信(总线网络状态随后被“释放(released)”);请注意,如果网络被释放,ECU仍可能通信,因为其他ECU仍在请求网络。

  1. 函数调用CanNm_NetworkRequest应请求网络。即CanNm模块应将网络状态更改为 “请求”。
  2. 调用函数CanNm_NetworkRelease应释放网络。即CanNm模块应将网络状态更改为 “已释放”。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com