Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_SAEJ1939RequestManager.md
T

11 KiB

SAE J1939 请求管理规范 (Specification of a Request Manager for SAE J1939)

AUTOSAR CP Release 4.4.0 文档 ID 611: AUTOSAR_SWS_SAEJ1939RequestManager

元信息

项目 内容
文档标题 SAE J1939 请求管理规范
文档所有者 AUTOSAR
文档责任方 AUTOSAR
文档标识号 611
文档状态 Final
所属 AUTOSAR 标准 Classic Platform
所属标准版本 4.4.0

文档变更历史

日期 版本 变更方 变更说明
2018-10-31 4.4.0 AUTOSAR Release Management 支持 J1939 Request2 PG;细微更正
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 初始正式版本

目录


1. 介绍与功能概述

本规范规定了 AUTOSAR 基础软件模块 J1939 请求管理 (J1939Rm) 的功能、API 和配置。

1.1 SAE J1939 中的请求管理

J1939 定义了一个特殊的参数组(PG)称为 Request (RQST,PGN = 0x0EA00),可用于请求传输任何其他参数组。Request 参数组仅包含被请求参数组的 PGN。

根据 Request PG 使用的目的地址,响应必须直接发送到请求 ECU 或所有 ECU。对于 PDU1 格式的短参数组,目的地址应相应设置;对于大参数组,使用合适的传输协议模式(BAM 或 CMDT,见 [9] 和 [18])。

根据请求的参数组和 Request PG 的目的地址,ECU 用所请求的参数组、特殊的 Acknowledgement 参数组(ACKM,PGN = 0x0E800)回应,或根本不回应。

J1939 定义了在请求发出后 1.25 秒 内应收到响应。响应节点须在 200ms 内响应。

除 Request PG 外,J1939 还定义了 Request2 PG (RQST2, PGN=0xC900),其行为与 Request PG 相同,但有以下扩展:

  • 可使用传输函数从多个 ECU 请求同一 PG。
  • 可指定扩展标识符字节以请求多路复用消息的特定布局。

1.2 J1939 请求管理 BSW 模块

J1939 请求管理(J1939Rm)处理已接收和发送的 Request、Request2 和 Acknowledgement PG。它原生支持地址声明的入站请求处理,并可配置以支持诊断和其他 J1939 PGN 的入站请求。未知的入站请求若指向特定目的地址,则用否定 Acknowledgement PG 回应。

J1939Rm 还支持请求传输和对结果 PG 或确认的超时监视。

1.3 J1939 术语

J1939 术语与一般 AUTOSAR 术语显著不同。为保持一致,介绍中使用 J1939 规范术语,但本规范其余部分将使用 AUTOSAR 更常见的术语:

  • 'I-PDU' 替代 'parameter group'

2. 缩略语

缩略语 描述
AC J1939 AddressClaimed PG (PGN = 0x0EE00)
ACK J1939 Acknowledgement PG (ACKM),control byte=0
ACKM J1939 Acknowledgement PG (PGN = 0x0E800)
BSW Basic Software
CA Controller Application,绑定到一个地址的 ECU 角色
DET Default Error Tracer
DP Data Page,18 位 PGN 的最高位
EDP Extended Data Page,MSB 之后的第二位
NACK ACKM with control byte=1
PDUF PDU Format,18 位 PGN 的中间字节
PDUS PDU Specific,18 位 PGN 的低字节
PG Parameter Group
PGN Parameter Group Number (18 位)
RQST J1939 Request PG (PGN = 0x0EA00)
RQST2 J1939 Request2 PG (PGN = 0x0C900)
RTE AUTOSAR Runtime Environment
SW-C AUTOSAR Software Component
XFER J1939 Transfer PG (PGN = 0x0CA00)

3. 相关文档

3.1 输入文档

  • [1] List of Basic Software Modules
  • [2] Layered Software Architecture
  • [3] General Requirements on Basic Software Modules
  • [4] General Specification of Basic Software Modules
  • [5] Requirements on BSW Modules for SAE J1939
  • [6] Specification of Communication Stack Types
  • [7] System Template
  • [8] Specification of CAN Interface
  • [9] Specification of a Transport Layer for SAE J1939
  • [10] Specification of PDU Router
  • [11] Specification of Communication
  • [12] Specification of Network Management for SAE J1939
  • [13] Specification of a Diagnostic Communication Manager for SAE J1939
  • [14] Specification of Default Error Tracer
  • [15] Specification of BSW Scheduler
  • [16] Specification of ECU Configuration
  • [17] Specification of Memory Mapping

3.2 相关标准

  • [18] J1939-21 MAR2016, Data Link Layer

3.3 相关规范

AUTOSAR SWS BSW General [4] 同样适用于本规范。


4. 约束与假设

4.1 限制

J1939 请求管理仅在使用 SAE J1939 的网络上有意义。

4.2 适用车域

适用于商用车域。


5. 与其他模块的依赖

J1939Rm 与下列模块交互:

  • CAN 接口 (CanIf):用于 RQST、RQST2、ACKM 的短帧发送/接收
  • J1939 传输层 (J1939Tp):用于大型响应 PG 的发送/接收
  • PDU 路由器 (PduR):用于将 RQST、ACKM、响应 PG 转发到对应模块
  • J1939Nm:用于地址声明的请求处理
  • J1939Dcm:用于诊断 PG 请求处理
  • DET:错误上报
  • BswM:模式管理

5.1 文件结构

J1939Rm 提供 J1939Rm.h、J1939Rm_Cfg.h 等头文件。


6. 需求可追溯性

需求 ID 描述 满足者
SRS_J1939_00006 支持 RQST 请求处理 SWS_J1939Rm_00050
SRS_J1939_00010 支持 Acknowledgement SWS_J1939Rm_00055
SRS_J1939_00026 应支持 J1939 地址声明 SWS_J1939Rm_00060
SRS_BSW_00101 初始化 API SWS_J1939Rm_00021
SRS_BSW_00407 版本信息 SWS_J1939Rm_00022

[摘要] 完整需求追溯表见原文 PDF 第 17-30 页。


7. 功能规范

7.1 请求的发送和接收

J1939Rm 处理 RQST、RQST2、ACKM 三种 PG。

7.1.1 入站请求处理

  • 收到 RQST/RQST2 时,J1939Rm 解析 PGN 并将其映射到对应用户(地址声明、诊断、应用)
  • 对未知 PGN 的请求,如指向特定目标,响应 NACK ACKM PG

7.1.2 出站请求

  • J1939Rm_Request / J1939Rm_Request2 由用户调用以发送 Request PG
  • J1939Rm 启动 1.25s 超时定时器

7.1.3 Acknowledgement

  • J1939Rm 处理收到的 ACKM
  • 用户可调用 J1939Rm_SendAck 发送 ACK/NACK

7.2 用户类型

用户类型 说明
DcmUser 诊断通信管理器用户
CddUser 复杂设备驱动用户
RteUser RTE 用户(直接 SW-C 访问)
ComUser COM 用户(信号级)

7.3 寻址方式

  • 特定地址 (Specific addressing):目的地址 = SA
  • 全局地址 (Global addressing):目的地址 = 0xFF

7.4 错误分类

7.4.1 开发错误

错误名 错误码 含义
J1939RM_E_UNINIT 0x01 未初始化
J1939RM_E_PARAM_POINTER 0x02 NULL 指针
J1939RM_E_INVALID_USER 0x03 无效用户
J1939RM_E_INVALID_NETWORK 0x04 无效网络
J1939RM_E_INVALID_PGN 0x05 无效 PGN

7.4.2 运行时错误

错误名 含义
J1939RM_E_REQUEST_TIMEOUT 请求响应超时

8. API 规范

8.1 导入类型

模块 头文件 导入类型
ComStack_Types ComStack_Types.h PduIdType, PduInfoType, PduLengthType
Std_Types Std_Types.h Std_ReturnType, Std_VersionInfoType

8.2 类型定义

8.2.1 J1939Rm_ConfigType

typedef struct J1939Rm_ConfigType J1939Rm_ConfigType;

8.2.2 J1939Rm_AckCodeType

typedef enum {
    J1939RM_ACK_POS = 0,     // Positive ACK
    J1939RM_ACK_NEG = 1,     // Negative ACK
    J1939RM_ACK_ACCESS = 2,  // Access denied
    J1939RM_ACK_BUSY = 3     // Cannot respond
} J1939Rm_AckCodeType;

8.3 函数定义

8.3.1 J1939Rm_Init

void J1939Rm_Init(const J1939Rm_ConfigType* config)
Service ID 0x01
描述 初始化 J1939Rm 模块

8.3.2 J1939Rm_GetVersionInfo

void J1939Rm_GetVersionInfo(Std_VersionInfoType* versionInfo)
Service ID 0x02

8.3.3 J1939Rm_Request

Std_ReturnType J1939Rm_Request(
    NetworkHandleType Channel,
    uint8 user,
    uint8 DestAddress,
    uint32 PGN
)
Service ID 0x03
描述 发送 Request PG

8.3.4 J1939Rm_Request2

Std_ReturnType J1939Rm_Request2(
    NetworkHandleType Channel,
    uint8 user,
    uint8 DestAddress,
    uint32 PGN,
    uint32 ExtIDByte1,
    uint32 ExtIDByte2,
    uint32 ExtIDByte3,
    uint32 ExtIDByte4
)
Service ID 0x04
描述 发送 Request2 PG

8.3.5 J1939Rm_SendAck

Std_ReturnType J1939Rm_SendAck(
    NetworkHandleType Channel,
    J1939Rm_AckCodeType AckCode,
    uint8 GroupFunctionValue,
    uint8 AddressACK,
    uint32 PGN
)
Service ID 0x05
描述 发送 ACKM PG

8.3.6 J1939Rm_DcmCancelTransmit / J1939Rm_CddCancelTransmit

取消未完成的请求。

8.3.7 J1939Rm_MainFunction

void J1939Rm_MainFunction(void)
Service ID 0x09
描述 主处理函数,处理超时

8.4 回调通知

8.4.1 J1939Rm_RxIndication

PduR 通知 J1939Rm 收到 RQST/ACKM。

8.4.2 J1939Rm_TxConfirmation

PduR 通知 J1939Rm 已发送 RQST/ACKM。

8.5 用户回调(可配置接口)

8.5.1 _ProcessRequest

入站请求通知到用户。

8.5.2 _RequestIndication

入站请求指示。

8.5.3 _AckIndication

ACKM 接收指示。

8.5.4 _TimeoutIndication

请求超时指示。

8.6 期望接口

8.6.1 强制接口

  • PduR_J1939RmTransmit
  • Det_ReportError

8.6.2 可选接口

  • Dcm_J1939DcmRequestIndication
  • Nm_J1939Rm 接口

9. 时序图

[摘要] 详细时序图见原文 PDF 第 50-65 页,包括 RQST 接收/发送、ACKM 处理、超时场景等。

主要场景:

  • 入站 RQST 处理 → DcmUser/CddUser/RteUser 通知 → 响应 PG 发送
  • 出站 RQST → 超时定时器 → 响应 PG 接收 / 超时
  • 入站 ACKM → 通知用户

10. 配置规范

10.1 容器与配置参数

10.1.1 J1939Rm

根容器。

10.1.2 J1939RmGeneral

参数 类型 说明
J1939RmDevErrorDetect bool DET 启用
J1939RmVersionInfoApi bool 启用版本信息 API
J1939RmMainFunctionPeriod float main 函数周期

10.1.3 J1939RmChannel

每通道配置,包括请求超时(默认 1.25s)、节点地址等。

10.1.4 J1939RmUser

用户配置:

  • J1939RmDcmUser
  • J1939RmCddUser
  • J1939RmRteUser
  • J1939RmComUser

10.1.5 J1939RmRxPg / J1939RmTxPg

接收/发送 PG 配置(PGN、目的地址、用户引用)。

[摘要] 完整配置参数详见原文 PDF 第 45-80 页。

10.2 已发布信息

按 BSW General 提供模块版本信息。


翻译说明

  • 本译本基于 AUTOSAR CP 4.4.0 的 J1939 请求管理规范 (Document ID 611,共 81 页)
  • 摘要标记位置:第 6 章需求追溯、第 9 章时序图、第 10 章配置参数