57 个版本

0.96.0 2024年7月23日
0.95.7 2024年3月15日
0.95.6 2023年12月24日
0.95.2 2023年9月13日
0.0.7 2021年7月15日

#98硬件支持

Download history 21/week @ 2024-04-27 85/week @ 2024-05-04 149/week @ 2024-05-11 17/week @ 2024-05-18 16/week @ 2024-05-25 45/week @ 2024-06-01 25/week @ 2024-06-08 3/week @ 2024-06-15 11/week @ 2024-07-06 96/week @ 2024-07-13 135/week @ 2024-07-20 128/week @ 2024-07-27 19/week @ 2024-08-03 9/week @ 2024-08-10

317 每月下载量

MIT 许可证

2MB
6.5K SLoC

包含 (DOS exe, 1.5MB) peak.exe

ecu_diagnostics

crates.io version docs.rs docs

用于ECU诊断的跨平台crate

请确保您正在运行Rust 1.56.0(2021版)或更高版本以使用此crate!

特性

  • 易于使用(检查示例文件夹)
  • 实现了UDS、KWP2000和OBD2
  • 硬件API,用于访问常见的OBD-2适配器类型(Passthru)
  • FFI绑定,用于C/C++项目!(检查示例文件夹)
  • 安全使用(不会意外向ECU发送错误请求)
  • 解析支持 - 在可能的情况下,数据以数据结构的形式返回,由ECU的响应解释,而不是需要手动解释的字节
  • ISO-TP传输层、LIN、J1850和DoIP目前处于开发中
  • 诊断服务器(用于KWP2000和UDS)自动处理与ECU的断开连接
  • 可选诊断服务器事件接收,用于记录内部服务器事件

ECU使用的诊断服务器的快速概述

车载诊断(OBD2)

ISO9141 - OBD2是从2002年开始生产的所有车辆的法律要求,允许读取传感器数据、读取和清除标准DTC,以及读取基本车辆信息。OBD2设计得既安全又简单,不会将数据写入ECU。

关键字协议2000 (KWP2000)

ISO14230 - KWP2000是一种由2000-2006年许多汽车制造商使用的先进诊断协议(由UDS取代)。与OBD2不同,KWP2000允许执行更复杂的操作,如果使用不当可能会损坏车辆。
KWP2000允许的一些功能示例

  • ECU刷写
  • 清除和读取永久DTC
  • 操作ECU通信参数
  • 低级别操作ECU的EEPROM或RAM
  • 访问具有网关的车辆

本crate实现的规范是v2.2,日期为2002年5月8日

统一诊断服务 (UDS)

ISO14429 - UDS是从2006年开始由几乎所有汽车制造商使用的先进诊断协议。像KWP2000一样,此协议允许直接读取/写入ECU,因此应谨慎使用。

本软件包实现的规范是第二版,发布日期为2006年12月1日。

新增功能(自v0.91版本统一诊断服务器起)

各个诊断服务器现在合并为1个可以处理所有不同协议的诊断服务器(诊断协议在服务器创建时指定)。这极大地减少了软件包的膨胀(减少复制粘贴代码),重构还引入了一些新功能

  • 现在可以定义自己的ECU诊断协议和会话模式。请查看示例文件夹了解如何操作!
  • 现在可以为ECU接收到请求并正在处理时设置钩子函数(适用于长时间运行的操作)
  • 现在可以为传输完成且服务器等待ECU回复时设置钩子函数
  • 诊断服务器现在可以通知您ECU是否已连接或已断开连接
  • 诊断服务器现在可以在重启后自动更改ECU的诊断会话模式,以避免出现“ServiceNotSupportedInActiveSession”错误

诊断服务器清单

OBD2

自定义服务支持:是

正常工作的规范服务

  • 服务01 - 显示当前数据
  • 服务02 - 显示冻结帧数据
  • 服务09 - 请求车辆信息

KWP2000

自定义服务支持:是

正常工作的规范服务

  • 开始诊断会话
  • ECU重置
  • 按状态读取故障码
  • 读取ECU标识
  • 读取故障码状态
  • 清除诊断信息

UDS

自定义服务支持:是

正常工作的规范服务

  • 诊断会话控制
  • ECU重置
  • 读取故障码信息
  • 安全访问

硬件API清单

硬件API包含一个用于在系统上扫描兼容设备的通用接口,以及一个用于使用硬件创建诊断服务器通道的API

中继(SAE J2534)

  • ISO-TP
  • CAN
  • 读取电池电压

SocketCAN

  • ISO-TP
  • CAN

D-PDU(ISO 22900-2)

待定

显著贡献

  • @LLBlumire
  • @nyurik(创建了automotive_diag软件包,该项目现在依赖于它)

依赖项

~0.4–6.5MB
~33K SLoC