AUTOSAR(Automotive Open System Architecture)是一种用于汽车电子电气系统的标准化软件架构。J1939是由SAE(Society of Automotive Engineers,美国汽车工程师学会)制订的一系列规范,广泛用于商用车辆和重型设备的通信。J1939 Transport Layer(J1939Tp)模块是AUTOSAR中的一个重要部分,它处理跨多个CAN(Controller Area Network)报文的数据传输,这些数据被称为多报文传输。
J1939Tp 模块的主要功能
J1939Tp模块主要有以下几个功能:
- 数据分段和重组:J1939协议规定的单个CAN帧的数据长度是8字节,J1939Tp负责将较大的数据消息划分为多个8字节的小分段在CAN网络上传输,并在接收方将这些小分段重新组装成完整的消息。
- 传输协议管理:J1939Tp负责管理传输过程,包括初始化、数据发送和接收、重发机制以及错误处理。
- 多路传输:支持多个并发的数据传输通道,利用唯一的消息ID(Identifier,标识符)来区分不同的数据消息。
- 通讯参数管理:管理和配置包括超时参数、重发次数、窗口大小等通讯参数。
J1939Tp 的主要组件
J1939Tp模块的实现一般包含以下几个主要组件:
- TP管理器 (TP Manager):负责整体传输协议的管理,包括初始握手、传输状态监控和错误处理等。
- 分段管理器 (Segment Manager):实现数据的分段和重组功能,保证消息的正确拼装和解码。
- 通讯控制器 (Comm Controller):与CAN模块(CAN Interface,CAN通道)交互,具体执行数据帧的发送和接收。
关键概念与通讯流程
数据分段和合并
- BAM(Broadcast Announce Message):一种不需要确认的广播模式,会在发送数据之前广播一条消息宣布接下来数据分段的传输。
- RTS-CTS(Request to Send - Clear to Send):一种带有确认的通讯模式,发送方请求发送数据,接收方确认可以接收数据。
流程示例
1. BAM模式:
- 发送方先发送BAM报文,宣布即将发送的数据分段。
- 发送方按顺序发送所有数据分段。
- 接收方接收所有数据分段并按顺序重组为完整消息。
2. RTS-CTS模式:
- 发送方发送RTS报文,请求发送某个数据。
- 接收方根据接收能力发送CTS报文,允许按窗口尺寸个数的数据分段发送。
- 发送方按照接收方的窗口尺寸发送数据分段,接收方接收后发送CTS继续请求,直至所有分段传输完毕。
配置与参数
J1939Tp模块需要配置多个参数以正确工作,这些包括但不限于:
- Max Number of Segments:单次传输的数据分段最大个数。
- Timeout Parameters:包括RTS-CTS模式下的超时、BAM模式下的超时等。
- Retry Count:传输失败时的重试次数。
错误处理
J1939Tp模块需要具备健壮的错误处理机制,如:
- 超时处理:在指定时间内未收到预期的CTS或者数据分段时进行重试或报错。
- 检测并处理丢失或错误的数据分段:如果检测到数据分段丢失或者接收到错误的数据段,模块需要采取对应的补救措施,如重发或者报错。
总结
J1939Tp模块在AUTOSAR架构中用于处理跨多个CAN报文进行的多报文传输。它不仅负责数据分段和重组,还需要管理复杂的传输协议和错误处理。通过高效管理通讯参数和实现可靠的传输机制,J1939Tp确保车辆和设备的稳定通讯。