摘要 :结合开发“无线电话务模拟训练系统”Win32版软件的实例,本文详细介绍利用Delphi3.0开发微机数据采集与处理软件系统的方法。
关键词:Delphi ADC DAC
数据采集与处理是计算机应用的一个重要分支,主要研究信息数据的采集、存贮、处理及控制等内容。70年代以来,由于微机技术的快速发展及其在军、民用工程领域的广泛应用,尤其是适于通用微机(如IBM PC系列)使用的板卡级数据采集产品的大量出现,以微机为核心的可编程数据采集与处理技术得到迅速发展。现在的微机,只需在其扩展槽内插上一块数据采集板,并辅以应用软件,即可组成一套微机数据采集与处理系统,实现信息处理和实时控制功能。
数据采集与处理技术主要研究模数、数模转换(A/D、D/A)、数据处理等问题,需要计算机硬件电路和软件编程知识。
数据采集:为对温度、压力、流量、速度、位移、振动、噪声等物理量进行测控,首先通过传感器把上述物理量转换成模拟电信号,而后由A/D—D/A板将模拟电信号转换成时间、数值上量化且离散的数字量输入计算机系统。数据采集的核心是A/D转换。
数据处理:计算机根据被测控对象的需要,对采集到的数据进行数学分析运算,处理结果一方面送至显示器、打印机等外设,一方面由A/D—D/A板将数字量转换成模拟电信号输出,对外部物理量进行实时监控。数据处理的核心是数值处理和D/A转换。
2、微机数据采集与处理系统硬件组成
系统主要由被测控对象(设备)、A/D—D/A通道、开关量I/O通道、微机等组成,如图1所示。较复杂的系统包括单片机等多机系统。
图1 微机数据采集与处理系统硬件组成
3、与IBM PC兼容的板卡级数据采集产品
利用IBM PC系列微机及其兼容机I/O通道开放的设计特点,许多厂商已经设计出采用板卡级结构的数据采集产品。这类产品在一块印刷电路板上包括了模拟多路开关(MUX)、采样保持电路(S/H)、模数、数模转换器(ADC、DAC)等部件(有的板型还提供并行I/O接口8255,定时/计数器8254/8254等通用可编程芯片),采用IBM PC总线,可直接插入微机任一扩展槽。本文介绍台湾AXIOM公司生产的AX5412高速数据采集板,以及利用Delphi开发该产品A/D—D/A接口软件的方法。
㈠、预备知识
设采样点数为1024,采样频率为3000HZ,32位定时器采用1MHZ基频率,连接PC机8259的2级中断。
⑴设定采样参数
Point:=1024;//采样点数为1024
Count:=1000000/3000;//采样频率为3000HZ,Count为计数器1和计数器2级联成的
//定时器的计数值
Count1:=2;//设定计数器1的计数值为2
Count2:=Int(Count/2);//计算计数器1的计数值
Low1:=2;//计数器1计数值的低字节
High1:=0;//计数器1计数值的高字节
Low2:=Count2 mod 256;//计数器2计数值的低字节
High2:=Count2/256;//计数器2计数值的高字节
with myPort do
begin
Port[Basea+11]:=0;//增益为1
Port[Basea+2]:=$11H;//通道1单通道连续采样
Port[Basea+15]:=$74H;//选择计数器1为工作计数器,按方式2工作,对计数器进
//行2次读/写操作,先低字节,后高字节
Port[Basea+13]:=Low1;//写计数器1计数值的低字节
Port[Basea+13]:=High1;//写计数器1计数值的高字节
Port[Basea+15]:=$B4H;//选择计数器1为工作计数器,按方式2工作,对计数器进
//行2次读/写操作,先低字节,后高字节
Port[Basea+13]:=Low2;//写计数器2计数值的低字节
Port[Basea+13]:=High2;//写计数器2计数值的高字节
end;
⑵编写中断服务程序
procedure TForm1.myPortHwInterrupt(Sender: TObject);//中断服务程序
{...}
ImportHigh:=Port[Basea+1];//读A/D转换高8位
ImportLow:=Port[Basea];//读A/D转换高8位
Sample[i]:=ImportHigh*16 or ImportLow/16;//计算12位A/D转换结果,并赋值给采
//样数组
i:=i+1;
Port[Basea+8]:=0;//清中断
end;
⑶设置中断
with myPort do
begin
if ActiveHW then CloseDriver
else
begin
OpenDriver;
if not ActiveHW then
begin
MessageBeep(0);
Application.MessageBox(‘系统发现指定I/O端口未能成功打开‘,
‘请注意‘,mb_OK or mb_ICONHAND);
end
else
begin
IRQNumber:=2;
SetIRQ;
end;
end;
end;
⑷开中断,进行采样
Port[Basea+9]:=$A3H;//选择定时器触发,连接PC机2级中断,开中断
Port[Basea+8]:=1;//选择定时器触发
i:=0;
while iPoint do ;//等待中断,每中断一次采样一个数据,直至采满Point个点
⑸退出系统前关闭中断
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
{...}
myPort.CloseDriver;
{...}
end;
在实际工作中,读者应根据具体数据采集板的硬件特性,参考上述方法,编写数据采集、分析、输出代码。
参考文献