基于C++Builder的数据采集系统.docx

上传人:b****8 文档编号:11437455 上传时间:2023-03-01 格式:DOCX 页数:44 大小:982.52KB
下载 相关 举报
基于C++Builder的数据采集系统.docx_第1页
第1页 / 共44页
基于C++Builder的数据采集系统.docx_第2页
第2页 / 共44页
基于C++Builder的数据采集系统.docx_第3页
第3页 / 共44页
基于C++Builder的数据采集系统.docx_第4页
第4页 / 共44页
基于C++Builder的数据采集系统.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

基于C++Builder的数据采集系统.docx

《基于C++Builder的数据采集系统.docx》由会员分享,可在线阅读,更多相关《基于C++Builder的数据采集系统.docx(44页珍藏版)》请在冰豆网上搜索。

基于C++Builder的数据采集系统.docx

基于C++Builder的数据采集系统

目录

摘要……………………………………………………………………

(1)

Abstract…………………………………………………………………

(2)

第1章前言……………………………………………………………(3)

第1.1节引言………………………………………………………(3)

第1.2节课题背景…………………………………………………(3)

第1.2.1节数据采集的国内外现状………………………………(3)

第1.2.2节数据采集技术发展趋势………………………………(3)

第1.3节本设计所做的工作………………………………………(4)

第2章USB2010数据采集卡概述………………………………………(5)

第2.1节USB2010数据采集卡简介…………………………………(5)

第2.2节性能………………………………………………………(5)

第2.3节技术指标…………………………………………………(5)

第2.4节应用范围…………………………………………………(5)

第2.5节组成部分…………………………………………………(6)

第2.6节主要元件位置图…………………………………………(7)

第3章BorlandC++Builder简介……………………………………(9)

第4章声音信号的处理……………………………………………(10)

第4.1节对于声音传感器存在的问题……………………………(10)

第4.2节处理方法(线性化处理)………………………………(10)

第5章系统软件的设计………………………………………………(12)

第5.1节USB2010数据采集卡函数的调用………………………(12)

第5.2节文本框……………………………………………………(14)

第5.2.1节整数…………………………………………………(14)

第5.2.2节实数…………………………………………………(14)

第5.3节滚动条……………………………………………………(15)

第5.4节数据处理…………………………………………………(15)

第5.5节数据存储…………………………………………………(16)

第5.6节数据查询…………………………………………………(17)

第5.6.1节传感器数据查询……………………………………(17)

第5.6.2节采集数据查询………………………………………(17)

第5.7节读操作系统及内存的操作………………………………(17)

第6章系统软件的说明………………………………………………(19)

第6.1节开始界面…………………………………………………(19)

第6.2节测试界面…………………………………………………(20)

第6.3节通道设置界面……………………………………………(20)

第6.4节查询记录界面……………………………………………(22)

第6.5节数据对比…………………………………………………(23)

第7章结论…………………………………………………………(24)

参考文献………………………………………………………………(25)

致谢……………………………………………………………………(26)

附录部分程序代码……………………………………………………(27)

附件一:

苏州大学本科生毕业设计(论文)任务书………………(31)

附件二:

苏州大学本科生毕业设计(论文)中期检查表…………(33)

文献综述………………………………………………………………(34)

外文文献资料及中文翻译稿…………………………………………(36)

附件三:

苏州大学本科生毕业设计(论文)答辩记录表…………(41)

附件四:

苏州大学本科生毕业设计(论文)成绩评定表…………(43)

摘要

本文介绍了一个数据采集处理程序系统。

本系统由软件和硬件两部分组成:

采用的硬件为USB2010数据采集卡,它是由北京阿尔泰科技发展有限公司开发的USB总线兼容的数据采集卡;采用的编程语言为BorlandC++Builder6.0。

该系统具有多通道数据采集、采集数据实时处理、数据实时显示、数据对比、数据的存储与回放等主要功能。

本文首先概述了数据采集在国内外的发展,接着介绍了USB2010数据采集卡以及BorlandC++Builder6.0编程语言,然后分析了对于声音信号的处理方法,最后是本程序的说明和关键点。

该程序在现实中有较好的应用。

关键词:

BorlandC++Builder6.0;数据采集;多通道

Abstract

Thispaperintroducesakindofdataacquiringaridprocessingsystem.Thissystemismadeofsoftwareandhardware.ThehardwareofthissystemistheUSB2010DataCollectionCard,whichisdevelopedbyBeijingArtScienceandTechnologyDevelopmentLimitedCompanyandcompatiblewithUSBBus.ThesoftwareofthissystemiswrittenbyBorlandC++Builder6.0.C++Builder.

Thissystemhasthemainfunctionsasthefollowing:

datacollectionforpassages,processingdataintime,showingdataintime,datacontrast,depositdataandseeingearlydataandsoon.

Thispapersummarizesthedevelopmentofinteriorandoverseasdatacollectionatfirst.Following,itintroducestheUSB2010DataCollectionCardandBorlandC++Builder6.0programlanguage.Afterwards,itanalysestheprocessingwayforsoundsignal.Thelastofthepaperisthekeysandinstructionofthisprogram.

KeyWords:

BorlandC++Builder6.0;DataCollection;Passages

 

第一章前言

1.1引言

数据采集是从一个或多个信号获取对象信息的过程。

随着微型计算机技术的飞速发展和普及,数据采集监测已成为日益重要的检测技术,广泛应用于工农业等需要同时监控温度、湿度和压力等场合。

数据采集是工业控制等系统中的重要环节,通常采用一些功能相对独立的单片机系统来实现,作为测控系统不可缺少的部分,数据采集的性能特点直接影响到整个系统。

1.2课题背景

随着工、农业的发展,多路数据采集势必将得到越来越多的应用,为适应这一趋势,作这方面的研究就显得十分重要。

在科学研究中,运用数据采集系统可获得大量的动态信息,也是获取科学数据和生成知识的重要手段之一。

总之,不论在哪个应用领域中,数据采集与处理将直接影响工作效率和所取得的经济效益。

1.2.1数据采集的国内外现状

现代工业生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、图像处理等一些高速、高精度的测量中,需要进行高速数据采集。

现在通用的高速数据采集卡一般多是PCI卡或ISA卡,存在以下缺点:

安装麻烦、价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。

1.2.2数据采集技术发展趋势

 随着计算机技术的迅速发展,对外部总线速度的要求越来越高。

通用串行总线(UniversalSerialBus,即USB总线)凭借其即插即用、热插拔以及较高的传输速率等优点,成为PC机与外设连接的普遍标准。

在许多便携式电脑上,已经找不到RS-232接口。

USB将成为数据采集卡的主流接口。

关于这一点,可参见[1]。

1.3本设计所做的工作

本设计采用的硬件为USB2010数据采集卡,针对此采集卡进行PC软件的编写(编程语言:

BorlandC++Builder6.0)。

软件实现数据处理、数据显示、数据存储、数据查询、数据对比等主要功能。

第二章USB2010数据采集卡概述

2.1USB2010数据采集卡简介

USB2010数据采集卡是阿尔泰公司产品,是USB总线兼容的数据采集板[2],可经USB电缆接入计算机,构成实验室、产品质量检验中心、特别是野外测控、医疗设备等领域的数据采集、波形分析和处理系统,也可构成工业生产过程控制监控系统。

而且它具有体积小,即插即用等特点,因此是便携式系统用户的最佳选择。

2.2性能

∙模拟通道输入数:

32路单端或16路双端输入

∙模拟输入电压范围:

±5V、±10V、0~+10V

∙A/D转换分辨率:

12Bit

∙16路开关量输入

∙16路开关量输出

∙三组计数器供用户使用

2.3技术指标

USB总线,支持USB2.0Full-Speed协议,真正实现即插即用。

2.4应用范围

∙野外测控

∙信号采集

∙医疗设备

2.5组成部分

1、模拟信号输入部分

∙模拟通道输入数:

32路单端或16路双端输入

∙模拟输入电压范围:

±5V、±10V、0~+10V

∙模拟输入阻抗:

100MΩ

∙模拟输入共模电压范围:

>±2V

2、A/D转换电路部分

∙A/D分辨率:

12Bit(4096)

∙非线性误差:

±1LSB(最大)

∙转换时间:

10us

∙系统测量精度:

0.1%

∙A/D采样通过率:

100KHz

3、开关量输入输出部分

∙16路数字量输入、16路数字量输出经过扁平电缆插座XS2引出。

∙数字端口满足标准TTL电气特性:

∙输入TTL电平,吸入电流小于0.5毫安。

∙输出TTL电平,最大下拉电流20mA,上拉电流2.6毫安。

∙数字量输入最低的高电平:

2V

∙数字量输入最高的低电平:

0.8V

∙数字量输出最低的高电平:

3.4V

∙数字量输入最高的低电平:

0.5V

4、定时/计数器

∙定时/计数器:

8253的三个定时/计数器(ECCLK0、ECCLK1、ECCLK2)、门控(ECGATE0、ECGATE1、ECGATE2)及输出(ECOUT0、ECOUT1、ECOUT2)全部由XS2引出。

2.6主要元件位置图

图1主要元器件图

图1为USB2010板的主要跳线位置图,此位置图上跳线设置为出厂标准设置。

设为:

单端输入方式,模拟输入范围±5V。

XS1:

模拟信号输入引线插座。

XS2:

开关量输入、开关量输出、8254接口引线插座。

USB-T:

USB总线连接插座。

RP1:

A/D电路单极性零点调整电位器。

RP2:

A/D电路双极性零点调整电位器。

RP3:

A/D电路满度调整电位器。

XF1、XF2:

模拟电压输入量程选择。

XF3、XF4:

模拟电压输入单端、双端选择。

XS4、XF6:

与用户应用板卡无关,按出厂设置即可。

第一个POWERLED:

 USB2010卡电源指示灯,USB2010与计算机通过USB电缆连接后,此指示灯应亮。

第二个POWERLED:

与POWERLED并联联接,当将USB2010放置于机箱内时,可将其电源指示灯移到机箱上。

EX-VCC:

是预备电源插头。

当USB给板卡供电不足时,由外部供电。

第三章BorlandC++Builder简介

C++Builder是由Borland公司继Delphi之后又推出的一款高性能可视化集成开发工具[3][4]。

C++Builder具有快速的可视化开发环境:

只要简单地把控件(Component)拖到窗体(Form)上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;C++Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件;C++Builder具有一个专业C++开发环境所能提供的全部功能:

快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等。

它实现了可视化的编程环境和功能强大的编程语言(C++)的完美结合。

C++Builder优化的32位原码(NativeCode)编译器建立在Borland公司久经考验的编译技术基础之上,提供了高度安全性、可靠性、快速性的编译优化方法,完全编译出原始机器码而非中间码,软件执行速度大大提高。

在编译和连接过程中,C++Builder自动忽略未被修改的原代码和没有使用的函数,从而大大提高了编译和连接速度。

C++Builder的CPU透视工具包括五个独立的小面板,可以对正在运行程序从内部进行深层次的了解。

另外C++Builder还提供了一个专业开发环境所必需的命令行工具,以帮助建立C++程序或者准备编译和连接的程序进行更精细的控制。

C++Builder可以编译所有符合ANSI/ISO标准的原代码,支持最新ANSIC++/C语言特征:

模板(Templates)、例外(Exceptions)、运行类型信息(RuntimeTypeInformation)、Namespaces等,另外它还可以使用标准C++库且支持标准模板库(STL),以前的所有C++/C原代码可以不经过修改,直接移植到C++Builder环境下来。

C++Builder完全支持32位长文件名、多线程程序设计,且允许程序员直接调用任何Win95和NTAPI函数。

C++Builder的集成开发环境(IDE)提供了可视化窗体设计器、对象观察器、控件板、工程管理器、集成编辑器和调试器等一系列可视化快速应用程序开发(RAD)工具,让程序员可以很轻松地建立和管理自己的程序和资源。

第四章声音信号的处理

4.1对于声音传感器存在的问题

f

图21Db声强不同频率时的传感器测试值

如上图,一般的声音传感器有可能存在这样的问题:

对于测同样为声强1Db的声音信号,在不同频率的时候,测出的声强会有所不同。

假如不进行数据的处理,就会影响到测量结果的准确性。

上图中两点间用直线直接连接,现实中应为一条曲线。

为了处理方便,软件进行数据处理时也近似为直线进行处理。

4.2处理方法(线性化处理)

对于一般的声音测量,用户需告知声音信号的频率,以便软件进行数据处理。

假如用户不知道声音信号的频率,由于USB2010数据采集卡并不能测出声音信号的频率,所以进行线性化处理也就无能为力了。

下面介绍线性化处理的方法。

假设声音信号的频率f,软件就在图中查找f所对应的值,然后将采集的结果除以这个值,就是所得的测量结果。

经过这样的处理,测出的结果将会成为一条直线,更接近真实结果。

这是处理思想,下面是具体处理方法。

当用户输入声音信号的频率和传感器参数后,软件就开始查找f所对应的值。

就以上图为例。

软件首先将f和5进行对比,如果f<5,则声强由第一区间的反向延长计算,由下列公式计算:

声强=(1.3-0.9)/(10-5)*(f-5)+0.9(公式4-1)

如果f>5,再将f和10比较,如果f<10,那么f在区间[5,10]之间,声强就可以通过区间[5,10]的直线进行计算得出。

以此类推,计算出f所对应的值,然后将最后的采集结果除以这个值得出测量结果。

第五章系统软件的设计

5.1USB2010数据采集卡函数的调用

要使用设备的一切功能,则必须首先用CreateDevice函数创建一个设备对象句柄hDevice,有了这个句柄,您就拥有了对该设备的控制权。

然后将此句柄作为参数传递给其他函数,如InitDeviceAD可以使用hDevice句柄以初始化设备的AD部件并启动AD设备,ReadDeviceAD函数可以用hDevice句柄实现对AD数据的采样批量读取,SetDeviceDO函数可用实现开关量的输出等。

最后可以通过ReleaseDevice将hDevice释放掉。

详见[2]。

表格1USB2010设备驱动函数列表

函数名

函数功能

备注

①设备对象操作函数

CreateDevice

创建USB总线的设备对象

ReleaseDevice

关闭设备,且释放USB总线设备对象

AD采样操作函数

InitDeviceAD

初始化USB设备AD部件,准备传数

ReadDeviceAD

连续批量读取USB设备上的AD数据

ReleaseDeviceAD

释放USB设备对象中的AD部件

辅助函数(硬件参数设置、保存、读取函数)

LoadParaAD

从Windows系统中读取硬件参数

SaveParaAD

往Windows系统保存硬件参数

DA输出函数

WriteDeviceDA

DA输出函数

8253计数器操作函数

InitDevCounter

8253初始化函数

GetDevCounterVal

取得计数器值

开关量简易操作函数

SetDeviceDO

开关输出函数

GetDeviceDI

开关输入函数

以上每个函数都省略了前缀“USB2010_”。

如下图,粗虚线表示对称关系。

红虚线表示CreateDevice和ReleaseDevice两个函数的关系是:

最初执行一次CreateDevice,在结束是就须执行一次ReleaseDevice。

绿色虚线InitDeviceAD与ReleaseDeviceAD成对称方式出现。

图3非空查询方式AD采集实现过程

5.2文本框

在这个软件中,不少地方用到了文本框,对于文本框的设置要求有所不同。

对于文本框输入要求的设置都写在OnKeyPress事件里面。

5.2.1整数

整数有0~9构成,另外,一般情况下都是允许删除键的,其键值为8,假如输入其他的键,则不会有效果。

如下:

If(!

((Key>='0'&&Key<='9')||Key==8))

{

ShowMessage("请输入整数!

");//消息函数

Key=0;//消除按其他键发生的动作

}

5.2.2实数

实数里将说明两个问题。

一个是小数点问题,实数至多只有一个小数点,并且它不会在开头出现,需对其进行限制;另外一个是负数问题,负号“-”至多只有一个并且它只会在一个数的开头出现,同样要对它进行限制。

整个函数如下:

if(Edit1->Text==""|Edit1->Text=="-")dot=1;//文本框空或只有负号,小数点可输入

if(!

((Key>='0'&&Key<='9')||Key==8||Key==46||Key=='-'))//46为小数点键值

{

ShowMessage("请输入实数!

");

Key=0;

}

if(Key=='-'&Edit1->Text!

="")Key=0;//只有文本框空的条件下才能输入负号

if(Key==46)

{

if(Edit1->Text==""|Edit1->Text=="-")Key=0;//第一位和负号后不可以为小数点

if(dot==1)dot=0;//小数点输入后至dot为0

elseKey=0;

}

其中,dot为小数点标识,当dot=0时,不可以输入小数点。

5.3滚动条

在软件中,运用滚动条ScrollBar和图表Chart结合实现图表的翻页和实时滚动。

设置滚动条的Max值就可以实现拖动滚动条的滑块来浏览Chart图表的数据。

下面来介绍一下Chart图表的实时滚动。

首先要设置Chart表的BottomAxis项中Automatic的值为false,再设置每页点数MaxPointsPerPage的值(这个软件中设置为25,不过可以在界面的设置里更改它)。

接下来就是程序的书写。

首先是滚动条ScrollBar和图表Chart的连接程序,写在ScrollBar的OnChange事件里面。

将ScrollBar的Max值和图表Chart的横坐标关联起来。

以下为Chart表的实时滚动程序:

if(t/ge[0]>Chart1->MaxPointsPerPage)ScrollBar1->Max=t-Chart1->MaxPointsPerPage;

if(ScrollBar1->Position==ScrollBar1->Max-1)ScrollBar1->Position=ScrollBar1->Max;

其中,数组ge为数据间隔数组。

第一句作用:

当现有的值的个数多于图表每页点数时,算出ScrollBar的Max值。

不然,Max为默认值0。

第二句为当ScrollBar的滑块位置在最大位置的前一个位置时,滑块就向右移一个位置,实现图表的实时滚动。

这样做有一个好处,当用户拖动滚动条的滑块后,图表不会移动,方便观察。

当观察完后,只需将滑块拖至最大位置,图表又可以实时滚动了。

5.4数据处理

数据处理是这个程序的重要部分。

首先是数据的读入,应该注意的是,在上层用户接口中的AD数据读取函数的ADBuffer参数指向的用户缓冲区存放的是16位的数据,而本USB2010模板的AD为12位的,须将原数据高四位屏蔽后进行数据处理。

屏蔽程序为:

Lsb=pADBuffer[0]&0x0FFF

以下为计算机语言换算公式,将数据转化成电压值。

表格2电压与电平转换表

量程(毫伏)

计算机语言换算公式

Volt取值范围mV

±5000mV

Volt=Lsb*(10000/4096)-5000

[-5000,+5000]

±10000mV

Volt=Lsb*(20000/4096)-10000

[-10000,+10000]

0-10000mV

Volt=Lsb*(10000/4096)

[0,+10000]

vo[0]=vo[0]/(Form3->zhi[0]);//zhi为给定频率在传感器上的对应的值

if(vo[0]>=0)StringGrid2->Cells[1][t/ge[0]+6]=FloatToStr(vo[0]).SubString(1,6);

elseStringGrid2->Cells[1][t/ge[0]+6]=FloatToStr(vo[0]).SubString(1,7);//数据的显示

Series1->AddXY(t/ge[0],vo[0],"",clBlue);//数据以曲线显示

以上程序用SubString来规定字符串的长度,以便存储和读取。

5.5数据存储

存储有两个方面:

采集数据的存储和传感器数据的存储。

记录都以文本文档存储,方便查看。

存储方式一致,以采集数据

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1