原创 应用分析I:使用模拟输入的数字读取

2012-1-19 09:55 895 7 7 分类: 测试测量

为了使用3M赫兹的模拟[1]输入来实现数字读取,执行下列步骤:

1.      设置一个有一个条目的信道增益队列;

2.      选择信道0;

3.      将增益码属性设置为CHAN_SEDIFF_DIG(8192)

4.      把接收到的数据按16位板卡[2]上的16位数字值或12位板卡上的12位数字值做处理,而不是按照电压处理。

实现这一过程的代码被列在下面:

' For boards having unique, product-specific attributes

Const CHAN_OEM_SHIFT   As Integer = (-2) ^ 15

Const CHAN_OEM_MASK    As Integer = (1 * CHAN_OEM_SHIFT)

' use std attribs

Const CHAN_OEM_DEFAULT As Integer = (0 * CHAN_OEM_SHIFT)    

' use OEM attribs

Const CHAN_OEM_FLAG    As Integer = (1 * CHAN_OEM_SHIFT)    

' For boards supporting programmable single-ended vs. differential inputs

Const CHAN_SEDIFF_SHIFT   As Integer = 2 ^ 13

Const CHAN_SEDIFF_MASK    As Integer = (3 * CHAN_SEDIFF_SHIFT)

' use static config

Const CHAN_SEDIFF_DEFAULT As Integer = (0 * CHAN_SEDIFF_SHIFT) 

' digital input chan

Const CHAN_SEDIFF_DIG     As Integer = (1 * CHAN_SEDIFF_SHIFT)

. . .

    DriverLINXSR1.Sel_chan_N = 1

    DriverLINXSR1.Sel_chan_format = DL_tNATIVE

    DriverLINXSR1.Sel_chan_list(0) = 0

    DriverLINXSR1.Sel_chan_gainCodeList(0) = CHAN_SEDIFF_DIG

这些代码设置服务请求的单个属性。

     第一个属性告诉DriverLINX,在信道增益队列(上面的步骤1)中,只需要一个信道。

     第二个属性(Sel_chan_list)告诉DriverLINX如何将数据存在缓冲区里。DL_tNATIVE表示按照硬件给出的格式存储。

     第三个属性为信道增益队列中的第一项内容选择信道。在这种情况下,这个值必须是0(步骤2);

     第四个属性设置数字读取(步骤3). 在代码的其它地方,这个数字值被逐位处理。

可能引起混乱的是,CHAN_OEM_FLAG被设置为(-2)^15,而不是2^15,这好像有更多的含义。答案在VisualBasic中。VisualBasic的整数总是有符号的,因此位15是符号位,用户取或的值必须是-32768,不是32768(它将会引起溢出错误)。

记住,对一个真正的应用程序来说,用户可能除了数字数据外还想获得模拟数据。这个应用被设计来展示实现模拟输入/数字输入功能的最简单方式,因此它不执行模拟转换[3]。这个例子可以很容易被修改以向列表中增加更多的信道和增益。

 

了解更多信息

要想了解有关吉时利KPCI-3100系列板卡或者关于数据采集的更多信息,请点击 http://www.keithley.com.cn/products/data/analog或登录吉时利官方微博http://weibo.com/keithley与专家进行互动

 



[1] 模拟:http://www.keithley.com.cn/llm/a/27.html

[2] 板卡:http://www.keithley.com.cn/news/prod061128

[3] 模拟转换:http://www.keithley.com.cn/news/prod080721

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条