本文档回答了关于NI-DAQmx和传统NI-DAQ的一些常见问题。所有问题按照逻辑性分为如下四类:
目录
%26;#183; NI-DAQmx描述
%26;#183; NI-DAQmx引入的概念
%26;#183; 工作性能
%26;#183; 从传统NI-DAQ到NI-DAQmx的升级
NI-DAQmx描述
问:为什么软件对于数据采集应用如此重要?
答:功能灵活且强大的软件是所有虚拟仪器系统的核心。
让我们先仔细看一下虚拟仪器软件的组成。大多数人首先想到的就是应用程序层,就是主要的开发环境。它包括诸如LabVIEW、LabWindows/CVI(ANSI C)和Measurement Studio(Visual Studio 编程语言)之类的软件。测试执行层结合了应用程序层所开发的功能。接下去一层通常很容易被忽视,但它对于软件开发效率来说却是至关重要的。测量和控制服务层包括与硬件通信的驱动程序。测量和控制服务必须能访问并发挥硬件功能和性能,它们也必须与所有其他的驱动和已成为解决方案一部分的众多模块化I/O协同工作。
图1.虚拟仪器软件
问:什么是测量服务软件?
答:可以把测量服务软件看作I/O驱动软件层,然而,它不仅仅只是一个驱动。
测量服务是快速的应用程序开发中最为重要的部分之一。这个软件提供了虚拟仪器软件和硬件之间的连通性以用于测量和控制。直观的应用程序编程接口(API)、仪器驱动、配置工具、快速I/O助手和其他包含在所购买的NI硬件中的软件是它的特色。NI测量和控制服务软件提供了与NI硬件以及NI应用程序开发环境(ADE)的最优化结合。
表1.NI-DAQmx包含了高性能的驱动和附加软件来提高系统开发效率
NI测量%26;amp;自动化浏览器(MAX)和DAQ Assistant (DAQ助手) 是NI-DAQmx测量服务软件(大部分NI数据采集设备都附带该软件)体现它无限价值的其中两个例子。此外,NI还在M系列和USB DAQ设备以及其他许多设备上附送了免费的数据记录软件。
诸如MAX之类的配置工具所包含的特性能够用来配置和测试I/O,以及存储标定、校准和通道别名信息。这些工具对于以更短的时间完成首次测量、维护测试系统和解决测试系统故障是十分重要的。
I/O Assistant (I/O助手) 是一个交互式工具,用来快速创建测量应用程序。DAQ助手就是其中一个这样的I/O助手,如图2所示。 它提供了一个面板,您可在上面轻松配置常用的DAQ参数,而无需任何编程工作。您可以在任何NI ADE中使用由它生成的DAQ任务。易于使用的助手和强大编程环境的结合提供了快速的开发和可满足广泛应用需求的能力。
图2. NI-DAQmx 里提供的DAQ助手简化了DAQ任务的创建
问:为什么NI推出了NI-DAQmx?为什么不继续开发传统NI-DAQ?
答:NI在20世纪90年代首次发布了传统NI-DAQ驱动。传统NI-DAQ通过提供对各种设备的扩展功能对已有的DAQ库进行了许多改进,这些改进包括双缓冲采集、对特定传感器类型提供内置标度,例如热电偶和应变计、信号调理、以及一个单一的且可与多种设备和操作系统(OS)协同工作的函数库。
在90年代后期,NI-DAQ团队意识到保持API与以前版本的兼容性的这个要求增加了向传统NI-DAQ添加新特性和设备的难度。此外,在长期的发展过程中,传统NI-DAQ的API产生了许多需要解决的问题。NI-DAQ开发者难以直观地扩展API而且难以优化不断增长的客户应用范围。因此NI认为一个全新的API设计和体系结构可以帮助NI-DAQ开发者更轻松地添加新特性和新设备,解决许多现有的驱动问题,并且同时可以优化性能。
NI-DAQmx项目的一些宏伟目标包括:
1. 更轻松地往DAQ API中添加新特性。传统NI-DAQ API的许多函数都有大量的参数而且没有有效的方式可以添加新参数。相比而言,NI-DAQmx API 通过一个丰富的属性层次来使用基于属性的方法。这种方法易于扩展。通常,添加一个新特性与添加一个新属性一样轻松。
2. 更轻松地添加新设备。如果不对现有的功能进行改动,NI就难以向传统NI-DAQ添加更多的设备,而改动往往会导致一些漏洞。寻找并解决意外的漏洞花费了太多的时间来发布每一个版本。相比而言,NI-DAQmx使用了作为组件的插入式设计,使得添加新设备更加便利。
3. 更有效的多线程数据采集。传统NI-DAQ最初是为不具备多线程功能的旧版本操作系统而设计的。为了在多线程操作系统下安全地运行,传统NI-DAQ将存取操作限制在每次一个线程。对于那些需要同时完成两个或更多DAQ任务的应用来说,这种限制就引起了问题因为两个任务不能同时访问驱动器。NI-DAQmx使用多线程设计解决了这个问题,这样多线程就可以同时访问驱动器。
4. 提高数据采集性能,尤其是单点性能。一些使用传统NI-DAQ的应用经历过拙劣的软件定时单点性能,因为它们不断地在主循环里执行代价高昂的操作,例如验证配置(检验)、保留资源(保留)和对硬件编程(实施)。传统NI-DAQ并没有对何时执行检验、保留和实施操作给予足够的应用程序控制,因此用户不能重写这些应用程序以更快地运行。NI-DAQmx利用一个基于已定义状态模型的设计提高了性能。NI-DAQmx给用户提供了高级的API功能,例如检验、保留和实施。因此,用户对于在何时执行这些代价高昂的操作拥有更多的控制能力。
5. 提高驱动性能和可靠性。NI-DAQmx专门设计成具有世界一流的数据采集性能和稳定性。自NI-DAQmx开发伊始,用户每次添加一个新特性或者对驱动进行一次改变,一个严格且完备的功能和性能自动测试包就会检验这个改变是否引入了漏洞。这个测试包对应用于各种设备、传感器和操作系统配置中的常见和不常见的驱动进行测试。不常见或例外的驱动应用对于整体的可靠性十分重要。NI-DAQmx设计成能够处理异常的情形,例如DAQ任务中止、看门狗定时器终止和意外设备删除(如从计算机中拔出USB设备)。
6. 更轻松地进行数据采集。在90年代中期,NI-DAQ团队往传统NI-DAQ中添加了Easy I/O和中间I/O层,从而使得通常的DAQ任务更加轻松。然而,这种方法却引起了一些问题,因为一旦用户需要给应用程序添加更多高级的特性,他们就不得不使用更高级的API来重写应用程序。NI-DAQmx通过以下方式使得开发应用程序更轻松:
%26;#183; 配置工具如DAQ助手。利用DAQ助手,用户可以图形化地选择他们希望进行测量的类型,保存配置以供以后使用,而且生成代码以包含在应用程序中。
%26;#183; 高级NI-DAQmx路由特性。这些特性简化了DAQ设备的触发和同步。
%26;#183; 在NI-DAQmx里报告并描述错误。这一特性帮助用户精确地确定错误的原因并推荐解决方案。用户认为NI-DAQmx里的高级错误报告功能使得调试DAQ应用程序更加轻松。
%26;#183; 从LabVIEW 7开始的易用特性。LabVIEW 7引入的新特性,尤其是应用于NI-DAQmx之中的新特性,包含了创建Express VI和多态VI的能力。利用Express VI,用户可以使用一个简单的配置对话框来代替一个复杂DAQ的绝大部分。利用多态VI,用户可以更轻松地找到特性。由于这两方面的特性,用户可以用更少的时间开发出应用程序。
图3.多态VI简化了NI-DAQmx API
问:NI-DAQmx支持哪些硬件?不支持哪些硬件?
答:作为最新的NI测量服务软件,NI-DAQmx支持最新的NI DAQ硬件,包括M系列插入式DAQ设备,一些最新的USB DAQ设备,以及数以百计传统NI-DAQ所支持的DAQ设备。
虽然NI-DAQmx支持许多最新的NI DAQ硬件设备,NI-DAQmx并不支持所有的NI DAQ设备。例如,传统DAQ设备,如使用ISA总线(用于台式计算机)的设备,他们仅受传统NI-DAQ的支持。
欲想了解当前NI-DAQmx所支持的设备列表,请访问ni.com/dataacquisition/software并单击Device Support(所支持的设备),或者参看包含于NI-DAQmx之中NI-DAQmx Readme文件。
问:为什么有些DAQ设备仅受NI-DAQmx支持?
答:诸如M系列DAQ之类的设备是最新的、最好的DAQ硬件。M系列设备是市场上第一款18位插入式DAQ设备,第一款拥有最大数据吞吐量达六个DMA通道的插入式DAQ设备,并且具有创新的设备校准。这些设备只受NI-DAQmx支持,而不受传统NI-DAQ支持。
将来新的NI DAQ设备也将只受NI-DAQmx支持,而受传统NI-DAQ支持。NI工程师致力于NI-DAQmx的效率和性能,而不是使用资源来开发传统驱动软件。
问:我可以将NI-DAQmx与哪些编程语言共同使用?
答:您可以将NI-DAQmx用于各种不同的编程语言,它们包括:
%26;#183; NI LabVIEW
%26;#183; ANSI C
%26;#183; Microsoft Visual C++ 类库(NI Measurement Studio 7 或更高版本)
%26;#183; Microsoft Visual C++
%26;#183; Microsoft C# .NET
%26;#183; Microsoft Visual Basic .NET
%26;#183; Microsoft Visual Basic (Beta版)
欲想了解更多关于使用NI-DAQmx和基于文本语言编程的信息,请访问NI-DAQ用于文本语言编程语言和NI-DAQ Readme文件。
问:我可以将NI-DAQmx与哪些应用程序开发环境结合使用?
答:NI-DAQmx可以与许多最流行的ADE协同工作。一旦安装了NI-DAQmx,您可以选择安装对各种ADE的支持,包括:
%26;#183; NI LabVIEW 7 或更高
%26;#183; NI LabVIEW Real-Time 7.1或更高
%26;#183; NI LabWindows/CVI 7或更高
%26;#183; .NET语言
%26;#183; NI Measurement Studio,支持 Visual C++.NET(需要 Measurement Studio 7 或更高)
%26;#183; Microsoft Visual C 支持
为了安装对这些ADE的支持,请在安装NI-DAQmx时选择合适的支持。在您第一次安装NI-DAQmx时,在特性树上将NI-DAQmx选项展开,然后,选择您希望使用的API来安装合适的支持。
图4.NI-DAQmx提供不同API用于各种ADE
如果你已经安装了NI-DAQmx并且希望改变你的选择,运行添加/删除程序。选择NI软件入口并单击Change。然后,在已安装到您机器上的NI软件列表上选择NI-DAQmx。单击Modify以启动NI-DAQmx安装程序,在这里您可以指定API支持选项。
问: NI-DAQmx是否适用于Linux?Mac OS X操作系统?
答:NI-DAQmx只适用于那些为Microsoft Windows开发应用程序并应用的用户。NI目前没有计划将NI-DAQmx扩展到Linux和MAC OS X。然而,近来这些平台在科学和工程计算领域的应用有所增长,为满足这些需求,NI已经开发了NI-DAQmx BASE。
NI-DAQmx BASE将NI-DAQmx功能的一个子集提供给Windows、Linux、Mac OS X和Pocket PC操作系统,并且支持大部分最流行的NI DAQ设备,包括新的低成本USB DAQ产品。
请访问 ni.com/linux和ni.com/mac以获得为Linux和Mac OS X提供的最新NI产品。
问:NI会继续传统NI-DAQ的开发吗?
答:NI没有计划继续开发传统NI-DAQ。但是,为了维持现有的应用程序,NI会继续提供传统NI-DAQ并继续提供它的技术支持。
问:NI-DAQmx与NI-DAQmx Base有何不同?
答:比较这些软件工具的最好方式是在ni.com/dataacquisition/software上使用驱动程序比较图。这儿提到的是其中一些不同之处。
虽然NI-DAQmx和NI-DAQmx BASE具有相似的API,但是这两种API具有完全不同的体系结构。NI-DAQmx Base是使用NI工具——NI测量硬件驱动开发包(DDK)写成的,这个工具用寄存器级编程的方式来定制开发驱动。这种方式的一个好处是NI-DAQmx Base是开放的源代码。这使得您可以打开子VI(subVI),并在LabVIEW里观察/编辑寄存器存取情况,以及添加或修改功能。
NI-DAQmx BASE没有NI-DAQmx中所包含的一些软件特性。只有NI-DAQmx才有的一些特性包括:
%26;#183; DAQ助手
%26;#183; 用于高级DAQ任务的属性节点
%26;#183; 多线程I/O性能
问:在什么情况下不应选择使用NI-DAQmx进行开发呢?
答:尽管NI鼓励您将NI-DAQmx的优点充分利用到您的应用程序中,但是在有些情况下使用NI-DAQmx是不够理想的。
若下列情形之一存在,请安装并使用传统NI-DAQ:
%26;#183; 您有一台NI-DAQmx不支持的设备,例如一个AT(用于ISA接口)E系列多功能DAQ卡。
%26;#183; 您用的LabVIEW、LabWindows/CVI或Measurement Studio版本在7.0之前。
%26;#183; 您正在使用Visual Basic 6。
%26;#183; 您要从NI-DAQ 6.9.x版本升级并且存在您不愿意与NI-DAQmx相连接的应用程序。
如果下列情形之一存在,请安装并使用NI-DAQmx Base:
%26;#183; 您正在开发应用于Linux、Mac OS X或Pocket PC之上的应用程序。
%26;#183; You have a USB DAQ device supported only by NI-DAQmx Base.
%26;#183; 您有一个仅受NI-DAQmx Base支持的USB DAQ设备。
如果下列情形之一存在,请安装并使用使用Measurement Hardware DDK:
%26;#183; 您正在使用寄存器级编程来开发一个自定义的驱动程序。
欲想得到更多帮助来决定哪一种驱动软件适合您,请使用ni.com/dataacquisition/software上的设备支持表和驱动软件比较图以及NI-DAQ Readme 文件。
问:我怎样得到NI-DAQmx?
答:从NI购买NI-DAQmx支持所支持的硬件产品的话,其中会附有一张NI-DAQ光盘,它包含了最新版本的NI-DAQmx。
您可以访问通过浏览ni.com/china/daq免费下载最新版NI-DAQmx软件。
NI-DAQmx引入的概念
问:什么是DAQ助手?
答:DAQ助手是一个基于步骤的向导,它可以使您无需编程即可配置数据采集任务、虚拟通道以及实现缩放操作。您可以从NI应用软件中启动DAQ助手,例如LabVIEW、LabWindows/CVI、Measurement Studio、 VI Logger或 MAX。
图5. DAQ助手支持NI所有的ADE
注意:您必须使用LabVIEW、LabWindows/CVI和Measurement Studio的7.X版本或更新版本,以及VI Logger的2.X版本才能使用DAQ助手。
您也可以使用DAQ助手来生成NI-DAQmx代码,运行您的任务和全局虚拟通道,或者把它们转移到其他的系统。
利用DAQ助手,您可以:
%26;#183; 创建和编辑任务和虚拟通道
%26;#183; 添加虚拟通道至任务
%26;#183; 创建并编辑量程
%26;#183; 测试您的配置
%26;#183; 保存您的配置
%26;#183; 在您的NI应用软件中生成代码以在您的应用程序中使用
%26;#183; 观察您的传感器的连接图
问:为什么我要使用DAQ助手而不使用NI-DAQmx API?
答:DAQ助手建立在NI-DAQmx API之上,并且可以作为一个配置工具和学习工具来加快您在新的NI-DAQmx API上的学习速度。
在配置之后,LabVIEW里的DAQ助手Express VI包含了所有必需的API代码来运行您的配置任务,但是它隐藏于程序框图之中。如果您希望在您配置中观察或修改API功能而不是使用DAQ助手对话框,DAQ助手也提供了了代码生成功能,可以用于LabVIEW、LabWindows/CVI和Measurement Studio应用程序。
问:什么是NI-DAQmx任务?
答:NI-DAQmx任务是具有定时、触发和其他特性的一个或多个虚拟通道的集合。概念上,一个任务代表了您希望完成的测量或信号产生任务。您可以建立和保存任务中的配置信息,并在应用程序中使用任务。
问:NI-DAQmx里的局部虚拟通道和全局虚拟通道有什么区别?
答:在NI-DAQmx中,您可以将虚拟通道配置成任务的一部分或者与任务分离。创建于任务内部的虚拟通道是局部虚拟通道。定义在任务外部的虚拟通道是全局虚拟通道。
您可以在MAX或您的应用软件中创建全局虚拟通道然后将它们保存在MAX中。您也可以在任意的应用程序中使用全局虚拟通道或把它们添加到许多不同的任务中。如果您修改了一个全局虚拟通道,这个改变将会影响所有引用该全局虚拟通道的任务。
问:什么时候我应该使用一个任务而不是一个全局虚拟通道?
答:当一个任务是具有定时、触发和其他特性的一个或多个虚拟通道的集合时。
一个全局虚拟通道只引用了一个物理通道,而且没有包含定时或触发功能。但是,全局虚拟通道可以被许多任务包含和引用,而一个任务是一个独立的实体,它不能被其他任务包含或引用。
问:我能可编程地使用NI-DAQmx保存虚拟通道吗?
答:利用NI-DAQ7.4或更新的版本,您可以可编程地创建并保存任务、全局虚拟通道和量程。这种编程方式保存的对象会出现在MAX里,您可以在DAQ助手和应用程序中使用它们。
可编程地保存任务、通道和量程简化了系统配置和多种场合的应用,并且减少了发生错误的可能性和调试的需要。
欲想了解更多关于如何使用此特性以及观看例程,请访问http://ni.com/dataacquisition/nidaqmx.。
问:我该如何导入/导出设备、任务、通道和缩放配置?
答:使用MAN,您可以导出您系统的配置以作为备份或应用至其他机器。
使用导出向导可从系统复制配置数据至一个文件。要启动这个导出向导,请在MAX中选择File%26;raquo;Export
问:什么是属性节点?
答:属性节点是您可以使用的LabVIEW结构,它可以用来在引用的对象上访问属性。NI-DAQmx使用这些结构来对所有NI-DAQmx API支持的属性提供完备的编程控制,并且这些属性节点形成了API的基本功能。
除了属性节点之外,NI-DAQmx也提供了一套NI-DAQmx VI,从而您可以用来编写程序。这些VI在功能上与使用属性节点等价,但是通常更容易且更便于使用。例如,下面的两个例子在功能上是等价的,然而,第一个例子使用了NI-DAQmx,而另一个例子使用了NI-DAQmx属性节点。
图6.使用NI-DAQmx属性节点实现高级的自定义任务
对于大多数应用程序,NI-DAQmx VI提供了所需的功能。然而,对于更高级的应用程序,您可能需要属性节点来得到较少使用的驱动属性和特性。
问:我应该怎样过滤属性节点列表?
答:当您第一次打开并浏览一个属性节点时,属性列表的显示也许会看起来令人难受。为了更容易地浏览这些列表,可以通过如下所示的对话窗口来利用一些过滤属性。
要进入该对话框,右击属性节点并单击Select Filter即可。Show All Attributes显示了所有NI-DAQmx API所支持的属性。Show Attributes For Configured Devices显示了所有当前已安装并配置在您系统中的设备所支持的属性。使用Show Attributes For Selected Devices选择您需要为之显示属性的已安装设备。
除了过滤选项之外,您也可以通过LabVIEW帮助查看一个完整的设备属性列表。为找到这个列表,单击菜单栏的Help,并从帮助窗口所显示的目录表中选择VI、Function%26;amp; How-To Help。然后浏览至VI and Function Reference%26;raquo;NI Measurements VIs and Functions%26;raquo;DAQmx – Data Acquisition Vis and Functions%26;raquo;Additional Information%26;raquo;Device Considerations%26;raquo;Supported Properties by Device。
问:什么是NI-DAQmx仿真设备?
答:利用NI-DAQmx 7.4版本和更新版本,您可以创建NI-DAQmx仿真设备。您可以选择任意NI-DAQmx所支持的设备并且作为一个仿真设备在MAX里添加到您的硬件配置中。这使得设备通过应用软件即可使用。
NI-DAQmx仿真设备十分有用,可用来创建和运行NI-DAQmx程序,而且无需任何物理硬件的存在即可试验诸如DAQ助手或SignalExpress之类的工具。NI-DAQmx仿真设备在没有真实物理硬件的时候发掘设备性能也是十分有用的。
检验使用NI-DAQmx仿真设备的任务,就如同它们运行在真实设备之上。如果某个属性被置为无效值,返回给仿真设备的错误与返回给真实设备的错误是相同的。所有任务需要的资源都为NI-DAQmx仿真设备而保存。RTSI线、PXI触发线、DMA通道、计数器等等都如同它们在真实设备上一样被计数和保存。
性能
问:NI-DAQmx提供了哪些性能的提高?
答:在用户应用程序中的DAQ性能是许多因素的综合,包括采样率、总线速度、驱动性能、分析以及其他操作。在许多应用中,NI-DAQmx都可以提高应用程序在传统DAQ上的性能,因为驱动体系结构的改进包括以下几个方面:
1. 多线程操作。利用NI-DAQmx,由于在执行不同的NI-DAQmx任务之时,多个线程可以同时存取NI-DAQmx驱动,因此如果您使用LabVIEW或者多线程C程序,性能就能得到提高。多个线程存取驱动的能力去除了DAQ应用程序的瓶颈障碍,并且可以在一些情况下极大地提高性能。多线程操作使得那些执行多任务和一次读或写多个采样的应用性能提高尤其明显。
2. 对诸多繁琐的数据采集操作任务的更好的控制。利用NI-DAQmx,您可以更好地控制各种驱动操作,如检查配置(检验)、保存资源(保存)和对硬件编程(实施),而以往这些操作会成为一些应用程序开发的瓶颈。利用NI-DAQmx,您可以开发一个在主DAQ循环之外进行检验、保存或实施任务的应用程序,从而驱动不再需要重复地执行这些操作。
3. 内置的硬件定时单点操作。NI-DAQmx 7.2版本引入了对需要执行硬件定时单点数据采集的应用程序的内置支持。与传统NI-DAQ相比,这种新的内置模式具有许多优势,包括更好的单点任务(使用多通道)性能。
NI-DAQmx团队一直致力于改进NI-DAQmx的性能。
问:为什么NI-DAQmx CPU使用率达100%?
答:一些用户已经注意到他们的DAQ处理使CPU使用率达到了100%。使用NI-DAQmx7.3版本或更早的版本,在应用程序执行一个读或写调用之中时,这种情况是可能发生的。通常,过度的CPU使用在运行其他的应用程序时不成问题,但是对于笔记本,NI-DAQmx会消耗电池电量并且引起CPU风扇启动。
由于NI-DAQmx 7.3版本或更早的版本在一个读或写操作时会等待新的数据的到来,因此100%的CPU使用率就会发生。在等待新的数据到来时,如果在一个读操作中数据仍然不可得,NI-DAQmx 7.3版本就会转向其他的处理。如果另外一个处理需要使用CPU,NI-DAQmx就会与那个处理共享CPU。然而,如果没有其他的处理或任务需要使用CPU,NI-DAQmx继续等待新数据的到来。如果计算机仅执行数据采集,那么这种解决方案提供了非常优异的性能,在与其他应用程序共享CPU时则提供了较好的性能。然而,副作用却是在没有其他应用程序运行时NI-DAQmx占用了100%的CPU的使用率。
这一问题的最好解决方案就是使用最近发布的NI-DAQmx,如NI-DAQmx 7.4。NI-DAQmx 7.4改变了缓冲式读写操作的默认等待模式。当需要轮询时,NI-DAQmx在继续读或写操作之前会休眠一小段时间(1ms)。与以前版本的NI-DAQmx相比,这一改变对于大部分应用程序的性能几乎没有影响。然而,其他NI-DAQmx 7.4版本的读写改进和优化不仅仅只是弥补了可能的性能损失。应用程序升级至NI-DAQmx 7.4既可以改进性能也可以减少CPU使用率。
如果您需要对NI-DAQmx 7.4等待数据的方式进行更多的控制,您可以选择一个不同的休眠时间或者将读等待模式改变成轮询或出让。使用出让模式会造成与NI-DAQmx 7.3相似的行为。使用轮询方式会造成最大的吞吐量但是在同时运行其他应用程序的情况下并不合适。
问:单点I/O性能有没有改进?
答:与传统NI-DAQ(Legacy)相比,NI-DAQmx几乎在各个情形下都提供了更好的单点I/O性能。然而,也有些情形下,传统NI-DAQ(Legacy)提供了更好的性能。
值得一提的是,NI-DAQmx为以下应用提供了更好的单点性能:
1. 用于模拟和计数通道的软件定时读和写
2. 包含多通道的软件或硬件定时读或写
传统NI-DAQ为以下应用提供了更好的性能:
1. 使用数字通道读或写
2. 用于仅有一个输入和输出通道应用程序的硬件定时单点
注意:传统NI-DAQ用户可能不熟悉硬件定时单点。具体而言,这些应用程序使用硬件定时、大小为零的缓存并且每次读或写一个采样。
有时候,传统NI-DAQ会更快,因为NI-DAQmx比传统NI-DAQ提供了更多的功能。例如,您可以任意将线和端口与NI-DAQmx数字通道连接。支持多线程和处理异常情况,如意外设备删除等,这些都会添加一些额外开支。
许多DAQ应用程序需要绝对最佳的性能,NI-DAQmx团队也一直致力于开发可以改进驱动性能的新特性。
问:状态机是如何帮助改进NI-DAQmx的性能的?
答:NI-DAQmx任务状态机能跟踪保存在数据采集或生成可以开始之前您所需要完成的配置操作。配置操作包括检查配置(检验)、保存资源(保存)以及对硬件编程(实施)。
NI-DAQmx使用状态机来确保代价高昂的操作如任务检验、资源保存及硬件编程仅在需要时执行。当在主采集或信号生成循环外执行显示配置操作时,一个DAQ应用程序可从改进的性能中受益。NI-DAQmx提供了显示命令,可以引起一个将要执行的检验、保存或实施。当一个任务显示地在采集或生成循环外检验、保存、实施或开始时,NI-DAQmx并不在每个循环重复这些操作。因此从总体上来说,应用程序运行得更快。
欲想了解更多关于每个NI-DAQmx状态的信息,请参阅NI-DAQmx帮助文档。
问:什么是限制流盘性能的主要因素?
.
答:磁盘I/O带宽、CPU带宽和总线带宽。
磁盘I/O带宽
典型的使用IDE驱动的系统主要被磁盘的吞吐量所限制。
潜在的改进包括添加一个用于流的专用驱动器或控制器。一个专用的驱动器避免了因碎片和操作系统或其他应用程序存取磁盘而引起的性能问题。高速的驱动器和高速的RAID控制器提高了磁盘I/O带宽。
注意:在添置驱动器和控制器之前请检查CPU带宽和总线带宽以防止增加的磁盘I/O超出了您事实上可以使用的范围。
CPU带宽
对于原始数据,处理器带宽通常只在高速RAID控制器已安装的系统中影响性能。在这些系统中,CPU可以影响您如何快速地得到所需的数据并把它写入磁盘驱动器。甚至利用一个专用的RAID控制器,CPU带宽的一部分也在将数据写入磁盘时被消耗。对于经标度的数据,处理器带宽通常是限制因素。
增加系统中CPU的数量和CPU的速度提高了系统的带宽。
甚至当CPU使用率低于100%的时候,最小化并行的任务和操作。稀有资源的竞争会降低流盘的性能。
最后,为特定的系统调节流代码。对于多CPU的系统,执行一些并行的代码可能会提高系统的吞吐量。(注意:对同一个磁盘的并行磁盘I/O操作通常降低了性能)优化代码以避免存储副本和其他浪费CPU带宽的操作。
总线带宽
一个典型的带有单一PCI/PXI总线的台式系统会被总线带宽限制。标准PCI/PXI的理论带宽大约是130MB/s。真实带宽则依总线竞争的程度而降低。通常,在同样总线上同时运行更多设备会降低总线带宽。
注意:一个单一的NI 6115 DAQ可以产生80MB/s的数据
增加系统中总线的数量是提高带宽的唯一方法。例如,一些高端的母板包括2个或更多的独立PCI总线。这有利于您建立一个系统,这个系统分别在独立的总线上有一个RAID控制器和DAQ设备。对于这些母板,桥片可能会限制所有连接总线的总吞吐量。
问:NI-DAQmx执行高速流盘的性能如何?
答:NI-DAQmx影响流盘性能主要在于它使用了CPU带宽同时移动和标度了设备所采集的数据。因此,对于那些CPU带宽是一个限制因素的系统,NI-DAQmx有效地使用CPU就显得十分重要。
自从首次发布以降低读写时的CPU使用率开始,NI-DAQmx经历了多次优化。例如,在NI-DAQmx 7.3和NI-DAQmx 7.4版本之间,标度的模拟输入基准的性能已从8%增长至60%。未标度的模拟输入基准性能已从12%增长至40%。对于那些CPU带宽紧张的系统,这个性能的提高直接转化成为的更高的流盘吞吐量。
NI-DAQmx使用了极为简单的压缩形式。采样末端的位被简单的丢弃而后将所得的采样打包送入内存。NI-DAQmx并没有使用其他无损失或损失性压缩算法如LZE或JPEG。
在一些情况下,由于采样已经包含不使用的位,因而没有数据损失。例如,一个具有12位分辨率和16位采样大小的通道包含4位不使用的位。您可以无损失地丢弃这4位同时所需磁盘空间减少的幅度达25%。
此外,您可以配置NI-DAQmx丢弃采样中一个或更多不重要的位。例如,您可以配置一个24位分辨率和32位采样大小的通道而仅返回最高的20位。总共有12位被丢弃,包括8个不使用的位,这样所需磁盘空间减少的幅度达了37.5%。
从传统NI-DAQ升级
问:为什么我要从传统NI-DAQ升级至NI-DAQmx?
答:有许多原因可解释为什么要升级到NI-DAQmx。一个重要的原因是NI工程师致力于提高NI-DAQmx而不是传统NI-DAQ(Legacy)的效率和性能。如果使用这个测量服务软件的最新版本,NI-DAQmx用户就能享受这一革新的好处。
独立于当前工程师的努力之外,由于相对于传统NI-DAQ(Legacy)的软件特性优势,用户可以简单地升级到NI-DAQmx。其中一些优势包括:
%26;#183; 更好的状态模型
%26;#183; 多线程驱动
%26;#183; 异常情况下的可靠性
%26;#183; 简化了的同步功能
%26;#183; Decreased LabVIEW diagram clutter
%26;#183; 降低了LabVIEW程序的复杂度
%26;#183; 从简单到高级编程的平滑过渡
注意:欲想了解更多关于这些优点及其他信息,请参阅ni.com上Developer Zone可得的Advantages of NI-DAQmx 指南。
另外一个升级至NI-DAQmx的原因是利用了NI提供的最新的DAQ硬件。最新和最具创新性的DAQ设备提供了其他厂商和其他设备所不能提供的技术。最新的NI DAQ设备仅被NI-DAQmx支持。
问:哪些资源可以帮助我把应用程序从传统NI-DAQ升级至NI-DAQmx?
答:ni.com上的Developer Zone包含了极好的资源,可以帮助传统NI-DAQmx用户将他们应用程序升级至NI-DAQmx。
第一个指南, Transition Traditional NI-DAQ to NI-DAQmx,表明虽然在传统NI-DAQ和NI-DAQmx之间许多编程技术是相似的,但是还是有一些细微的差别。这个指南描述了每个API中最为常见的VI和功能之间的相似之处和不同之处。
第二个指南,学会NI-DAQmx里的10个功能并解决80%的数据采集应用程序,描述了您如何利用NI-DAQmx里的10个函数和VI来使用NI-DAQmx来代替众多的传统NI-DAQ功能和VI。这个指南阐述了如何使用这每个VI,它们构成了NI-DAQmx API核心。
对于那些希望升级至NI-DAQmx但仍希望利用当前传统NI-DAQ应用程序来使用NI-DAQmx所支持的新硬件产品的用户,NI创建了传统NI-DAQ兼容的VI。这些VI利用了可与传统NI-DAQ和NI-DAQmx协同工作的库代替了一些传统NI-DAQVI库。这些VI看起来与现有的传统NI-DAQ VI一样并与现有的应用程序无缝集成。在等待用NI-DAQmx重写这些应用程序的同时,这些具有兼容性的VI被创建用来使用,但是您可以仍然使用仅NI-DAQmx支持的设备。用户在使用具有兼容性的VI时应该十分小心因为它们并不支持所有设备上的所有特性并且不保证在将来的版本中得到更新。欲想了解更多关于VI的信息,请访问 http://ni.com 。
此外,NI网站在http://ni.com/examples上提供了数以千计的DAQ例程。数以百计的例程说明了如何使用NI-DAQmx来完成最为常见的DAQ任务。
问:我能同时使用传统NI-DAQ和NI-DAQmx吗?
答:如果您拥有两个DAQ设备,并且其中之一使用传统NI-DAQ而另一台使用NI-DAQmx,那么您可以同时使用传统NI-DAQ和NI-DAQmx。如果您仅有一台设备,您仍然可以既使用传统NI-DAQ又使用NI-DAQmx,但是只能顺序地使用——不是同时。在这个顺序中,您需要重设您的设备以在传统NI-DAQ和NI-DAQmx驱动之间转换。
在LabVIEW中,在传统NI-DAQ)序列的末端使用Device Reset VI,在您NI-DAQmx序列的末端使用DAQmx Reset Device VI。您仍然需要创建一个传统的NI-DAQ虚拟通道和一个NI-DAQmx任务以分别使用每个驱动。
.
问:对于Visual Basic 6.0开发者来说应该选择哪一种DAQ软件?
答:许多使用Visual Basic 6.0的数据采集系统开发者还没有转移到Microsofts .NET语言。使用Visual Basic 6.0的开发者可有以下几种选择:
1. 升级至VB.NET并使用NI-DAQmx。这种选择的好处是您可以使用Microsoft和NI的最新软件。
2. 使用Visual Basic 6.0和NI-DAQmx:NI-DAQmx 7.4包含了对Visual Basic 6.0的支持(测试版)。一旦安装了C++支持,您还可以获得一个Visual Basic类型的库。目前NI还不支持这种的选择,尚未提供任何这方面的技术文档。
3. 使用传统NI-DAQ和Visual Basic 6.0:虽然在短期内这种选择基本没有什么问题,但是它要求您使用Microsoft和NI的传统软件。
问:没有NIConfig.DAQ文件,我该如何在机器间转移我的配置?
答:您现在可以使用NI-DAQmx里的导出功能来在机器间转移您的硬件配置。
进入MAX并选择File%26;raquo;Export以启动配置导出向导。使用这个向导,您可以选择希望导出的配置并保存它们至您所选择的用于导出的文件。为了导入配置,进入MAX,File%26;raquo;Export并从配置导出向导所生成的文件中导入配置。
问:我现在该如何使用SCXI设备?“ob0!sc1!md1!0”通道字符串语法在NI-DAQmx中无法用。
答:用在传统NI-DAQ中的SCXI通道字符串不再能用于NI-DAQmx。现在的格式为SCxMody/channel
1. x 代表在配置机箱时所选择的SCXI机箱ID。
2. y 代表模块的插槽位置。机箱中的插槽从左至右开始编号,从1开始。
3. I/channel 根据所执行的数据采集类型具有不同的格式:
%26;#183; 模拟输入:/ai#。#是模块上模拟输入通道的数字。例如,SC1/MOD1/ai1代表ID位为1的SCXI机箱上1号插槽模块上的物理模拟输入通道1。如果您有许多在同一个SCXI模块配置的通道,您可以把它们都包含在SC1/MOD1/ai1.2.4这样的格式里,这表示同一个SCXI模块的模拟输入通道1、2、和4。
%26;#183; 模拟输出:/ao#。#是模块上模拟输出通道的数字。例如/ao2代表物理模拟输出通道2。
%26;#183; 数字I/O:port#/line#。第一个数字代表数字端口,第二个数字代表所使用端口的数字线。例如,port0/line2意味着物理数字端口0线2。
%26;#183; 计数器I/O:/ctr#。#是模块上计数器的数字。例如,/ctr0代表模块上的计数器0。
问:如何使用NI-DAQmx对计数器进行编程?
答:下面的表格列出了NI-DAQmx和传统NI-DAQ相似的VI以帮助您熟悉从前者到后者的转变:
传统NI-DAQ NI-DAQmx
Counter Group Config VI DAQmx Create Channel VI
Counter Set Attribute VI DAQmx Channel Property Node VI
Counter Source (TIO) VI DAQmx Trigger Property Node VI
Counter Source (STC) VI DAQmx Property Node VI
Counter Control VI DAQmx Start VI
Counter Get Attribute VI DAQmx Read VI
Counter Control VI DAQmx Stop VI
欲想了解更多关于在NI-DAQmx里写入计数器应用程序的帮助信息,请参阅ni.com上Developer Zone的Transition Traditional NI-DAQ to NI-DAQmx 技术指南。
问:在NI-DAQmx中我该如何使用双缓冲采集?
答:如果您正在使用双缓冲I/O,您最有可能以轮询缓冲区的方式来连续地采集数据。在NI-DAQmx中,您可以简单地通过使用NI-DAQmx定时功能及将采样模式参数设置成连续模式来达到这个目的。
NI-DAQmx使用循环式缓冲区。对于输入操作,一部分数据可以在缓冲区为满时从缓冲区中读取。如同输出操作一样,缓冲区的一部分可以在缓冲区为空时写入。使用循环式缓冲区,您可以简单地将设备设置成连续采集数据模式,同时NI-DAQmx会按照要求找回采集到的数据。
问:我该如何使用NI-DAQmx来配置SCXI模块?
答:您依旧可依在MAX中通过选择NI-DAQmx Devices、右击SCXI机箱并选择Properties来设置SCXI模块属性。您可以看到每个安装在机箱中的模块并且您可以通过单击详细信息来设置每个模块的属性。
MAX中唯一没有显示的属性是增益设置。NI-DAQmx可以使用基于信号的I/O极限来自动地配置设备以达到最优的增益设置。
问:NI-DAQmx里的脉冲序列极性和占空比控制功能的变化?
答:在NI-DAQmx里,您可以通过使用通用的DAQmx创建通道函数并选择Counter Output%26;raquo;Pulse Generation%26;raquo;Frequency来简化您的程序。在传统NI-DAQmx里,您必须使用生成脉冲序列函数来定义脉冲序列的极性、频率和占空比。除了频率和占空比之外,NI-DAQmx使用空闲状态参数来配置脉冲序列的极性。
问:使用NI-DAQmx我该如何完成远程数据采集(RDA)?
答:NI-DAQmx不提供RDA特性。要想远程控制您的DAQ设备,您可以使用LabVIEW 7或更高版本里的远程前面板特性。利用这一特性,您可以通过因特网远程控制DAQ应用程序。
问:我可以无需重启任务就能改变NI-DAQmx里生成的脉冲序列频率吗?
答:可以。您可以在任何时候更新一个连续脉冲序列的频率和占空比,包括在任务运行的时候。这对于需要脉冲宽度调节的应用十分有益,如PID环控制应用程序。在DAQmx写功能里,频率和占空比参数可以在任务运行的时候自动更新脉冲序列。在更新脉冲生成速率的时候,在新的速率起作用之前,一个当前速率的完整周期会生成。
%26;copy; 2005 National Instruments公司。版权所有:CVI、DAQCard、LabVIEW、Measurement Studio、NI、ni.com、NI-DAQ、RTSI、SCXI和SignalExpress。
引用地址:NI-DAQmx和传统NI-DAQ常见问题解答