0%

数据采集卡

1 单双通道

  • 单通道:当采样通道总数量(nSampChanCount)等于 1 时,通道组内只有一个通道配置信息,即为单通道采集。
  • 多通道:当采样通道总数量大于 1 时,通道组内有多个通道配置信息,则为多通道采集。如果用户使能 2、 0、 1 通道,则数据排列方式:
    通道 2 数据 0、通道 0 数据 0、通道 1 数据 0
    通道 2 数据 1、通道 0 数据 1、通道 1 数据 1
    通道 2 数据 2、通道 0 数据 2、通道 1 数据 2

2 参数选择

2.1 nSampChanCount

采样通道数量 (Sample Channel Count),进入采样过程的通道个数,取值范围[1, 8]。即决定了 CHParam[]通道组阵列中有效单元的个数。若 nSampChanCount=1, 则表示仅 CHParam[0]单元决定的物理通道号有效; 若 nSampChanCount=2,则表示仅 CHParam[0]、CHParam[1]两个单元决定的物理通道号有效; 若 nSampChanCount=3,则表示仅 CHParam[0]、CHParam[1]、CHParam[2]三个单元决定的物理通道号有效,依次类推。

2.2 nSampsPerChan

连续采样模式: 决定着触发采样事件 hSampEvent 时的点数条件。

比如指定该参数值为 1024点,则每采样到不小于 1024 点时就会触发采样事件 hSampEvent,它也决定着每次调用 AI ReadAnalog()或 AIreadBinary()时能最快返回的点数边界 (请注意:是不小于 nSampsPerChan,意思是不可能正好等于 nSampsPerChan 时就能得到事件通知,而是通常在超过 nSampsPerChan 时才能得到事件通知)。即该参数的取值大小决定着每两次读到数据的时间间隔,也就是实时响应度。点数越小,实时响应就越高,反之越低。但不能为了一味的追求实时响应度就将该参数的值设得很小,这个还要看采样速率的高低,如果采样速率很高,而 nSampsPerChan 的值很小,则可能造成任务负担过重而发生缓冲区溢出,以致造成丢点现象的发生。建议实时响应度不低于 20 个毫秒是比较合适的。比如每通道采样速率为 100Ksps,即10微秒一个点,则 nSampsPerChan 不小于 2000 个点是比较合适的。该参数的取值范围为[2, 1024 * 1024],具体还要受制于系统可用内存和采样通道数。

2.3 nReadSampsPerChan

在有限点和连续采样模式中,它指定该次从设备的当前可读数据位置读取的数据点数(单位: 点)。注意此参数的值如大于当前的可读数点 nAvailSampsPerChan 则会继续等待直到至少有 nReadSampsPerChan 个点可读后读函数才会返回。等待期间,如果所等时间超过 fTimeout 指定时间也会返回,并置超时错误码。

在连续采样过程中,如果要保持连续不丢点,此参数应尽可能接近于甚至等于当前的可读点数(nAvailSampsPerChan),但不能大于 AIParam.nSampsPerChan。当然此参数值也不能大于 fAnlgArray 的缓冲区长度,所以为避免出错,所开辟的缓冲区不能小于 nReadSampsPerChan * AIParam.nSampChanCount。

和nSampsPerChan相比一个是需要读的一个实际采的。而实际读到的点数在pSampsPerChanRead。

这个告诉我们,要关注数据采集卡的底层,采样分析发现,数据采集卡是 2 的幂次方个数目采集存储的。