1. 引言
IRIG (Inter-Range Instrumentation Group,靶场仪器组)是美国靶场司令委员会的一个下属机构。自从上世纪60年代以来,国外飞行试验遥测大部分遵照美国IRIG106遥测标准,我国现行的遥测标准(GJB21. 2A)也基本上参照了IRIG106标准。2004年5月,美国靶场司令委员会对IRIG106第十章进行修改,提出了固态记录标准[1] 。目前,IRIG106固态数字记录标准已逐渐成为国际公认的标准之一[2] 。该标准具有以下优点[3] :
1) 通过数字数据记录说明、数据格式、数据记录结构的标准化来实现数据的随机访问。
2) 通过数据记录结构和文件结构的标准化来提供控制、下载接口和安全擦除方法。
3) 可从任何厂商的记录器中获取数据,通过标准接口下载到自己的电脑,并通过任何一家厂商兼容的软件包来分析这些数据。
4) 该标准对需要有高精度绝对时间和多通道相对时间的数据提供了时间资源和时间标签方法。还可通过使记录器内部时钟和来自全球定位系统(GPS)的时间信号同步的方法增强时间的精确度。
为了保证数据记录的准确,该标准制定了复杂的数据记录格式[4] ,这些格式数据在保证数据准确的同时也占用了较大的存储空间,该问题在记录高速模拟量如音频、振动数据时尤为突出。本文将在遵循IRIG106第十章的前提下,研究减少数据格式数据量的方法。
2. IRIG106第十章数据记录格式
按照IRIG106标准第十章“数据记录标准”的要求,文件中数据以包的形式存储[5] ,每个文件中数据包的组织结构如图1所示。
每一个记录文件都由“计算机生成数据设置记录包”、“时间数据包”、“数据包”三类包组成。
1) 计算机生成数据设置记录包,该包必须为记录文件中的第一个包,为计算机生成的静态数据,并不包含采集数据,该包记录了文件中各类包中数据的解析方法;
2) 时间包,该包必须为记录文件中的第一个动态包,该包在数据记录过程中周期生成,记录了记录过程中的时间信息,其产生频率不低于1 Hz;
3) 数据包,该类包记录有意义的采集数据,包括模拟数据、总线数据、音视频数据等。数据包必须在100 ms内生成,即每个数据包最多记录100 ms内的数据。数据包的存储和解析方式跟解析方式跟数据类型有关。
三类包的每个数据包的基本结构又包含数据包头、次包头、数据内容、数据尾4个部分(见表1),其中次包头可选。各项的详细含义可参考按照IRIG106标准第十章“数据记录标准”原文。
3. 高速模拟量数据记录量分析
由上所述,符合IRIG106记录标准的模拟量数据包内组成及各组成部分所占字节数如表2所示。由

Figure 1. The internal structure of the IRIG106 standard record file
图1. IRIG106标准记录文件内部结构

Table 1. Internal structure of data packets
表1. 数据包内部结构
表2. 模拟量数据记录格式
表2可以看出,模拟量数据包中用于数据格式的数据量较多,1个模拟包中用于格式的开销为14 Byte。如果一个包中采集的数据的数量N较大时,格式开销较小。而N值较小时用于格式的存储开销将会增加,甚至格式存储开销会大于有意义数据的存储开销。当采集频率较低时,由于总数据量较小,该问题并不突出。但是采集高速模拟量如音频、高速振动数据时,存储问题将会非常突出。下面我们以机载数据记录系统中常见的音频数据采集为例,来分析用于格式的存储开销带来的数据量过大的问题。
飞机上音频数据采集记录是机载数据记录系统非常常见的一项任务,一般需要记录驾驶舱、设备舱的舱音数据和飞行员、设备操作员的话音数据。为保证采集音频数据的通话质量,一般选择采集频率为16 KHz,采集位宽为16 bit (2 Byte)。当采用表1的记录格式时,仅采集一路舱音数据在2小时内记录数据总量为:
(包头长度 + 通道特有数据字长度 + 数据长度 + 包尾长度) × 采集频率 × 3600 s × 2 = (24 Byte + 4 Byte + 2 Byte + 2 Byte) × 16000 × 3600 × 2 = 3515.63 MB
其中记录了有意义的音频数据量的大小为:
数据长度 × 采集频率 × 3600 s × 2 = 2 Byte × 16000 × 3600 × 2 = 219.73 MB
用于记录格式的开销为:
数据总量 − 音频数据 = 3515.63 MB − 219.73 MB = 3295.89 MB
由上面的计算结果可以看出,在只采集一路音频数据时生成的数据量中用于格式的开销量占了绝大部分,约占到总数据量的94%,而有用的音频数据仅占到约6%,格式存储开销超过了净数据量的10倍。如果有足够的存储空间,数据格式的这种存储开销可以接受,但是实际记录器的存储大小都是有限的。以机载防护记录器为例,常见的存储大小为4 GB,但是该记录器同时还要记录更为重要的飞参数据,这种记录格式引起的存储开销显然是无法接受的。
4. 高速模拟量数据记录方式改进
为了解决高速模拟量数据记录格式数据量大的问题,需要对IRIG106数据记录标准对数据采集的要求进行进一步分析。IRIG106数据记录标准对数据采集的要求有2点:
1) 单个数据包的生成时间不大于100 ms,即单个数据包最多记录100 ms数据;
2) 数据包必须在1 s内传至数据流,即数据包传输延迟不大于1 s。
基于以上两点,为了解决记录格式引起的存储量开销大的问题,本文采取如下解决方法:在采集电路中增加一个FIFO的缓冲区,每一个采集周期的数据不直接打包,而是送入缓冲区进行缓存。当缓冲区中存储的采集数据接近100 ms时,对缓冲区中的数据集中进行打包(图2)。
为了更清晰的说明问题,仍以采集频率为16 KHz,采集位宽为16 bit的舱音数据采集为例,来说明数据记录的具体实施方法。由于采集频率为16 KHz,采用100 ms内的数据集中打包,此时1个数据包内包含了1600个舱音数据。此时单个数据包内组成如表3所示。
采用新记录方式后,每秒只生成10个数据包,2小时内生成的记录数据总量为:
(包头长度 + 通道特有数据字长度 + 数据长度 + 包尾长度) × 10 × 3600 s × 2 = (24 Byte + 4 Byte + 2 Byte × 1600 + 2 Byte) × 10 × 3600 × 2 = 221.79 MB
其中记录格式引起的存储开销为:
(包头长度 + 通道特有数据字长度 + 包尾长度) × 10 × 3600 s × 2 = (24 Byte + 4 Byte + 2 Byte) × 10 × 3600 × 2 = 2.06 MB
采用改进的记录方式后记录数据量的变化情况如图3所示。由图中可以看出,改进记录方式后格式

Figure 2. Schematic diagram of the centralized record
图2. 集中记录原理示意图

Table 3. The internal structure of the data packet of the centralized record
表3. 集中记录数据包内部结构

Figure 3. Data volume comparison of two kinds of records
图3. 两种记录方式数据量对比
存储开销得到了大幅度的削减,其值仅为净数据量的0.9%左右。除此之外数据总存储量也得到了改善,2小时的数据总量仅为221.19 MB,完全符合机载防护记录器存储容量的限制要求。
4. 结束语
IRIG106数据记录标准可以提供良好的数据准确性和精确的时间信息,但是数据打包格式引起的存储开销较大,特别是在高速数据采集记录中尤为突出。采用多次采集数据集中打包的方式可以大幅降低记录格式引起的存储开销,以16 KHz的舱音采样数据为例,当采用1 ms内采集数据集中打包时,格式存储开销可以降低到净数据量的1%以下,几乎可以忽略不计。因此,在高速数据采集记录设计过程中应优先考虑集中打包记录。