1 引言
在数据采集和处理过程中,有些模拟信号的幅值和频率变化的速度是非常快的,如何将这些高速变化的模拟信号采集到计算机中进行处理是一个需要解决的问题,由于数字数据传输速率等系统瓶颈问题的影响,使用常规的技术方法往往不能对上述问题进行理想的解决。以pci总线为代表的高性能局部总线为计算机模拟输入通道采样频率的大幅度提高提供了坚实的技术基础。pci是一种非常经济实用的数据采集卡技术,在自动化领域有明显的应用优势,在控制工业现场、研究领域、航天、军工等等行业已经有广泛应用。在实验研究中,由于实验装置的测点数目较少,采用pc机+pci数据采集卡的测控方案,亦是一种非常理想的具有很高信价 比的研究方案。
2 方案及板件的配置
本项目针对锥形啤酒发酵罐内温度场的研究。作者采用研华公司的pci-1716l数据采集卡采集来自集成温度传感器ad590测量的温度信号,并对数据进 行处理,然后将所得数据通过一个良好的人机界面进行显示和分析。pci-1716l是一款功能强大的高分辨率多功能pci数据采集卡,它带有一个 250ks/s16位a/d转换器,可以提供16路单端模拟量输入或8路差分模拟量输入,也可以组合输入,2个16位d/a输出通道,16位数字量输入 /输出通道,1个10hms16位计数器通道。此外pci采集卡还配备了充分的库函数以方便用户完成各种类型数据的采集。
为使数据采集卡能正常的进行数据采集工作,需要对其进行必要的配置,安装了pci数据采集卡后,首先要在setting菜单中,正确设置“所选择设备 (device)”、“输入范围(range)”、“输入通道(channel)”等参数。其次还需要在scan菜单中设置“计数的时间间隔”,默认值为 1000毫秒。为了实现单通道模拟量(如ad590测量的温度信号)数据的采集,需要调用单模拟量输入函数“drv_aiconfig”来对模拟量输入通道等信息进行配置,调用模拟量输入函数“drv_aivoltagein”,通过软件触发方式(使用windows timer)实现数据采集。
3 通道扩展问题
作者在发酵罐内温度场分布的研究过程中,根据研究需要,要采集27个发酵罐内部的温度信号,而现有的pci-1716l数据采集卡只能完成16路温度信号 的采集,为了能更好的利用现有的条件同时节约研究成本,作者尝试了一种可将pci-1716l板件的16路单端模拟量通道扩充为27路的软件实现方法。
pci-1716l数据采集卡具有16路a/d转换器和16路d/a输出通道,可进行16路单端模拟量的采集,另外还具有16位数字量的输入/输出通道。 由于该板件的模拟电路和逻辑电路之间采用光电耦合器进行信息交换,使得pc总线部分的干扰被隔离于模拟电路之外。数据采集卡需嵌入到pc主机,所以实验中配合使用了型号为3968的子板与下位板件连接,3968子板与pci-1716l采集卡通过68针接口相连,因而具有相同的接线端子,便于连接其他信 号。下面探讨研究中出现的瓶颈问题(有27路ad590的温度测量信号需要采集,而单块pci-1716l板件只能采集16路温度信号)的解决方法。
4 解决方案
4.1 原理设计
为了解决以上瓶颈问题,常规的做法是采用两块采集卡菊连的方式,众所周知,高性能的数据采集卡价格不菲,为了降低实验研究的造价,作者尝试采用了一种价格低廉的多路转换板件配合软件编程的方法以扩充原有采集卡单端模拟量输入通道。
所采用的多路转换放大板型号为研华pcld-789d。该板件可以采集16路单端模拟量;提供了内、外两种供电方式,可以通过跳线方便的进行切换,因 ad590功率很小,负载小,所以选择了由pc机内供电方式;板件上提供了3个接线端子,本次研究中采用了cn3,该端子上具备了地线、电源线和模拟量输 出通道、多输入控制等功能,接线方便全面;789d能传输16路单端模拟量信号,且传输的模拟量信号通道可以由数据采集卡通过控制四位ttl/coms数字量输出进行选择,端子cn3上的四个通道:12(d0)、32(d1)、14(d2)、33(d3)可以作为四位ttl/coms数字量输出。
研究中利用pci-1716l数据采集卡port0(即0口)的4、5、6、7四位数字量,对多路转换卡中的d0、d1、d2、d3四个数字量通道进行 ttl/coms数字量输出,以构成四位地址信息,共16个地址,来进行不同模拟量通道的选择。
ttl/coms数字量输出地址和相应的789d的ai通道如表1所示。
表1 扩展通道地址映像

在上位机监控程序中需要编辑相应的子程序来实现上述通道选择功能。作者采用了vb软件来组态上位机监控程序,完成上述功能的子程序命名为“dout0”, 编写如下:
private sub dour0(byval output as integer, byval output as integer)
’定义子程序名及参数
lpdiowritebit.port=0
’定义数字量 写出的位;
lpdiowritebit.bit=birnum
’定义该子程序是用于写出数字量的;
lpdiowritebit.state=output
’定义故障信息
errcde=drv_writebit(devicehandle, lpdiowritebit)’
if(errcde<>0)then
drv_geterrormesage errcde,szerrmsg
response=msgbox(szerrmsg,vberrmsg,vbokonly,”error!!”)
exit sub
end if
end sub
如当选择10通道时,采集卡向转换板输出下面一段程序:
dout0(0,4)
dout0(1,5)
dout0(0,6)
dout0(1,7)
即可完成。若要完成多路循环采集,只要一个简单的循环语句就可以实现。例如本研究中共需要采集27路模拟量信号,为了使16路数据采集卡完成27路信号的 采集,可通过数字量选择通道的方法利用pci-1716采集卡上的第一个ai(模拟量输入)通道ai0采集了789d上所引入的16路信号,这种采集只要 一个简单的do……while循环语句就可以完成。剩下的11个信号可以直接由采集卡上的其余通道采集即可。
4.2 出现的问题及解决方法:
该方法在调试过程中出现了如下问题:
(1)数据不稳定,这是使用电子产品时最容易出现的问题,究其原因在于板件附近存在电磁干扰。所以应注意采集卡的信号线要尽量远离电源线,发电机和具有电磁干扰的场所,也要远离视频监视系统,因为它会对数据采集系统产生很大的影响,并且要保证被采集的信号在设定的两层范围内,因为超过了这一范围会造成采集 卡a/d部分的烧毁。
(2)用数据采集卡的ai0通道采集转换板上的16路测量信号时,发现所采集到的数据与数字量控制的通道并不对应。数据采集过程中相邻的信号间会存在干 扰,同时由于孔径时间的存在也会引起的孔径误差,均是可能会导致如上情况出现的原因。实际中,可通过数字滤波的方法很容易的解决如上问题,针对这种问题最常采用的数字滤波技术是算术平均值法,即将一个通道的信号采集多次,并将前面几次的数据剔除,其余的取平均值即可。
(3)用数据采集卡的ai1~ai11通道采集其余通道的数据时,采集到的数据并不准确。这是因为数据采集的通道出现了紊乱,为了确保采集卡的其余通道都 能进行准确的数据采集,务必保证在所要采集的通道前进行准确的定义,所以针对每个通道的数据采集都要分别定义所采集数据的通道,并配合(1)中的数字滤波 的方法消除干扰,可将问题解决。
5 结束语
本文是作者针对自身在实验研究中所遇到的问题而提出的一种实际可行的解决问题的方法。16路的数据采集卡只要配合价格低廉的转换板就可以实现27路数据的 采集,当然只要提供足够的数据转换板,利用简单的编程功能,该16路采集卡最多可以完成256路单端模拟量信号的采集。现有的硬件条件不能满足实际的需求是经常会遇到的问题,而现在市面上的数据采集板件及可以配套使用的相关板件,一般都是具有数字输入/输出及模拟量输入功能的,作为使用者,充分的利用板件的性能结合适当的软件编程的方法,往往可以起到事半功倍的效果,节约大量的研究成本。仅此文抛砖引玉。




