From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



用NI-DAQmx做连续模拟输出时的数据传输请求条件



硬件: Multifunction DAQ (MIO)>>M Series, Multifunction DAQ (MIO)>>E Series

问题: 我想用NI-DAQmx进行连续模拟输出,并且要在进行输出任务的同时通过程序改变输出的波形。我如何才能编程让设备连续输出新数据?当我能够让设备输出新数据,要过好几秒才会看到新波形出现在输出端,为什么?我如何才能让新数据立刻出现在输出端?

解答:

为了让您能够在波形输出的同时程序地更改DAQ设备输出的波形,您需要设置您设备的regeneration mode属性。为Do Not Allow Regeneration。这时通过 DAQmx Write 属性节点完成的。 设置这个属性为 Do Not Allow Regeneration 强制板卡的板载FIFO在输出旧的数据的同时向PC机的缓存请求新的数据。

 

当 regeneration mode 被禁止了,您需要在循环当中放置一个 DAQmxWrite VI 来持续更新缓存。

注意: 为了这个属性能够正常工作,您必须在开始一个AO任务(Start Task.vi)之前下载一个波形。(Analog Write.vi)。

当您设置这个属性为Do Not Allow Regeneration 您也可以配置Data Transfer Request Condition 属性。这个属性可以在 DAQmx Channel 属性节点中的 Analog Output » General Properties » Advanced » Data Transfer and Memory » Data Transfer Request Condition中找到。设置这个属性决定改变的波形经过多久时间能够出现在输出端。下面描述了这个属性节点能够设置的三个不同值。

Onboard Memory Less than Full
当 Regeneration Mode 设置为 Onboard Memory Less than Full,每次板卡板载FIFO不是满的,板卡就会请求新的数据。这意味着如果您要改变波形的输出,这种改变需要几秒钟的时间才能反映到输出端,因为新的波形数据需要传过整个板载的FIFO。用这个设置,板载FIFO总是保持满载。

 

Onboard Memory Empty
当这个属性被设置为 Onboard Memory Empty,板卡会在板载FIFO为空的时候请求新的数据。这意味着当您需要改变波形输出,新波形能够马上在输出端被观察到。由于新的数据传送过去的时候板载的FIFO几乎是空的了,新数据在输出前不需要经过整个FIFO。新的数据在到达DAQ板卡的时候已经在FIFO的末端,能够立即出现在输出端。

 

Onboard Memory Half Full or Less
当使用 Onboard Memory Half Full or Less,您需要设置您的缓存大小不小于您设备的板载FIFO。设置这个属性意味着您的板卡正在使用其FIFO中的很小一部分。所以您可以设置更小的缓存大小。建议您先设置缓存大小为500,然后增加或者减少这个数字以达到最佳的性能。

 



相关链接:

附件:


Analog Output with Data Transfer Request Condition.vi - Analog Output with Data Transfer Request Condition.viDoNotAllowRegen.jpg - DoNotAllowRegen.jpgHalfFullOrLess.jpg - HalfFullOrLess.jpg
LessThanFull.jpg - LessThanFull.jpg
Empty.jpg - Empty.jpg


报告日期: 01/21/2005
最近更新: 08/25/2008
文档编号: 3HKCTTTY