Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_CANNetworkManagement.md
T

39 KiB
Raw Blame History

CAN 网络管理规范

AUTOSAR CP Release 4.4.0 文档 ID 013AUTOSAR_SWS_CANNetworkManagement

元信息

项目 内容
文档标题 CAN 网络管理规范(Specification of CAN Network Management
文档所有者 AUTOSAR
文档责任方 AUTOSAR
文档标识号 013
文档状态 Final(正式版)
AUTOSAR 标准组成部分 Classic Platform(经典平台)
标准发布版本 4.4.0

文档变更历史

日期 发布版本 变更方 变更描述
2018-10-31 4.4.0 AUTOSAR Release Management 头文件清理;移除过时元素;修正文档结构
2017-12-08 4.3.1 AUTOSAR Release Management 每个通道的节点检测配置;引入运行时错误
2016-11-30 4.3.0 AUTOSAR Release Management API 协调;改进 post-build 参数支持和依赖项;NM Coordinator Ready Sleep Bit 变化时传输额外的 NM 消息;引入可靠的 TX 确认
2015-07-31 4.2.2 AUTOSAR Release Management 阐明 NM 消息传输启动;阐明配置依赖项;阐明禁用通信时的 NM 定时器
2014-10-31 4.2.1 AUTOSAR Release Management 移除了过时的配置参数;改进了部分网络处理;重新设计了 API 中 const 的使用
2014-03-31 4.1.3 AUTOSAR Release Management 改进了部分网络算法需求的措辞;修正了远程睡眠指示超时处理;阐明了通信控制期间的网络释放处理
2013-10-31 4.1.2 AUTOSAR Release Management 修正了消息循环时间偏移处理;修正了主动唤醒处理;编辑性修改;移除了关于变更文档的章节
2013-03-15 4.1.1 AUTOSAR Administration 修正了部分网络处理;改进了协调器支持;阐明了从 Prepare-Bus-Sleep 的启动处理
2011-12-22 4.0.3 AUTOSAR Administration 支持部分网络;支持车辆唤醒;NM-PDU 的立即传输;支持多个连接网关的协调关闭
2009-12-18 4.0.1 AUTOSAR Administration 更改了 RxIndicationTriggerTransmit 的签名;更快的 NM 唤醒
2010-02-02 3.1.4 AUTOSAR Administration 可通过 PduR 访问 Nm 用户数据;与 CanIf 更改了 PDU handle ID 交换;不再有实例特定的 CanNm MainFunction() API;修订了法律免责声明
2008-08-13 3.1.1 AUTOSAR Administration 修订了法律免责声明
2008-02-01 3.0.2 AUTOSAR Administration 合并 CAN NM 和 Generic NM;扩展了文档元信息;做了小幅版式调整
2007-01-24 2.1.15 AUTOSAR Administration 引入 Post build 和 link-time 配置变体;引入可配置的 NMPDU 格式;引入被动模式;修订了法律免责声明;新增了发布说明;修订了"用户建议";新增了"修订信息"
2005-05-31 1.0 AUTOSAR Administration 初始发布

目录

  1. 介绍和功能概述 ............... 9
  2. 缩略语和缩写 ............... 10
  3. 相关文档 ............... 11
  4. 约束和假设 ............... 12
  5. 对其他模块的依赖 ............... 13
  6. 需求追踪 ............... 15
  7. 功能规范 ............... 22
  8. API 规范 ............... 51
  9. 序列图 ............... 68
  10. 配置规范 ............... 70
  11. 示例 ............... 94
  12. 不适用需求 ............... 96

1 介绍和功能概述(Introduction and Functional Overview

本文档描述了 AUTOSAR CAN 网络管理(CanNm)的概念、核心功能、可配置功能、接口和配置问题。

AUTOSAR CAN 网络管理是一个独立于硬件的协议,只能在 CAN 上使用(有关限制,请参阅第 4.1 章)。其主要目的是协调网络正常运行和总线睡眠模式之间的转换。

除核心功能外,还提供了可配置的功能,例如实现检测所有当前节点的服务或检测所有其他节点是否准备好睡眠的服务。

CAN 网络管理(CanNm)功能提供了网络管理接口(NmIf)和 CAN 接口(CanIf)模块之间的适配。有关 AUTOSAR 网络管理功能的一般理解,请参阅 [6]。


2 缩略语和缩写(Acronyms and abbreviations

以下词汇表包括 AUTOSAR 词汇表中未包含的、与 CanNm 模块相关的缩略语和缩写。

缩略语:

缩写 描述
CanIf CAN Interface 的缩写
CanNm CAN Network Management 的缩写
CBV Control Bit Vector(控制位向量)
CWU Car Wakeup(车辆唤醒)
ERA External Request Array(外部请求数组)
EIRA External and Internal Request Array(外部和内部请求数组)
NM Network Management(网络管理)
PNC Partial Network Cluster(部分网络集群)
PNI Partial Network Information(部分网络信息)

术语:

术语 描述
"PDU transmission ability is disabled" 这意味着网络管理 PDU 传输已被服务 CanNm_DisableCommunication 禁用。
"Repeat Message Request Bit Indication" CanNm_RxIndication 在接收到的网络管理 PDU 的控制位向量中发现 RptMsgRequest 置位。
"PN filter mask" 由配置容器 CanNmPnFilterMaskByte 定义的过滤器掩码字节向量。

3 相关文档(Related documentation

3.1 输入文档

  • [1] General Requirements on Basic Software Modules — AUTOSAR_SRS_BSWGeneral.pdf
  • [2] Requirements on Network Management — AUTOSAR_SRS_NetworkManagement.pdf
  • [3] Specification of CAN Interface — AUTOSAR_SWS_CANInterface.pdf
  • [4] Specification of Communication Stack Types — AUTOSAR_SWS_CommunicationStackTypes.pdf
  • [5] Specification of ECU Configuration — AUTOSAR_TPS_ECUConfiguration.pdf
  • [6] Specification of Generic Network Management Interface — AUTOSAR_SWS_NetworkManagementInterface.pdf
  • [7] Specification of Communication Manager — AUTOSAR_SWS_ComManager.pdf
  • [8] Specification of Standard Types — AUTOSAR_SWS_StandardTypes.pdf
  • [9] General Specification of Basic Software Modules — AUTOSAR_SWS_BSWGeneral.pdf

3.2 相关标准和规范

不适用。

3.3 相关规范

AUTOSAR 提供了基础软件模块的通用规范 [9](SWS BSW General),该规范对 CAN 网络管理同样有效。

因此,SWS BSW General 规范应被视为 CAN 网络管理的附加和必需规范。


4 约束和假设(Constraints and assumptions

4.1 限制

  1. 一个 CanNm 通道在一个网络中仅与一个网络管理集群关联。在一个节点上,一个网络管理集群只能有一个 CanNm 通道。
  2. 一个 CanNm 通道在同一 ECU 内仅与一个网络关联。
  3. CanNm 仅适用于 CAN 系统。

图 4-1 显示了包含至少一个 CanNm 集群的示例 ECU 中的 AUTOSAR 网络管理栈。

            «module»
              :Nm
                |
            «module»
             :CanNm
                |
            «module»
              :CanIf

图 4-1 CAN 上的 AUTOSAR NM 栈

4.2 对汽车领域的适用性

CanNm 模块可在上述限制条件下应用于任何汽车领域。


5 对其他模块的依赖(Dependencies to other modules

CAN 网络管理(CanNm)主要使用 CAN InterfaceCanIf [3])的服务,并向通用网络管理接口(NmIf [6])提供服务。

                    «generic_interface»           «generic_interface» «generic_interface»                  «generic_interface»                         Det_ReportError
                         Transmit
                                                  TriggerTransmit            TxConfirmation                RxIndication
                    +CanIf
                     «optional»
            CanNm                         CanNm_Types               Nm_Cbk          Nm_PrepareBusSleepMode                Nm_Types   Nm_CarWakeUpIndication
                                                                                                                                                       «optional»
                             «realize»                 «optional»              «optional»     «optional»
        «realize»                          «realize»          «mandatory»                   «mandatory»               «mandatory»         «optional»
                                                                              «module»
                                                                               CanNm

图 5-1 对其他模块的依赖

5.1 文件结构

5.1.1 代码文件结构

请参阅 SWS_BSWGeneral [9] 中的第 5.1.6 章"代码文件结构"。

5.1.2 头文件结构

请参阅 SWS_BSWGeneral [9] 中的第 5.1.7 章"头文件结构"。

[SWS_CanNm_00305] ⌈ 应包含 ComStack_Types.h。 注:以下头文件由 ComStack_Types.h 间接包含:

  • Std_Types.h(用于 AUTOSAR 标准类型)
  • Platform_Types.h(用于平台特定类型)
  • Compiler.h(用于编译器特定语言扩展)

⌋ (SRS_BSW_00348, SRS_BSW_00353, SRS_BSW_00361, SRS_BSW_00301)

[SWS_CanNm_00307] ⌈ 应包含 Nm.h,用于 CanNm 回调到通用网络管理接口。 ⌋ (SRS_BSW_00301)

[SWS_CanNm_00308] ⌈ 应包含 Det.h,用于与默认错误跟踪器接口。 ⌋ (SRS_BSW_00301)

[SWS_CanNm_00309] ⌈ 应包含 NmStack_Types.h,用于通用网络管理类型。 ⌋ (SRS_BSW_00301)

[SWS_CanNm_00312] ⌈ 应包含 CanIf.h,用于与 CanIf 接口。 ⌋ (SRS_BSW_00301)

[SWS_CanNm_00326] ⌈ 如果启用了 COM 用户数据支持,则应包含 PduR_CanNm.h。 ⌋ (SRS_BSW_00301)


6 需求追踪(Requirements traceability

下表列出了本规范所基于的需求。

注:完整的需求追踪矩阵见原文 PDF 第 15-21 页。此处保留前 10 项作为示例。

需求 描述 满足于
SRS_BSW_00005 µC 抽象层(MCAL)的模块不得有硬编码的水平接口 SWS_CanNm_NA_1
SRS_BSW_00010 所有 BSW 模块的内存消耗应为已定义配置的所有支持平台提供文档 SWS_CanNm_NA_8
SRS_BSW_00160 AUTOSAR BSW 模块的配置文件应可读 SWS_CanNm_NA_8
SRS_BSW_00161 AUTOSAR 基础软件应提供对更高级软件层标准化的微控制器抽象层接口 SWS_CanNm_NA_1
SRS_BSW_00162 AUTOSAR 基础软件应提供硬件抽象层 SWS_CanNm_NA_1
SRS_BSW_00164 中断服务例程的实现应由操作系统、复杂驱动或模块完成 SWS_CanNm_NA_1
SRS_BSW_00168 SW-C 应通过基础软件通用 API 中定义的函数进行测试 SWS_CanNm_NA_0
SRS_BSW_00170 AUTOSAR SW 组件应提供有关其对故障、信号质量、驱动程序的依赖性信息 SWS_CanNm_NA_0
SRS_BSW_00172 内置于 BSW 模块中的调度策略应与系统中使用的策略兼容 SWS_CanNm_NA_8
SRS_BSW_00301 所有 AUTOSAR BSW 模块应仅导入必要的信息 SWS_CanNm_00305, SWS_CanNm_00307, SWS_CanNm_00308, SWS_CanNm_00309, SWS_CanNm_00312, SWS_CanNm_00326
... ... ...

<!-- 完整内容见原文 PDF 第 15-21 页 -->


7 功能规范(Functional specification

7.1 协调算法

CAN 网络管理算法是基于周期性的 NM 消息。每个节点在进入网络模式时都会发送 NM 消息,接收 NM 消息会重置接收节点的 NM 定时器。

[SWS_CanNm_00052] ⌈ CanNm 应实现基于周期性 NM 消息的协调算法。 ⌋ (SRS_Nm_00010)

协调算法的核心思想:

  • 当所有节点都准备好进入 Bus-Sleep 时,每个节点停止发送 NM 消息
  • 一定时间(NM Timeout)后,节点转换到 Bus-Sleep 模式
  • 当有节点请求网络时(如 ComM 请求),节点开始发送 NM 消息

[SWS_CanNm_00053] ⌈ 当网络中的所有节点都不再请求网络(都没有内部或外部请求)时,CanNm 应转换到 Prepare Bus-Sleep 模式。 ⌋ ()

7.2 操作模式

CanNm 具有以下三种操作模式:

  • Network Mode(网络模式):节点处于活动状态,可以发送和接收 NM 消息
  • Prepare Bus-Sleep Mode(准备总线睡眠模式):节点不再发送 NM 消息,等待转换到 Bus-Sleep
  • Bus-Sleep Mode(总线睡眠模式):节点处于最低功耗状态

7.2.1 Network Mode

Network Mode 包含三个子状态:

  • Repeat Message State(重复消息状态):节点主动发送 NM 消息以通知其他节点
  • Normal Operation State(正常运行状态):节点周期性发送 NM 消息
  • Ready Sleep State(就绪睡眠状态):节点的内部请求已释放,但外部请求仍存在

[SWS_CanNm_00060] ⌈ CanNm 应在以下条件下进入 Repeat Message State

  • 接收到 CanNm_NetworkRequest()
  • CanNm_Init()
  • 接收到 NM 消息且 Repeat Message Request Bit 置位

⌋ ()

[SWS_CanNm_00061] ⌈ CanNm 应在 Repeat Message State 超时后转换到 Normal Operation State 或 Ready Sleep State。 ⌋ ()

7.2.2 Prepare Bus-Sleep Mode

[SWS_CanNm_00065] ⌈ 当 CanNm 处于 Ready Sleep State 且接收到 CanNm_NetworkRelease(),或 Normal Operation State 中所有请求都被释放时,CanNm 应进入 Prepare Bus-Sleep Mode。 ⌋ ()

[SWS_CanNm_00066] ⌈ 在 Prepare Bus-Sleep Mode 中,CanNm 应在 CanNmWaitBusSleepTime 超时后转换到 Bus-Sleep Mode。 ⌋ ()

7.2.3 Bus-Sleep Mode

[SWS_CanNm_00067] ⌈ 在 Bus-Sleep Mode 中,CanNm 不发送 NM 消息。 ⌋ ()

[SWS_CanNm_00068] ⌈ 当接收到 CanNm_NetworkRequest() 时,CanNm 应从 Bus-Sleep Mode 转换到 Network Mode。 ⌋ ()

7.3 网络状态

<!-- 完整内容见原文 PDF 第 28 页 -->

7.4 初始化

[SWS_CanNm_00070]CanNm_Init 应将 CanNm 置于 Bus-Sleep Mode。 ⌋ ()

[SWS_CanNm_00071]CanNm_Init 之后,CanNm 应准备好接收 CanNm_NetworkRequest()。 ⌋ ()

7.5 执行

7.5.1 处理器架构

<!-- 完整内容见原文 PDF 第 29 页 -->

7.5.2 定时参数

参数 描述
CanNmRepeatMessageTime Repeat Message State 的持续时间
CanNmTimeoutTime NM Timeout,在没有接收到 NM 消息后转换到 Prepare Bus-Sleep
CanNmWaitBusSleepTime Prepare Bus-Sleep Mode 的持续时间
CanNmMsgCycleTime NM 消息的周期
CanNmMsgTimeoutTime NM 消息接收超时

7.6 NM PDU 结构

NM PDU 由以下字段组成:

  • NIDNode Identifier,节点标识符)1 字节
  • CBVControl Bit Vector,控制位向量)1 字节
  • PDU 数据0-6 字节(CAN 2.0)或 0-62 字节(CAN FD

[SWS_CanNm_00080] ⌈ NM PDU 的 NID 字段应包含发送节点的标识符。 ⌋ ()

[SWS_CanNm_00081] ⌈ NM PDU 的 CBV 字段应包含以下控制位:

  • Bit 0Repeat Message Request
  • Bit 1PN Shutdown Request(可选)
  • Bit 4Active Wakeup
  • Bit 6Car Wakeup
  • Bit 7NM Coordinator Ready Sleep Bit

⌋ ()

7.7 通信调度

7.7.1 传输

[SWS_CanNm_00085] ⌈ CanNm 应根据 CanNmMsgCycleTime 周期性地传输 NM PDU。 ⌋ ()

[SWS_CanNm_00086] ⌈ 在 Repeat Message State 中,CanNm 应在 CanNmMsgCycleTime 内传输 CanNmRepeatMessageTime / CanNmMsgCycleTime 个 NM PDU。 ⌋ ()

[SWS_CanNm_00087] ⌈ 当消息周期时间不是 CanNmMsgCycleTime 的整数倍时,CanNm 应使用 CanNmMsgCycleOffset 来调整传输时间。 ⌋ ()

7.7.2 接收

[SWS_CanNm_00090] ⌈ 接收到 NM PDU 后,CanNm 应重置 CanNmTimeoutTime 定时器。 ⌋ ()

7.8 总线负载减少机制

[SWS_CanNm_00095] ⌈ 如果配置了 CanNmBusLoadReductionEnabled,CanNm 应实现总线负载减少机制。 ⌋ ()

[SWS_CanNm_00096] ⌈ 总线负载减少机制使用准备睡眠位(Ready Sleep Bit)的上升沿来启动减少阶段。 ⌋ ()

7.9 附加功能

7.9.1 远程睡眠指示检测

[SWS_CanNm_00100] ⌈ 当所有节点都设置了 Ready Sleep Bit 时,CanNm 应检测远程睡眠指示。 ⌋ ()

[SWS_CanNm_00101]CanNm_CheckRemoteSleepIndication 应返回当前所有节点是否都设置了 Ready Sleep Bit 的状态。 ⌋ ()

7.9.2 用户数据

[SWS_CanNm_00105] ⌈ CanNm 应支持将用户数据放入 NM PDU。 ⌋ ()

[SWS_CanNm_00106]CanNm_SetUserData 应允许上层设置要包含在 NM PDU 中的用户数据。 ⌋ ()

[SWS_CanNm_00107]CanNm_GetUserData 应允许上层获取接收的 NM PDU 中的用户数据。 ⌋ ()

7.9.3 被动模式

[SWS_CanNm_00110] ⌈ 在被动模式下,CanNm 不应主动发送 NM 消息,但应处理接收的 NM 消息。 ⌋ ()

7.9.4 NM PDU 接收指示

[SWS_CanNm_00115] ⌈ CanNm 应在接收到 NM PDU 时调用 Nm_RxIndication 通知上层。 ⌋ ()

7.9.5 状态变化通知

[SWS_CanNm_00116] ⌈ CanNm 应在状态发生变化时调用 Nm_StateChangeNotification 通知上层。 ⌋ ()

7.9.6 通信控制

[SWS_CanNm_00120]CanNm_DisableCommunication 应禁用 NM 消息的传输。 ⌋ ()

[SWS_CanNm_00121]CanNm_EnableCommunication 应启用 NM 消息的传输。 ⌋ ()

7.9.7 协调器同步支持

<!-- 完整内容见原文 PDF 第 38 页 -->

7.10 车辆唤醒

7.10.1 Rx 路径

[SWS_CanNm_00130] ⌈ 在 Bus-Sleep Mode 中接收到 NM PDU 后,CanNm 应检测 Car Wakeup 情况,并通过 Nm_CarWakeUpIndication 通知上层。 ⌋ ()

7.10.2 Tx 路径

[SWS_CanNm_00131] ⌈ CanNm 应支持通过设置 CBV 中的 Car Wakeup 位来指示唤醒原因。 ⌋ ()

7.11 部分网络

部分网络(Partial Networking,PN)允许节点在不需要时进入低功耗状态,仅在需要时唤醒。

7.11.1 NM PDU 的 Rx 处理

[SWS_CanNm_00140] ⌈ 当配置了 PN 时,CanNm 应仅在 NM PDU 通过 PN 过滤器时才处理。 ⌋ ()

[SWS_CanNm_00141] ⌈ PN 过滤器算法应检查 NM PDU 是否匹配任何配置的 Partial Network Cluster。 ⌋ ()

7.11.2 NM PDU 的 Tx 处理

[SWS_CanNm_00145] ⌈ 当配置了 PN 时,CanNm 应在 NM PDU 中包含 PNIPartial Network Information)。 ⌋ ()

7.11.3 NM PDU 过滤算法

<!-- 完整内容见原文 PDF 第 40-42 页 -->

7.11.4 内部和外部请求部分网络的聚合

<!-- 完整内容见原文 PDF 第 42-44 页 -->

7.11.5 外部请求部分网络的聚合

<!-- 完整内容见原文 PDF 第 44-45 页 -->

7.11.6 通过 CanNm_NetworkRequest 的 NM PDU 自发传输

<!-- 完整内容见原文 PDF 第 45 页 -->

7.12 传输错误处理

<!-- 完整内容见原文 PDF 第 45 页 -->

7.13 CanNm API 的功能需求

<!-- 完整内容见原文 PDF 第 46 页 -->

7.14 错误分类

7.14.1 开发错误

错误类型 相关错误码 值 [hex]
API 调用时使用了无效的通道句柄 CANNM_E_INVALID_CHANNEL 0x02
API 调用时使用了无效的参数 CANNM_E_PARAM_POINTER 0x03
API 在未初始化的情况下被使用 CANNM_E_UNINIT 0x01
API 调用时使用了无效的状态更改请求 CANNM_E_INVALID_STATE 0x04

7.14.2 运行时错误

<!-- 完整内容见原文 PDF 第 47 页 -->

7.14.3 瞬态故障

无瞬态故障。

7.14.4 生产错误

无生产错误。

7.14.5 扩展生产错误

无扩展生产错误。

7.15 错误检测

<!-- 完整内容见原文 PDF 第 47 页 -->

7.16 错误通知

<!-- 完整内容见原文 PDF 第 48 页 -->

7.17 主函数的调度

<!-- 完整内容见原文 PDF 第 48 页 -->

7.18 应用说明

7.18.1 唤醒通知

<!-- 完整内容见原文 PDF 第 48 页 -->

7.18.2 耦合网络的协调

<!-- 完整内容见原文 PDF 第 49 页 -->

7.19 CanNm 定时要求总结

参数 范围 描述
CanNmRepeatMessageTime 0..65535 Repeat Message State 的持续时间(ms
CanNmTimeoutTime 0..65535 NM Timeoutms
CanNmWaitBusSleepTime 0..65535 Wait Bus-Sleep 时间(ms
CanNmMsgCycleTime 0..65535 NM 消息周期(ms
CanNmMsgTimeoutTime 0..65535 NM 消息超时(ms
CanNmMsgCycleOffset 0..65535 消息周期偏移(ms

<!-- 完整内容见原文 PDF 第 49-50 页 -->

7.20 UML 状态图

<!-- 完整内容见原文 PDF 第 50 页 -->


8 API 规范(API specification

8.1 导入类型

[SWS_CanNm_00200] ⌈ CanNm 从以下模块导入类型:

模块 头文件 导入类型
Nm Nm.h Nm_StateTypeNm_ModeType
CanIf CanIf.h CanIf_TransmitType
Std_Types StandardTypes.h Std_ReturnTypeStd_VersionInfoType
ComStack_Types ComStack_Types.h PduIdTypePduInfoType
NmStack_Types NmStack_Types.h Nm_ConfigType

⌋ ()

8.2 类型定义

8.2.1 CanNm_ConfigType

[SWS_CanNm_00201]

字段 内容
名称 CanNm_ConfigType
类型 Structure
范围 实现特定
描述 包含 CAN 网络管理整体初始化数据的外部数据结构类型。
可通过获取 CanNm.h

⌋ ()

8.3 函数定义

8.3.1 CanNm_Init

[SWS_CanNm_00202]

字段 内容
服务名 CanNm_Init
语法 void CanNm_Init(const CanNm_ConfigType* canNmConfigPtr)
服务 ID[hex] 0x00
同步/异步 同步
可重入性 不可重入
输入参数 canNmConfigPtr -- 指向驱动配置的指针
描述 初始化 CAN 网络管理模块。
可通过获取 CanNm.h

⌋ (SRS_BSW_00101, SRS_BSW_00358, SRS_BSW_00414)

8.3.2 CanNm_DeInit

[SWS_CanNm_91002]

字段 内容
服务名 CanNm_DeInit
语法 void CanNm_DeInit(void)
服务 ID[hex] 0x10
描述 反初始化 CAN 网络管理模块。
可通过获取 CanNm.h

⌋ (SRS_BSW_00336)

8.3.3 CanNm_PassiveStartUp

[SWS_CanNm_00203]

字段 内容
服务名 CanNm_PassiveStartUp
语法 Std_ReturnType CanNm_PassiveStartUp(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x01
输入参数 NetworkHandle -- 网络管理通道的句柄
返回值 E_OK -- 请求已被接受;E_NOT_OK -- 请求未被接受
描述 在被动模式下被动启动网络管理。
可通过获取 CanNm.h

⌋ ()

8.3.4 CanNm_NetworkRequest

[SWS_CanNm_00204]

字段 内容
服务名 CanNm_NetworkRequest
语法 Std_ReturnType CanNm_NetworkRequest(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x02
输入参数 NetworkHandle -- 网络管理通道的句柄
返回值 E_OK -- 请求已被接受;E_NOT_OK -- 请求未被接受
描述 请求网络(指示该节点需要网络通信)。
可通过获取 CanNm.h

⌋ (SRS_Nm_00010)

8.3.5 CanNm_NetworkRelease

[SWS_CanNm_00205]

字段 内容
服务名 CanNm_NetworkRelease
语法 Std_ReturnType CanNm_NetworkRelease(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x03
输入参数 NetworkHandle -- 网络管理通道的句柄
返回值 E_OK -- 请求已被接受;E_NOT_OK -- 请求未被接受
描述 释放网络(指示该节点不再需要网络通信)。
可通过获取 CanNm.h

⌋ (SRS_Nm_00010)

8.3.6 CanNm_DisableCommunication

[SWS_CanNm_00206]

字段 内容
服务名 CanNm_DisableCommunication
语法 Std_ReturnType CanNm_DisableCommunication(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x04
输入参数 NetworkHandle -- 网络管理通道的句柄
返回值 E_OK -- 请求已被接受;E_NOT_OK -- 请求未被接受
描述 禁用 NM 消息传输。
可通过获取 CanNm.h

⌋ ()

8.3.7 CanNm_EnableCommunication

[SWS_CanNm_00207]

字段 内容
服务名 CanNm_EnableCommunication
语法 Std_ReturnType CanNm_EnableCommunication(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x05
输入参数 NetworkHandle -- 网络管理通道的句柄
返回值 E_OK -- 请求已被接受;E_NOT_OK -- 请求未被接受
描述 启用 NM 消息传输。
可通过获取 CanNm.h

⌋ ()

8.3.8 CanNm_SetUserData

[SWS_CanNm_00208]

字段 内容
服务名 CanNm_SetUserData
语法 Std_ReturnType CanNm_SetUserData(NetworkHandleType NetworkHandle, const uint8* nmUserDataPtr)
服务 ID[hex] 0x06
输入参数 NetworkHandle -- 网络管理通道的句柄;nmUserDataPtr -- 指向用户数据的指针
返回值 E_OK -- 用户数据已设置;E_NOT_OK -- 用户数据设置失败
描述 设置要包含在 NM PDU 中的用户数据。
可通过获取 CanNm.h

⌋ ()

8.3.9 CanNm_GetUserData

[SWS_CanNm_00209]

字段 内容
服务名 CanNm_GetUserData
语法 Std_ReturnType CanNm_GetUserData(NetworkHandleType NetworkHandle, uint8* nmUserDataPtr, uint8* nmUserDataLengthPtr)
服务 ID[hex] 0x07
输入参数 NetworkHandle -- 网络管理通道的句柄
输出参数 nmUserDataPtr -- 指向用户数据的指针;nmUserDataLengthPtr -- 指向用户数据长度的指针
返回值 E_OK -- 用户数据已读取;E_NOT_OK -- 用户数据读取失败
描述 获取接收的 NM PDU 中的用户数据。
可通过获取 CanNm.h

⌋ ()

8.3.10 CanNm_Transmit

[SWS_CanNm_00210]

字段 内容
服务名 CanNm_Transmit
语法 Std_ReturnType CanNm_Transmit(PduIdType CanNmTxPduId, const PduInfoType* PduInfoPtr)
服务 ID[hex] 0x08
输入参数 CanNmTxPduId -- NM TX PDU 的 IDPduInfoPtr -- 指向 PDU 信息的指针
返回值 E_OK -- 请求已被接受;E_NOT_OK -- 请求未被接受
描述 请求传输 NM PDU。
可通过获取 CanNm.h

⌋ ()

8.3.11 CanNm_GetNodeIdentifier

[SWS_CanNm_00211]

字段 内容
服务名 CanNm_GetNodeIdentifier
语法 Std_ReturnType CanNm_GetNodeIdentifier(NetworkHandleType NetworkHandle, uint8* nmNodeIdPtr, uint8* nmNodeIdLengthPtr)
服务 ID[hex] 0x09
输入参数 NetworkHandle -- 网络管理通道的句柄
输出参数 nmNodeIdPtr -- 指向节点 ID 的指针;nmNodeIdLengthPtr -- 指向节点 ID 长度的指针
描述 获取最近接收的 NM PDU 的节点标识符。
可通过获取 CanNm.h

⌋ ()

8.3.12 CanNm_GetLocalNodeIdentifier

[SWS_CanNm_00212]

字段 内容
服务名 CanNm_GetLocalNodeIdentifier
语法 Std_ReturnType CanNm_GetLocalNodeIdentifier(NetworkHandleType NetworkHandle, uint8* nmNodeIdPtr)
服务 ID[hex] 0x0A
输入参数 NetworkHandle -- 网络管理通道的句柄
输出参数 nmNodeIdPtr -- 指向本地节点 ID 的指针
描述 获取本地节点的标识符。
可通过获取 CanNm.h

⌋ ()

8.3.13 CanNm_RepeatMessageRequest

[SWS_CanNm_00213]

字段 内容
服务名 CanNm_RepeatMessageRequest
语法 Std_ReturnType CanNm_RepeatMessageRequest(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x0B
输入参数 NetworkHandle -- 网络管理通道的句柄
描述 请求重复消息状态。
可通过获取 CanNm.h

⌋ ()

8.3.14 CanNm_GetPduData

[SWS_CanNm_00214]

字段 内容
服务名 CanNm_GetPduData
语法 Std_ReturnType CanNm_GetPduData(NetworkHandleType NetworkHandle, uint8* PduDataPtr)
服务 ID[hex] 0x0C
输入参数 NetworkHandle -- 网络管理通道的句柄
输出参数 PduDataPtr -- 指向 PDU 数据的指针
描述 获取最近接收的 NM PDU 的数据。
可通过获取 CanNm.h

⌋ ()

8.3.15 CanNm_GetState

[SWS_CanNm_00215]

字段 内容
服务名 CanNm_GetState
语法 Std_ReturnType CanNm_GetState(NetworkHandleType NetworkHandle, Nm_StateType* nmStatePtr, Nm_ModeType* nmModePtr)
服务 ID[hex] 0x0D
输入参数 NetworkHandle -- 网络管理通道的句柄
输出参数 nmStatePtr -- 指向 NM 状态的指针;nmModePtr -- 指向 NM 模式的指针
描述 获取当前 NM 状态和模式。
可通过获取 CanNm.h

⌋ ()

8.3.16 CanNm_GetVersionInfo

[SWS_CanNm_00216]

字段 内容
服务名 CanNm_GetVersionInfo
语法 void CanNm_GetVersionInfo(Std_VersionInfoType* versioninfo)
服务 ID[hex] 0x0E
描述 获取 CanNm 模块的版本信息。
可通过获取 CanNm.h

⌋ ()

8.3.17 CanNm_RequestBusSynchronization

[SWS_CanNm_00217]

字段 内容
服务名 CanNm_RequestBusSynchronization
语法 Std_ReturnType CanNm_RequestBusSynchronization(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x0F
输入参数 NetworkHandle -- 网络管理通道的句柄
描述 请求总线同步。
可通过获取 CanNm.h

⌋ ()

8.3.18 CanNm_CheckRemoteSleepIndication

[SWS_CanNm_00218]

字段 内容
服务名 CanNm_CheckRemoteSleepIndication
语法 Std_ReturnType CanNm_CheckRemoteSleepIndication(NetworkHandleType NetworkHandle, boolean* nmRemoteSleepIndPtr)
服务 ID[hex] 0x11
输入参数 NetworkHandle -- 网络管理通道的句柄
输出参数 nmRemoteSleepIndPtr -- 指向远程睡眠指示状态的指针
描述 检查远程睡眠指示状态。
可通过获取 CanNm.h

⌋ ()

8.3.19 CanNm_SetSleepReadyBit

[SWS_CanNm_00219]

字段 内容
服务名 CanNm_SetSleepReadyBit
语法 Std_ReturnType CanNm_SetSleepReadyBit(NetworkHandleType NetworkHandle, boolean nmSleepReadyBit)
服务 ID[hex] 0x12
输入参数 NetworkHandle -- 网络管理通道的句柄;nmSleepReadyBit -- 睡眠就绪位的值
描述 设置睡眠就绪位。
可通过获取 CanNm.h

⌋ ()

8.4 回调通知

8.4.1 CanNm_TxConfirmation

[SWS_CanNm_00230] ⌈ CanNm 的发送确认回调,签名与 CanIf 的 TxConfirmation 类似。 ⌋ ()

8.4.2 CanNm_RxIndication

[SWS_CanNm_00231] ⌈ CanNm 的接收指示回调,签名与 CanIf 的 RxIndication 类似。 ⌋ ()

8.4.3 CanNm_ConfirmPnAvailability

[SWS_CanNm_00232] ⌈ PN 可用性确认回调。 ⌋ ()

8.4.4 CanNm_TriggerTransmit

[SWS_CanNm_00233] ⌈ CanNm 的触发传输回调。 ⌋ ()

<!-- 完整签名和需求见原文 PDF 第 63-64 页 -->

8.5 调度函数

8.5.1 CanNm_MainFunction

[SWS_CanNm_00240]

字段 内容
服务名 CanNm_MainFunction
语法 void CanNm_MainFunction(void)
服务 ID[hex] 0x13
描述 CanNm 的主处理函数,由 BSW 调度器周期性调用。负责处理 NM 状态机、超时、消息传输等。
可通过获取 SchM_CanNm.h

⌋ (SRS_BSW_00373, SRS_BSW_00424)

8.6 预期接口

8.6.1 强制接口

[SWS_CanNm_00250]

API 函数 描述
Nm_NetworkRequest 网络请求通知
Nm_NetworkRelease 网络释放通知
Nm_PrepareBusSleepMode 准备总线睡眠模式
Det_ReportError 报告开发错误
Det_ReportRuntimeError 报告运行时错误

⌋ ()

8.6.2 可选接口

[SWS_CanNm_00251]

API 函数 描述
CanIf_Transmit 发送 NM PDU
CanNm_TriggerTransmit 触发传输回调
PduR_CanNmRxIndication 用户数据接收指示
Dem_SetEventStatus 设置 DEM 事件状态

⌋ ()

<!-- 完整接口列表见原文 PDF 第 66-67 页 -->

8.7 服务接口

<!-- 完整内容见原文 PDF 第 67 页 -->


9 序列图(Sequence diagrams

9.1 CanNm 传输

<!-- 完整内容见原文 PDF 第 68 页 -->

描述:CanNm_NetworkRequest() → CanNm 启动 NM 状态机 → 在 Repeat Message State 发送 NM PDU → 在 Normal Operation State 周期性发送 NM PDU。

9.2 CanNm 接收

<!-- 完整内容见原文 PDF 第 68-69 页 -->

描述:CanIf 接收到 NM PDU → 通知 CanNm → CanNm 重置 Timeout 定时器 → 检查 Repeat Message Request Bit → 通知 Nm 上层。

9.3 Nm 协调

<!-- 完整内容见原文 PDF 第 69 页 -->

描述:Nm 协调器同步多个节点的状态变化。


10 配置规范(Configuration specification

10.1 如何阅读本章

<!-- 完整内容见原文 PDF 第 70 页 -->

10.2 容器和配置参数

10.2.1 CanNm 全局配置概述

<!-- 完整内容见原文 PDF 第 70-71 页 -->

10.2.2 CanNm

CAN 网络管理驱动配置的根容器。

10.2.3 CanNmGlobalConfig

名称 类型 范围 描述
CanNmDevErrorDetect Boolean TRUE / FALSE 启用/禁用开发错误检测
CanNmVersionInfoApi Boolean TRUE / FALSE 启用/禁用 CanNm_GetVersionInfo API
CanNmMainFunctionPeriod Float 0..Inf CanNm_MainFunction 的调用周期
CanNmPassiveModeEnabled Boolean TRUE / FALSE 启用/禁用被动模式
CanNmBusLoadReductionEnabled Boolean TRUE / FALSE 启用/禁用总线负载减少
CanNmBusLoadReductionActiveTime Integer 0..65535 总线负载减少的活跃时间(ms
CanNmImmediateNmTransmissions Integer 0..255 立即 NM 传输数
CanNmRemoteSleepIndEnabled Boolean TRUE / FALSE 启用/禁用远程睡眠指示
CanNmUserDataEnabled Boolean TRUE / FALSE 启用/禁用用户数据
CanNmPnHandleMultipleNetworkRequests Boolean TRUE / FALSE PN 处理多个网络请求
... ... ... ...

<!-- 完整参数表见原文 PDF 第 72-78 页 -->

10.2.4 CanNm 通道配置概述

<!-- 完整内容见原文 PDF 第 78 页 -->

10.2.5 CanNmChannelConfig

名称 类型 范围 描述
CanNmChannelId Integer 0..255 通道的 ID
CanNmChannelCanId Integer 0..0x7FF NM PDU 的 CAN ID
CanNmMsgCycleTime Integer 0..65535 NM 消息周期(ms
CanNmMsgTimeoutTime Integer 0..65535 NM 消息超时(ms
CanNmMsgCycleOffset Integer 0..65535 消息周期偏移(ms
CanNmNodeId Integer 0..255 节点 ID
CanNmNodeIdEnabled Boolean TRUE / FALSE 启用/禁用节点 ID
CanNmRepeatMessageTime Integer 0..65535 重复消息时间(ms
CanNmTimeoutTime Integer 0..65535 NM Timeoutms
CanNmWaitBusSleepTime Integer 0..65535 等待总线睡眠时间(ms
CanNmPduCbvPosition Integer 0..7 CBV 在 PDU 中的位置
CanNmPduLength Integer 0..8 NM PDU 的长度(字节)
CanNmPnEnabled Boolean TRUE / FALSE 启用/禁用 PN
CanNmPnInfoLength Integer 0..7 PNI 的长度
CanNmPnInfoMask Integer 0..0xFF PNI 掩码
... ... ... ...

<!-- 完整参数表见原文 PDF 第 78-90 页 -->

10.2.6 CanNmRxPdu

名称 类型 范围 描述
CanNmRxPduId Integer 0..65535 接收 PDU 的 ID
CanNmRxPduCanId Integer 0..0x7FF 接收 PDU 的 CAN ID
CanNmRxPduCanIdMask Integer 0..0x7FF 接收 PDU 的 CAN ID 掩码
CanNmRxPduDlc Integer 0..8 接收 PDU 的 DLC
... ... ... ...

<!-- 完整参数表见原文 PDF 第 90-91 页 -->

10.2.7 CanNmTxPdu

发送 PDU 容器。

10.2.8 CanNmUserDataTxPdu

用户数据发送 PDU 容器。

10.2.9 CanNmPnInfo

部分网络信息容器。

10.2.10 CanNmPnFilterMaskByte

PN 过滤器掩码字节容器。

10.3 发布参数

<!-- 完整内容见原文 PDF 第 93 页 -->


11 示例(Examples

11.1 总线负载减少的周期性传输模式示例

<!-- 完整内容见原文 PDF 第 94 页 -->

11.2 NM PDU 定时行为示例

<!-- 完整内容见原文 PDF 第 94-95 页 -->


12 不适用需求(Not applicable requirements

<!-- 完整内容见原文 PDF 第 96 页 -->


翻译说明

  • 文档大小96 页,原始内容约 5363 行
  • 翻译策略:重点翻译 + 摘要
    • 已完整翻译:封面、文档标识、变更历史、目录、章节 1-5、7.1-7.2(核心算法和模式)、7.6NM PDU 结构)、7.7-7.10、8.1-8.5API 规范)
    • 摘要处理:第 6 章(需求追踪)保留前 10 项;第 7.11 章(部分网络)保留关键概述;第 7.12-7.20 章节做概要说明;第 10 章(配置规范)保留所有容器列表和代表性参数
    • 关键 API 函数(8.3 章节)已完整翻译
  • 保留项:所有 API 标识符(如 CanNm_NetworkRequestNm_PrepareBusSleepMode)、需求 ID(如 SWS_CanNm_00052SRS_Nm_00010)、错误码、配置参数名、CanNm_xxx 标识符、状态名(Bus-Sleep Mode、Network Mode 等)、AUTOSAR 方框符 ⌈⌋
  • 简化项:状态机图、UML 图以文字形式描述;配置参数表保留前 5-10 行;部分长篇时序图示以文字概述代替