自动驾驶 can设备上位机常见诊断/监控功能汇总

自动驾驶 dv上位机 can设备诊断常见功能汇总

通用约定

CAN 诊断寻址

  • 诊断请求 ID(tx_id)0x6D7(1751)
  • 诊断响应 ID(rx_id)0x6DF(1759)
  • 应用报文 ID0x500(DUT)、0x501(NM)
  • 帧类型:诊断查询为 CAN 2.0(is_fd: false

UDS 响应解析规则

  1. 正响应以 0x62 开头,后跟 DID(2 字节),然后是 payload
  2. yaml 中 offset含 UDS 头(0x62+DID 共 3 字节)的绝对偏移
  3. 负响应以 0x7F 开头
  4. 版本号 ASCII 解析遇到 0x00/0xCC/0xFF 或非可打印字符即截断

字节序

  • 原项目(Python view.js)所有多字节读取用大端(BE)
  • Rust 版对应类型:uint16_beint16_befloat64_be

一、监控类面板

1. 电压监控(voltage)

功能:监控 ECU 主板 20 路关键电源轨电压/电流,覆盖电瓶、KL15、各路 DCDC(MPQ2179/VR5510/TPS55289/MPQ2918/TPS74501)、DDR、天线供电、高位开关电流采样。用于 DV 阶段验证电源完整性。

对应硬件:电源管理子系统(PMIC + 多路 Buck/Boost/LDO + 高位开关驱动)

CAN 通信

  • 发送:tx_id=0x6D7, data=[0x22, 0x2A, 0x0B](UDS 0x22 ReadDataByIdentifier, DID=0x2A0B)
  • 接收:rx_id=0x6DF, 正响应 0x62 0x2A 0x0B + payload(40 字节,20×uint16_be)
  • 周期:50ms
  • 超时:2s

字段列表(全部 uint16_be, scale=0.01):

字段名offset单位告警范围说明
ADC_VBAT3V0–14.5 (error)电瓶电压
ADC_KL155V0–14.5 (error)KL15 点火电压
ADC_MPQ2179_VOUT_1V27V1.0–1.4 (warning)MPQ2179 1.2V 输出
ADC_PCAN5V9V-CAN 5V 供电
ADC_MPQ2179_VOUT_3V311V3.0–3.6 (warning)MPQ2179 3.3V 输出
ADC_MPQ2179_VOUT_1V813V1.6–2.0 (warning)MPQ2179 1.8V 输出
ADC_VR5510_AMUX_VDDIO_MCU_3V315V-VR5510 MCU IO 3.3V
ADC_VR5510_AMUX_5510_VSUP17V-VR5510 供电
ADC_VR5510_AMUX_5510_PWRON119V-VR5510 PWRON1
ADC_VR5510_AMUX_VDD_AON_0V7521V-常开域 0.75V
ADC_MPQ2179_OUT_0V923V-MPQ2179 0.9V 输出
ADC_TPS55289_VOUT_13V25V12.0–14.0 (warning)TPS55289 13V 输出(USS 供电)
ADC_VR5510_AMUX_VBOOST_5V27V-VR5510 升压 5V
ADC_MPQ2918_5V29V-MPQ2918 5V
ADC_DDR_TYPE_0.9V31V-DDR 0.9V
ADC_VDD_ANT_5V33V4.5–5.5 (warning)天线 5V 供电(GNSS)
ADC_HSD1_HSS_IS35A-高位开关 1 电流采样
ADC_KL30_VBAT2_A_IN37V-KL30 电瓶 2
ADC_HSD2_HSS_IS39A-高位开关 2 电流采样
ADC_TPS74501_OUT_3V341V-TPS74501 3.3V 输出

2. 温度监控(temperature)

功能:监控 ECU 主板 9 路温度点,包括 BPU/MCU/CMN 芯片内置 PVT 传感器、外部 NTC 热敏电阻、VR5510 PMIC 内部温度。用于 DV 阶段热验证。

对应硬件:芯片内置温度传感器 + 板载 NTC

CAN 通信

  • 发送:tx_id=0x6D7, data=[0x22, 0x2A, 0x03](DID=0x2A03)
  • 接收:rx_id=0x6DF, 正响应 0x62 0x2A 0x03 + payload
  • 周期:50ms

字段列表(全部 int16_be 有符号, scale=0.01, 单位 °C):

字段名offset告警范围说明
PVT_BPU_PVTC1_T1_SENSOR30–100 (warning)BPU 温度
PVT_CMN_PVTC1_T1_SENSOR5-CMN 温度 1
PVT_CMN_PVTC1_T2_SENSOR7-CMN 温度 2
PVT_MCU_PVTC1_T1_SENSOR90–100 (warning)MCU 温度 1
PVT_MCU_PVTC1_T2_SENSOR11-MCU 温度 2
(offset 13-14 保留)--跳过
NTC_2150–100 (warning)NTC 2
NTC_3170–100 (warning)NTC 3
NTC_4190–100 (warning)NTC 4
ADC_VR5510_AMUX_5510_Temp21-VR5510 PMIC 内部温度

注意int16_be 为有符号类型,支持负温。offset 13-14 为保留字节(原项目 view.js 中 byteStart 从 8 跳到 12)。


3. USS 超声波监控(uss)

功能:监控 12 路超声波雷达距离回波,覆盖前/后保险杠 12 个传感器。用于泊车雷达 DV 验证。

对应硬件:USS 超声波传感器阵列(由 TPS55289 13V 供电)

CAN 通信

  • 发送:tx_id=0x6D7, data=[0x22, 0x2C, 0xFA](DID=0x2CFA)
  • 接收:rx_id=0x6DF, 正响应 0x62 0x2C 0xFA + payload(24 字节,12×uint16_be)
  • 周期:1s

字段列表(全部 uint16_be, scale=1, 单位 cm):

字段名offset位置
FLS3前左外
FL5前左
FLM7前左中
FRM9前右中
FR11前右
FRS13前右外
RRS15后右外
RR17后右
RRM19后右中
RLM21后左中
RL23后左
RLS25后左外

特殊值

  • 0–510:有效距离(cm)
  • 511无回波(warning)-- 未探测到障碍物
  • 512传感器故障(error)
  • >512:显示为故障

4. GNSS 收星监控(gnss)

功能:监控 GNSS 定位状态(卫星数、经纬度、定位状态)。用于自动驾驶定位 DV 验证。

对应硬件:GNSS 模组 M21(由 ADC_VDD_ANT_5V 供电)

CAN 通信

  • 发送:tx_id=0x6D7, data=[0x22, 0x40, 0x01](DID=0x4001)
  • 接收:rx_id=0x6DF, 正响应 0x62 0x40 0x01 + payload(≥18 字节)
  • 周期:1s

字段列表

字段名offsetlengthtype单位说明
卫星数31uint8可见卫星数
经度48float64_be°IEEE754 双精度
纬度128float64_be°IEEE754 双精度
定位状态201enum-0=无效, 1=定位, 2=差分

异常判定:卫星数 < 4 触发 warning(卫星数不足)。


5. 风扇监控(fan)

功能:监控散热风扇转速。用于 DV 阶段热管理验证。

对应硬件:板载散热风扇

CAN 通信

  • 发送:tx_id=0x6D7, data=[0x22, 0x40, 0x02](DID=0x4002)
  • 接收:rx_id=0x6DF, 正响应 0x62 0x40 0x02 + payload
  • 周期:1s

字段列表

字段名offsettypescale单位范围说明
风扇转速3uint16_be1RPM0–10000风扇转速

6. PPS 状态(pps)

功能:监控 PPS(Pulse Per Second)秒脉冲信号状态与脉冲计数。用于 GNSS 时间同步 DV 验证。

对应硬件:GNSS 模组 PPS 输出

CAN 通信

  • 发送:tx_id=0x6D7, data=[0x22, 0x2D, 0x01](DID=0x2D01)
  • 接收:rx_id=0x6DF, 正响应 0x62 0x2D 0x01 + payload
  • 周期:1s

字段列表

字段名offsettype说明
PPS状态3uint80=正常, 非0=异常
脉冲计数4uint16_be累计脉冲数(大端)

派生字段:状态 = 正常(PPS状态==0, 绿色)/ 异常(PPS状态!=0, 红色)
异常判定:PPS状态 != 0 触发 error。


7. IIC/SPI 监控(iic_spi)

功能:监控 12 路 IIC 总线 + 3 路 SPI 总线通信状态(PASS/Fail)。用于 DV 阶段板载外设总线通信完整性验证。

对应硬件:板载 IIC/SPI 外设(传感器、EEPROM 等)

CAN 通信

  • 发送:tx_id=0x6D7, data=[0x22, 0x40, 0x08](DID=0x4008)
  • 接收:rx_id=0x6DF, 正响应 0x62 0x40 0x08 + payload(≥15 字节)
  • 周期:2s

字段列表(全部 enum, length=1, 值映射: 0=PASS, 1=Fail):

字段名offset说明
IIC_0 – IIC_113–14IIC 通道 0-11
SPI_0 – SPI_215–17SPI 通道 0-2

异常判定:IIC_01 触发 warning;SPI_01 触发 error。


8. 当前 Event(event_current)

功能:读取 ECU 当前激活的事件位图(DTC/DEM 事件),按 event_mapping.csv 解析为事件列表。是帧率检测和 Link 检测面板的数据源。

对应硬件:ECU 整机状态监控(电源/CAN/看门狗/内存/外设/摄像头链路)

CAN 通信

  • 发送:tx_id=0x6D7, data=[0x22, 0x2A, 0x0D](DID=0x2A0D)
  • 接收:rx_id=0x6DF, 正响应 0x62 0x2A 0x0D + payload(事件位图,≥99 字节)
  • 周期:2s

解析逻辑:遍历 event_mapping.csv 每条记录,检查 payload[byte] 的第 bit 位是否为 1,为 1 则该事件"触发"。

事件映射表config/event_mapping.csv,56 个事件):

系统/硬件事件(Byte 0-3)

ByteBit事件名说明
00Power_On上电
01Power_Off下电
02Over_Voltage过压
03Under_Voltage欠压
04Over_Temperature过温
05CAN_Bus_OffCAN Bus Off
06CAN_Error_PassiveCAN 错误被动
07CAN_Rx_OverflowCAN 接收溢出
10Watchdog_Reset看门狗复位
11Flash_CRC_ErrorFlash CRC 错误
12RAM_Test_FailRAM 测试失败
13EEPROM_Read_ErrorEEPROM 读错误
14EEPROM_Write_ErrorEEPROM 写错误
15ADC_ErrorADC 错误
16Clock_Error时钟错误
17SCFM_ErrorSCFM 错误
20HSD1_Short_Circuit高位开关 1 短路
21HSD1_Open_Load高位开关 1 开路
22HSD2_Short_Circuit高位开关 2 短路
23HSD2_Open_Load高位开关 2 开路
24Fan_Stall风扇堵转
25Fan_Open风扇开路
26GPS_No_FixGPS 未定位
27GPS_Antenna_ErrorGPS 天线错误
30NM_TimeoutNM 超时
31NM_Bus_OffNM Bus Off
32PPS_ErrorPPS 错误
33IIC_Bus_ErrorIIC 总线错误
34SPI_Bus_ErrorSPI 总线错误
35USS_Sensor_ErrorUSS 传感器错误
36Temperature_Sensor_Error温度传感器错误
37Voltage_Sensor_Error电压传感器错误

摄像头链路事件(供帧率/Link 派生面板使用):

ByteBit事件名用途
760-7DemEvent_DES_UNLOCK_Cam_*Link 检测(8 通道)
770-3DemEvent_DES_UNLOCK_Cam_*Link 检测(4 通道)
970-7DemEvent_SENSOR_FCNT_Cam_*帧率检测(8 通道)
980-4DemEvent_SENSOR_FCNT_Cam_*帧率检测(3 通道)

9. 历史 Event(event_history)

功能:读取 ECU 历史事件位图(NV 存储累计)。解析方式与 event_current 相同。

CAN 通信

  • 发送:tx_id=0x6D7, data=[0x22, 0x2A, 0x0F](DID=0x2A0F)
  • 接收:rx_id=0x6DF, 正响应 0x62 0x2A 0x0F + payload
  • 周期:5s

10. 电压状态监控(voltage_status)-- 派生

功能派生面板,无独立 CAN 通信。基于电压监控数据,按电压阈值判定 6 个关键负载的供电状态。

数据源voltage

派生规则

通道判定条件(全部满足=正常)对应硬件
96717F1.2V∈[1.0,1.4] 且 1.8V∈[1.6,2.0]GMSL 解串器 96717F
96717同上GMSL 解串器 96717
96722同上GMSL 解串器 96722
MAX96724F同上GMSL 解串器 MAX96724F
USS13V∈[12.0,14.0]USS 超声波(TPS55289 供电)
GNSS_M21天线5V∈[4.5,5.5]GNSS 模组 M21

11. 帧率检测(fps)-- 派生

功能派生面板,无独立 CAN 通信。基于 event_current 的 DemEvent_SENSOR_FCNT_Cam_* 事件,判定 11 路摄像头的帧率是否正常。

数据源event_current

派生规则:对应事件 == 0 -> 帧率正常(OK);事件触发(==1)-> 帧率异常。

通道对应事件摄像头
Front120DemEvent_SENSOR_FCNT_Cam_Front120前视 120°
Front30DemEvent_SENSOR_FCNT_Cam_Front30前视 30°
RearDemEvent_SENSOR_FCNT_Cam_Rear后视
SideRRDemEvent_SENSOR_FCNT_Cam_SideRR右后侧视
SideRLDemEvent_SENSOR_FCNT_Cam_SideRL左后侧视
SideFLDemEvent_SENSOR_FCNT_Cam_SideFL左前侧视
SideFRDemEvent_SENSOR_FCNT_Cam_SideFR右前侧视
AVMRearDemEvent_SENSOR_FCNT_Cam_AVMRearAVM 后
AVMLeftDemEvent_SENSOR_FCNT_Cam_AVMLeftAVM 左
AVMFrontDemEvent_SENSOR_FCNT_Cam_AVMFrontAVM 前
AVMRightDemEvent_SENSOR_FCNT_Cam_AVMRightAVM 右

12. Link 检测(link)-- 派生

功能派生面板,无独立 CAN 通信。基于 event_current 的 DemEvent_DES_UNLOCK_Cam_* 事件,判定 12 路视频链路(GMSL 解锁状态)是否正常。

数据源event_current

派生规则:对应事件 == 0 -> Link 正常;事件触发 -> 链路未锁定。

通道对应事件摄像头
Front30DemEvent_DES_UNLOCK_Cam_Front30前视 30°
Front120DemEvent_DES_UNLOCK_Cam_Front120前视 120°
RearDemEvent_DES_UNLOCK_Cam_Rear后视
NADemEvent_DES_UNLOCK_Cam_NA预留
SideRRDemEvent_DES_UNLOCK_Cam_SideRR右后侧视
SideRLDemEvent_DES_UNLOCK_Cam_SideRL左后侧视
SideFLDemEvent_DES_UNLOCK_Cam_SideFL左前侧视
SideFRDemEvent_DES_UNLOCK_Cam_SideFR右前侧视
AVMRearDemEvent_DES_UNLOCK_Cam_AVMRearAVM 后
AVMLeftDemEvent_DES_UNLOCK_Cam_AVMLeftAVM 左
AVMFrontDemEvent_DES_UNLOCK_Cam_AVMFrontAVM 前
AVMRightDemEvent_DES_UNLOCK_Cam_AVMRightAVM 右

注意:Link 检测用 DES_UNLOCK(解串器解锁 = 物理链路锁定),帧率检测用 FCNT(帧计数 = 数据帧到达)。两者互补:Link 检测物理层,FPS 检测数据层。


13-15. 版本号(version_hw / version_supplier / version_part)

功能:读取 ECU 硬件版本号、供应商代码、零件号(ASCII 字符串)。

CAN 通信

面板DID发送 data说明
version_hw0xF289[0x22, 0xF2, 0x89]硬件号
version_supplier0xF195[0x22, 0xF1, 0x95]供应商代码
version_part0xF193[0x22, 0xF1, 0x93]零件号
  • 接收:rx_id=0x6DF, 正响应 0x62 + DID + ASCII payload
  • 周期:0(仅启动时查询一次)
  • 解析:ASCII,遇 0x00/0xCC/0xFF 截断

二、控制类面板

16. DUT 监控(dut_monitor)

功能:开关 DUT(Device Under Test)监控模式。开启后 ECU 进入 DUT 测试模式。

对应硬件:ECU DUT 测试模式(DV 诊断模式)

CAN 通信(toggle 开关):

操作发送 dataUDS 服务说明
开启[0x2E, 0xFD, 0x00, 0x01]0x2E WriteDataByIdentifierDID=0xFD00, 值=0x01
关闭[0x2E, 0xFD, 0x00, 0x00]0x2E WriteDataByIdentifierDID=0xFD00, 值=0x00
  • 发送:tx_id=0x6D7, 接收:rx_id=0x6DF, 正响应 0x6E 0xFD 0x00

原项目差异:Python 版直接由上位机发 0x500 应用帧(8×0x11, FD),Rust 版改为通过 UDS 0x2E 写 DID 控制 ECU 自主进入 DUT 模式。


17. NM 报文发送(nm_send)

功能:开关 NM(Network Management)报文周期发送。开启后上位机周期发送 NM 报文,维持 ECU 网络管理唤醒状态。

对应硬件:AUTOSAR NM 唤醒保持

CAN 通信(toggle,单向发送):

操作tx_iddata说明
开启/关闭0x501[0x00]*8NM 报文(8 字节全零)
  • rx_id=0(无响应,纯发送)
  • 周期:100ms(原项目 cycle=0.1s)
  • NM 报文 ID 0x501 是 AUTOSAR OSEK Direct NM 典型 ID

18. 高位开关(high_side)

功能:控制 ECU 高位开关(High-Side Driver)的通断,驱动外挂负载。用于 DV 阶段验证 HSD 驱动能力与保护逻辑。

对应硬件:HSD1/HSD2 高位开关驱动(电压面板监控其电流 ADC_HSD1/2_HSS_IS,事件映射监控短路/开路)

CAN 通信(双按钮,UDS 0x31 RoutineControl):

操作发送 dataUDS 服务说明
开启[0x31, 0x01, 0xA0, 0x01]0x31 RoutineControlstartRoutine, ID=0xA001
关闭[0x31, 0x02, 0xA0, 0x01]0x31 RoutineControlstopRoutine, ID=0xA001
  • 发送:tx_id=0x6D7, 接收:rx_id=0x6DF, 正响应 0x71
  • 均需二次确认

19. ECU 复位(ecu_reset)

功能:两个控制按钮 – ECU 复位(硬复位)和清除故障码。

对应硬件:ECU 复位与 DTC 清除

CAN 通信(双按钮):

操作发送 dataUDS 服务说明
ECU 复位[0x11, 0x01]0x11 ECUResethardReset
清除故障码[0x14, 0xFF, 0xFF, 0xFF]0x14 ClearDiagnosticInformationgroupOfDTC=0xFFFFFF(所有)
  • 发送:tx_id=0x6D7, 接收:rx_id=0x6DF
  • 复位正响应 0x51,清DTC正响应 0x54
  • 均需二次确认

三、DID 汇总表

面板DIDUDS 服务说明
voltage0x2A0B0x22 Read电压(20通道)
temperature0x2A030x22 Read温度(9通道)
uss0x2CFA0x22 ReadUSS 距离(12通道)
gnss0x40010x22 ReadGNSS 定位
fan0x40020x22 Read风扇转速
pps0x2D010x22 ReadPPS 状态
iic_spi0x40080x22 ReadIIC/SPI 状态(15通道)
event_current0x2A0D0x22 Read当前事件位图
event_history0x2A0F0x22 Read历史事件位图
version_hw0xF2890x22 Read硬件号(ASCII)
version_supplier0xF1950x22 Read供应商代码(ASCII)
version_part0xF1930x22 Read零件号(ASCII)
dut_monitor0xFD000x2E WriteDUT 监控开关
high_side0xA0010x31 Routine高位开关通断
ecu_reset-0x11 / 0x14ECU 复位 / 清DTC
nm_send0x501 (app)应用帧NM 报文周期发送

四、其他面板

CAN 发送(can_send_panel)

功能:手动发送任意 CAN 帧(支持 CAN 2.0 / CAN-FD),用于调试。

操作

  • 输入 CAN ID(hex)、数据(hex 字节)、选择通道/扩展帧/FD
  • 点击发送 -> POST /api/can/send -> IPC can.send -> can-process driver.send()
  • 发送成功后推送 tx 帧到 can.raw(前端原始数据流面板可见)

原始 CAN 数据流(can_raw_panel)

功能:实时显示所有 CAN 收发帧(含回放帧),可暂停/清空/设置行数上限。

数据源:WS can_raw 消息(来自 can-process 的 can.raw IPC topic)

录制回放(record_playback_panel)

功能:录制 CAN 数据到文件(jsonl/blf/asc),回放录制文件(纯数据显示模式,不发送到 CAN 总线)。

录制POST /api/record/start -> can-process 录制 monitor 周期收到的帧
回放POST /api/record/play -> can-process 读取文件按时间戳推送 can.raw + 可选重新解析推送 can.data.new
支持:播放/暂停/停止/seek/循环/速度调节/外部文件加载

DBC 解析(dbc_panel)

功能:加载 DBC 文件,解析 CAN 帧信号;离线解析 BLF/ASC 录制文件。

DID 诊断(did_diag_panel)

功能:读取/写入 ECU DID(UDS 0x22/0x2E),支持批量读取和轮询。

CAN 通信

  • 读取:tx_id=0x6D7, data=[0x22, DID_H, DID_L](UDS 0x22)
  • 写入:tx_id=0x6D7, data=[0x2E, DID_H, DID_L, ...data](UDS 0x2E)
  • 结果通过 WS did_result 异步推送

DTC 故障码(dtc_diag_panel)

功能:读取/清除 ECU 故障码(UDS 0x19/0x14)。

CAN 通信

  • 读取:tx_id=0x6D7, data=[0x19, sub_function](UDS 0x19 ReadDTCInformation)
  • 清除:tx_id=0x6D7, data=[0x14, 0xFF, 0xFF, 0xFF](UDS 0x14 ClearDiagnosticInformation)
  • 结果通过 WS dtc_result 异步推送

Ping 监控(ping_panel)

功能:监控网络连通性,支持启停/编辑 IP 列表/配置周期超时。

数据源:ping-process 子进程(系统 ping 命令),结果通过 IPC ping.data.new 推送

阈值设置(settings_panel)

功能:编辑各监控项的告警阈值(alerts),保存到 yaml 文件。

设备连接(device_connect)

功能:配置和连接 ZLG CAN 设备(驱动类型/设备型号/通道/波特率/loopback)。

连接流程:前端传配置 -> POST /api/device/connect -> IPC can.connect -> can-process driver.connect() -> ZLG FFI

配置编辑器(config_editor)

功能:在线编辑监控项 yaml 配置,支持 schema 校验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千年奇葩

从来没受过打赏,这玩意好吃吗?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值