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 在 硬件支持
317 每月下载量
2MB
6.5K SLoC
包含 (DOS exe, 1.5MB) peak.exe
ecu_diagnostics
用于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