为什么使用NI 9205数据采集模块,做多通道数据采集时,通道间切换速度比预想的要长?



硬件: CompactRIO>>Analog Input Modules>>NI 9205 D-Sub

问题: 我有一个基于CompactRIO的数据采集系统,我在上面使用NI 9205模块配合FPGA节点编程来进行模拟电平的采集。当我仅仅使用单通道进行模拟采集时,我让它返回了一个模数转换时间的数据。但是当我使用两通道模拟采集任务时,我发现转换的时间是单通道任务的六倍?为什么两通道采集模数转换时间会比单通道采集通道间切换时间长这么多?

解答: 首先先明确一个非常重要的概念:在同一个方法节点中配置的模数转换速度是有个稳定、近似的最小值。如果我们假设通道间切换的最短时间是4µs,那就是指,单通道采集时模数转换时间需要4µs,如果是两通道采集那一组模数转换时间需要8µs。然而,如果你用了两个相互独立地IO几点来读取9205上两个不同的通道的数据,具体编程方式就如下图所示,你会发现整个循环将会花费24µs才能完成两个数据点的读取,为什么这样的编程方式会花费理想最短时间三倍的时间呢?



这是因为NI 9205运用的模数转换模块是利用了长度为两个元素的流水线结构。为了实现最短的模数转换时间,这个流水线结构必须能被程序编辑控制。而这里FPGA的IO节点就是您编程控制流水线的最佳途径,但是为了让其获得最佳的运行效果,您必须将两个通道的数据读取的操作整合到一个节点中完成,就如下图所示。 运用同一个IO节点来配置任务将能自动创建一个逻辑来轮流将两个通道需模数转换的采集数据压入流水线。



I但是如果您没有在同一个IO节点中配置这两个通道的读取采集数据的任务。两个IO都会去主动取得流水线的控制权。这就导致在运行时,每个IO节点在获得流水线的控制权时,会等待之前流水线对流水线的控制命令,因为流水线长度是二,所以会等待两个时间长度,然后再赋予流水线实际来说除了通道外一摸一样的模数转换命令。, 这就会导致完成一次正确的模数转换实际上会耗费硬件系统三次模数转换的时间。然后再转到另一个IO节点的控制,与之一样的,也会花费三倍的时间,然后两者整合下来,就易用会花费六倍的时间完成循环中的模数转换。相同的情况也会在两个IO节点分处于两个相互独立的循环结构中,因为其模数转换模块只有一个流水线结构,所有的程序命令都会共享控制这个资源,如果发生两个独立的节点来控制这个流水线,也会造成多余的等待时间。

相关链接: KnowlegeBase 4MJ7Q2KG: Programmatically Setting the NI 9205 Voltage Range

附件:





报告日期: 01/10/2009
最近更新: 02/27/2011
文档编号: 4T9HQMMO