LabVIEW采集NI 9205多个通道数据,为什么切换时间比预想的长
基于CompactRIO的数据采集系统,在上面使用NI 9205模块配合FPGA节点编程来进行模拟电平的采集。当仅仅使用单通道进行模拟采集时,让它返回了一个模数转换时间的数据。但是当使用两通道模拟采集任务时,发现转换的时间是单通道任务的六倍?为什么两通道采集模数转换时间会比单通道采集通道间切换时间长这么多?
解答: 首先先明确一个非常重要的概念:在同一个方法节点中配置的模数转换速度是有个稳定、近似的最小值。如果假设通道间切换的最短时间是4µs,那就是指,单通道采集时模数转换时间需要4µs,如果是两通道采集那一组模数转换时间需要8µs。然而,如果用了两个相互独立地IO几点来读取9205上两个不同的通道的数据,具体编程方式就如下图所示,会发现整个循环将会花费24µs才能完成两个数据点的读取,为什么这样的编程方式会花费理想最短时间三倍的时间呢?
这是因为NI 9205运用的模数转换模块是利用了长度为两个元素的流水线结构。为了实现最短的模数转换时间,这个流水线结构必须能被程序编辑控制。而这里FPGA的IO节点就是编程控制流水线的最佳途径,但是为了让其获得最佳的运行效果,必须将两个通道的数据读取的操作整合到一个节点中完成,就如下图所示。 运用同一个IO节点来配置任务将能自动创建一个逻辑来轮流将两个通道需模数转换的采集数据压入流水线。
但是如果没有在同一个IO节点中配置这两个通道的读取采集数据的任务。两个IO都会去主动取得流水线的控制权。这就导致在运行时,每个IO节点在获得流水线的控制权时,会等待之前流水线对流水线的控制命令,因为流水线长度是二,所以会等待两个时间长度,然后再赋予流水线实际来说除了通道外一摸一样的模数转换命令。, 这就会导致完成一次正确的模数转换实际上会耗费硬件系统三次模数转换的时间。然后再转到另一个IO节点的控制,与之一样的,也会花费三倍的时间,然后两者整合下来,就易用会花费六倍的时间完成循环中的模数转换。相同的情况也会在两个IO节点分处于两个相互独立的循环结构中,因为其模数转换模块只有一个流水线结构,所有的程序命令都会共享控制这个资源,如果发生两个独立的节点来控制这个流水线,也会造成多余的等待时间。
程序如下附件所示。
相关资料说明,如下所示。
LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
文字内容均在附件Word中,同时上文中提到的例子和资料,均在word中的附件里,可点击下载。登录www.bjcyck.com可以查看更多详细信息。这里只是简略的介绍,有任何关于LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序相关问题,请与我们联系。
链接地址为:http://www.bjcyck.com/nd.jsp?id=363#_np=2_358
楼主最近还看过