您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > 通用数据采集系统的设计
通用数据采集系统的设计作者:程建鑫、何玉珠、向复生单位:北京航空航天大学转载:电子测量技术发布时间:2008-11-24引言随着科学技术的发展,数据采集技术已经广泛应用于机械、电子、化工等各个领域,是获取外部世界信息的重要手段。但是专用的数据采集设备价格动辄上万,高速数据采集卡的价格也在千元以上。而且这类设备大多有固定的接口,无法适应千差万别的被测对象的需求。如果被测设备稍加变化,就需要对硬件或是软件做很大调整,不能实现通用测试。本文介绍的数据采集系统核心部分由控制单元、CPLD和A/D转换器构成,能够对多路数字信号和电压信号进行采集分析。再加上转接电路适用于各种接口,而且系统的尺寸上可以根据需要进行剪裁,有较强的通用性。1、硬件原理系统的工作原理如图1所示。外部信号首先接入信号转接板,其功能有两个,一是做信号调理,将外来的信号转换为系统可以处理的信号;二是做信号分类,将外来信号的数字、模拟信号分别接入系统的数字、模拟信号接口。采集时由控制单元向CPLD发出命令,命令分两类,第一类是让CPLD读取数字信号,第二类是写A/D转换器的控制引脚,使之读取模拟信号。电路主要分为3部分,控制单元外围电路,CPLD电路和A/D电路。控制单元外围电路由复位电路,晶振电路和串口通讯电路组成。CPLD主要是将命令获取端口与单片机数据/地址总线相连,控制指令发出端口与A/D模块相连。A/D电路包括数据端口与单片机相连,调零电路。图1系统原理图当读取模拟信号时,控制单元首先向CPLD发出相应命令,CPLD识别该命令后,向A/D模块发出一系列信号对A/D转换器的控制引脚进行编程,A/D转换器收到指令后,从外部读取模拟信号,经过转换,再由控制单元控制CPLD向A/D模块发出读信号,控制单元再将转换好的数据读回,以供处理。2、软件原理软件设计主要分为两部分:控制单元程序设计和CPLD程序设计。控制单元的程序主要是控制整个系统的运行状态。程序设计可分为两种结构,一种是现场采集到数据由控制单元直接处理,或保存下来,以供将来再通串行总线传给PC机进行处理;第二种是由PC机通过串口发送命令来控制系统的运行状态,并将结果直接返回到PC机进行处理,这种结构的流程图如图2所示。CPLD程序由VHDL语言编写,所要实现的功能是通过接收由控制单元发来的指令,从而执行相应的操作,比如读取数字信号端口1的信号,向A/D模块发出开始转换命令或者读取命令。3、应用现在通过具体实例来说明原理在实际中的应用。首先确定系统选择芯片,在此选择飞利浦P89C51单片机作为控制单元,CPLD选择EMP7128,A/D转换器选用12位的AD574。其次确定系统的规模,如果外部数字信号数量较多,一片7128的I/O端口数量不能满足要求的话可以用多片,在本系统中选用两片。如果外部模拟信号不止一路,可以用多路AD574,但是这样做会增加系统体积,同时成本也会上升。我们在此用16选1模拟开关4067来对模拟信号路数进行扩展。图2软件设计流程图接下来需要考虑系统命令传递的格式。由于单片机有如下几个功能:发送数字信号采集命令并指定端口;发送命令到CPLD,使CPLD发出A/D模块的控制信号;控制模拟开关。单片机的P0口为数据/地址复用总线,我们选用P2口的低四位做位功能标识位,并规定1000为数字信号采集命令头,1001为控制A/D模块信号命令头。选择采集端口命令由P0口发出。用KeilC来编写程序,可以使程序很简洁明了。比如读取数字信号端口1的程序:unsignedcharxdataDI1Base_at_0x0801;//0x0801是二进制的100000000001,即是P2口低四位的功能标识位为1000,数字信号采集,P0口标识选择的端口,为通道1unsignedcharData;Data=DI1Base;//首先单片机从P2、P0口发出地址,由CPLD内程序识别该地址,选中相应的1号通道,再将采到的数据从P0口串回单片机,存在Data中printf(Data);//通过此命令可将采到的数据通过串行口传递到上位机做进一步处理为了实现采集目的,CPLD内部程序必须有相应内容与之配合。需要又一个进程再单片机ALE有效时将P2口和P0口合成一个信号Addr,作为单片机指令的接收端口。读数字信号的进程在单片机读信号和Addr变化时激活,P2口为1000说明信号为数字信号采集,P1口为端口选择,系统中2片CPLD根据Addr中的后8位来确定哪片处于工作状态。若要采集模拟信号,CPLD中还需加入写A/D574控制端口的进程。当Addr前4位,即P2口低4位为1001时,发出信号使AD574片选端有效,其余命令片选端无效。同样,还需要一个进程控制使能端,模拟开关的片选和模拟开关的通道选择端,这个进程的命令Addr的前4位都是1001,因为都是对模拟信号通道进行操作,区分在P0口的8位。在单片机中,使用P1口的3个管脚做位AD574的2个控制端和1个状态端,分别是A0,R/和STS。单片机读取一次模拟信号的程序如下:unsignedcharxdataAD574Base_at_0x0900;unsignedcharxdataSwitchBase_at_0x0901;unsignedcharxdataSwitchport_at_0x0902;SwitchBase=1;//打开模拟开关SwitchProt=1;//选择通道1RC=0;//设置AD574为转换状态AD574Base=0;//启动转换while(STS==1);//等待转换结束RC=1;//设置AD574为读取状态result[0]=AD574Base;//取得结果的高8位for(i=0;i8;i++);//延时A0=1;//取得转换结果的低4位for(i=0;i8;i++);//延时result[1]=AD574Base;//取得结果的低4位,以上详述了核心程序的的原理,在使用上还需对其进行封装,将采集数字信号的程序封装在函数Signal_DI(int)中,采集模拟信号的函数封装在Signal_AD(int)中,需要说明的是在实际应用中,为了保证采集的准确性,可循环采20次或更多,然后取平均值。两个函数中的参数均为通道选择项。至此,原理部分已经完成。在使用时可根据需要来调用。如果在没有PC机的场合使用,需将采集流程写于主函数中,如果有PC机在场,可在主函数中定义关键字,然后接收串口信号,根据串口传来的关键字来调用函数,再将结果返回给PC机。4、总结实践表明在具体应用中本系统能够对多路数字信号和-10V~+10V的模拟电压进行正确采集。对于各种信号类型和信号接口,只需对信号转接板做相应调整,主要的硬件和软件均不需改动。因此,对于速度和精度要求不十分高的场合,本系统具有很强的通用性。参考文献[1]谷郑春.基于CPLD和单片机的爆轰波数据采集系统设计[D].南京:南京理工大学,2004.[2]李庆,亓科,于敬芬.基于CPLD与单片机的多路高精度数据采集系统设计[J].海军工程大学学报,2007,19(3):62-65.[3]徐圣龙.基于PC的多通道数据采集分析系统[J].仪表技术,2007(6):51-53.[4]伍道明.基于单片机的数据采集与控制系统[J].化工职业技术教育,2006(3):26-29,33.[5]任艳霞,刘明光,史雪明.一种简单通用的数据采集实用方法[J].电气应用,2007,26(7):98-100.[6]李自红,张炜,贾丽娟,等.基于单片机高速数据采集系统的设计实现[J].仪表技术,2007(7):35-36.[7]曹莹,李英道.基于MCS-51单片机的风压监测数据采集系统的设计[J].安徽电子信息职业技术学院学报,2007,6(4):93-94.[8]肖汉敏,冯毅.串行通信在实施数据采集中的应用[J].微计算机信息,2007,23(5S):104-105.[9]袁亮,古天祥.基于CPLD的多路全并行连续数据采集技术研究[J].电子测量与仪器学报,2006,20(1):56-59.[10]刘蕾,江洁,张广军.基于CPLD的线阵CCD的驱动及数据采集[J].电子测量与仪器学报,2006,20(4):107-110.[11]章筱静,陈明,秦波.CPLD与16C554在航空发动机参数采集器中的应用研究[J].电子测量技术,2007,30(7):97-100
本文标题:通用数据采集系统的设计
链接地址:https://www.777doc.com/doc-4278564 .html