使用计数器进行缓冲区操作时,有限点方式和连续方式对缓冲区的读数操作过程分别是怎样进行的?



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

问题:
我在使用计数器进行有限点缓冲区操作,但对于进行缓冲区操作的工作原理不太清楚。特别是对“time limit”、“number to read”、缓冲区模式和大小以及其他一些相关变量的含义不甚了解。

解答:
为了对缓冲操作有个快速的了解,我们用使用缓冲区对事件进行计数的操作作为例子来加以说明。计数操作是对源(source)输入信号的上升沿(或是下降沿)进行计数累加,并将这个计数值保存在板卡上的硬件寄存器里面。当计数器的门(gate)输入信号产生上升沿(或是下降沿)的时候,将这个寄存器值保存在计算机内存中,这块内存是在软件中用"Counter Buffer Config.vi"专门配置的。

有限点方式
如果你将操作配置成有限点缓冲区的工作模式,那么整个操作要等到gate输入产生的上升边沿数目同缓冲区大小相同才会结束。如果你将"number to read"输入引脚连接数值-1或不连接任何输入数值,计数器读缓冲区操作要等到整个缓冲区被填满或者超时发生时才会返回读取的数据。默认的超时时间(接线值为-1或没有接线)是一秒钟。如果超时时间来到了,那么读操作就只返回超时时间之内缓冲区中得到的数据。如果你连接了一个数值到“number to read”,那么在没有超时的情况下,读操作就会读出对应连接数值数目的数据。计数器读数操作可以在一个循环中反复调用,直到缓冲区中所有的数值被读出。或者你可以将“-1”接到"number to read"然后等待一个超时的发生。

连续方式
如果你配置成连续的缓冲区读取模式,这时对缓冲区的读数操作与有限点模式很类似,只有一点不同,那就是它不会自动停止。这是因为采用连续方式时对缓冲区的操作是循环进行的,没有预定的缓冲区的结束位置。计数器读取数据操作将数据从缓冲区中读出并传送至Labview中,同时将读出位置的缓冲区清空。如果将-1接至“number to read”并且在没有超时的情况下,读出操作一次将整个缓冲区里面的数据读出。计数器读数操作必须在循环中反复调用执行,否则将会得到一个错误-10846。如果循环读取数据的操作速度不够快,不能及时将缓冲区清空,你也会遇到-10486的错误。
注意:不管是有限点模式还是连续模式,您都有可能会遇到-10920的错误。错误产生的原因是gate输入信号的频率过快,使得经由DMA从板上寄存器向PC内存的传送数据的速率无法跟上,造成错误。这个传送速度是依赖于系统的,通常的范围是在几百KHz和几MHz范围之间。更多信息,请参考KnowledgeBase 2007H8PQ。
对于使用计数器的例子,请参考 Developer Zone上面的例子程序链接。

相关链接:
KnowledgeBase 2007H8PQ: 使用6602的缓冲操作的最大门信号(Gate)频率是多少?
KnowledgeBase 2C69GDQO: What Signal Rates Can the Data Acquisition DAQ-STC Counter Chip Acquire?
Developer Zone: Counter/Timer Examples

附件:





报告日期: 03/13/2002
最近更新: 02/14/2008
文档编号: 2JCD04EW