1 前言
随着计算机技术的不断发展,计算机控制在工业控制领域占的比例越来越重要。尤其在实时监控和高速数据采集系统中,计算机控制是不可缺少的。由于在下位机系统中,若使用单片机控制,不但系统实现繁琐,而且硬件故障较多,给程序调试带来了很大的困难;而且在高速采集系统中,若采样频率达不到要求,可能导致数据丢失,进而影响检测精度[3]。通过高速数据采集卡,可以将采集获取的数据传输到工控机中,利用计算机强大的分析处理能力来提高测试系统的精度。PCI-1715U是Advantech(研华)公司推出的一款带有PCI总线的隔离保护的高速模拟输入卡,可应用于高精度测试系统中。
2 测试系统的总体方案设计
本文介绍的测试系统用于采集小型冰箱全封闭制冷压缩机压力信号和活塞位移信号,通过数据处理、软件编程,实现压缩机PV指示图绘制。
由于被测对象——小型制冷压缩机的转速在3000~4000r/min之间,压力信号频率为50-70Hz,但是为了更精确地取得压力值,数据采集卡A/D转换的采样速率应大于50KS/s(Kilo Sample per second),即1s内有50000个采样点。另外,在排气阀开启瞬间,系统需要测试的气缸内部压力脉动属于高频信号,因此系统采用研华板卡PCI-1715U高速数据采集板卡,A/D转换的采样速率可达500 KS/s。相应地,系统选用上海雁桦电子有限公司生产的GY403型微型压力传感器,测量气缸内部、吸气阀、排气阀三处的压力值,其频率响应达10K。同时选用欧姆龙E6B2-CWZ6C型(分辨率为2000P/R)增量式旋转编码器测量曲轴转过的角度,进而计算压缩机活塞位移。
本系统采用研华板卡PCI-1715U高速数据采集板卡,确保系统能高速采集、处理数据,进而精确绘制PV图。该压缩机PV图测试系统以PCI-1715U为硬件平台,通过PCI总线与工控机相连,利用研华工控机的内存作为采样数据的缓冲存储器,借助研华32位DLL驱动程序提供的接口,采用Borland Delphi 7.0语言编程,实现对板卡的硬件控制,主要完成压力、位移信号高速采集、传输及存储。该系统结构框图如下图1:
图1 制冷压缩机PV图测试系统结构框图
3 PCI-1715U板卡功能特点和采集原理
3.1功能特点
PCI-1715U是一款带有2500VDC的隔离保护的12位分辨率高速模拟量输入卡,适用于各种测试领域。其具体特征如下[1]:
(1)32路单端或16路差分模拟量输入,或采用单端和差分输入的不同组合方式来完成多通道采样;
(2)各输入通道的增益可独立设置,输入范围包括0~10V,0~5V等。用户可以通过软件选择最合适被测信号的电压范围,各通道增益可独立编程;
(3)对于A/D转换,PCI-1715U支持三种触发模式:软件触发、内部定时器触发和外部触发。
(4)该板块具备三种模拟量输入采集方式:软件方式、中断传输方式、DMA传输方式。
(5)板卡带1K的采样FIFO缓存,A/D转换的采样速率可达500KS/s,支持32位PCI总线控制DMA数据传送方式;
(6)当用户同时插入多张板卡时,可做硬件组态设定,轻易辨识每张板卡,便于系统扩展。
3.2数据采集原理
研华公司为其多种板卡开发了通用的“Advantech DLL Driver”驱动软件,其中的ADSAPI32.DLL为用户提供了能对硬件设备直接I/O操作的封装函数,便于用户快速开发程序。PCI-1715U采集卡在Windows下采用32位动态链接库驱动程序,可以在VC、VB和Delphi等环境下实现对采集卡的底层操作,开发出界面友好的控制系统[4]。本系统采用Delphi语言编程,实现高速DMA方式数据采集;DMA方式(Direct Memory Access)是最快的数据传输方式,指的是数据在没有CPU介入的情况下直接在设备和内存间传输,设备驱动会探测数据转换状态并发送合适的事件通知用户。编程人员可以直接调用研华ADSAPI32.DLL为Delphi用户提供的Driver.pas单元文件,该文件中声明了有关常量、变量、DLL函数及相应的结构,只需要将Driver.pas单元文件导入相应的位置以及设置正确的路径,就可省去自己声明DLL函数的麻烦。
传感器采集的信号经滤波电路滤波后进入PCI-1715U板卡,卡上前端电路对信号进行信号调理,调理后信号进入A/D转换器进行高速模数转换。转换数据首先暂存在板卡的1K板载FIFO中,当FIFO半满或全满时产生一个中断,设备驱动接收到中断后会发送事件告知用户当前采样状态,将数据从FIFO输出到采样缓存中。采样缓存和用户缓存一样都是数据采集程序动态分配给驱动程序使用的两块内存区域。两块缓存区的区别在于采样缓存区存放的是从FIFO中取出来的原始值,用户缓存区存放的是用户需要的原始值或是经转换之后的电压值[1]。而且,当采用循环方式进行高速采集时,采样缓存区分成容量相等的两个半区使用,当前半区填满后就将数据向用户缓存区传送,同时将新转换的数据放在采样缓存区的后半部分。当后半区填满后就将此半区的数据向用户缓存区传送,同时自动将新转换的数据放到早已传输完毕的前半个缓存区。
本文简要介绍与该数据采集有关的几个关键函数[1]:
DRV_DeviceOpen():对设备的任何操作和设置都必须首先调用此函数。它加载一个设备驱动程序到内存,并确定设备类型,完成设备的初始化,使设备做好I/O传输的准备工作。
DRV_DeviceGetFeatures():从打开的设备中获取相关的设备信息,指明设备特征的存储地址和存储空间大小等。
DRV_FAIDmaExStart():通过指定AI起始通道和采样通道数,及存储数据的内部缓冲区,来启动总线控制下的DMA方式数据采集,并将A/D转换数据从FIFO转移到采样缓存区中。
DRV_FAITransfer():把当前采样缓存区中的数据传输到用户缓存区。
DRV_FAICheck():该函数通常用于FAI启动时来查询当前采样缓存区的半满状态,以便及时调用DRV_FAITransfer()函数把数据传输到用户缓存区中。
在PCI-1715U启动A/D转换进行高速数据采集前,首先需要获取用户对板卡的初始化设置信息(流程图如下图2所示),并将设置信息保存到设置缓存区相应的位置。
图2 PCI-1715U初始化流程图
图3 DMA高速数据采集流程图
初始化设置完成后,启动A/D进行高速数据转换,以DMA方式将转换数据实时地传送到内部缓存区。PCI-1715U进行高速数据采集的程序流程图如图3所示。在调用函数DRV_FAIDmaExStart()启动DMA高速采样之前,推荐事先调用函数DRV_EnableEvent()使能事件通知功能。接下来则可以调用函数DRV_CheckEvent()来等待使能的事件通知,当接收到事件通知后,对数据进行处理。另外,DRV_FAITerminate()函数随时都可以用来终止采样操作。
当函数DRV_FAIDmaExStart()执行以后,A/D启动开始进行高速数据转换,转换的数据首先利用PCI-1715U卡上的板载1K FIFO作为缓冲。一旦开始数据采集操作,必须知道当前的采样状态,以便及时把数据从内部采样缓存传输到用户缓存。允许驱动向用户程序发预定的事件(调用函数DRV_EnableEvent()),即当采样缓存区半满时会产生一个ADS_EVT_BUFCHANGE事件,此时等待事件发生的通知(调用DRV_CheckEvent()),当有事件发生用户就可以调用函数DRV_FAITransfer()及时把数据从内部采样缓存传到用户缓存。在实际操作中,也可以将内存中的数据保存成文件系统并存储到工控机硬盘中。本系统采用Delphi 7.0语言编程[2],采集程序举例如下:
…………
ptFAITransfer.DataBuffer := Pointer(GlobalLock(hDisplayBuf));
ptEnableEvent.EventType := 0;
if( chkBufferChange.Checked ) then
ptEnableEvent.EventType :=ptEnableEvent.EventType or ADS_EVT_BUFCHANGE;
if( chkTerminate.Checked ) then
ptEnableEvent.EventType := ptEnableEvent.EventType or ADS_EVT_TERMINATED;
…………
ErrCde := DRV_FAIDmaExStart(DriverHandle,ptFAIDmaExStart);
if DoesErr(ErrCde) = 1 then
begin
GlobalFree(HGLOBAL(hUserBuf));
GlobalFree(HGLOBAL(hDisplayBuf));
DRV_DeviceClose(DriverHandle);
Exit;
3.3测试系统实现的几个关键问题
制冷压缩机PV图蕴含丰富的有关压缩机运行状况和工作性能的信息,当压机运行不正常或出现故障时,PV图会发生相应的变化。在本测试系统中,需要重点解决如下问题:
(1)压力信号与主轴转角相位同步问题
由于在整个工作过程中,活塞是在封闭的气缸内进行往复运动,因此直接获得活塞移动的位置信号很困难。通常采用间接方法,即先获得曲轴旋转的角度信号,然后根据活塞压缩机动力学知识转换为活塞行程位移信号。假设压缩机曲轴任意转角α的瞬时,活塞距外止点的位移为S,由活塞式压缩机动力学可知:
式中, r表示曲柄的半径;L表示连杆长度。
由于压缩机在整个工作过程中主轴转速是不均匀的,不适合等时间间隔采样。本系统中气缸压力信号采集选择PCI-1715U支持的外部脉冲触发方式,根据测试精度要求,旋转编码器A相每转输出严格等间隔的2000个脉冲,将编码器与主轴连接在一起,编码器输出的脉冲即可作为气缸压力采样的外部触发信号,从而保证每次循环采集2000个压力值,且采集的压力信号与主轴等转角位移同步。以压缩机转速3600r/min为例,编码器分辨率为2000P/R, PCI-1715U采集3个压力传感器的压力值,计算可得采样速率为360 KS/s,符合该高速数据采集卡的采样速率最大值500 KS/s。
(2)活塞止点鉴别问题
在系统实现中,要获得PV图首先要确定气缸内活塞在一个工作循环中的起点和终点位置,可是在工作过程中,活塞可能在气缸的任何一个位置开始或停止工作,所以没有任何关于压缩机工作循环开始或结束的外部特征信息。系统只能对压力信号循环采样,在采集的大批数据中包含了多个工作循环内的压力信号。因此,如何从大量数据中确定一个完整工作循环的起点和终点,即活塞止点鉴别问题,是一项非常重要的工作。
本系统利用选择旋转编码器实现止点鉴别,旋转编码器除了A、B两相每转输出定量的脉冲外,其上Z相每转在固定角度输出一个脉冲,将此角度位置与活塞止点位置所对应的主轴转角重合,同步采集Z相电平信号,通过软件分析,就能确定活塞止点所对应的气缸压力采样点。
4 结论
本文介绍了研华PCI-1715U高速数据采集卡在制冷压缩机PV测试系统中的应用,具体为:PCI-1715U板卡作为PV测试系统的硬件平台,利用Delphi7.0作为软件开发环境,借助于研华ADSAPI32.DLL进行编程,从而实现小型制冷压缩机压力和活塞位移信号的采集,并对获得的数据以绘制曲线的方式进行显示、分析,具有良好的应用前景。
参考文献
[1] Advantech Inc. PCI-1715U User’s Manual,2007.
[2]刘瑞新,万朝阳等.Delphi程序设计教程[M].北京:机械工业出版社,2006
[3] 郑玉林.基于研华工业控制板卡PCI-1713的高速数据采集系统[J].科教文汇,2006(03):105-106.
[4] 梅顺齐,张智明.PCI-1710数据采集原理及其在工业中的应用[J].现代制造工程,2006(7):31-32.