ISO 15765-2TP传输协议
目录
- ISO 15765-2标准全解析
- 一、ISO 15765-2概述
- 二、传输层基本概念
- 三、帧格式详解
- 四、传输参数
- 五、通信流程示例
- 六、错误处理机制
- 七、实现考量
- 八、应用场景
- 九、最新发展
ISO 15765-2标准全解析
一、ISO 15765-2概述
-
定义与定位
- ISO 15765-2:道路车辆 - 诊断通信通过控制器局域网(CAN) - 第2部分:传输层协议和服务
- 核心功能:实现诊断数据的可靠传输,支持大数据量传输
- 应用场景:汽车ECU与诊断工具之间的通信
-
与其他标准的关系
ISO 14229 (UDS) → 应用层 ISO 15765-2 → 传输层 ISO 15765-3 → 网络层 ISO 11898 → 数据链路层和物理层 (CAN)
二、传输层基本概念
-
帧类型
- 单帧(Single Frame, SF):≤7字节数据
- 首帧(First Frame, FF):开始多帧传输,包含总长度信息
- 连续帧(Consecutive Frame, CF):传输多帧数据的后续部分
- 流控帧(Flow Control Frame, FC):控制数据传输速率
-
多帧传输机制
发送方 接收方 ────────────────────────────────────────── 1. 发送首帧 (FF) ────────────────► 2. 发送流控帧 (FC) ────► 3. 发送连续帧1 (CF1) ───────────► 4. 发送连续帧2 (CF2) ───────────► ... n. 发送连续帧N (CFN) ──────────►
三、帧格式详解
-
单帧(SF)
+------+------+----------------------+ | SID | DLC | 数据字节 (1-7字节) | +------+------+----------------------+ SID: 服务ID (如0x10, 0x22等) DLC: 数据长度代码 (0-7)
-
首帧(FF)
+------+------+------+----------------------+ | SID | FF | LenH | LenL | 数据字节(1-6) | +------+------+------+----------------------+ SID: 服务ID FF: 首帧标识 (固定值0x10) LenH: 总数据长度高字节 LenL: 总数据长度低字节
-
连续帧(CF)
+------+------+----------------------+ | SID | SN | 数据字节 (1-7字节) | +------+------+----------------------+ SID: 服务ID SN: 序列号 (0x01-0x0F循环)
-
流控帧(FC)
+------+------+------+------+------+ | SID | FC | FS | BS | STmin| +------+------+------+------+------+ SID: 服务ID FC: 流控帧标识 (固定值0x30) FS: 流状态 (0x00=继续发送, 0x01=等待, 0x02=溢出) BS: 块大小 (允许连续发送的CF帧数) STmin: 最小帧间隔时间 (ms)
四、传输参数
-
块大小(Block Size, BS)
- 接收方允许发送方连续发送的CF帧数
- 取值范围:0(无限制)~ 255
- 示例:BS=8表示发送方可以连续发送8个CF帧,然后等待新的FC帧
-
最小帧间隔(STmin)
- 发送方在连续CF帧之间必须等待的最小时间
- 取值范围:
- 0x00-0x7F:表示STmin为0-127ms
- 0x80-0xF9:保留
- 0xFA-0xFF:表示STmin为100-250μs
五、通信流程示例
-
单帧通信(≤7字节数据)
上位机 → ECU: [22 F1 90] // 单帧请求 (3字节) ECU → 上位机: [62 F1 90 01 02 03] // 单帧响应 (6字节)
-
多帧通信(>7字节数据)
// 假设发送20字节数据 上位机 → ECU: [22 10 00 14 ... 6字节数据 ...] // 首帧 (FF) ECU → 上位机: [30 00 08 0A] // 流控帧 (FC), BS=8, STmin=10ms 上位机 → ECU: [22 01 ... 7字节数据 ...] // 连续帧1 (CF1) 上位机 → ECU: [22 02 ... 7字节数据 ...] // 连续帧2 (CF2) 上位机 → ECU: [22 03 ... 6字节数据 ...] // 连续帧3 (CF3)
六、错误处理机制
-
超时处理
- T1:发送方发送FF后等待FC的最大时间
- T2:接收方发送FC后等待第一个CF的最大时间
- T3:发送方发送CF后等待下一个FC的最大时间
- T4:接收方处理数据的最大时间
-
错误恢复
- 如果检测到超时或序列错误,发送方应:
1. 重置传输状态 2. 发送否定响应 (NRC=0x21, 0x22等) 3. 等待重新启动传输
- 如果检测到超时或序列错误,发送方应:
七、实现考量
-
状态机设计
- 发送状态机:IDLE → FF_SENT → WAIT_FC → SEND_CF → COMPLETED
- 接收状态机:IDLE → WAIT_FF → WAIT_CF → PROCESS_DATA → COMPLETED
-
代码实现示例
// 伪代码:ISO 15765-2发送处理 void SendMessage(uint8_t* data, uint16_t length) {if (length <= 7) {SendSingleFrame(data, length); // 单帧发送} else {SendFirstFrame(data, length); // 首帧发送current_state = WAIT_FC;start_timeout(T1);} }void HandleFlowControl(uint8_t* fc_frame) {uint8_t fs = fc_frame[2]; // 流状态uint8_t bs = fc_frame[3]; // 块大小uint8_t stmin = fc_frame[4]; // 最小间隔if (fs == 0x00) { // 继续发送block_size = bs;st_min = stmin;frames_sent = 0;current_state = SEND_CF;SendNextConsecutiveFrame();} else if (fs == 0x01) { // 等待current_state = WAIT_FC;start_timeout(T3);} }
八、应用场景
-
UDS诊断通信
- 传输大型诊断数据(如故障码列表、ECU日志)
- 支持Flash刷写时的大数据传输
-
远程信息处理
- 车联网(Telematics)数据上传/下载
- OTA固件更新
-
汽车电子开发
- 原型车测试中的数据采集
- ECU与测试设备之间的通信
九、最新发展
-
与车载以太网的集成
- 适应车载网络高带宽需求
- 支持ISO 15765-2 over Ethernet
-
AUTOSAR标准支持
- 标准化的传输层软件组件
- 支持多ECU系统的统一实现
-
安全增强
- 与ISO 21434网络安全标准集成
- 数据传输的加密和认证机制
ISO 15765-2为汽车诊断通信提供了可靠的传输层解决方案,确保了大数据量在CAN总线上的高效、稳定传输。随着汽车电子技术的发展,该标准也在不断演进,以适应新的通信需求和安全挑战。