SuperAPI AI 工具集

matlab-import-vehicle-data

数据与分析

查看项目

更新于 10-16 00:21

技能介绍

用途:在 MATLAB 中使用 Vehicle Network Toolbox(VNT)导入并解码车辆网络日志文件。适用场景包括读取 .mf4/.mdf/.dat、.blf、.asc、.txt 车辆总线日志;通过 DBC 或 ARXML 数据库将原始 CAN/CAN FD 帧解码为信号;通过 LDF 数据库解码 LIN 帧(R2025a+);处理 VNT 读取函数的多态返回类型。不适用于 Simulink CAN 配置、实时 CAN 通道访问、XCP/A2L 工作流。

主要能力与用法:调用 BLF/ASC/TXT 导入或 CAN/CAN FD/LIN 解码前,先用 detect_matlab_toolboxes 确认已安装 VNT;同一会话确认后无需重复检查。MDF 函数(mdfRead、mdfChannelGroupInfo、mdfInfo、mdfChannelInfo)属于基础 MATLAB(R2023a+),不需要 VNT,且应使用函数式 API,不要用已弃用的 mdf() 对象构造器。数据库加载:db = canDatabase("path/to/file.dbc") 用于 CAN 和 CAN FD;db = arxmlDatabase("path/to/file.arxml") 仅用于 CAN;linDb = linDatabase("path/to/file.ldf") 用于 LIN(R2025a+)。加载一次后传给所有解码调用,多数据库可用 canMessageTimetable(tt, [db1, db2])。

关键限制:VNT 读取函数返回类型多态,需用 iscell()/istimetable()/isstruct() 判断,多通道结果以 iscell() 为主分支,再用 {n} 或 {i} 提取。arxmlDatabase 不支持 CAN FD,不能与 canFDMessageTimetable 配合,需改用 canDatabase 与 DBC 文件并说明原因。不存在 canFDSignalTimetable,CAN 与 CAN FD 信号均用 canSignalTimetable。BLF 读取 LIN 必须设置 ProtocolMode="LIN",否则只返回 CAN 数据。LIN 无信号级解码函数,只能从 linMessageTimetable 列中取值。MDF 原始 CAN 检测应使用通道名前缀 CAN_DataFrame / LIN_Frame(ASAM 标准),不要依赖 SourceBusType 元数据。canMessageImport 默认返回旧式 can.Message 数组,应传 OutputFormat="timetable"。ASC/TXT 信号解码优先用 canSignalImport,仅在需要原始报文时间表时用 canMessageImport。多通道调用 blfread、mdfRead、canMessageImport 返回元胞数组,处理前需用 {n} 提取。