本文档介绍了LabVIEW ADE中NI-DAQ™mx的定时和同步基础知识。 主要讨论主题包括:采用混合模式测量、同步模拟及更多功能,以及在数据采集(DAQ)设备之间共享定时信号。
由于函数调用与NI-DAQmx VI相同,因此基于文本的编程环境中的数据采集与LabVIEW NI-DAQmx编程非常相似。要了解更多信息,请参阅: 在基于文本的编程环境中使用NI-DAQmx。
许多应用都需要精确的定时控制和同步操作功能。例如,在测量和分析大量高动态信号时,任何相位不匹配都是不可接受的。这就需要将某一点某个信号的即时测量数据与同一点其他信号的即时测量数据进行比较评估,因此,这些数据采集就需要采用某种同步方案。NI-DAQmx和LabVIEW图形化编程环境为用户提供了各种工具,让用户可以轻松构建此类数据采集系统。
NI-DAQmx为用户提供了许多强大的定时和同步解决方案。在LabVIEW中使用NI-DAQmx的自带功能,预示着新一代数据采集编程已经到来。专为设备之间的信号指定路径连线的时代已经一去不复返了,NI-DAQmx可在用户需要时自动帮助用户获取信号。用户只需指定目标即可。从这个意义上讲,驱动程序可在后台智能运行,帮助用户省去复杂的配置操作。不过,这仅仅是定时和同步的冰山一角...
由于大部分E系列数据采集设备都具有模拟输入、模拟输出、计数器/定时器和数字输入/输出功能,因此其中的挑战往往是在同步不同类型的测量的同时,利用这些测量对设备进行编程。以下是部分用例:
1)模拟输入和模拟输出同时启动
不同操作同时启动,但不同步
同步模拟输入和模拟输出
不同操作同时启动并以同一速率运行
不同操作之间共享采样时钟
2)使用触发同步模拟输入和模拟输出
共享硬件触发和采样时钟
3)同步模拟和计数器操作
4)计数器创建脉冲序列作为时钟,进行模拟操作
5)模拟时钟门控计数器操作
在NI-DAQmx API中,用户可使用极少的VI来满足大部分的定时和同步需求。尤其是“DAQmx定时”VI和“DAQmx触发”VI,这两个VI允许用户指定扫描通道的间隔时间和开始(或停止)时间。利用LabVIEW的多态性,这两个VI不仅可定义模拟输入信号的定时和触发,还可定义上述模拟输出、计数器/定时器和数字输入/输出信号的定时和触发(见图1)。
一个常见的同步用例是使用同一时钟启动模拟输入和模拟输出。这种情况需要两个代码链:一个用于模拟输入,另一个用于模拟输出。使用“DAQmx定时”VI指定每个代码链所需的连续操作。对于模拟输出定时,选择默认的“源”输入,这意味着模拟输出操作将根据默认的模拟输出时钟(内部时钟)运行。而对于模拟输入“DAQmx定时”VI,用户只需指定“源”作为模拟输出的采样时钟。这样,模拟输入和模拟输出操作便会根据模拟输出的定时信号运行(见图2)。
上一范例演示了如何将不同的模拟定时信号连接起来。如果是模拟和数字信号混合的情况又会怎么样呢?是否仍可实现同样的无缝集成性能?答案是肯定的。
假设我们根据外部或非传统时钟信号来进行模拟测量。例如:每毫秒进行一次采样,连续操作10毫秒后等待3毫秒,然后再重复该操作。在这种情况下,用户可使用E系列设备的计数器功能来生成所需的定时信号,但是模拟端如何知道该信号是时钟信号呢?答案还是“DAQmx定时”VI。通过将“源”指定为计数器的内部输出引脚,计数器输出便可成为模拟输入时钟,而无需使用外部线缆来连接螺栓端子接线盒的引脚(见图3)。
触发功能与同步功能一样,也非常便于使用。使用“DAQmx触发”VI,用户可轻松设置操作,以等待内部或外部触发信号(模拟或数字)。一个典型的范例是事件触发。进行事件触发时,设备会忽略数据采集之前的前N次触发。要实现这一操作,可使用计数器来创建单个脉冲,以启动模拟输入采集。计数器将前N次触发用作脉冲的低电平部分,而将有效触发用作脉冲的高电平部分并触发实际采集。以下范例包含两行并行代码;上面一行用于配置模拟输入操作,下面一行用于配置计数器。计数器0的输出用作触发源,且计数器0在接收第n个脉冲输入之后便配置为输出触发脉冲。在这种情况下,选择100 kHz内部时基作为输入源,但也可指定某个外部输入源,便于用户根据外部脉冲序列设置延迟触发(见图4)。
注意:在最后两个范例中,Ctr0InternalOutput和Crt0Out为时钟或触发信号的来源。Ctr0Internal Out信号可路由至板卡内部。将计数器输出路由至PFI和RTSI时,应使用Crt0Out。图4中的范例可使用CtrOInternal Out来代替Ctr0Out。
如上述范例所示,要将设备上某个位置的信号路由至其他位置,则需要考虑以下几点。首先,NI-DAQmx能否通过配置来路由这些信号?其次,哪些信号可进行路由?由于能否传输这些信号取决于中间通信路径,因此需要采用实时系统集成(RTSI)总线。
RTSI总线(在PCI设备的34针连接器上可用或包含在PXI的背板连接器中)提供了7个引脚,用于将定时信号从一个设备发送至其他设备(或在设备内部之间发送)。在使用该通信路径之前,应使驱动程序了解系统中设备的连接方式。对于PCI设备,使用RTSI线缆连接相应的设备,并在Measurement & Automation Explorer (MAX)中注册此连接。在MAX 3.0中,只需右击NI-DAQmx设备(NI-DAQmx Devices)并选择创建新NI-DAQmx设备(Create New NI-DAQmx Device) >> RTSI线缆(RTSI Cable),便可完成此操作。这样,RTSI线缆便会添加到NI-DAQmx设备列表中。对于PXI系统,只需通过右击PXI系统(PXI System) >>识别为(Identify As)来识别PXI系统。RTSI总线在PXI系统中用作PXI触发总线。(图5显示了连接至DAQ设备的RTSI线缆。)
如需查看哪些信号可以在单个DAQ设备中进行路由,可浏览MAX中的设备连线(Device Routes)选项卡。单击MAX中的DAQ设备时,可通过配置树右侧的窗口查看设备的属性。如果选择该窗口底部的设备连线(Device Routes)选项卡,则可看到每个可用信号路由的列表。绿色的方框表示可直接进行的路由,黄色的方框表示必须通过设备的某些子系统才能实现的路由。将鼠标悬停在黄色方框时,“被使用的子系统”(Subsystem Used)框中会列出完成路由所需的中间子系统。这有时非常有用,因为间接路由可能会干扰正在执行的其他操作(见图6)。
“DAQmx定时”和“DAQmx触发”VI提供的高级功能可用于设置操作,但是有些情况下,较底层的信息更为重要。假设我们需要知道某个模拟输出操作更新时的时基或者某个模拟边沿触发的配置级别。这些信息均可从“DAQmx定时”和“DAQmx触发”属性节点获得(见图7)。用户可通过这些属性节点访问所有相关的配置值,以进行设置或查看。
通过“DAQmx触发”属性节点可显示的一个复杂功能是计数器的可重触发选项。在前面介绍的API中,重新触发计数器会完全改变计数器的运行代码。通过“DAQmx触发”属性节点轻松添加NI-DAQmx API,设为开始.可重触发(Start.Retriggerable),将计数器从单次触发更改为可重触发操作(见图8)。
前几个范例介绍了在同一设备上将不同操作联系在一起的一些方法(通过触发或定时)。但是,如果一个设备的功能无法完成系统的特性分析,该怎么办?有时候仅仅是计算系统的通道数就需要结合多个设备。如果每个设备都包含RTSI连接,则每个设备均具有相同的同步选项。
如需显示设备之间的连接,请右击MAX中的RTSI线缆,并在“添加设备至线缆”(Add Device to Cable)下选择每个相应的设备。添加每个设备后,NI-DAQmx就可利用设备之间的所有可用路由路径(实现无缝同步)。如果是PCI设备,则需要手动添加设备之间的RTSI线缆。
现在,用户可从其他设备引用相应定时或触发引脚作为“DAQmx定时”和“DAQmx触发”VI的“源”。(虽然RTSI总线的管理选项用于通过“导出信号”VI来将特定信号路由至指定的RTSI引脚,但是该选项默认对用户隐藏。) 下列范例演示了如何在进行模拟输入操作时将定时信号从一个设备共享至其他设备(见图10)。
请注意,这里是两个独立的设备分别进行两个独立的操作。通过让NI-DAQmx使用Dev1/ai/SampleClock作为设备2的采样时钟,设备1的采样时钟便可配置为设备2的采样时钟。NI-DAQmx会找到实现该路由的方法,从而确保两个数据采集设备以同一速率采集数据。
大部分NI DAQ设备包含的功能均可用于共享定时和触发。NI-DAQmx本身方便易用,可简化分析过程并提高系统性能。借助该功能,NI-DAQmx可为用户提供各种工具,从而确保不同的测量发生在同一时域。