数据采集是检测平台需要实现的重要目标,因此数据采集软件的设计是整个检测平台设计的重要组成部分。根据实验室现有的资源条件,采用北京阿尔泰科技发展有限公司的PCI8757数据采集卡作为整个检测平台的硬件。PCI8757具有如下性能:
a)具有正负10V、正负5V、正负2.5V、0—10V、0—5V多个输入量程可选;
b)具有16位转换精度;
c)具有3—800KHz的采样频率;
d)具有4通道的物理通道数;
e)双端模拟输入;
f)具有8K字(点)FIFO存储器。
g)四通道四芯片独立工作;
h)系统测量精度为0.01%。
由于检测平台测量的气体温度、速度信号的变化不快,因此采用PCI8757数据采集卡完全符合检测平台的使用要求。PCI8757数据采集卡提供了VB、VC的数据采集程序,特别是支持NI的LabVIEW软件开发的相关例程和底层驱动函数,这为编写其在LabVIEW上的数据采集程序提供了无缝的连接。在PCI8757数据采集卡中,适用于本数据采集软件设计的LabVIEW驱动函数主要有:冲溢出标志等)。需要设置的参数有hDevice设备对象句柄、pDMAStatus结构体指针。若调用成功,则返回TRUE,否则返回错误码。
该函数的功能是用于停止AD在任何时候的采样,但并不改变设备的其他任何状态。需要设置的参数有hDevice设备对象句柄。若成功,返回TRUE,表示AD被停止,否则返回FALSE。
该函数的功能是释放设备对象所占有的系统资源及设备对象本身。需要设置的参数有hDevice设备对象句柄。若成功,则返回TRUE,否则返回FALSE。通过理解上述函数后,就可以着手编写数据采集软件程序。整个检测平台需要采集干燥箱的风速和风温信号,因此只需要PCI8757的2个数据采集通道来分别对风速和风温信号来进行数据采集就可以了。由于在检测平台的每次测量中需要测量的点数较多,因此宜把数据采集程序写成单独的子程序,以方便整个系统程序对其的调用。把数据采集程序写成子程序需要注意为其设计相关的输入输出接口,用于对数据采集参数的设置。该数据采集子程序根据实际数据采集的需要,设计了一个采样频率的输入接口和风速、风温两个数据输出接口。数据采集子程序的数据输入输出接口如图5-16所示,其生成的作为被调用子程序的图标如图5-17所示。
该数据采集子程序的LabVIEW后面板代码如图5-18所示。由图5-18数据采集子程序的LabVIEW后面板可以看出该子程序进行数据采集的原理。首先是要设置好相关的硬件采集参数:具体包括通过CreateDevice来创建PCI8757数据采集卡的设备对象句柄,由于本检测平台仅需一块PCI8757数据采集卡,因此该函数的DeviceID参数采用默认值0;设置PXI8757_PARA_AD结构体参数,根据实际数据采集的需要,把PCI8757数据采集卡的第0、1两个通道参数设置为1,表示使用这两个通道,第2、3两个通道参数设置为0,表示不使用这两个通道,把四个输入量程参数均设置为0,表示他们的输入量程范围为正负10V,由于希望数据采样频率可以根据需要来改变设置,因此把对其参数的设置采用输入控件的方法来完成,其他参数,如字长、字段、触发源和触发方式等参数选择默认的设置即可。
其次是要数据采集的具体实现。该数据采集程序采用了DMA直接数据存储技术和线程处理技术,这既可以提高对数据的处理效率,也可以大大减轻CPU工作的负担。当参数设置完成后,运行程序,上面程序框里的CreateSystemEvent函数会创建一个内核事件对象句柄hDmaEvent赋给IniDeviceintAD的相应参数,以作为Dma事件的变量,接着用StartDeviceDmaAd启动AD部件开始数据采样,进而调用Win32API函数WaitForSingleObject来等待hDmaEvent事件的发生,当当前缓冲段没被DMA完成时,自动使所在线程进入睡眠状态(不消耗CPU的时间),否则,则立即唤醒所在线程,执行它下面的代码,这时通过GetDevStatusDmaAD函数来确定哪一段缓冲是新的数据,即刻处理该段数据,直到所有的缓冲段变为旧数据段,然后再回到WaitForSingleObject状态来等待新的hDmaEvent事件的发生,这样就可以实现不间断的数据采样。
由于数据采集程序是作为子程序,仅要求每次调用其时进行一次数据采样就可以了,因此在程序设计时没有加入循环控制结构。采集完的数据被放在一个字段为64,字长为4096的数组里,通过For循环结构的索引功能,每次都可以把一个字段里的4096个数据取出来与十六进制FFFF进行相与处理,然后再转换成电压值,通过降采样数组后把每个通道的电压数值分离出来,降采样数组的每个分支数组也是一个长度为1024的数组,采集到的风速和风温数据分别放在最前面的两个分支数组里,分别把其进行均值处理,从而得到期望的风速和风温值,显示在输出显示的控件上。最后,数据的采集与处理完毕后,通过ReleaseSystemEvent函数、StopDeviceDmaD函数、ReleaseDevice函数来停止数据的采样并释放数据采集硬件的设备资源,以准备下次启动数据采样使用。http://www.dgzhenghang.net