[摘 要]
介绍了在Windows环境下,用VB开发的染色机温度控制系统的数据采集和分析系统。详细介绍了硬件核心PCL-818L数据采集卡及其原理,讨论了其在VB环境下利用系统提供函数进行软件开发的方式。该系统能够精确实现染色机温度控制系统参数的采集,并可提取动态特性的有关信息。
当前我国的染色生产中,高温高压染色机的应用比较普及,许多生产单位染色过程中加热、保温的操作都是由人工进行的。由于人为因素的介入导致升温、保温等关键步骤不一致,使产品产生严重的机差。个别采用的温度自动控制系统由于造价较高、操作复杂等原因又限制了在中小企业的应用。因此研究和开发一种实用的温度控制系统成为当务之急。
1 染色机温度控制系统总体设计方案
染色机温度控制系统中需要由微机控制的对象为气动阀,检测的信号有染色机温度和压力信号。需要输出的信号有阀门控制信号和气压控制信号。本控制系统可以控制十套染色机,并且可以完成数据的动态显示及工作阶段指示、各路温度、压力的上下限设置、温度压力的超限报警、参数的设置修改、单路调节设置、各个阀门的控制及相应的状态指示和数据的记录、打印、显示功能。
由于系统中的输入、输出信号较多,根据系统设计的要求原则和染色机工艺特点,本系统采用工业控制机为核心的控制系统。
系统以工业控制机为主控核心,结合外围设备构成整个控统。外围设备主要包括键盘、显示器、打印机、D/A输出、A/D数据采集卡。
1.1 数据采集部分
本系统主要是染色机温度和压力(测量压力还是为了温度的控制)控制。它们的测量好坏在一定程度上影响了控制系统的控制效果。数据采集部分主要处理从传感器采集得到的数据,其组成部分包括传感器,模拟量采集卡和工控机。模拟量采集卡选择研华PCL-818L数据采集卡。为了规范模拟量的输入,在选择温度传感器和压力传感器时,我们要求其具有0~5V的电压变送输出,这样,可以直接将采集的信号进行A/D转换,并送入计算机。
1.2 研华PCL-878L数据采集卡基本特性
PCL-818L是针对IBM-PC/XT/AT以及其他兼容机设计的,机箱中有ASIC插槽的计算机都可以方便的使用。它为用户提供了16个模拟信号输入,可以通过跳线开关和软件选择过程16个单通道信号输入或8个差分信号输入;12位的A/D转换器,用来转换模拟输入;同时提供最大为40KHz采样速率(在直接数据传输模式下)。另外,可以通过跳线或软件两种方式来选择模拟量输人范围。此卡还提供一路12位模拟输出通道和16路数字输入和数字输出通道。所有这些特性使得用户的需求能够得到很好的满足。
2 PCL-818L开发应用软件方法
利用PCL—818L进行Windows应用程序开发,可以有三种方法。①利用“研华”光盘中附带的Geni DAQ Develepment开发环境,这是研华针对PCL系列板提供的标准开发环境,其优点是针对性强,缺点是不是通用的开发环境,程序移植性较差;②由用户自行开发针对底层硬件的驱动程序,这种方法灵活性最大,代码执行效率也高,可以充分发挥硬件的性能,但是要求开发者具有相当的计算机软、硬件水平;③采用通用的开发环境(Visual Studio、Delphi 等),调用研华提供的标准动态链接库文件和第三方制作的ActiveX控件。采用这种方法可以在一定的程序上降低程序开发的难度,在提供较好灵活性地同时,提供相对于第一种方法更好的移植性。因此在实际中,较多采用的是第三种开发方法。
2.1 VB环境下的软件开发
VB本身并不提供对计算机外设进行底层操作的语句或是函数。但PCL-818L提供的一套随机附带软件,其中包括了DLL(Dynamic Link Library)动态联接库文件,提供了对PCL-818L相关口地址的读写操作函数。这些函数都是标准的Windows API,可在VB中声明后进行调用。因此在VB环境下的软件开发关键就是正确地完成底层的I/O操作,“Advantech”的动态联接库提供了两种I/O方式;标准方式、快速方式。根据目前一般工作装置的动态特性,采用标准方式已完全可以满足系统的要求。
2.2 数据采集卡的DLL调用
1)在计算机中安装好的硬件,并进行相应的硬件设置。对于PCL-818L数据采集卡,首先进行地址跳线,将其地址设置为300H,在单端或差动输入方面设置为单端输入,其余基本不需要改动,只采用板卡默认设置即可。
2)据所采用的计算机平台,安装相应的驱动程序,并进行软件设置。本系统中,采用的计算机平台为Windows 2000,为此,我们安装了Advantech的For Windows 2000驱动程序。
3)完成驱动程序的安装之后,我们将运行PCL-818数据采集卡的设置软件,设置类型为PCL-818L,地址为300Hex,A/D通道配置为16 Single-ended,输入范围为+/-5V,D/A
参考电压为InternalO-5V,其余皆为默认设置。
4)使用DLL有利于应用程序的模块化,可以简化程序的修改。下面我们将用具体的例子说明如何调用DLL。
假设系统提供名为818L.dII的一个动态链接库,则应有如下声明:
Declare Function W_818_Initial Lib"818L.dll",(ByVal card_number As Long,ByVal base_address As Long)AS Long
Declare Function W_818_Switch_Card_No Lib"818L.dll"(ByVal card_number As Long)AS Long
Declare Function W_818_DI Lib"818L.dll"(ByVal port_number As Long,di_data AS Byte)As Long
Declare Function W_818_Dl_Channel Lib"818L.dll"(ByVal ch_no AS Long,di_data As Long)AS Long
Declare Function W_818_DO Lib"818L.dll"(ByVal port_numberAs Long,ByVal do_data As Byte)As Long
Declare Function W_818_DA Lib"818L.dll"(ByVal ch_no AsLong,ByVal da_data AS Long)As Long
Declare Function W_818_AD_Set_Channel Lib"818L.dll"(ByVal ch_no AS Long)AS Long
一个典型的引入单元可以定义如下:
Unit AVEunit
Interface
Function AverageData(M1%,M2%)AS Integer
Implementation
AverageData
End Function
在其他需要调用该DLL的应用程序中,我们只需要添加上面的AVEunit单元,就可以像使用VB自身的函数一样使用AverageData函数了。
所有相关函数操作如下,调用status=DRV_DeviceOpen(DeviceNum,DriverHandle)函数实现打开PCL-818L设备,以便进一步对设备进行配置和操作。
调用status=DRV_AlConfig(DriverHandle,IpAlConfig)函数,实现对设备模拟量输入的初始化配置,将板卡的输入量程设置到所需要的量程。
调用status=DRV—EnableEvent(DriverHandle,IpEnable-Event)函数开启中断。
调用status=DRV—FAllntScanStart(DriverHandle,IpFAl-lntScanstart)启动中断方式数据采集。
调用status=DRV—FAlCheck(DriverHandle,IpFAlCheck)函数来检测接收缓冲区数据是否已满,如果缓冲区已满,则将数据从接收缓冲取走。
如果数据采集完成,则调用status=DRV—FalStop(DriverHandle)函数来停止数据采集。
最后如果对板卡所有操作都完成,调用status=DRV—DeviceClose(DriveHandle)关闭PCL—818L设备,停止所有操作。在此系统上,对所有硬件设备操作,只需调用简单的几个函数就可以实现,编程难度和工作量大为减少。
3 结束语
利用工控机,辅以数据采集卡PCL-818L,以VB为开发环境,可在较短的时间内,方便有效地开发出功能强大的染色机信号采集和控制系统。特别是利用VB在生成友好界面方面的优势,对于状态监控尤为适用。这样不仅使整个采集、控制系统的工作可靠性大大提高,并且缩短了系统的开发周期。