使用R&S MXO5系列示波器保存HDF5格式波形文件及读取方法
存储深度与测试应用
示波器的存储深度,作为示波器的常规指标之一,相较于十多年的产品已经有大幅度的提升。例如,约10年前,主流示波器厂家产品的存储深度虽然彼此有所差异,但往往是在10MSa、20MSa等数量级别上或更小。而随着产品的更新,主流示波器产品的存储深度有很大提升。R&S MXO5系列8通道示波器,标配具备每通道500MSa存储深度,较多年前已经有超过10倍的提升。
该指标的提升,有利于在同样采样率的设定下,采集更长时间的波形。例如图1,在被测波形既包含相对较高频率1MHz(通道1,黄色),又包含很低频率例如2Hz(通道2,绿色)时,为了完整观察连个信号,就要求示波器既设置较高采样率50MHz——保证高频信号不失真,同时捕获时间设置较长(例如2秒)——满足慢周期信号的观察。图1中,中间的黄色波形为通道1的局部放大显示。

图1 举例包含低频信号与高频信号的测试
很多参与算法研究的工程师,希望利用示波器的高速AD和大存储深度来采集被测信号并保存,后期使用专业软件或程序来对数据建模、算法验证。此时,涉及到大容量数据的保存和读取。
R&S MXO5系列示波器支持HDF5数据格式的保存格式,供工程师使用。本文就此话题介绍HDF5格式的保存和读取方法。
HDF格式简介
HDF(Hierarchical Data File)是美国**高级计算应用中心(National Center for Supercomputing Application, NCSA)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式 。HDF可以表示出科学数据存储和分布的许多必要条件。HDF被设计为:
自述性:
对于一个HDF文件里的每一个数据对象,有关于该数据的综合信息(元数据)。在没有任何外部信息的情况下,HDF允许应用程序解释HDF文件的结构和内容。
通用性:
许多数据类型都可以被嵌入在一个HDF文件里。例如,通过使用合适的HDF数据结构,符号、数字和图形数据可以同时存储在一个HDF文件里。
灵活性:
HDF允许用户把相关的数据对象组合在一起,放到一个分层结构中,向数据对象添加描述和标签。它还允许用户把科学数据放到多个HDF文件里。
扩展性:
HDF极易容纳将来新增加的数据模式,容易与其他标准格式兼容。
跨平台性:
HDF是一个与平台无关的文件格式。HDF文件无需任何转换就可以在不同平台上使用。
HDF5 推出于 1998 年, 相较于以前的HDF 文件, 可以说是一种全新的文件格式, 它与早期的HDF4 只在概念上一脉相承 ,而在数据结构的组织上却截然迥异。
了解MXO5示波器保存的HDF5格式文件结构
HDF5格式的文件,有多种方式可以打开查看。其中之一是HDFView,HDF Group开发的图形界面工具,用于查看、编辑和创建HDF4及HDF5格式的科学数据文件。该软件下载需要注册。
它具备UI界面显示,此处结合该软件的显示来解释HDF5格式文件。参考图2,由于保存数据量较大时,该软件加载数据波形耗时过长,此处保存每通道20Kpts来举例。

图2 每通道20Kpts捕获波形
安装软件完毕后,打开保存的HDF5波形文件“Waveform20K2ch.h5”,可以看到文件结构和信息。例如图3所示,该文件包含示波器C1通道和示波器C2通道,两个通道的波形。点击C1或C2,可以看到点数NumPoints为20K个,第一个采样点时刻Xorg为“-2.0E-6”即-2us,采样点时间分辨率Xinc为“2.0E-10”即200ns——5Gsa/s采样率的倒数。据此可在后期程序读取时恢复波形的时间信息。
选择C1 Data -> “Show Data With Options” ->选中所有数据并点击画图图标,即可初步生成波形。可以看到波形与示波器保存的截图通道1(黄色波形)一致,如图4所示。

图3 HDFView查看波形信息

图4 HDFView查看数据及绘图显示
PART.04
捕获大存储深度波形并读取HDF5文件
01进行大存储深度采集
参考图5的设置进行大存储深度采集,每通道100Mpts,保存通道1和2的波形并命名保存“'Waveform100M2ch.h5'”,此时数据文件存储于示波器硬盘。

图5 保存每通道100Mpts的设置
02将波形文件传输至本地PC
推荐使用网线连接示波器,浏览器输入IP地址后进入File Manager->Waveforms界面,勾选文件后,直接Download到本地PC,使用方便且速度快。如图6所示。

图6
02使用Matlab或Python的库函数读取
保存后的波形文件,可以使用Matlab或Python的库函数来读取。在本示例中,以Python的h5py举例, 即可读取该两通道分别100M采样点的波形,最后画图作为显示。
3.1 :安装h5py库;以PyCharm环境举例,在线搜索h5py,Install安装至完成;

图7 PyCharm安装h5py库
3.2:Python代码读取波形样点,可参考如下代码,进行波形数据读取,最后绘图显示。可以看到绘图8与图5保存的波形一致。
import h5py
import matplotlib.pyplot as plt
import numpy as np
filename = 'Waveform100M2ch.h5'
with h5py.File(filename,'r') as f:
waveform_group = f['Waveforms/C1']
data_set = waveform_group['C1 Data']
x_inc = waveform_group.attrs["XInc"]
x_start = waveform_group.attrs["XOrg"]
n_points = waveform_group.attrs["NumPoints"]
x_stop = x_start + x_inc * n_points
y_data = data_set[:]
waveform_group = f['Waveforms/C2']
data_set2 = waveform_group['C2 Data']
y_data2 = data_set2[:]
x_data = np.arange(x_start, x_stop, x_inc)
# 绘图
plt.title('C1&C2')
x_label = (waveform_group.attrs['XUnit']).decode()
y_label = (waveform_group.attrs['YUnit']).decode()
plt.xlabel(x_label)
plt.ylabel(y_label)
plt.xlim([x_start, x_stop])
plt.plot(x_data, y_data,'y')
plt.plot(x_data, y_data2, 'g')
plt.show()

图8 Python绘图
罗德与施瓦茨MXO5系列示波器,具备大存储深度,标配每通道500Mpts,满足高采样率下一次捕获长时间波形需求;
保存波形数据,增加保存格式HDF5,适应于已经在使用该数据格式进行研究、算法验证的工程师应用,无缝衔接已有使用习惯;
Matlab或Python具备可读取HDF5格式的库函数,调用读取方式简单,简化工程师程序设计。






关注官方微信
