Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_SAEJ1939TransportLayer.md
T

12 KiB
Raw Blame History

SAE J1939 传输层规范 (Specification of a Transport Layer for SAE J1939)

AUTOSAR CP Release 4.4.0 文档 ID 425: AUTOSAR_SWS_SAEJ1939TransportLayer

元信息

项目 内容
文档标题 SAE J1939 传输层规范
文档所有者 AUTOSAR
文档责任方 AUTOSAR
文档标识号 425
文档状态 Final
所属 AUTOSAR 标准 Classic Platform
所属标准版本 4.4.0

文档变更历史

日期 版本 变更方 变更说明
2018-10-31 4.4.0 AUTOSAR Release Management MetaData 处理改进;细微更正
2017-12-08 4.3.1 AUTOSAR Release Management 修正/澄清
2016-11-30 4.3.0 AUTOSAR Release Management 关于直接 N-PDU 处理
2015-07-31 4.2.2 AUTOSAR Release Management 编辑变更
2014-10-31 4.2.1 AUTOSAR Release Management 初始正式版本

目录


1. 介绍与功能概述

本规范描述了 AUTOSAR 基础软件模块 J1939Tp 的功能、API 和配置,该模块为 AUTOSAR 实现兼容 SAE J1939 的传输层。术语 J1939Tp 和 J1939 传输层模块在本文档中同义。

SAE J1939 在卡车领域被广泛接受,包含描述通信协议各层(从物理层到诊断和应用层)的多个文档。SAE J1939-21 描述数据链路和传输层,包含两种传输协议变体:

  • BAM (Broadcast Announce Message):用于广播消息
  • CMDT (Connection Mode Data Transfer):用于点对点连接

本规范定义如何在 AUTOSAR 架构中实现 SAE J1939-21 的传输协议。仅描述与 AUTOSAR 架构相关的实现部分。具体定时等协议细节不在本规范中。要实现 J1939 传输层模块,读者必须能访问原始 SAE J1939-21 规范文档。

J1939Tp 模块接口至 PDU 路由器和 CAN 接口。

J1939Tp 的目的是分段和重组超过 8 字节的 J1939 PGN (N-SDU)。分段后的消息通过 CAN 接口发送和接收。

J1939Tp 支持超过 8 字节的固定大小和可变大小 N-SDU (I-PDU)。不超过 8 字节的 I-PDU 直接在 PduR 和 CanIf 之间交换。

固定大小 N-SDU 总是被 J1939Tp 分段,而可变大小 N-SDU 仅在超过 8 字节时才被分段。

J1939Tp 提供以下功能:

  • 发送方向的分段和直接传输
  • 接收方向的重组和直接接收
  • 数据流控制
  • 超时监视
  • 分段或重组期间的错误检测

2. 术语表与缩略语

J1939 术语

术语 解释
Address Claiming SAE J1939 的网络管理。给每个 ECU 分配临时 8 位标识符
J1939 Diagnostics SAE J1939 诊断层,见 SAE J1939/73
Parameter SAE J1939 应用层信号,由 SPN 唯一标识
Parameter Group SAE J1939 应用层消息,由 PGN 唯一标识
Transport Protocol 用于分段传输超过 8 字节消息的协议(SAE J1939/21)

缩略语

缩略语 描述
BAM Broadcast Announce Message,广播变体
CMDT Connection Mode Data Transfer,点对点变体
DA Destination Address
DET Default Error Tracer
DMx SAE J1939 诊断层诊断消息
NAME 每个 ECU 的唯一 64 位标识符
PDUF PDU Format,29 位标识符的一部分
PDUS PDU Specific,29 位标识符的一部分
PG Parameter Group
PGN Parameter Group Number
SA Source Address
SPN Suspect Parameter Number
TP.CM Connection Management 消息 (PGN 00EC00)
TP.CM_BAM BAM 启动 TP.CM 变体
TP.CM_CTS Clear To Send CMDT 握手
TP.CM_EndOfMsgAck End Of Message Acknowledge
TP.CM_RTS Request To Send CMDT 启动
TP.Conn_Abort Connection Abort
TP.DT Data Transfer 消息 (PGN 00EB00)

3. 相关文档

3.1 输入文档

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

3.2 相关标准

  • [16] SAE J1939-21(2006-12), Data Link Layer
  • [17] SAE J1939-7x(2006-xx), Application Layer

3.3 相关规范

AUTOSAR SWS BSW General [15] 同样适用。


4. 约束与假设

4.1 限制

AUTOSAR 架构包含多个通信系统特定传输层(J1939Tp、CanTp、FrTp 等)。所有这些模块必须有相同 API。

J1939Tp 模块不实现 TriggerTransmit API,因其仅时间触发总线架构需要。

4.2 适用车域

支持运行在 J1939 网络中的 ECU 实现。


5. 与其他模块的依赖

模块 依赖关系
CanIf J1939Tp 通过 CanIf 发送和接收 N-PDU
PduR J1939Tp 通过 PduR 接收上层 N-SDU
DET 错误上报
BSW Scheduler main 函数调度

5.1 文件结构

J1939Tp 提供 J1939Tp.h、J1939Tp_Cfg.h 等头文件。


6. 需求可追溯性

需求 ID 描述 满足者
SRS_J1939_00006 支持发送 J1939 PGN SWS_J1939Tp_00021
SRS_J1939_00009 支持 BAM 传输 SWS_J1939Tp_00045
SRS_J1939_00010 支持 CMDT 传输 SWS_J1939Tp_00046
SRS_J1939_00013 支持超时监视 SWS_J1939Tp_00086
SRS_BSW_00101 初始化 API SWS_J1939Tp_00018
SRS_BSW_00407 版本信息 SWS_J1939Tp_00031

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


7. 功能规范

7.1 J1939 传输协议变体

7.1.1 BAM (Broadcast Announce Message)

  • 用于广播 PG(目标地址为 0xFF)
  • TP.CM_BAM (1 帧) + N 个 TP.DT
  • 无流控
  • 帧间隔 50ms ~ 200ms

7.1.2 CMDT (Connection Mode Data Transfer)

  • 用于点对点 PG
  • TP.CM_RTS → TP.CM_CTS (握手)
  • TP.DT 系列 → TP.CM_EndOfMsgAck
  • 出错可使用 TP.Conn_Abort 中止

7.2 N-SDU 处理

7.2.1 发送

  • [SWS_J1939Tp_00021] ⌈J1939Tp_Transmit 启动 N-SDU 的传输。⌋
  • 根据 N-SDU 大小和目标地址选择 BAM 或 CMDT。
  • 完成时调用 PduR_J1939TpTxConfirmation。

7.2.2 接收

  • 收到 TP.CM_BAM 或 TP.CM_RTS 启动接收
  • 收到所有 TP.DT 重组消息
  • 完成时调用 PduR_J1939TpRxIndication。

7.3 超时监视

定时器 含义
T1 最后 TP.DT 到下一 TP.DT (Rx 端) 750ms
T2 TP.CM_CTS 到 TP.DT 1250ms
T3 最后 TP.DT 到 TP.CM_EndOfMsgAck 1250ms
T4 TP.CM_CTS WAIT 状态超时 1050ms
Tr 发送端 TP.DT 之间 200ms
Th 发送端 TP.CM_RTS 到 TP.CM_CTS 1250ms

7.4 MetaData 处理

J1939Tp 支持 N-PDU 和 N-SDU 含可变 SA、DA、Priority,信息在 MetaData 中提供。

7.5 错误分类

7.5.1 开发错误

错误名 错误码 含义
J1939TP_E_PARAM_CONFIG 0x01 配置参数错误
J1939TP_E_PARAM_ID 0x02 参数 ID 错误
J1939TP_E_PARAM_POINTER 0x03 NULL 指针
J1939TP_E_UNINIT 0x04 未初始化
J1939TP_E_INVALID_TX_ID 0x05 无效 TX ID
J1939TP_E_INVALID_RX_ID 0x06 无效 RX ID

7.5.2 运行时错误

错误名 含义
J1939TP_E_COMMUNICATION 通信错误
J1939TP_E_TIMEOUT 超时

8. API 规范

8.1 导入类型

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

8.2 类型定义

8.2.1 J1939Tp_ConfigType

typedef struct J1939Tp_ConfigType J1939Tp_ConfigType;

8.3 函数定义

8.3.1 J1939Tp_Init

void J1939Tp_Init(const J1939Tp_ConfigType* ConfigPtr)
Service ID 0x01
描述 初始化 J1939Tp 模块

8.3.2 J1939Tp_GetVersionInfo

void J1939Tp_GetVersionInfo(Std_VersionInfoType* versioninfo)
Service ID 0x02

8.3.3 J1939Tp_Shutdown

void J1939Tp_Shutdown(void)
Service ID 0x03

8.3.4 J1939Tp_Transmit

Std_ReturnType J1939Tp_Transmit(
    PduIdType TxPduId,
    const PduInfoType* PduInfoPtr
)
Service ID 0x05
Sync/Async Asynchronous
描述 请求传输 N-SDU

8.3.5 J1939Tp_CancelTransmit

Std_ReturnType J1939Tp_CancelTransmit(PduIdType TxPduId)
Service ID 0x06
描述 取消发送

8.3.6 J1939Tp_CancelReceive

Std_ReturnType J1939Tp_CancelReceive(PduIdType RxPduId)
Service ID 0x08

8.3.7 J1939Tp_ChangeParameter

Std_ReturnType J1939Tp_ChangeParameter(
    PduIdType id,
    TPParameterType parameter,
    uint16 value
)
Service ID 0x09

8.4 回调通知

8.4.1 J1939Tp_RxIndication

CanIf 通知 J1939Tp 收到 N-PDU。

8.4.2 J1939Tp_TxConfirmation

CanIf 通知 N-PDU 已发送。

8.5 调度函数

8.5.1 J1939Tp_MainFunction

void J1939Tp_MainFunction(void)
Service ID 0x0F

8.6 期望接口

8.6.1 强制接口

  • CanIf_Transmit
  • PduR_J1939TpStartOfReception
  • PduR_J1939TpCopyRxData
  • PduR_J1939TpRxIndication
  • PduR_J1939TpCopyTxData
  • PduR_J1939TpTxConfirmation

8.6.2 可选接口

  • Det_ReportError
  • Det_ReportRuntimeError

9. 时序图

9.1 初始化

启动序列。

9.2 接收 PG <= 8 字节

直接转发。

9.3 BAM 接收

  1. CanIf_RxIndication (TP.CM_BAM)
  2. PduR_StartOfReception
  3. CanIf_RxIndication (TP.DT) × n
  4. PduR_CopyRxData × n
  5. PduR_RxIndication

9.4 CMDT 接收

TP.CM_RTS → CTS → DT 序列 → EndOfMsgAck

9.5 BAM 发送

J1939Tp_Transmit → 发送 BAM → DT 序列 → TxConfirmation

9.6 CMDT 发送

J1939Tp_Transmit → RTS → 收到 CTS → DT → EndOfMsgAck → TxConfirmation

9.7 CMDT 发送的重试处理

TP.CM_CTS 中指示部分包重试。

[摘要] 详细时序图见原文 PDF 第 45-54 页。


10. 配置规范

10.1 容器与配置参数

10.1.1 J1939Tp

根容器。

10.1.2 J1939TpGeneral

参数 类型 说明
J1939TpDevErrorDetect bool 启用 DET
J1939TpVersionInfoApi bool 版本信息 API
J1939TpMainFunctionPeriod float main 周期

10.1.3 J1939TpConfiguration

J1939Tp 配置集。

10.1.4 J1939TpRxChannel

接收通道配置(N_As、N_Bs、N_Cs 等超时)。

10.1.5 J1939TpRxCmNPdu, J1939TpRxDtNPdu

RX 控制和数据 N-PDU。

10.1.6 J1939TpRxPg, J1939TpRxDirectNPdu, J1939TpRxNSdu

RX 参数组、直接 N-PDU、N-SDU。

10.1.7 J1939TpTxFcNPdu, J1939TpTxChannel

TX 流控制 N-PDU 和发送通道。

10.1.8 J1939TpTxCmNPdu, J1939TpTxDtNPdu

TX 控制和数据 N-PDU。

10.1.9 J1939TpTxPg, J1939TpTxDirectNPdu, J1939TpTxNSdu

TX 参数组、直接 N-PDU、N-SDU。

[摘要] 完整配置详见原文 PDF 第 55-78 页。

10.2 已发布信息

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


11. 不适用需求

详见原文 PDF 第 80 页。


翻译说明

  • 本译本基于 AUTOSAR CP 4.4.0 的 J1939 传输层规范 (Document ID 425,共 80 页)
  • 摘要标记位置:第 6 章需求追溯、第 9 章时序图、第 10 章配置参数、第 11 章不适用需求