《基于LabVIEW和单片机的虚拟温度检测系统设计(共47页).doc》由会员分享,可在线阅读,更多相关《基于LabVIEW和单片机的虚拟温度检测系统设计(共47页).doc(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 1 引 言1.1 设计背景随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。LabVIEW是一个划时代的图形化编程系统,应用于数据采集与控制、信号分析等方面,它为不熟悉文本语言编程的专业科技工作者在测控领域建立计算机仪器系统虚拟仪器,提供了一个便捷、轻松的图形化设计环境。由于其灵活、简单易用、开发效率高等特点,正逐渐成为科技工作者
2、进行仪器应用与开发的得力工具。数据采集是开发过程中一个重要的环节,采用以8位单片机STC89C51作为前端数据采集,通过串口进行与LabVIEW的数据通讯,就可实现低成本、灵活方便、接口简单的数据采集系统1。这对于许多信号频率不是太高的场合,此方案无疑非常便利。本文所介绍的就是这样一种利用LabVIEW 对STC89C51的数据进行分析处理,并通过串口实现二者之间的数据交换、经济实用的数据采集。1.1.1 温度的研究背景 传统靠人工控制的温度、湿度、液位等信号的测压力控系统,外围电路比较复杂,测量精度较低,分辨力不高,需进行温度校准(非线性校准、温度补偿、传感器标定等);且它们的体积较大、使用
3、不够方便,更重要的是参数的设定需要有其它仪表的参与,外界设备多,成本高,因而越来越适应不了社会的要求。在对多类型、多通道信号同时进行检测和控制中,传统的测控系统能力有限。如何将计算机与各种设施、设备结合,简化人工操作并实现自动控制,满足社会的需求,成为一个很迫切的问题。温度检测是现代检测技术的重要组成部分,在保证产品质量、节约能源和安全生产等方面起着关键的作用。由单片集成电路构成的温度传感器的种类越来越多,测量的精度越来越高,响应时间越来越短,因其使用方便、无需变换电路等特点已经得到了广泛的应用。随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生产的自动控制系统开始进入了人们的
4、生活,以单片机为核心的温度采集系统就是其中之一。同时也标志了自动控制领域成为了数字化时代的一员。它实用性强,功能齐全,技术先进,使人们相信这是科技进步的成果。温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用2。随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。1.1.2 国内外发展现状 虚拟仪器技术是仪器技术和计算机技术深层次相结合的产物。从20世纪80年代,虚拟仪器逐渐为工业界和学术界所认可。经
5、过了近20年的发展,它已经成为21世纪测试技术和仪器技术发展的主要发现。所谓虚拟仪器(Virtuallnstrument,简称),就是用户在通用计算机平台上,根据需求定义和设计仪器的测试功能,使得使用者在操作这台计算机时,就像是在操作一台他自己设计的测试仪器一样。虚拟仪器概念的出现,打破了传统仪器由厂家定义,用户无法改变的工作模式,使得用户可以根据自己的需求,设计自己的仪器系统。在测试系统和仪器设计中尽量用软件代替硬件,充分利用计算机技术宋实现和扩展传统测试系统与仪器的功能。“软件就是仪器”是虚拟仪器概念最简单,也是最本质的表述3。VI技术的发展和应用源于1986年美国NI公司设计的LABVI
6、EW。这是一种基于图像的开发、调试和程序的集成开发环境,实现了VI的概念。它的出现,使用户可以自己定义仪器,灵活地设计仪器系统,满足多样化的实际需求。随着虚拟仪器技术软件开发平台及硬件的发展,基于虚拟仪器的测试系统开发周期缩短,费用降低,测试速度、准确度及可复用性提高,且更便于维护和扩展。目前国内外这种软件主要有美国DSP公司的DADISP软件,和以实验后数据处理分析和表示见长的美国NI公司的系列虚拟仪器开发平台。美国UATECH公司的DASLab软件包和惠普公司的VEE软件平台,它们都是可以搭建虚拟测试系统的软件平台,以图形化编程和界面灵活见长。华中理工大学的VI98虚拟仪器系统和哈尔滨工业
7、大学的仪器王以虚拟的单个仪器或仪器库见长。其中,美国NI公司的LabVIEW软件功能最为完善,LabVIEW软件以简单、直观的图形化编程方式、强大的图形显示和数据处理能力见长,运行速度快、开发周期短、界面灵活是其又一大优势,所以基于LabVIEW的虚拟仪器应用相当广泛。虚拟仪器作为新兴的仪器仪表,用户可以定义其结果和功能,构建灵活,转变容易,因此它在各个领域都得到广泛的应用。国内单位和院校正加紧步伐研究和开发自己的虚拟仪器系统。中国国防科技大学进行了虚拟数字示波器的设计研究,其结果与HP公司的双通道台式数字存储示波器HP54603B相比,增加了频域分析,测试结果和波形直接打印输出等功能。东方振
8、动和噪声技术研究所研制成了INV303/306智能信号自动采集处理分析仪系统,并推出了DASP软件;重庆大学开发了虚拟实时噪声倍频程分析仪,实现了对噪声总声压级、各种记权声压级及相应倍频程的实时测量和分析;清华大学利用虚拟仪器技术构建汽车发动机检测系统,用于汽车发动机出厂前的自动检测。虚拟仪器已经在超大规模集成电路测试,现代家用电器测试以及军事、航天、工厂测试等领域得到应用4。1.2 温度检测系统设计研究的意义温度是生产过程和科学实验中普遍而且重要的物理参数,随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。特别是近年来,温度控制系统已应用到人
9、们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。针对这种实际情况,设计一个温度检测系统,具有广泛的应用前景与实际意义。温度是一个重要的物理量,它反映了物体冷热的程度,与自然界中的各种物理和化学过程相联系。在工、农业生产和日常生活中,各个环节都与温度紧密相联,温度的准确监测及控制占据着极其重要地位。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行等。没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。可见,温度的测量和控制是非常重要的5。1.3 温度检测系统的设计
10、方案本论文大致包括两部分,labview部分(上机部分)和单片机部分(下机部分)。上机部分包括labview人机交换页面和温度采集,显示和报警等方面,主要是将采集到得温度显示出来,并与设置的温度上下限相比较,进而启动警报。下机部分主要完成温度的采集。需要通过单片机驱动温度传感器,采集当前温度,并通过串口通信将温度传给labview温度采集平台。2 温度检测系统设计思路2.1 温度检测系统工作原理基于LabVIEW和DS1820的温度测试系统可分为上位机和下位机两部分。上位机采用LabVIEW编程,PC通信自带串行口,和单片机进行串口通信;下位机选用51系列单片机,C语言编程,单片机外围电路将采
11、集到的温度信息传给单片机,单片机再将其传导上位机。上位机部分是利用LabVIEW开发环境设计PC机上位机的监控界面,上位机通过串行口与下位机的单片机通信,从而实现对过程参数的测量和采集。该温度检测系统设计简单,简化了系统与硬件结构,并且易于修改,具有很好的可扩展性6。系统组成框图如图2.1。 图2.1 系统组成框图上位机主要包括串口通信程序、温度预警系统、数据存储。上位机程序组成框图入图2.2所示。图2.2 上位机程序组成框图下机位则是驱动DS18B20,进行数据的采集,而后将采集到的数据通过串口通信传给上机位。2.2 温度检测系统的运行步骤温度提取:从传感器出来的信号要经过单片机才能送至计算
12、机中进行数据的采集,所以在本次设计中单片机是不可或缺的一部分,它起到了连接纽带的作用。从传感器出来的信号接到单片机的输入口。利用C语言编程,使得单片机将温度传感器的温度信号转换为数字量。温度采集:将单片机输出的温度进行采集,并通过labview的图表将得到的温度实时显示在上面,从而发现规律以便以后的使用。温度处理:单片机传入到计算机里的数据就需要进行采集处理了。因为此温度系统的核心其实就是利用这一系统能够根据温度的变化给出相应的处理,比如说外部温度比设定的温度高,那么我就需要降低温度,反之,则需要升高温度,因此对得到的温度进行相应的处理是这个系统的核心部分。利用labview将采集到的温度与设
13、定值进行比较,来判断警报灯是否显示警报。温度存储:当警报灯发出警报时,利用labview的表格将超过预定值得温度记录下来,以便查看该情况是否由于意外造成,还是系统发生故障7。3 温度检测系统硬件设计方案温度检测系统使用到的硬件有单片机89C51和温度传感器(DS18B20)。3.1 单片机3.1.1 单片机概述单片机也被称作“单片微型计算机”、“微控制器”、“嵌入式微控制器”。单片机一词最初是源于“Single Chip Microcomputer”,简称SCM。随着SCM在技术上、体系结构上不断扩展其控制功能,单片机已不能用“单片微型计算机”来表达其内涵。国际上逐渐采用“MCU”(Micro
14、 Controller Unit)来代替,形成了单片机界公认的、最终统一的名词。为了与国际接轨,以后应将中文“单片机”一词和“MCU”唯一对应解释。在国内因为“单片机”一词已约定俗成,故而可继续沿用8。3.1.2 STC89C51单片机简介STC89C51是宏晶科技公司生产的低电压,高性能的CMOS8位单片机片内4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。AT89C51单片机可为你提供许多高性价
15、的应用场合,可灵活的应用于各种控制领域。图3.1 单片机AT89C51主要性能参数:与MCS-51产品指令系统的全兼容 4k字节可重擦写Flash闪速存储器1000次可擦写周期全静态操作:0Hz-24MHz三级加密程序存储器1288字节内部RAM 32个可编程I/O口线2个16位定时/计数器6个中断源可编程串行UART通道低功耗空闲和掉电模式 STC89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件
16、的可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,窜行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但震荡器停止工作并禁止所有部件工作直到下一个硬件复位9。3.2 单片机的串行通信MCS-51单片机内部有一个全双工的串行接收和发射缓冲器(SBUFF),这两个在物理上独立的接收发射器,即可以接收也可以发射数据,但接收缓冲器只可以读出不能写入,而发送缓冲器只能写入不能读出,它们的地址是99H。这个通信口即可以用于网络通信,亦可以实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可以方便的构成标准的RS-232接口10。下
17、面我们分别介绍。3.2.1 基本概念数据通信的传输方式:常用于数据通信的传输方式有单工、半双工、全双和工方式。A 单工方式:数据仅按一个固定的方向传送。因为这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。B 双工方式:数据可以实现双向传送,但不能同时进行,实际的应用采用某种协议实现收发开关转换。C 全双工方式:允许双方同时进行数据双向传送,但一般全双工电路的线路和设备比较复杂。D 多工方式:以上三种传输方式都是同一线路传输一种频率信号,为了充分的利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分、或码分复用技术,即可实现在同一线路上资源共享功能,我们称之为
18、多工传输方式。串行通信的两种通信形式A. 异步通信 在这种通信方式中,接收器和发射器有各自的时钟,他们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,紧接着是若干个数据位,图 是传输45H的数据格式。B. 同步通信 同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步传输中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送的数据量较大的C. 串行数据通信的传输速率:串行数据传输率有两个概念,既美秒传送的位数bps(Bit per second)和每秒符号数-波特率(Band rate),在具有调治解调器的通信中,波特率与调治速率有关。3.2
19、.2 MCS-51的串行和控制寄存器3.2.2.1 串行口和控制寄存器MCS-51单片机串行口专用寄存器结构如下。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发射器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99H)。MCS-51的串行数据传输很简单,只要向缓冲器写入数据就可发送数据。而从接收缓冲器读出数据既可接收数据。此外,接收缓冲器前还加上一级输入移位寄存器,MCS-51这种结构的目的在于接收数据时避免发生重叠现象,文献称这种结构为双缓冲结构。而发送数据就不需要这样设计,因为发送时,CPU是主动的,不可能出现这种情况。A:串行通信寄存器在上一节我
20、们已经分析了SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据通信的控制,单元地址是98H,其结构格式如下:表3.1 SCON寄存器结构表1 寄存器SCON结构SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH8DH9CH9BH9AH99H98H下面我们对个控制位功能介绍如下:(1)SM0、SM1:串行口工作方式控制位 SMO SM1 工作方式 功能说明 0 0 方式0 移位寄存器方式(用于I/O扩展) 0 1 方式1 8位UART,波特率可变(T1溢出率/ n) 1 0 方式2 9 位UART,波特率为fosc/64或fosc/3
21、21 1 方式3 9位UART,波特率可变(T1溢出率/ n) (2)SM2:多机通信控制位多机通信是工作方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收的前8位数据送入SBUF,且置位RI发出中断申请,否则会将收到的数据放弃。当SM2=0时,只有在接收到有效停止位时才启动RI,若没接收到有效停止位,则RI清“0”。在方式0中SM2应该为“0”。REN:允许接收控制位。由软件置“1”时,允许接收;软件置“0”时,不许接收。TB8:在方式3和方式3中要发送的第9位数据,需要时用软件置位和清零。TB
22、8:在方式2和方式3中是接收到的第9位数据。在方式1时,如SM2=0,RB8接收到的停止位。在方式0中,不使用RB8。TI:发送中断标志。由硬件在方式0发送完第8位时置“1”,或在其它方式中串行发送停止位的开始时置“1”。必须由软件清“0”。RI:接收中断标志。由硬件在方式0串行发射第8位结束时置“1”B:特殊功能寄存器PCONPCON:主要是是CHMOS型单片机的电源控制而设置的专用寄存器,单元地址为87H其机构格式如下表:表3.2 特殊功能寄存器PCON PCOND7D6D5D4D3D2D1D0位符号SMODGF1GF0PDIDL在CHMOS型单片机中,除SMOD位外其它位均为虚设的,SM
23、OD是串行波特率倍增位,当SMOD=1时串行口波特率加倍,系统复位默认为SMOD=0。C:中断允许寄存器IE中断允许寄存器这里重述一下对串行口有影响的位ES。ES为串行中断允许控制位,ES=1允许串行中断,ES=0,禁止串行中断。3.3.2.2 串行口工作方式串行口具有4种工作方式,我从应用和毕业设计的角度,重点讨论方式1发送。串行口定义为方式1时传送1帧数据为10位,其中1位起始地址、8位数据位(先低位后高位)、1位停止位方式1的波特率可变,波特率=(T1的溢出率)11.12.13。表3.3 中断允许寄存器符号EAESET1EX1ETOEX0位地址AFHAEHADHACHABHAAHA8HA
24、8H3.3 DS18B20温度传感器简介3.3.1 温度传感器的历史及简介温度的测量是从金属(物质)的热胀冷缩开始。水银温度计至今仍是各种温度测量的计量标准。可是它的缺点是只能近距离观测,而且水银有毒,玻璃管易碎。代替水银的有酒精温度计和金属簧片温度计,它们虽然没有毒性,但测量精度很低,只能作为一个概略指示。不过在居民住宅中使用已可满足要求。在工业生产和实验研究中为了配合远传仪表指示,出现了许多不同的温度检测方法,常用的有电阻式、热电偶式、PN结型、辐射型、光纤式及石英谐振型等。它们都是基于温度变化引起其物理参数(如电阻值,热电势等)的变化的原理。随着大规模集成电路工艺的提高,出现了多种集成的
25、数字化温度传感器14。3.3.2 DS18B20的工作原理3.3.2.1DS18B20工作时序根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:1. 每一次读写之前都必须要对DS18B20进行复位;2. 复位成功后发送一条ROM指令;3. 最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1560微秒左右后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。其工作时序包括初始化时序、写时序和读时序,具体工作方法如图3.2,3.3,3.4所示15。(1) 初始化时序
26、图3.2 初始化时序总线上的所有传输过程都是以初始化开始的,主机响应应答脉冲。应答脉冲使主机知道,总线上有从机设备,且准备就绪。主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。接着主机释放总线,4.7K上拉电阻将总线拉高,延时1560us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时480us。(2) 写时序图3.3 写时序 写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,都是以总线拉低开始。写1时序,主机输出低电平,延时2us,然后释放总线,延时60us。写0时序,主机输出低电平,延时60us,然后释放总线
27、,延时2us。(3) 读时序图3.4 读时序总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us。3.4.2.2 ROM操作命令当主机收到DSl8B20 的响应信号后,便可以发出ROM 操作命令之一,这些命令如表3.4:ROM操作命令。表
28、3.4:ROM操作命令。指令约定代码功能读ROM33H读DS18B20 ROM中的编码符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单线总线上与该编码相对应的DS18B20 使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作告警搜索命令0ECH执行后,只有温度超过设定值上限或者下限的片子才做出响应温度变换44H启动DS18B20进行温度转换,转换时间最长为500MS,结果存入内部9字
29、节RAM中读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的第3,4字节写上、下限温度数据命令,紧跟读命令之后,是传送两字节的数据复制暂存器48H将E2PRAM中第3,4字节内容复制到E2PRAM中重调2PRAM0BBH将E2PRAM中内容恢复到RAM中的第3,4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”3.3.3 DS18B20的测温原理3.4.3.1 DS18B20的测温原理每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM 中。主机在进入操作程序前必须
30、用读ROM(33H)命令将该DSl8B20的序列号读出。程序可以先跳过ROM,启动所有DSl8B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DSl8B20的温度数据。DS18B20的测温转换时间表如图2.4所示,表24 DS18B20温度转换时间表R1R0分辨率/位温度最大转向时间/ms00993.750110187.510113751112750图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振
31、荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2.3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器
32、的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值. 另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。减法计数器斜坡累加器减到0减法计数器预 置低温度系数振 荡 器高温度系数振 荡 器计数比较器预 置温度寄存器减到0图34 测温原理内部装置3.4.3.2 DS18B20的测温流程初始DS18B20跳过ROM匹配温度变换延时1S跳过ROM匹配读暂存器转换成数码图3.5 DS18B20测温流程3.4
33、温度测试系统工作流程图系统程序主要包括主程序,读出温度子程序。1)主程序主程序的主要功能是负责经子程序传来的温度送入缓冲区中,并构建起与电脑的串口通信,将温度传送给电脑。采集到的温度每一分钟发送一次,其程序流程见图5.1所示。发送到串口图5.1 主程序流程图2)读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。此程序中包括DS18B20的初始化,读取DS18B20采集到得温度,校验温度,设置温度采集的上下限(保护DS18B20)。DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,
34、要注意读进来的是高位在后低位在前,共有12位数,小数4位,整数7位,还有一位符号位。本次只读取温度的整数部分。并且在采集温度过程中DS18B20的每秒采集一次。DS18B20初始化跳过ROM匹配命令写入子程序温度转换命令写入子程序校验温度设置温度上限 图5.2 读出温度子程序3)全部程序。在程序中使用到了大量辅助的程序,以保证程序的正确运行,如延时函数就有三种不同的形式出现,在此就不具体陈述。主程序见附录I,读取温度程序见附录;4 温度测试系统程序设计4.1 虚拟仪器National Instruments(美国国家仪器有限公司)在业界率先提出“虚拟仪器”(Virtual Instrument
35、ation)概念至今已有20年了。在这20年里,NI逐步改变了全世界工程师和科学家们对于测量和自动化的方法。今天,全世界的工程师和科学家们正在成千上万个应用系统中使用“虚拟仪器技术”,从而达到缩短开发时间、提高产品品质并降低生产成本的共同目的。同时,虚拟仪器技术也正逐渐趋于成熟和完善的境界16。 虚拟仪器系统的基本构架包括功能强大的软件、模块化的测量硬件及标准商业科技(如个人计算机和网际网络)。虚拟仪器技术包含了专为控制应用设计的软件及针对不同频率与精确度范围的通用测量硬件,因此,工程师可以在测试或控制应用中自行定义测量功能。这些软硬件工程工具能紧密地与开放式的商业计算机平台整合使用,充分利用
36、不断进步的计算机科技以获取高效率、高性能及低成本的利益。同时,其应用范围极其广泛,从汽车到消费电子,从石油到燃料能源,横跨数百个工业领域。 随着莫尔定律的持续发展及个人计算机技术的日新月异,虚拟仪器系统的功能也越来越强大。个人计算机的内存、影像处理、输入输出及中央处理单元的性能每年都在提高,而这些技术都有利于“虚拟”的测量和自动化系统的发展。从15年前个人计算机的出现至今,其性能已提高了1000倍,而其价格却不断地下降,因此,这些功能强大、性能可靠、成本低廉的计算机系统被广泛应用到实验室的产品研发及生产线上产品的制程中。个人计算机的不断发展进步不仅使得虚拟仪器系统成为一种低成本、高弹性的解决方
37、案,更大大提升了企业生产率,而这是传统独立的仪器设备所无法比拟的优势。 4.2 LabVIEW的开发虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW17。虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。PC机出现以后,仪器级的计算机化成为可能,甚至在Microsoft公司的Windows诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0以前的版本。对虚拟仪器和LabVIEW长期、
38、系统、有效的研究开发使得该公司成为业界公认的权威。目前LabVIEW的最新版本为LabVIEW8.6,LabVIEW 8.6为多线程功能添加了更多特性,这种特性在1998年的版本5中被初次引入。使用LabVIEW软件,用户可以借助于它提供的软件环境,该环境由于其数据流编程特性、LabVIEW Real-Time工具对嵌入式平台开发的多核支持,以及自上而下的为多核而设计的软件层次,是进行并行编程的首选。LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句
39、和指令的先后顺序决定程序的执行顺序,而LabVIEW则采用数据流编程方式,程序框图中节点之间的数据决定了程序的执行顺序。他用图标表示函数,用连线雕饰数据流向18。LabVIEW提供很多外观与传统仪器(如示波器,万用表)类似的控件,可用来方便地创建用户界面。用户界面在LabVIEW中称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码,又称G(Graphisc)代码。LabVIEW的图形化源代码在某种程度上类似于数据流程图,因此又被称作程序框图代码。前面板上的每一个控件对应程序框图中的一个对象,当数据“流向”该控件时,控件就会根据自己的特性以一定的方式显示数据例如
40、开关,数字和图形。LabVIEW程序被成为VI(Virtual Instrument),即虚拟仪器,这是因为它的很多界面控件与操作都模拟了现实世界中的仪器,例如示波器与万用表。LabVIEW的核心概念就是“软件即是仪器”,即虚拟仪器的概念。LabVIEW还包含了大量的工具与函数用于数据采集、分析、显示与存储。这些工具都是向导式的工具,用户只需要一步步按照提示就可以实现与仪器的连接和参数的设置。而程序员也不用去记忆这些大量的函数,因为这些函数都以图标与名称的形式存在于一个小小的函数面板上,当然要用到某个函数时把它从函数面板上拖到程序框图中就可以了。这一切都是图形化带来的好处19.20。4.2.1
41、 LabVIEW的作用由于LabVIEW可以用来创建通用的应用程序,因此被成为一种通用的编程语言。但是它在测试、测量和自动化等领域具有更大的优势,因为LabVIEW提供了大量的工具与函数用于数据采集、分析、显示和存储。同时他还提供了大量常用于自动化测试测量领域的图形控件。这使得用户可以在数分钟内完成一套完整的从仪器连接、数据采集到分析、现实和存储的自动化测试测量系统。因此它被广泛的应用于汽车、通信、航空、半导体、电子设计生产、过程控制和生物医学等各个领域,涵盖了从研发、测试、生产到服务的产品开发所有阶段。今天欧美的许多高校非计算机专业的学生选修G语言并用它开发应用的软件的人已经超过C等文本语言
42、。近年来我国高校G语言教学实践正在迅速开展。LabVIEW不仅可以用来快速搭建小型自动化测试测量系统,还可以用来开发大型的分布式数据采集控制系统。在美国Lawrence Livermore国家实验室,一共花费了2000万美金的极为复杂的飞秒激光切割系统就是基于LabVIEW开发的。该系统中,4台Windows NT 工作站用网络连接起来,LabVIEW用来给激光提供测量、控制和自动程序,同时作为半熟练操作者的高层用户界面。几乎安装了所有类别的I/O硬件:DAQ、GPIB、串口、远程控制SCXI、VME/VXI以及IMAQ成像。由于这个项目的极端重要性,因此本项目采取了正式的软件质量保证过程。软
43、件开发总共用了4个年度,创建了约600个VI。4.2.2 LabVIEW的优点选择LabVIEW开发测试和测量用程序的一大决定性因素是其开发速度。通常,使用LabVIEW开发应用系统的速度比使用其他编程语言快410倍。这一惊人速度背后的原因在于LabVIEW易用易学,它所提供的工具使创建测试和测量应用变得更为轻松21。LabVIEW的具体优势主要体现在以下几个方面。(1)提供了丰富的图形化控件,并采用图形化的编程方法,彻底把工程师们从负责苦涩的文本编程中解放出来。(2)内建的编译器在用户编写程序的同时就在后台自动完成了编译。因此用户在编写程序的过程中如果有错误,它会被立即显示出来。(3)由于采
44、用数据流模型,它实现了自动的多线程,从而能充分利用处理器尤其是多处理器的处理能力。(4)通过DLL、CIN节点、ActiveX、.NET或MATLAB脚本节点等技术,可以轻松实现LabVIEW与其它编程语言混合编程。(5)通过应用程序生成器可以轻松地发布EXE、动态链接库或安装包。(6)LabVIEW提供了大量的驱动与专用工具,几乎能与任何借口硬件轻松连接。(7)LabVIEW内建了大量600多个分析函数,用于数据分析和信号处理。(8)NI同时提供了丰富的附加模块,用户与扩展LabVIEW在不同领域中的应用,例如实时模块、PDA模块、FPGA模块、数据记录与监控(DSC)模块、机器视觉模块与触
45、摸屏模块。4.2.3 LabVIEW的起源与发展历程早在20世纪80年代初引入计算机之前,几乎所有使用可编程一起的实验室都通过专门的仪器控制器用于控制他们的测试系统。这些价格昂贵而且功能单一的控制器通过一个必备的端口控制使用IEEE-488总线(即GPIB总线)的仪器。到了1983年,随着个人计算机的出现,National Instruments公司成为个人计算机GPIB硬件接口的主要供货商。然而当时用于控制仪器的软件变现不太好,当几乎100%的仪器控制程序都是用BASIC语言开发的。虽然BASIC有一定的优势,例如简单、可读性强的指令集以及可互交功能等,但是它存在一个根本性的问题:像其他文本
46、编程语言一样,如果要通过计算机控制仪器,无论是科学家、工程师还是技术人员都必须懂的编程。他们必须把他们的应用软件和仪器使用的知识转化为文本,而这种过程多半是繁重而单调乏味的,尤其是对那些从来没有编程经验的人来说。National Instruments公司有一个专门致力于开发出一种用于开发仪器软件程序的工具,以减轻仪器编程工作压在工程师和科学家身上的负担,但是他们当时并没有一个具体明确的概念。当1984年苹果公司推出了Macintosh计算机之后,情况出现了重要的转机。他们看到了这台小机器上的图形化特性后,就知道“图形化”就是他们今后要走的道路。因为相对于输入一串串的命令进行操作,人们使用鼠标和图形化界面时所发挥的创造力和高效率是前所未有的。图形化前面板是人与测量程序互交的最佳途径。前面板与实际仪器的面板十分相似,实际上,这些程序就是虚拟仪器。1985年6月他们开始编写程序代码,到10月完成了原型。1986年正式宣布了LabVIEW的诞生,同时NI的名字首次出现在杂志封面上。不过他们低估了后期调试所耗费的大量时间,因此直到1986年10月LabVIEW 1.0才正式