随记 界定ECU处于诊断模式与非诊断模式

随记 界定ECU处于诊断模式与非诊断模式


核心定义

诊断模式(Diagnostic Mode)

ECU处于诊断模式时,表示其已通过**扩展会话(Extended Session)编程会话(Programming Session)**激活,允许执行敏感操作(如写入配置、刷写固件)。
关键特征

  1. 会话状态:通过UDS服务 10 03(扩展会话)或 10 02(编程会话)切换至非默认会话。
  2. 权限:需通过安全访问(27 XX)解锁,允许执行高风险服务(如 2E XX 写入DID)。
  3. 维持机制:周期性发送 3E XX(Tester Present)或其他诊断请求以重置会话超时计时器

非诊断模式(Non-Diagnostic Mode)

ECU处于默认会话(10 01)或未激活任何会话时,仅允许执行基础操作(如读取DTC、DID)。
关键特征

  1. 会话状态:默认会话(10 01)。
  2. 权限限制:无法执行需扩展/编程会话权限的服务。
  3. 超时退出:若未维持会话,诊断模式自动退出至默认会话。

判定条件对比

条件诊断模式非诊断模式
会话类型扩展会话(10 03)或编程会话(10 02默认会话(10 01
安全访问状态已解锁(27 XX通过)未解锁(27 XX未执行)
总线活动周期性 3E XX 或其他诊断交互无诊断交互或仅基础服务(19 XX等)
典型服务响应允许 2E XX(写入DID)返回 NRC 7E(服务不支持)

关键验证方法

1. 通过诊断工具验证

  • 步骤
    1. 发送 10 03 进入扩展会话,ECU响应 50 03 则为诊断模式。
    2. 尝试执行 2E XX(写入DID):
      • 成功 → 处于诊断模式。
      • 返回 NRC 7E → 处于非诊断模式。

2. 监控总线通信

  • 诊断模式标志
    • 存在 3E XX + 其他诊断请求(如 22 XX2E XX)。
    • 会话切换报文(10 0350 03)。

3. 读取会话状态DID

  • 使用 22 XX 读取DID(如 0x87):
    • 0x01 → 默认会话(非诊断模式)。
    • 0x03 → 扩展会话(诊断模式)。

常见场景分析

场景1:网络在线但无诊断交互

  • 表现:ECU保持物理连接(如CAN总线在线),但无 3E XX 或其他诊断请求。
  • 结论:处于非诊断模式(默认会话超时退出)。

场景2:持续发送 3E XX 但未切换会话

  • 表现:总线中存在 3E XX 但未发送 10 03
  • 结论:仍处于默认会话(非诊断模式)。

场景3:扩展会话下未维持 3E XX

  • 表现:进入扩展会话后停止发送 3E XX
  • 结论:超时(S3计时器)后返回默认会话(非诊断模式)。

测试建议

  1. 超时机制验证
    • 进入扩展会话后停止发送 3E XX,等待S3时间(通常5s)后验证是否返回默认会话。
  2. 权限边界测试
    • 在默认会话下尝试执行需诊断模式的服务(如 2E XX),确认返回 NRC 7E
  3. 错误码覆盖
    • 在非诊断模式下发送 10 03,ECU应正常响应;若ECU设计为需先解锁,则返回 NRC 33(安全访问拒绝)。

总结

  • 诊断模式的核心标志:非默认会话 + 安全访问解锁 + 活跃诊断交互。
  • 网络连接 ≠ 诊断模式:物理层在线不代表应用层处于诊断状态。
  • 标准化验证:依赖ISO 14229-1协议及ECU诊断规范定义的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值