logo资料库

MDF文件二进制格式解析手册(V3.0V3.3.1中文混编版).pdf

第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
资料共49页,剩余部分请下载后查看
MDF 文件二进制格式解析手册 (版本 V3.0/3.3.1 混编) (中文翻译校核版) 安徽省水科院翻译整编 2020 年 11 月 22 日
手册文件修订历史说明 修订历史 文件 版本 日期 编辑 1.0 2006-09-25 Osr 说明 转换旧文档并升级到 MDF 3.1 版:缺少块(CE、CD)和缺 少转换公式的说明。 1.1 2006-10-31 Osr 不同元素的起始偏移、更改和添加的示例。 1.2 2006-11-02 Osr 添加 MDF 修订历史,更改布局 1.3 2006-11-09 Osr 增加 TR 块 1.4 2008-04-09 Osr 1.5 2008-09-23 Osr MDF 3.2 的扩展: - HDBLOCK 的精确时间戳 - 已将链接从有符号整数更改为无符号整数 修正了 HBLOCK 中的错误 添加了以 ns/UTC 偏移量表示的开始时间示例 1.6 2009-01-07 Osr MDF 3.3 的扩展-添加了 SRBLOCK 1.7 2009-04-21 Osr 为 IDBLOCK 添加了代码页 SRBLOCK 的改进描述 删除了对 10 字节双(扩展精度)通道数据类型的支持,因 为 IEEE 754 未指定。添加了与 HDBLOCK 相关的时间戳备 注 1.8 2013-05-07 Osr 固定数量的 CDBUG 尺寸 1.9 2013-06-25 Osr 添加了 CGBLOCK 的最后一个成员仅对 mdf3.30 或更高版 本有效的提示。 1.10 2014-03-11 Osr 增加了未定形 MDF(IDBLOCK)的说明 1.11 2020-11-22 1.12 2020-11-24 Shiqi (CN) Shiqi (CN) 对英文手册进行翻译校核 整合 V3.0 和 V3.3.1 版手册
目 录 1 简介 ............................................................... 1 1.1 概述 ............................................................1 1.2 缩略语 ..........................................................1 1.3 内容提要 ......................................................... 1 2 MDF 版本 ............................................................ 1 2.1 版本历史 ........................................................1 2.2 版本处理 ........................................................1 2.3 确保版本间 MDF 兼容性的规则 ......................................2 3 MDF 通用块格式 ...................................................... 3 3.1 所用数据类型的定义 ...............................................3 3.2 使用的块类型概述 .................................................5 3.3 文件标识块 IDBLOCK ...............................................5 3.3.1 IDBLOCK 的块结构 .......................................................................................................... 5 3.3.2 未定稿 MDF .................................................................................................................... 7 3.3.3 IDBLOCK 示例 .................................................................................................................. 7 3.4.1 HDBLOCK 的块结构 ........................................................................................................ 8 3.4.2 HDBLOCK 示例 ................................................................................................................ 9 3.5 文本块 TXBLOCK ..................................................10 3.5.1 TXBLOCK 块体结构 ....................................................................................................... 10 3.5.2. TXBLOCK 示例 .............................................................................................................. 10 3.6 程序块 PRBLOCK ..................................................11 3.6.1 PRBLOCK 的块结构 ....................................................................................................... 11 3.6.2. PRBLOCK 示例 .............................................................................................................. 11 3.7 触发块 TRBLOCK ..................................................11 3.7.1 TRBLOCK 的块结构 ....................................................................................................... 11 3.7.2 DGBLOCK 示例 .............................................................................................................. 12 3.8 采样缩减块 SRBLOCK ..............................................12 3.8.1 SRBLOCK 的块结构 ....................................................................................................... 13 3.8.2 采样缩减的动机 ........................................................................................................... 13 3.8.3 采样缩减布置 ............................................................................................................... 13 3.9 数据组块 DGBLOCK ................................................14 3.9.1 DGBLOCK 块体结构 ...................................................................................................... 14 3.10 通道组块 CGBLOCK ...............................................15 3.10.1 CGBLOCK 的块结构 .................................................................................................... 15 3.10.2 CGBLOCK 示例 ............................................................................................................ 15 I
3.11 通道块 CNBLOCK .................................................15 3.11.1 CNBLOCK 区块结构 .................................................................................................... 16 3.11.2 CNBLOCK 示例 ............................................................................................................ 17 3.12 通道转换块 CCBLOCK .............................................22 3.12.1 CCBLOCK 块体结构 ..................................................................................................... 22 3.12.2 CCBLOCK——2 参数线性函数 .................................................................................... 23 3.12.3 CCBLOCK——6 参数的多项式函数 ............................................................................ 23 3.12.4 CCBLOCK——带插值表格 ........................................................................................... 24 3.12.5 CCBLOCK——表格 ....................................................................................................... 24 3.12.6 CCBLOCK——指数 ....................................................................................................... 24 3.12.7 CCBLOCK——对数 ....................................................................................................... 25 3.12.8 CCBLOCK——有理转换公式 ....................................................................................... 26 3.12.9 CCBLOCK——ASAM-MCD2 文本公式 ........................................................................ 26 3.12.10 CCBLOCK——ASAM-MCD2 文本表格 ...................................................................... 26 3.12.11 CCBLOCK——ASAM-MCD2 文本范围表 .................................................................. 27 3.12.12 CCBLOCK——数据结构日期 ..................................................................................... 27 3.12.13 CCBLOCK——数据结构时间 ..................................................................................... 28 3.12.14 CCBLOCK 示例 ........................................................................................................... 28 3.13 通道相关块 CDBLOCK .............................................30 3.13.1 CDBLOCK 的块体结构 ................................................................................................ 30 3.14 通道扩展块 CEBLOCK .............................................31 3.14.1 CEBLOCK 块体结构 ..................................................................................................... 32 3.14.2 DIM 块补充 ................................................................................................................. 32 3.14.3 Vector CAN 块补充 ..................................................................................................... 32 4 MDF 数据格式 ...................................................... 33 4.1 已排序 MDF 文件的数据格式 ......................................33 4.2 数据块示例 1 ....................................................34 4.3 数据块示例 2 ....................................................36 4.4 未排序 MDF 文件的数据格式 ......................................37 4.5 从数据记录中读取信号值 ........................................37 4.5.1 例 1——Little Endian(Intel)字节顺序 ..................................................................... 38 4.5.2 例 2——Big-Endian(摩托罗拉)字节顺序 ............................................................... 39 5 附录 .............................................................. 41 II
1 简介 MDF(测量数据格式)是一种二进制文件格式,可用于测量数据的记录、交 换和测量后分析。MDF 文在汽车工业中有着广泛的应用。MDF 格式提供:  汽车工业中多种工具之间的交换;  数据的简洁描述;  独立于文件长度快速访问一般文件信息 。 本文档用于指定 MDF 版本 3.3。 1.1 概述 第 2 章介绍了 MDF 格式的历史,并描述了扩展和更新格式的约定。第 3 章详 细说明了 MDF 文件的结构和各种块类型。第 4 章描述了数据块的结构,并说明了 如何读取信号值。 1.2 缩略语 ASAM——自动化和测量系统标准化协会 CCBLOCK——通道转换块 CGBLOCK——通道组块 CNBLOCK——通道块 DGBLOCK——数据组块 HDBLOCK——文件头块 IDBLOCK——标识块 LSB——最低有效位 MDF——测量数据格式 MSB——最高有效位 NIL—— NIL 指针(0x00000000) PRBLOCK——程序块 SRBLOCK——采样缩减块 TRBLOCK——触发块 TXBLOCK——文本块 UTC——世界协调时 1.3 内容提要 第 2 章描述了扩展和更新格式的约定。第 3 章描述了 MDF 文件的结构和各种 块类型。第 4 章描述了如何编写数据,即排序或未排序。第 5 章(附录)展示了一 个实际的 MDF 文件的十六进制转储。 本手册糅合了 3.3.1 版和 3.0 版的内容。文中所附十六进制 MDF 文件片段内 容取自 3.0 版手册,MDF 文件数据为 V2.0 格式。其余描述均 3.3.1 版内容。 1
2 MDF 版本 自 1991 年创建以来,MDF 格式已经扩展了好几次。本章简要介绍了 MDF 格 式的主要更改,以及如何处理将来的更新。 2.1 版本历史 MDF 于 1991 年由 Vector Informatik GmbH 与 Robert Bosch GmbH 合作开 发。自那时起,该格式仅扩展到更小的细节,例如支持字符串的新数据类型、 ASAM 兼容信号名称的字段或新的转换规则。同时,MDF 格式已成为汽车领域测 量数据的标准。 主要修订: 年 版本 说明 1991 2.03 MDF 的首次正式发布 1996 2.11 新转换类型(CCBLOCK):ASAM-MCD2 文本 2000 2.12 新转换类型(CCBLOCK):ASAM-MCD2 文本表格;新字段 (CNBLOCK):“长信号名” 2000 2.13 新扩展类型(CEBLOCK):Vector CAN block 2001 2.15 2002 3.00 新数据类型(CNBLOCK):“String”和“Byte Array”; 新的转换类型(CCBLOCK):“日期”和“时间” 新转换类型(CCBLOCK):ASAM-MCD2 文本范围表; 新字段(CNBLOCK):“显示名称”和“附加字节偏移量” 2005 3.01 CDBLOCK 中的 N 维依赖 2006 3.10 2008 3.20 2009 3.30 新的信号数据类型(CNBLOCK),用于定义整数和浮点信号值的特定字节 顺序(可以不同于默认字节顺序); 允许位偏移量大于 0 的整数信号跨越字节边界 准确的开始时间和时间质量信息(HDBLOCK); 链接已从有符号整数更改为无符号整数(因此,MDF 文件的最大文件大小从 (大约)2 GB 扩展到 4 GB) 通道组(SRBLOCK)规范的字符串代码页规范(IDBLOCK)通道数据类型 10 字节双精度(扩展精度)过时 2014 3.31 IDBLOCK 中“未定稿”MDF 的标识和标志(独立于版本的特性) 2.2 版本处理 MDF 版本号由三位数字组成,主要版本号、次要版本号和修订号。通常仅仅 表示主要版本号和次要版本号例如 V3.2,其中主要版本号是 3,次要版本号是 2。 在 IDBLOCK 中,附加了一个修订号。例如,对于当前版本,版本字符串为 “3.20”,它必须解释为 V3.2,修订版“0”(而不是次要版本号“20”!)。三位数的限 制意味着次要版本号和修订号都不能超过 9。 MDF 文件格式的每一次更改都必须导致更高的版本号,即由主版本号、次版 本号和修订号组成的三位数字号必须大于上一个版本号(例如,对于版本 3.10 和 3.01,310>301)。 以下是一些关于何时增加哪个数字的一般准则: 1
元素 主要版本号 次要版本号 说明 MDF 文件格式的更改可能导致某些旧工具评估时对数据的误解,因此需要更 改主版本号。如果某个 MDF 文件的主版本号高于该工具所支持的版本号,则 该工具应拒绝读取该文件并生成警告或错误消息。 如果 MDF 文件格式的更改在某些旧工具评估时可能不会导致对数据的误解, 则只需更改次要版本号。但是旧的工具可能会丢失新 MDF 版本中存储的新特 性/信息。通常它会忽略它们并生成警告消息。 修订号 MDF 文件格式的更改不影响旧工具的解释,只需更改修订号即可。 2.3 确保版本间 MDF 兼容性的规则 为了确保高度的兼容性,新的条目只附加到块中。这意味着评估工具的以下后 果: 1)如果工具检测到块的长度小于工具支持的版本预期的块长度,则其他字段 将设置为其默认值。如果工具支持的 MDF 版本比文件编码的版本更高,则会出现 这种情况。 2) 如果工具检测到块长度大于工具支持的版本预期的块长度,则忽略其他字 段。如果工具支持先前的 MDF 版本,而不是文件编码时的 MDF 版本,则会出现 这种情况。在这种情况下,工具可能会错误地解释文件中的测量数据;因此,在引 入此类更改时,必须增加 MDF 主版本号。 2
3 MDF 通用块格式 MDF 文件由一系列块组成。每个块由若干连续字节组成,可以看作是数据字段的一个 记录或结构。有不同类型的块,块可以包括指向存储在 LINK 类型的数据字段中的其他块的 指针。链接是文件中从文件开头开始的绝对字节位置。这样就形成了一个通常树状的块层 次结构。 文件始终以文件标识符块 IDBLOCK 开头。文件头块 HDBLOCK 位于字节位置 64。 所有其他块都是通过链接位置进行定位和连接,可以任意顺序存储在文件中。 除了 IDBLOCK 和数据块,“Block Size”字段指示每个块的大小。为确保向上兼容,本 文件中规定的块尺寸应视为每种情况下的最小块尺寸。 下图概述了 MDF 文件的一般块结构: 3.1 所用数据类型的定义 数据类型 CHAR 1 字节表示字符(C 数据类型:char)。字符串的存储可以以零字节结束, 也可以不终止。 格式 UINT8 8 位无符号整数 UINT16 16 位无符号整数 INT16 16 位带符号整数 UINT32 32 位无符号整数 UINT64 64 位无符号整数 BOOL 布尔变量,存储为 16 位值 如果内容!=0 则为真,如果内容==0,则为假 REAL 浮点符合 IEEE 754,双精度(64 位) 32 位无符号整数,用作文件中的字节位置。如果链接为空 NIL (对应于 0),这意味着对应的块不存在,并且链接不能取消引用。请记 住,除 IDBLOCK 和 HDBLOCK 之外的所有块都是可选的。 LINK 3
分享到:
收藏