Main Content

MDF 应用故障排除

读取 MDF 文件时出错

问题

当您尝试使用 mdfRead 函数从 MDF 文件中读取数据时,可能会看到错误。

可能的解决方案

  • 一个可能的原因是 MDF 文件格式不正确或包含不支持的元素。Vector 提供了用于检查 MDF 文件的 MDF Validator 工具,您可以从工具支持 MDF 下载该工具。

  • 另一个可能的原因是 MDF 文件未排序。从 R2019b 开始,访问未排序的 MDF 文件会产生可识别的错误,您可以使用 mdfSort 函数对该文件进行排序。

  • 当无法读取整个文件时,您可以一次读取一个通道的数据。按以下形式使用 mdfRead 函数

    data = mdfRead("MDFFile.mf4",Channel="Chan-Name")

读取 MDFDatastore 时出错

问题

当您尝试使用 read 函数从 MDFDatastore 读取数据时,可能会看到错误。

可能的解决方案

  • MDF 数据存储的每个文件中要读取的那些通道必须具有相同的名称,并且属于同一通道组。请确保您正在读取的通道在数据库各 MDF 文件中的一致性。

找不到特定通道

问题

您可能在 MDF 文件中找不到,也无法读取感兴趣的通道。

可能的解决方案

无法保存 MDF 附件

问题

mdfSaveAttachment 函数无法保存附加到 MDF 文件的文件。

可能的解决方案

  • mdfSaveAttachment 函数只能处理嵌入的附件;不能保存外部文件,因为它们已在磁盘上。

  • 如果附件不存在,请与 MDF 文件的提供方核实。

无法读取数组通道结构体

问题

Vehicle Network Toolbox™ 不支持数组通道结构体。

可能的解决方案

  • 要读取这些通道,您必须编写一个复合函数来重新打包数据。

无法读取 MIME 和 CANopen 数据

问题

读取具有 MIME 或 CANopen 数据的 MDF 文件通道会生成错误。

可能的解决方案

  • Vehicle Network Toolbox 不支持 MIME 和 CANopen 数据。

表列名称与通道名称不匹配

问题

读取 MDF 文件时,输出时间表的列名称对应于文件中的通道名称,但它们可能不同。表列名称必须符合 MATLAB 变量名称的要求,因此会被修改以限制其大小和字符。大多数不支持的字符会转换为下划线。

可能的解决方案

  • 返回的时间表保留通道的顺序。因此,您可以通过数值索引来访问表中的数据。

  • 通道的原始名称嵌入在时间表属性中。例如:

    m = mdf('File01.mf4');
    tt = read(m);
    t1 = tt{1};
    t1.Properties.VariableDescriptions
    ans =
    
      1×2 cell array
    
        {'Signed_Int16_LE_Offset_32'}    {'Unsigned_UInt32_LE_Primary_Offset_0'}

另请参阅

函数

相关主题

外部网站