基于LabVIEW和单片机的虚拟温度检测系统设计_第1页
基于LabVIEW和单片机的虚拟温度检测系统设计_第2页
基于LabVIEW和单片机的虚拟温度检测系统设计_第3页
基于LabVIEW和单片机的虚拟温度检测系统设计_第4页
基于LabVIEW和单片机的虚拟温度检测系统设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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年代,虚拟仪器逐渐为工业界和学术界所认可。经过了近20年的发展,它已经

5、成为21世纪测试技术和仪器技术发展的主要发现。所谓虚拟仪器(virtuallnstrument,简称),就是用户在通用计算机平台上,根据需求定义和设计仪器的测试功能,使得使用者在操作这台计算机时,就像是在操作一台他自己设计的测试仪器一样。虚拟仪器概念的出现,打破了传统仪器由厂家定义,用户无法改变的工作模式,使得用户可以根据自己的需求,设计自己的仪器系统。在测试系统和仪器设计中尽量用软件代替硬件,充分利用计算机技术宋实现和扩展传统测试系统与仪器的功能。“软件就是仪器”是虚拟仪器概念最简单,也是最本质的表述3。vi技术的发展和应用源于1986年美国ni公司设计的labview。这是一种基于图像的开

6、发、调试和程序的集成开发环境,实现了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 controller u

14、nit)来代替,形成了单片机界公认的、最终统一的名词。为了与国际接轨,以后应将中文“单片机”一词和“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。下面我们分别介绍。3.2.1

17、 基本概念数据通信的传输方式:常用于数据通信的传输方式有单工、半双工、全双和工方式。a 单工方式:数据仅按一个固定的方向传送。因为这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。b 双工方式:数据可以实现双向传送,但不能同时进行,实际的应用采用某种协议实现收发开关转换。c 全双工方式:允许双方同时进行数据双向传送,但一般全双工电路的线路和设备比较复杂。d 多工方式:以上三种传输方式都是同一线路传输一种频率信号,为了充分的利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分、或码分复用技术,即可实现在同一线路上资源共享功能,我们称之为多工传输方式。串行通信的两

18、种通信形式a. 异步通信 在这种通信方式中,接收器和发射器有各自的时钟,他们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,紧接着是若干个数据位,图 是传输45h的数据格式。b. 同步通信 同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步传输中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送的数据量较大的c. 串行数据通信的传输速率:串行数据传输率有两个概念,既美秒传送的位数bps(bit per second)和每秒符号数-波特率(band rate),在具有调治解调器的通信中,波特率与调治速率有关。3.2.2 mcs-51的串行和

19、控制寄存器 串行口和控制寄存器mcs-51单片机串行口专用寄存器结构如下。sbuf为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发射器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99h)。mcs-51的串行数据传输很简单,只要向缓冲器写入数据就可发送数据。而从接收缓冲器读出数据既可接收数据。此外,接收缓冲器前还加上一级输入移位寄存器,mcs-51这种结构的目的在于接收数据时避免发生重叠现象,文献称这种结构为双缓冲结构。而发送数据就不需要这样设计,因为发送时,cpu是主动的,不可能出现这种情况。a:串行通信寄存器在上一节我们已经分析了scon控制寄

20、存器,它是一个可寻址的专用寄存器,用于串行数据通信的控制,单元地址是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/321 1 方式3 9位ua

21、rt,波特率可变(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位数据,需要时用软件置位和清零。tb8:在方式2和方式3中是接

22、收到的第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位外其它位均为虚设的,smod是串行波特率倍增位,当

23、smod=1时串行口波特率加倍,系统复位默认为smod=0。c:中断允许寄存器ie中断允许寄存器这里重述一下对串行口有影响的位es。es为串行中断允许控制位,es=1允许串行中断,es=0,禁止串行中断。 串行口工作方式串行口具有4种工作方式,我从应用和毕业设计的角度,重点讨论方式1发送。串行口定义为方式1时传送1帧数据为10位,其中1位起始地址、8位数据位(先低位后高位)、1位停止位方式1的波特率可变,波特率=(t1的溢出率)11.12.13。表3.3 中断允许寄存器符号eaeset1ex1etoex0位地址afhaehadhachabhaaha8ha8h3.3 ds18b20

24、温度传感器简介3.3.1 温度传感器的历史及简介温度的测量是从金属(物质)的热胀冷缩开始。水银温度计至今仍是各种温度测量的计量标准。可是它的缺点是只能近距离观测,而且水银有毒,玻璃管易碎。代替水银的有酒精温度计和金属簧片温度计,它们虽然没有毒性,但测量精度很低,只能作为一个概略指示。不过在居民住宅中使用已可满足要求。在工业生产和实验研究中为了配合远传仪表指示,出现了许多不同的温度检测方法,常用的有电阻式、热电偶式、pn结型、辐射型、光纤式及石英谐振型等。它们都是基于温度变化引起其物理参数(如电阻值,热电势等)的变化的原理。随着大规模集成电路工艺的提高,出现了多种集成的数字化温度传感器14。3.

25、3.2 ds18b20的工作原理ds18b20工作时序根据ds18b20的通讯协议,主机控制ds18b20完成温度转换必须经过三个步骤:1. 每一次读写之前都必须要对ds18b20进行复位;2. 复位成功后发送一条rom指令;3. 最后发送ram指令,这样才能对ds18b20进行预定的操作。复位要求主cpu将数据线下拉500微秒,然后释放,ds18b20收到信号后等待1560微秒左右后发出60240微秒的存在低脉冲,主cpu收到此信号表示复位成功。其工作时序包括初始化时序、写时序和读时序,具体工作方法如图3.2,3.3,3.4所示15。(1) 初始化时序图3.2 初始化时序总线上

26、的所有传输过程都是以初始化开始的,主机响应应答脉冲。应答脉冲使主机知道,总线上有从机设备,且准备就绪。主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。接着主机释放总线,4.7k上拉电阻将总线拉高,延时1560us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时480us。(2) 写时序图3.3 写时序 写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,都是以总线拉低开始。写1时序,主机输出低电平,延时2us,然后释放总线,延时60us。写0时序,主机输出低电平,延时60us,然后释放总线,延时2us。(3) 读时

27、序图3.4 读时序总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us。 rom操作命令当主机收到dsl8b20 的响应信号后,便可以发出rom 操作命令之一,这些命令如表3.4:rom操作命令。表3.4:rom操作命令。指

28、令约定代码功能读rom33h读ds18b20 rom中的编码符合rom55h发出此命令之后,接着发出64位rom编码,访问单线总线上与该编码相对应的ds18b20 使之作出响应,为下一步对该ds18b20的读写作准备搜索rom0f0h用于确定挂接在同一总线上ds18b20的个数和识别64位rom地址,为操作各器件作好准备跳过rom0cch忽略64位rom地址,直接向ds18b20发温度变换命令,适用于单片工作告警搜索命令0ech执行后,只有温度超过设定值上限或者下限的片子才做出响应温度变换44h启动ds18b20进行温度转换,转换时间最长为500ms,结果存入内部9字节ram中读暂存器0beh

29、读内部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的测温原理 ds18b20的测温原理每一片dsl8b20在其rom中都存有其唯一的48位序列号,在出厂前已写入片内rom 中。主机在进入操作程序前必须用读rom(33h)命令将

30、该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 测温原理内部装置 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 instrumentation)概念至今已有2

35、0年了。在这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的图形化源代码在某种程度上类似于数据流程图,因此又被称作程序框图代码。前面板上的每一个控件对应程序框图中的一个对象,当数据“流向”该控件时,控件就会根据自己的特性以一定的方式显示数据例如开关,数字和图形。labv

40、iew程序被成为vi(virtual instrument),即虚拟仪器,这是因为它的很多界面控件与操作都模拟了现实世界中的仪器,例如示波器与万用表。labview的核心概念就是“软件即是仪器”,即虚拟仪器的概念。labview还包含了大量的工具与函数用于数据采集、分析、显示与存储。这些工具都是向导式的工具,用户只需要一步步按照提示就可以实现与仪器的连接和参数的设置。而程序员也不用去记忆这些大量的函数,因为这些函数都以图标与名称的形式存在于一个小小的函数面板上,当然要用到某个函数时把它从函数面板上拖到程序框图中就可以了。这一切都是图形化带来的好处19.20。4.2.1 labview的作用由于

41、labview可以用来创建通用的应用程序,因此被成为一种通用的编程语言。但是它在测试、测量和自动化等领域具有更大的优势,因为labview提供了大量的工具与函数用于数据采集、分析、显示和存储。同时他还提供了大量常用于自动化测试测量领域的图形控件。这使得用户可以在数分钟内完成一套完整的从仪器连接、数据采集到分析、现实和存储的自动化测试测量系统。因此它被广泛的应用于汽车、通信、航空、半导体、电子设计生产、过程控制和生物医学等各个领域,涵盖了从研发、测试、生产到服务的产品开发所有阶段。今天欧美的许多高校非计算机专业的学生选修g语言并用它开发应用的软件的人已经超过c等文本语言。近年来我国高校g语言教学

42、实践正在迅速开展。labview不仅可以用来快速搭建小型自动化测试测量系统,还可以用来开发大型的分布式数据采集控制系统。在美国lawrence livermore国家实验室,一共花费了2000万美金的极为复杂的飞秒激光切割系统就是基于labview开发的。该系统中,4台windows nt 工作站用网络连接起来,labview用来给激光提供测量、控制和自动程序,同时作为半熟练操作者的高层用户界面。几乎安装了所有类别的i/o硬件:daq、gpib、串口、远程控制scxi、vme/vxi以及imaq成像。由于这个项目的极端重要性,因此本项目采取了正式的软件质量保证过程。软件开发总共用了4个年度,创

43、建了约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)模块、机器视觉模块与触摸屏模块。4.2.3 la

45、bview的起源与发展历程早在20世纪80年代初引入计算机之前,几乎所有使用可编程一起的实验室都通过专门的仪器控制器用于控制他们的测试系统。这些价格昂贵而且功能单一的控制器通过一个必备的端口控制使用ieee-488总线(即gpib总线)的仪器。到了1983年,随着个人计算机的出现,national instruments公司成为个人计算机gpib硬件接口的主要供货商。然而当时用于控制仪器的软件变现不太好,当几乎100%的仪器控制程序都是用basic语言开发的。虽然basic有一定的优势,例如简单、可读性强的指令集以及可互交功能等,但是它存在一个根本性的问题:像其他文本编程语言一样,如果要通过计

46、算机控制仪器,无论是科学家、工程师还是技术人员都必须懂的编程。他们必须把他们的应用软件和仪器使用的知识转化为文本,而这种过程多半是繁重而单调乏味的,尤其是对那些从来没有编程经验的人来说。national instruments公司有一个专门致力于开发出一种用于开发仪器软件程序的工具,以减轻仪器编程工作压在工程师和科学家身上的负担,但是他们当时并没有一个具体明确的概念。当1984年苹果公司推出了macintosh计算机之后,情况出现了重要的转机。他们看到了这台小机器上的图形化特性后,就知道“图形化”就是他们今后要走的道路。因为相对于输入一串串的命令进行操作,人们使用鼠标和图形化界面时所发挥的创造

47、力和高效率是前所未有的。图形化前面板是人与测量程序互交的最佳途径。前面板与实际仪器的面板十分相似,实际上,这些程序就是虚拟仪器。1985年6月他们开始编写程序代码,到10月完成了原型。1986年正式宣布了labview的诞生,同时ni的名字首次出现在杂志封面上。不过他们低估了后期调试所耗费的大量时间,因此直到1986年10月labview 1.0才正式发布。自labview 1.0发布的20多年以来,labview从来没有停止过创新的步伐。不断地改进、更新与扩展,使labview牢牢占据了自动化测试、测量领域的领先地位。自labview 1.0发布后,1992年ni公司又推出了用于sun和pc

48、的labview 2.0版本,此后,每一个重大版本的发布都包括里程碑意义的特性和功能上的飞跃。在1998年发布的labview 5.0中已经提供了多线程支持功能,为现在的多处理器技术打下基础;labview的首个可以发布到实时os的版本于1999年诞生;2003年labview 7 express引入了波形数据类型,以及一些互交性更强的、基于配置的函数;2005年推出了labview 8实现了分布式智能22。4.3 串口程序编译labview提供了功能强大的visa库。visa(virtual instrument software architecture虚拟仪器软件构架),是用于仪器编程的

49、标准i/o函数库及其相关规范的总称。visa库驻留于计算机系统中,完成计算机与仪器之间的连接,用以实现对仪器的程序控制,其实质是用于虚拟仪器系统的标准的api。visa本身不具备编程能力,它是一个高层api,通过调用底层驱动程序来实现对仪器的编程,其层次如图4.2(a)所示。visa是采用vpp标准的i/o接口软件,其软件结构应包含三部分,如图4.2(b)所示6.27.28。 (a)visa内部机制 (b)虚拟仪器的软件体系结构图4.2 visa内部机制与虚拟仪器软件体系结构与其它现存的i/o接口软件相比,visa的i/o控制功能具有如下几个特点:适用于各种仪器类型如vxi

50、仪器、gpib仪器、rs-232 串行仪器、消息基器件、寄存器器件、存储器器件等仪器);适用于各种硬件接口类型;适用于单、多处理器结构或分布式网络结构;适用于多种网络机制。visa的i/o的软件库的源程序是唯一的,其与操作系统及编程语言无关,只是提供了标准形式的api文件作为系统的输出。visa库中的串口函数:本文用到的主要的串口通讯函数调用路径为:函数 仪器i/ovisa串口。(1)visa 串口配置(如图4.3所示)。图4.3 visa串口配置图标及其端口该节点主要用于将visa资源名称指定的串口按特定设置初始化。使用哪一个多态实例将由连接至visa资源名称输入端的visa类决定。主要参数

51、意义如下:visa资源名称:指定要打开的资源。该控件也可指定会话句柄和类。波特率:波特率是传输速率。默认值为9600。数据比特:数据比特是输入数据的位数。 数据比特的值介于5和8之间。默认值为8。奇偶:奇偶是指定要传输或接收的每一帧所使用的奇偶校验。奇偶校验位,默认值为无校验、偶校验等。停止位:停止位是指定用于表示帧结束的停止位的数量。设置停止位,可以为1、1.5、2。流控制:流控制用于设置传输机制使用的控制类型。visa资源名称输出:visa资源名称输出是由visa函数返回的visa资源名称的副本。2)visa读取(如图4.4所示)。图4.4 visa读取设备并写入文件函数及其端口该节点为串

52、口读子vi,为本文中的主要节点,将串口中的数据读出,然后利用labview的强大数据处理功能对其进行分析处理。主要参数意义如下:visa资源名称:设置串口号,指定要打开的资源。该控件也可指定会话句柄和类。字节总数:字节总数是要读取的字节数量。该节点用于设置读取字节数。visa资源名称输出:visa资源名称输出是由visa函数返回的visa资源名称的副本。读取缓冲区:读取缓冲区是指从设备读取的数据。返回数:返回数是指包含实际读取的字节数。由于labview的串行通讯子vi只允许对字符串的读写,因此本文中在进行数据处理时,必须要实现字符串与数字之间的正确转换。此外,若要读入当前串口中的所有字符,则

53、要先执行“组串”子vi,用以确定将要读入的确切的字节数,然后将其输出作为visa读取节点的输入即可29。3)visa写入节点(如图4.5所示)。 图4.5 visa写入函数及其端口该模块用于将写入缓冲区的数据写入visa资源名称指定的设备或接口中。visa资源名称:visa资源名称用于指定要打开的资源。该控件也可指定会话句柄和类。写入缓冲区:写入缓冲区用于设置要写入设备的数据。返回数:用于输入实际写入的字节数。4)visa关闭 (如图4.6所示)。该模块用于对串行端口进行关闭任务操作需要调用visa关闭函数。图4.6 visa关闭函数及其端口4.4 程序设计4.4.1 主程序系统主监控图如图4

54、.7(a)所示。运行程序,选定好串口,然后点击前面板的开始键,就开始进行温度的采集。温度上限和温度下限可以自由设定,高于上限或低于下限时就会通过表格进行数据记录,并且布尔指示灯会显示此时温度是高于上限还是低于下限。温度表则可以显示当前的温度。单片机只是向labview中传送当前温度,labview不向单片机发送指令30。图4.7(a)程序主监控图前面板程序框图如图4.7(b),其中端口选择用于设置用到的串行口,用来接受下位机单片机发送的数据。波形图控件用于显示采集到的温度值。串口的初始化设置:波特率为默认值9600,8位数据位,1位停止位,无校验位,串口号为1。当系统开启时,通过visa接受温

55、度。由于labview的串行通信子vi只允许对字符串的读写,因此在数据处理时,必须进行字符串与数字之间的正确转换,在这里我们通过调用一个“组串”子vi来实现此转换。上位机通过visa读取节点读取单片机的温度,来完成温度的采集31。 图4.7(b) 串口程序框图4.4.2 温度采集部分如图4.8所示,从串口通信得到的信息进入visa中,并经由visa读操作进入数据缓冲区。由于在数据传送中设置为asc 码,则在后续的数据采集中需要与0的asc码相比较,从而得出当前温度32。图4.8 温度采集部分4.4.3 温度报警部分如图4.9所示,温度上限值和下限值可以自由设定,分别与采集到的数据进行比较,当采集到得温度高于“温度上限值”时执行比较运算“真”,“超过上限”指示灯变亮;当采集到的温度低于“温度下限值”时执行比较运算“真”,“低于下限”指示灯同样变亮;当采集到的温度高于 “温度上限值”或低于“温度下限值”时执行布尔运算为“真”时,表格会记录超出的温度。图4.9 温度报警5 系统调试及温度采集早晨采集到得温度如图5.1图5.1 早晨六点左右(室内)上图中,在左上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论