在某项目的测试中,要求双通道同步采样,且采样速率高达到1MHz/s.
使用NI所提供的一个例程:Multi-Device Synch-Analog Input-Cont Acquisition.vi.程序框图如下图所示.
数据采集卡用PXI-6251两块
PXI-1033机箱
IBM-400R笔记本电脑
按上例图进行测试发现,当采样速率设置为:100KHz/s以上时,CPU工作在100%的状态.参见下面的程序前面板图例.
按常规解决办法,可在While循环中加入一个定时100ms左右的定时器,加入后不起作用,修改定时时间,也没有用.
PXI-6251的最高采样速率1.25MHz/s,应该不会有问题(当前仅工作在100KHz/s).
PXI-1033的总线带宽110M,也不会有问题.
IBM-400R是双核2.0G的更不会有问题.
Vista,LabVIEW8.6.1,MAX4.5,DAQmx8.9
那么问题到底出在什么地方呢?百思不得其解!
求助于NI的AE也没有遇到这样的问题,只好双方都继续做试验共同寻求解决方案.
我上网查询有关资料,发现有用DAQmxRead属性节点Sleep来解决的例子,我照此试了一下,没有能够解决问题,只是试着给几个数值.
无奈中,使用了定时While循环来代替普通的While循环,这下可好了,即便是工作在1MHz/s的采样速率下也没有问题了.
这里面的内部机理我不清楚,但是问题解决了!
此后,NI的AE也给出了解决方案,就是利用属性节点.见下图.
到底哪个方法更合理,我不清楚?
大家遇到这样的问题可以分别试试看.
至少我们一再强调的打开"任务管理器"监视CPU的运行状态,还是十分必要的.
附上NI AE提供的解决方案.
20090224020724.zip |