成功高速数据采集的秘诀

描述

电子表格、文字处理、数据库、网络浏览器、服务器、电子邮件、飞行模拟器、毁灭战士™——在我们让个人电脑做的所有工作中,没有比高速、实时数据采集更能完成任务的了。没有哪个应用程序能比多通道数据采集程序更快地揭示PC、软件或两者的弱点,以每通道超过1 kHz的速度将数据流式传输到磁盘,同时保持实时显示。按照这些速度,看似表现良好的软件可能会瓦解,PC本身可以模仿其曾祖父‘286的性能。

在高速数据采集问题破坏关键测试之前发现它是本文的主题。在其中,我们将探索软件特性,这些特性不仅允许高速测量,而且可以在速度较慢的PC上进行。在此过程中,我们将涉及可执行文件大小和数据文件格式等主题。我们还将讨论高级采样技术,例如智能过采样和每通道可选采样率。我们将通过探索间隙检测器例程及其对高速数据采集的重要性,探讨软件在出现问题时应如何反应。最后,我们将介绍波形审查软件的重要性,该软件可帮助您评估采集的数据。

为您的 PC 提供真正的工作

本文的前提是高速数据采集测试PC的性能。在走得太远之前,最好先解释一下为什么要增强您对本文中描述的概念的理解。让我们首先跟踪PC必须执行的操作才能获取单个点。我们对“采集”的定义包括数据采集的所有常见元素,而不仅仅是模拟到数字(ADC)读数的简单传输。它们包括维护实时显示、处理键盘和鼠标中断、多任务处理等。如果您是PC,您将在高速数据采集应用中执行以下操作:

如果在所谓的即时模式下工作(不太可能用于高速数据采集),则轮询数据采集设备以获取ADC值。扫描列表更合适,允许将采集的数据连续流到内存中。在这种情况下,确定下一个读数,然后获取它。

将获取的值存储到磁盘缓冲区中,直到流式传输到磁盘为止。

将采集的数据绘制在实时显示屏上。不要作弊!用线条连接各个样本,以便您的用户可以解释正在发生的事情。此外,不要发呆。延迟几秒钟的显示违反了实时的定义。确保你不会落后。

在这里,您将通过Microsoft和Windows提供的多层代码进行工作。此过程的进展取决于您的时钟速度和显卡的智能性。它还取决于程序的编码效率。程序员是采取了简单的方法并使用系统调用,还是他是一个专业人士,他钻到了你最基本的水平,并允许你使用节省时间的汇编代码?

由于典型应用需要以ADC计数以外的单位缩放信息,因此必须将每个读数乘以m缩放常数,然后添加b缩放常数。此操作将原始 ADC 计数转换为显示时有意义的值,如 psi 或伏特。

磁盘缓冲区已满吗?然后将数据块流式传输到硬盘。并检查以确保所有数据都成功了。硬盘驱动器似乎总是落后。执行这些操作,但不要中断实时显示或流入磁盘缓冲区的数据流。生涩的实时显示太难解释,缓冲区溢出意味着数据永远丢失。

及时监控用户的鼠标和键盘活动并做出反应(在几百毫秒内)。在测试过程中,情况会发生变化,用户可能希望用注释注释任何给定的事件,在X或Y方向上扩展或收缩实时显示,更改显示波形的数量或顺序,甚至更改波形校准。

这是一个多任务Windows环境,(坚果!)用户刚刚启动Microsoft Excel。去加载Excel电子表格并在那里执行一些计算。是的,这是一个实时应用程序,用户希望同时在屏幕上显示Excel电子表格和数据采集实时。并且不要将任何数据丢弃到磁盘。这就是像这样的实时应用程序中的死亡之吻。

现在,当ADC数据以每秒1,000、10,000、200,000甚至500,000个样本的速度从数据采集设备飞向你时,执行所有这些操作。毕竟,你是奔腾。这应该不是问题。

考虑到所有这些细节(以及我遗漏的更多细节),真正的实时数据采集应用程序竟然能正常工作,真是令人惊讶。事实是,许多人没有。

越大越好

我们生活在一个计算机软件通常被称为英国媒体报道软件的时代。我们在PC上安装了硬盘,其容量仅在五年前是不可想象的,但我们仍然需要定期升级。文字处理器和电子表格应用程序的规模正在爆炸式增长,数据采集软件似乎正在遵循这一趋势。虽然在文字处理等非实时应用程序中可能越大越好,但在实时数据采集的敏捷世界中,大小是一个障碍。因此,衡量实时数据采集程序速度的第一个标准是其数据文件大小。需要 500 KB 内存的应用程序应该比需要快速处理 5 MB 代码的替代应用程序更有效。由于功能会消耗内存,因此您应该考虑这一点,并尝试在口哨声和铃铛与性能之间取得平衡。此外,许多应用程序将加载动态链接库 (DLL)。确保数据文件大小的度量包括应用程序和关联的 DLL。

更高级的语言产生更庞大的代码

计算机编程语言遵循从非常困难到非常易于使用的层次结构。最低级别和最难使用的是机器代码,即处理器为执行给定任务而执行的实际 1 和 0。我认识的没有人以这种乏味和耗时的水平编写现代 PC。

接下来是汇编代码,它是机器代码级别的一种简写。处理器操作由助记符和(通常)十六进制代码表示。在此级别编写的程序通过汇编程序以生成由处理器运行的机器代码。汇编程序的构造和调试最复杂,但它们在执行时间和大小方面都能生成最有效的代码。他们是编程层次结构的纯种马。

编程阶梯的下一步,使我们离处理器更远,是一个重要的步骤:高级语言。也许你听说过C,BASIC,FORTRAN或Pascal。这些高级语言是最广为人知的,C和BASIC(包括其基于Windows的Visual BASIC表亲)成为最流行的语言。但两者之间存在巨大差异。C 比 BASIC 更接近处理器,因此在执行时间和大小方面生成更有效的代码。

阶梯的最后一级是图形编程语言,如TestPoint,HP VEE,Visual Designer和LabVIEW。在这里,汇编甚至高级编程的神秘性质让位于高度可视化和不那么晦涩的环境中对功能块的图形操作。你为这种便利付出的代价是批量的,我之前描述的处理器在数兆字节的代码中徘徊的图像。不要指望在这个级别上会妨碍编程效率。

适当地配备了编程语言的细微差别,我们终于可以直奔主题:询问使用哪种语言来编程您正在考虑的应用程序。一个用C编程的,在程序集级别编程的时间关键任务,在所有条件相同的情况下,将比用Visual BASIC或图形编程语言编程的更有效的工具。

改变你的思维方式

我们是10进制和字母表的生物。知道我们的数据采集程序创建的文件可以像阅读早报一样轻松地显示、打印和解释,这让我们感到欣慰。不幸的是,基数 10 不是您 PC 的数字系统,它不知道 A 和 Z 之间的区别。为了实现高速实时数据采集,您必须接受PC的本质并按照其条件使用它。这意味着一个以 2 为基数的数字系统和二进制编码的文件。为了了解原因,让我们看一下从12位数据采集设备采集的单个样本。

计算机喜欢在 8 的倍数(一个字节)的位组中工作。表示样本值的 12 位二进制数非常适合 16 位字(仅 2 个字节),PC 以这种形式将其写入磁盘是有效的。但是,您希望PC在将值写入磁盘之前将示例转换为其ASCII等效项(我们可以读取的)。这个看似合乎逻辑的简单请求将写入磁盘的字节数爆炸至少 2.5 倍。我们的 12 位 ADC 的范围为 0 到 4095 计数。以 ASCII 可读形式写入磁盘计数每个字符占用一个字节,外加一个分隔符(如逗号),总共 5 个字节。在您希望以有意义的单位(如 psi)存储数据的情况下,乘以m和b缩放常量会产生必须写入磁盘的更多位数。单个样本的 2 字节二进制表示形式很容易分解为 10 个或更多 ASCII 字符(字节)。由此产生的 5:1 负担将使您的 PC 和硬盘驱动器不堪重负,并最终限制您的最大数据采集速率。

这里有一个硬性规定:将数据作为ASCII字符存储到磁盘的实时数据采集程序不是高速解决方案。任何精心构思的程序不仅以二进制补码或其他非文本二进制格式将数据存储到磁盘,而且还提供在采集后将任何范围的波形数据转换为ASCII的能力。

先进的采样技术

高速数据采集的第二大障碍,仅次于软件本身,是硬盘驱动器的缓慢性。将现代处理器的速度与硬盘驱动器进行比较是徒劳的。这就像比较光速和声速。鉴于这种对比,我们可以得出结论,随着数据采集应用对硬盘驱动器的依赖性降低,速度的潜力也会增加。有两种先进的采样方法可以将这种潜力变为现实:智能过采样和每通道可选采样率。

我在1997年6月号的《传感器》杂志上发表的一篇文章中详细描述了智能过采样(IOS)。我不会在这里再次讨论相同的内容。但是,值得说明IOS的基本前提:任何高频波形,当充分采样时,都可以减少到单个最小值,最大值或平均值,该值以精确和相等的间隔计算。这些计算值可以以比波形采样慢得多的速度记录到磁盘上。我们已经在无数应用程序中应用了这种技术,不仅可以减轻系统占用磁盘的时间,还可以大大减少实际获取到磁盘的数据量。后一种好处可以为后续波形分析增加更高的效率。

每通道可选采样率是另一种旨在最小化磁盘访问速率和采集数据量的技术。几乎每个接触高速数据采集的人都遇到过一个比其他信号慢得多的信号。它是在振动的同时采样的热电偶。或与喷油器信号同时采样的油压。每个通道的可选采样率采用高级编程,允许您基于每个通道分配采样率。没有它,您将面临每秒 10,000 个样本的采样温度和油压的毫无意义的替代方案。每个通道分配采样率的优势可以用数学来最好地描述。每个通道的可选采样率(使用DATAQ Instruments的WinDaq/Pro+数据采集软件模型)遵循以下一般等式:

数据采集

有效吞吐量是数据流到磁盘的速率。采样率除数是 1 到 255(含 1 和 255)的整数,可以按所示方式应用,以缩放特定通道的采样率吞吐量。图 1显示了WinDaq/Pro+ 软件中的一个对话框,其中可以为每个采集的通道输入采样速率除数。

让我们将此公式应用于上述喷油器和机油压力示例,假设有两个喷油器信号和一个油压信号。第一步确定必须对最高频率信号进行采样的速率。这是上面的值S。我们已经假设进样器的这个值是每秒10,000个样本。如果我们进一步假设进样器和压力信号的采样率除数分别为 1 和 255,则磁盘的有效吞吐量为:

数据采集

在没有每个通道可选采样率的情况下,我们将被迫以每个通道 10,000 Hz(30,000 Hz 吞吐量)对所有通道进行采样。有了它,我们将吞吐量和由此产生的数据文件大小减少了 33%。这意味着高速数据采集链中最薄弱的环节——硬盘的压力减少了33%。

最好的计划?

即使您遵循上述所有准则,您仍然可能会发现自己面临难以逾越的高速限制。它可能以每秒 10,000 或数十万个样本的速度发生。在这种情况下,数据采集软件的反应方式是一个决定性特征,至少与速度本身一样重要。也许您使用的软件只是锁定,显示(充其量)臭名昭著的Windows消息“一般保护故障”,并向世界宣布Windows,应用程序或两者都已经崩溃。虽然已经指出了这一点,但你很可能更喜欢拍拍肩膀而不是在肠道上打这一拳。输入间隙检测器,这是一个复杂的软件例程,用于跟踪磁盘缓冲区填充和清空的速率。如果前者超过后者,则根据定义,采集的数据流中就出现了差距。此事件直接显示在实时显示屏上,不会进一步中断数据采集过程。图2显示了DATAQ Instruments的WinDaq/Pro+数据采集软件中内置的间隙检测器计数器。该例程显示数据流中检测到的间隙数,以便您可以判断问题的严重性(在长时间测试中,只有少数间隙可能无关紧要)。此外,该软件在每个检测到的间隙点插入一个注释事件标记,以便在回放和分析期间确定它们在数据流中的位置。

终局之战

数据采集不是达到目的的手段。它只是为您的主要波形分析和解释目标奠定了基础。由于高速数据采集应用几乎总是生成大型数据文件,有些文件大约为10或100兆字节,因此波形评估策略不应是事后轻率的想法。不要像许多人那样计划将这些大文件导入Microsoft Excel。Excel和其他电子表格主要用于数字数量非常少的会计应用程序。您的数据文件实际上将淹没这些应用程序。您需要一个与数据采集应用程序相反的回放和查看应用程序。具体来说,反向磁盘流式传输。您的播放应用程序应处理任何数据文件大小,并允许您以正向或反向将数据从磁盘文件流式传输到显示器。时间压缩和扩展是其他优点。通过压缩,您可以将数分钟或数小时的采集数据压缩到单个屏幕宽度上,以提供测试的鸟瞰图。使用扩展,您可以选择特定的波形区域并围绕它展开以进行仔细查看。播放包的其他有用属性包括基于光标的时间和幅度测量、一些统计和频率评估,以及导出转换器以将特定波形段带到其他应用程序(如 Excel)进行进一步分析。

DATAQ Instruments提供了这样一个称为WinDaqWaveform Browser的播放包。可从我们的网站免费下载。

总结

成功的高速数据采集以效率为核心。您可以通过应用您能负担得起的最快的计算机来获取效率。但不要忽视编程和操作效率,软件设计人员应该将其构建到任何声称具有高速功能的产品中。这些,比其他任何事情都重要,将决定高速应用的成功或失败。

检测三角洲运载火箭中的继电器颤振

想象一下,当你被火箭发射到太空时,你会遇到什么样的振动。现在想象一下这些振动如何影响板载控制电路。由于在发射过程中即使一个这样的组件发生故障也可能既昂贵又悲惨,因此工程师们努力在地面上尽可能多地模拟任务。一个特别值得关注的领域是由飞行的巨大振动引起的中继颤动。

进行了仿真,以确定板载继电器组件在受到 70g、100 Hz 至 3 kHz 随机振动时是否保持闭合状态。工程师将最小采样间隔定义为5 μs,总数据采集时间为3分钟。这转化为 200,000 Hz 的采样率和大约 72 兆字节的数据文件大小。它还排除了使用最高采样率为50,000 Hz的旧数据采集产品。取而代之的是,将小直流电流注入继电器电路,并连接到在WinDaq/Pro实时软件下运行的DATAQ Instruments型号DI-400数据采集卡(现已过时)。这种组合能够达到 500,000 Hz 的采样率。由振动引起的继电器电路中的任何中断都会立即在WinDaq/Pro的实时显示屏上显示为尖峰(图3),从而可以即时判断继电器性能。测试结束后,WinDaq/Pro创建的数据文件可以使用WinDaq波形浏览器软件进一步解释。两个软件包的磁盘流功能允许独立于数据文件大小进行数据采集和分析。

数据采集

图 1— 在 DATAQ InstrumentsWinDaq/Pro+ 软件

中,通过为每个启用的通道指定采样速率除数来定义每个通道的采样速率。

数据采集

图 2 — 当超过最大采集速率时,软件应以文明的方式做出反应。

在这里,WinDaq/Pro 软件内置的间隙检测器显示记录到硬盘驱动器的数据流

中的中断次数。间隙检测器有助于定义问题的严重性,因为数据文件中只有少数间隙

可能无关紧要。

数据采集

图 3— 火箭发射期间的继电器颤振,由 100 至 3kHz、70G 振动器模拟。

此文件以 200,000Hz 的频率采集,并不间断地流式传输到磁盘三分钟。

结果是一个 72mb 的数据文件,其中一部分使用WinDaq波形浏览器

软件显示在此处。像这里显示的那样,中继喋喋不休可能会使一项任务失败,并带来代价高昂和悲惨的后果。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分