目录
3.2.1 DiagnosticSessionControl 类属性
1. 文档概述
本文档旨在详细说明基于ISO 14229-1标准的诊断会话控制服务(Diagnostic Session Control, Service ID 0x10)的Python实现。该服务是UDS协议中最基础且关键的服务之一,用于控制ECU(电子控制单元)在不同的诊断会话模式之间切换。本文档涵盖服务功能、代码结构、API接口、使用示例及实现细节,为开发人员、测试工程师及维护人员提供全面的技术参考。
2. 服务简介
2.1 服务定义
诊断会话控制服务(0x10)允许客户端(诊断仪)请求服务器(ECU)进入不同的诊断会话模式。每种会话模式提供了不同的诊断功能访问权限和通信定时参数。
2.2 服务重要性
- 安全基础:控制对安全相关诊断功能的访问
- 资源管理:在不同会话下启用或禁用资源密集型功能
- 定时控制:管理服务器响应超时时间
- 功能隔离:分离生产、开发和售后诊断功能
2.3 协议规范
本实现遵循ISO 14229-1:2020标准中关于0x10服务的规范,包括:
- 请求和响应消息格式
- 支持的否定响应代码
- 会话参数处理
- 状态转换规则
3. 类结构设计
3.1 继承关系
DiagnosticSessionControl(BaseService)
├── Session(BaseService_fun)
└── Response_Interpret(Response)
3.2 类成员说明
3.2.1 DiagnosticSessionControl 类属性
| 属性 | 类型 | 值 | 描述 |
|---|---|---|---|
_sid |
int |
0x10 |
服务标识符 |
_use_sub_function |
bool |
True |
使用子功能参数 |
_has_response_data |
bool |
True |
是否有响应数据 |
supported_negative_response |
List[ResponseCode] |
[0x12, 0x13, 0x22] |
支持的否定响应码 |
3.2.2 Session 嵌套类
class Session(BaseService_fun):
__pretty_name__ = "session"
defaultSession = 0x01
programmingSession = 0x02
extendedDiagnosticSession = 0x03
safetySystemDiagnosticSession = 0x04
会话类型定义符合UDS标准:
- defaultSession (0x01): 默认会话,基础诊断功能
- programmingSession (0x02): 编程会话,用于软件更新
- extendedDiagnosticSession (0x03): 扩展会话,更多诊断功能
- safetySystemDiagnosticSession (0x04): 安全系统会话,安全相关功能
3.2.3 Response_Interpret 嵌套类
class Response_Interpret(Response):
p2_server_max: Optional[float]
p2_star_server_max: Optional[float]
响应解析类扩展了基础响应类,添加了定时参数解析功能。
4. 核心方法详解
4.1 make_request 方法
4.1.1 方法签名
@classmethod
def make_request(cls, session: int) -> Request
4.1.2 参数说明
| 参数 | 类型 | 必需 | 描述 | 有效值 |
|---|---|---|---|---|
session |
int |
是 | 请求的会话类型 | 0x01-0x04 |
4.1.3 实现逻辑
- 参数验证:使用
validate_int函数验证session参数为整数 - 会话有效性检查:通过反射获取Session类中定义的所有有效会话类型
- 请求构建:构建符合UDS标准的请求载荷
- 请求对象创建:使用
Request.from_payload创建请求对象
4.1.4 请求格式
[0x10, session_type]
示例:请求进入扩展诊断会话
[0x10, 0x03]
4.2 interpret_response 方法
4.2.1 方法签名
@classmethod
def interpret_response(cls, response_data: Optional[Union[int, list[int], bytes]]) -> Response_Interpret
4.2.2 参数说明
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
response_data |
Optional[Union[int, list[int], bytes]] |
是 | 原始响应数据 |
4.2.3 实现逻辑
- 基础响应解析:调用基类方法进行基础响应解析
- 肯定响应处理:
- 验证子功能参数有效性
- 检查响应数据长度(至少5字节)
- 解析定时参数(P2和P2*)
- 定时参数计算:
p2_server_max = a / 1000(单位:秒)p2_star_server_max = (b * 10) / 1000(单位:秒)

最低0.47元/天 解锁文章
3216

被折叠的 条评论
为什么被折叠?



