# 网络管理接口规范 (Specification of NetworkManagement Interface) > **AUTOSAR CP Release 4.4.0** > **文档 ID 228: AUTOSAR_SWS_NetworkManagementInterface** ## 元信息 | 项目 | 内容 | | --- | --- | | 文档标题 | 网络管理接口规范 | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 228 | | 文档状态 | 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 | 通用总线类型支持 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 编辑修正 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | NM 协调器增强 | | 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 编辑变更 | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | car wake-up 添加 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | 协调器逻辑增强 | | 2011-12-22 | 4.0.3 | AUTOSAR Administration | NM 协调器初始版本 | | 2010-09-30 | 3.1.5 | AUTOSAR Administration | 抽象层 | | 2010-02-02 | 3.1.4 | AUTOSAR Administration | 初始发布 | --- ## 目录 - [1. 介绍与功能概述](#1-介绍与功能概述) - [2. 缩略语](#2-缩略语) - [3. 相关文档](#3-相关文档) - [4. 约束与假设](#4-约束与假设) - [5. 与其他模块的依赖](#5-与其他模块的依赖) - [6. 需求可追溯性](#6-需求可追溯性) - [7. 功能规范](#7-功能规范) - [8. API 规范](#8-api-规范) - [9. 时序图](#9-时序图) - [10. 配置规范](#10-配置规范) --- ## 1. 介绍与功能概述 本文档描述网络管理接口模块的概念、接口和配置。 网络管理接口是 **AUTOSAR 通信管理器 (ComM)** 与 **AUTOSAR 总线特定网络管理模块**(如 CAN Network Management、FlexRay Network Management)之间的适配层。这称为 **基本功能 (Basic functionality)**。 此外,本文档还描述了连接到同一(协调器)ECU 的多个网络之间的互操作性,这些网络运行 AUTOSAR NM。"互操作性"意味着这些网络可以同步进入睡眠。这称为 **NM 协调器功能 (NM Coordinator functionality)**。 支持 NM 协调器功能是可选的。NM 接口实现可以仅支持 Basic functionality,或同时支持 Basic 和 NM Coordinator functionality。 NM 接口设计支持通用底层模块,允许第三方提供对 OEM 特定或传统 NM 协议(如直接 OSEK NM)的支持。 --- ## 2. 缩略语 | 缩略语 | 描述 | | --- | --- | | CanIf | CAN Interface | | CanNm | CAN Network Management | | CC | Communication controller | | ComM | Communication Manager | | EcuM | ECU State Manager | | DEM | Diagnostic Event Manager | | Nm | Generic Network Management Interface | | NM | Network Management | | OEM | Original Equipment Manufacturer | | CBV | Control Bit Vector in NM-message | ### 术语 | 术语 | 定义 | | --- | --- | | Bus-Sleep Mode | 所有互连通信控制器都处于睡眠模式的网络模式 | | NM-Channel | 与 NM-cluster 关联的逻辑通道 | | NM-Cluster | 使用 NM 算法协调的 NM 节点集 | | NM-Coordinator | Nm 功能,允许协调多个 NM 通道的网络睡眠 | | NM-Message | 用于 NM 算法目的的信息包 | | NM-Timeout | NM 算法中发起向 Bus-Sleep 模式过渡的超时 | | NM User Data | 附加在每个 NM 消息上的应用特定数据 | | Node Identifier | 用于 NM 算法的节点地址信息 | | Node Identifier List | NM 算法识别的节点标识符列表 | | Bus | NM 节点/ECU 连接到的物理通信媒介 | | network | 连接到同一总线的所有 NM 节点/ECU | | channel | NM 节点/ECU 连接到的逻辑总线 | | Coordinated shutdown | 两个或更多总线的同步关闭 | | Coordination algorithm | 所有条件满足时启动协调关闭 | --- ## 3. 相关文档 ### 3.1 输入文档 - [1] Glossary — AUTOSAR_TR_Glossary - [2] General Specification of Basic Software Modules - [3] Specification of CAN Network Management - [4] Specification of FlexRay Network Management - [5] Specification of UDP Network Management - [6] Specification of Network Management for SAE J1939 - [7] General Requirements on Basic Software Modules - [8] Requirements on Network Management ### 3.2 相关规范 SWS BSW General [2] 适用。 --- ## 4. 约束与假设 ### 4.1 限制 - 仅支持每个网络一个 NM 实例 - NM 协调器仅在 ECU 连接多个网络时使用 ### 4.2 适用车域 适用于所有车域。 --- ## 5. 与其他模块的依赖 | 模块 | 依赖关系 | | --- | --- | | ComM | NM 接口与 ComM 协作管理通信模式 | | CanNm/FrNm/UdpNm/J1939Nm | 底层 NM 模块 | | EcuM | 唤醒源通知 | | DEM | 错误事件上报 | --- ## 6. 需求可追溯性 | 需求 ID | 描述 | 满足者 | | --- | --- | --- | | SRS_Nm_00040 | 启动协调 | SWS_Nm_00041 | | SRS_Nm_00041 | 网络释放 | SWS_Nm_00057 | | SRS_Nm_00042 | 协调睡眠 | SWS_Nm_00046 | | SRS_Nm_00043 | NM 协调器 | SWS_Nm_00050 | | SRS_BSW_00101 | 初始化 | SWS_Nm_00030 | | SRS_BSW_00407 | 版本信息 | SWS_Nm_00220 | > **[摘要]** 完整需求追溯表见原文 PDF 第 30-45 页。 --- ## 7. 功能规范 ### 7.1 NM 接口的基本功能 #### 7.1.1 状态管理 - **Bus-Sleep**:所有节点睡眠 - **Prepare-Bus-Sleep**:准备进入睡眠 - **Network**:网络运行中 #### 7.1.2 模式控制 - Nm_PassiveStartUp:被动启动 - Nm_NetworkRequest:请求保持唤醒 - Nm_NetworkRelease:释放网络 ### 7.2 NM 协调器功能 NM 协调器协调多个网络同步睡眠。 #### 7.2.1 协调算法 - 检测所有协调网络是否准备睡眠 - 协调发送 SleepReady 通知 - 所有网络同步进入睡眠 #### 7.2.2 协调器与网络 NM 协调器在多个网络间共享状态。 ### 7.3 NM 消息处理 NM 接口将底层 NM 消息转发给上层。 ### 7.4 同步模式 新增同步模式用于多通道协调。 ### 7.5 错误分类 #### 7.5.1 开发错误 | 错误名 | 错误码 | 含义 | | --- | --- | --- | | NM_E_NO_INIT | 0x01 | 未初始化 | | NM_E_INVALID_CHANNEL | 0x02 | 无效通道 | | NM_E_INVALID_PARAMETER | 0x03 | 无效参数 | | NM_E_PARAM_POINTER | 0x12 | NULL 指针 | --- ## 8. API 规范 ### 8.1 导入类型 | 模块 | 头文件 | 导入类型 | | --- | --- | --- | | ComM | ComM.h | ComM_ModeType | | ComStack_Types | ComStack_Types.h | NetworkHandleType | | Std_Types | Std_Types.h | Std_ReturnType, Std_VersionInfoType | ### 8.2 类型定义 #### 8.2.1 Nm_ConfigType ```c typedef struct Nm_ConfigType Nm_ConfigType; ``` #### 8.2.2 Nm_ModeType ```c typedef enum { NM_MODE_BUS_SLEEP, NM_MODE_PREPARE_BUS_SLEEP, NM_MODE_SYNCHRONIZE, NM_MODE_NETWORK } Nm_ModeType; ``` #### 8.2.3 Nm_StateType ```c typedef enum { NM_STATE_UNINIT, NM_STATE_BUS_SLEEP, NM_STATE_PREPARE_BUS_SLEEP, NM_STATE_READY_SLEEP, NM_STATE_NORMAL_OPERATION, NM_STATE_REPEAT_MESSAGE, NM_STATE_SYNCHRONIZE, NM_STATE_OFFLINE } Nm_StateType; ``` #### 8.2.4 Nm_BusNmType ```c typedef enum { NM_BUSNM_CANNM, NM_BUSNM_FRNM, NM_BUSNM_UDPNM, NM_BUSNM_GENERICNM, NM_BUSNM_J1939NM } Nm_BusNmType; ``` ### 8.3 函数定义 #### 8.3.1 服务函数 ##### Nm_Init ```c void Nm_Init(const Nm_ConfigType* nmConfigPtr) ``` | Service ID | 0x01 | | --- | --- | ##### Nm_PassiveStartUp ```c Std_ReturnType Nm_PassiveStartUp(NetworkHandleType nmChannelHandle) ``` ##### Nm_NetworkRequest ```c Std_ReturnType Nm_NetworkRequest(NetworkHandleType nmChannelHandle) ``` ##### Nm_NetworkRelease ```c Std_ReturnType Nm_NetworkRelease(NetworkHandleType nmChannelHandle) ``` ##### Nm_DisableCommunication / Nm_EnableCommunication 启用/禁用 NM 通信。 #### 8.3.2 协调器服务 ##### Nm_NetworkGwEraRequest 网关 ERA 请求。 #### 8.3.3 其他服务 ##### Nm_SetUserData ```c Std_ReturnType Nm_SetUserData( NetworkHandleType nmChannelHandle, const uint8* nmUserDataPtr ) ``` ##### Nm_GetUserData ```c Std_ReturnType Nm_GetUserData( NetworkHandleType nmChannelHandle, uint8* nmUserDataPtr ) ``` ##### Nm_GetPduData ```c Std_ReturnType Nm_GetPduData( NetworkHandleType nmChannelHandle, uint8* nmPduDataPtr ) ``` ##### Nm_RepeatMessageRequest ```c Std_ReturnType Nm_RepeatMessageRequest(NetworkHandleType nmChannelHandle) ``` ##### Nm_GetNodeIdentifier ```c Std_ReturnType Nm_GetNodeIdentifier( NetworkHandleType nmChannelHandle, uint8* nmNodeIdPtr ) ``` ##### Nm_GetLocalNodeIdentifier ```c Std_ReturnType Nm_GetLocalNodeIdentifier( NetworkHandleType nmChannelHandle, uint8* nmNodeIdPtr ) ``` ##### Nm_CheckRemoteSleepIndication ```c Std_ReturnType Nm_CheckRemoteSleepIndication( NetworkHandleType nmChannelHandle, boolean* nmRemoteSleepIndPtr ) ``` ##### Nm_GetState ```c Std_ReturnType Nm_GetState( NetworkHandleType nmChannelHandle, Nm_StateType* nmStatePtr, Nm_ModeType* nmModePtr ) ``` ##### Nm_GetVersionInfo ```c void Nm_GetVersionInfo(Std_VersionInfoType* versioninfo) ``` ### 8.4 回调通知 #### 8.4.1 标准回调通知 - Nm_NetworkStartIndication - Nm_NetworkMode - Nm_BusSleepMode - Nm_PrepareBusSleepMode - Nm_SynchronizeMode - Nm_RemoteSleepIndication - Nm_RemoteSleepCancellation - Nm_SynchronizationPoint - Nm_CoordReadyToSleepIndication - Nm_CoordReadyToSleepCancellation #### 8.4.2 额外回调通知 - Nm_PduRxIndication - Nm_StateChangeNotification - Nm_RepeatMessageIndication - Nm_TxTimeoutException - Nm_CarWakeUpIndication ### 8.5 调度函数 #### 8.5.1 Nm_MainFunction ```c void Nm_MainFunction(void) ``` ### 8.6 期望接口 #### 8.6.1 强制接口 - ComM_Nm_NetworkMode - ComM_Nm_BusSleepMode - 各 NM 模块函数(CanNm/FrNm/UdpNm/J1939Nm) - Det_ReportError #### 8.6.2 可选接口 #### 8.6.3 可配置接口 - NmCarWakeUpCallout ### 8.7 版本检查 --- ## 9. 时序图 ### 9.1 基本功能 启动序列、网络请求/释放、Bus Sleep 转换。 ### 9.2 NM 协调器功能时序 多通道协调睡眠。 > **[摘要]** 详细时序图见原文 PDF 第 86-87 页。 --- ## 10. 配置规范 ### 10.1 如何阅读本章 ### 10.2 配置参数 #### 10.2.1 Nm 根容器。 ### 10.3 全局可配参数 #### 10.3.1 NmGlobalConfig 全局配置。 #### 10.3.2 NmGlobalConstants | 参数 | 类型 | 说明 | | --- | --- | --- | | NmDevErrorDetect | bool | DET 启用 | | NmVersionInfoApi | bool | 版本信息 API | | NmMainFunctionPeriod | float | main 周期 | #### 10.3.3 NmGlobalProperties 全局属性配置。 #### 10.3.4 NmGlobalFeatures | 参数 | 类型 | 说明 | | --- | --- | --- | | NmCarWakeUpRxEnabled | bool | 启用 Car WakeUp | | NmComControlEnabled | bool | 启用通信控制 | | NmCoordinatorSupportEnabled | bool | 启用协调器 | | NmRemoteSleepIndEnabled | bool | 启用远程睡眠指示 | | NmStateChangeIndEnabled | bool | 启用状态变化指示 | | NmSynchronizationPointEnabled | bool | 启用同步点 | | NmUserDataEnabled | bool | 启用用户数据 | ### 10.4 通道可配参数 #### 10.4.1 NmChannelConfig | 参数 | 类型 | 说明 | | --- | --- | --- | | NmChannelId | int | 通道 ID | | NmBusType | enum | 总线类型 | #### 10.4.2 NmBusType | 参数 | 类型 | 说明 | | --- | --- | --- | | NmBusNmType | enum | 选择底层 NM 模块 | #### 10.4.3 NmGenericBusNmConfig 通用 NM 总线配置。 #### 10.4.4 NmStandardBusNmConfig 标准 NM 总线配置(CAN/FlexRay/UDP/J1939)。 > **[摘要]** 完整配置详见原文 PDF 第 88-104 页。 ### 10.5 已发布信息 按 BSW General。 --- ## A. 不适用需求 详见原文 PDF 第 105 页。 --- ## 翻译说明 - 本译本基于 AUTOSAR CP 4.4.0 的网络管理接口规范 (Document ID 228,共 105 页) - 摘要标记位置:第 6 章需求追溯、第 9 章时序图、第 10 章配置、附录 A 不适用需求