收藏 分享(赏)

数字式多路温度采集系统设计正文.doc

上传人:cjc2202537 文档编号:1717598 上传时间:2018-08-19 格式:DOC 页数:31 大小:563.50KB
下载 相关 举报
数字式多路温度采集系统设计正文.doc_第1页
第1页 / 共31页
数字式多路温度采集系统设计正文.doc_第2页
第2页 / 共31页
数字式多路温度采集系统设计正文.doc_第3页
第3页 / 共31页
数字式多路温度采集系统设计正文.doc_第4页
第4页 / 共31页
数字式多路温度采集系统设计正文.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、滁州学院毕业设计1数字式多路温度采集系统设计摘要:传统的温度传感器,其输出大都是是模拟量,而现在的智能仪表需要使用数字量,有些时候还要将测量结果以数字量输入计算机,由于要将模拟量转换为数字量,其实现环节就变得非常复杂。硬件上需要模拟开关、恒流源、D/A 转换器,放大器等,结构庞大,安装困难,造价昂贵。本设计中采用新兴的 IC 温度传感器如 DS18B20,由于可以直接输出温度转换后的数字量,可以在保证测量精度的情况下,大大简化系统软硬件设计。在当前微机非常普及的情况下,可以将单片机采集的数据输入微机,利用微机强大的计算、显示、输入输出能力,使原有系统的功能进一步增强。在这次设计中我主要完成了硬

2、件的制作以及其与微机的联接。以及原理图的绘制和程序的调试。关键词:DS18B20;多路温度采集;单总线;LabVIEW;搜索 ROMDigital multi-channel temperature gathering system designAbstract:The traditional temperature sensor, its output is mostly simulates the quantity, but presents intelligent measuring appliance needs to use the digital quantity, some ti

3、me must the measurement result by the digital quantity input computer, because must transform the simulation quantity into the digital quantity, it realizes the link becomes very complex. On the hardware needs the analog switch, the constant current, the D/A switch, the amplifier and so on, the stru

4、cture is huge, the installment difficulty, the construction cost is expensive. In this design uses emerging IC temperature sensor like DS18B20, because after may the direct output temperature transform the digital quantity, may in the guarantee measuring accuracy situation, simplify the system softw

5、are and hardware design greatly. In the current microcomputer very popular situation, may data feeds monolithic integrated circuit gathering the microcomputer, using the microcomputer formidable computation, the demonstration, the input output capacity, makes the original systems function to further

6、 strengthen. I have mainly completed hardwares manufacture in this design as well as its and microcomputers joint. As well as schematic diagram plan and procedure debugging. I obtained the integrated circuit which in this design might use some already to develop to replace the former complex transfo

7、rmation, for example in this designs use IC sensor started replaces digital-analog conversion establishment, and has obtained the success. From the analogy world many installments may use a simpler more direct instrument now to replace. Key words:DS18B20;Multi-channel temperature acquirement; Wire i

8、nterface;LabVIEW; search ROM滁州学院毕业设计21. 概 述传统的温度传感器,如热电偶温度传感器,具有精度高,测量范围大,响应快等优点。但由于其输出的是模拟量,而现在的智能仪表需要使用数字量,有些时候还要将测量结果以数字量输入计算机,由于要将模拟量转换为数字量,其实现环节就变得非常复杂。硬件上需要模拟开关、恒流源、D/A 转换器,放大器等,结构庞大,安装困难,造价昂贵。新兴的 IC 温度传感器如 DS18B20,由于可以直接输出温度转换后的数字量,可以在保证测量精度的情况下,大大简化系统软硬件设计。这种传感器的测温范围有一定限制(大多在50120) ,多适用于环境温度

9、的测量。DS18B20 可以在一根数据线上挂接多个传感器, 只需要三根线就可以实现远距离多点温度测量。利用单片机可以较方便地实现对 IC 温度传感器的操作,但要实现数据的可视化、保存和程序对硬件扩展有一定的适应性,利用传统的单片机系统的显示和输入输出系统,不仅程序庞大,硬件复杂,而且功能有限。在当前微机非常普及的情况下,可以将单片机采集的数据输入微机,利用微机强大的计算、显示、输入输出能力,使原有系统的功能进一步增强。基于 G 语言的虚拟仪器编程工具 LabVIEW 由于其图形化的形象直观的编程方式和功能强大的函数库为这一方案的实现提供了一种简捷、有效的工具。LabVIEW 使用图形语言(即各

10、种图标、图形符号、连线等)编程,使用的都是人们熟悉的旋钮、开关、波形图等,界面非常直观形象。利用 LabVIEW 提供的串口通讯模块可以非常方便地实现计算机的串口和单片机串口的通讯,从而将数据导入计算机,处理、显示、保存。1.1 DS18B20 温度传感器简介DS18B20 是 DALLAS 推出的接触式温度传感器,它使用了在板(on-board)专利技术,全部传感器和数字转换电路都集成在一个三极管大小的芯片中。它只有三个引脚(GND、DQ、VDD) ,通过一根数据线,它可以直接输出温度的数字量, DS18B20 传感器的特点主要有: 单总线接口,只需要一根数据线就可完成通讯功能 测量范围为-

11、55125 测量温度为-10+85时,测量精度为0.5 可编程实现转换分辨率为 9 位、10 位、11 位或 12 位,完成 12 位温度转换最多需要 750ms,分辨率越低,转换时间越短 每一个传感器内固化 64 位的唯一序列号(即每一个传感器都有一个特定的 ID) ,通过该序列号,可以唯一地选择该传感器。这种设计使得在一根数据线上连接多滁州学院毕业设计3个传感器成为可能1.1.1 单总线的读写时序要在一根数据线上准确无误地完成数据的双向传输,对数据的传输时序必然要有严格的要求。单片机的写时序如图 1-1,单片机将数据线拉至低电平保持 115us,然后将数据送到数据线上,60us 后释放总线

12、。传感器将会在 1560us(典型值为 30us)时从数据线上读入数据。每两个写时序的间隔必须大于 1us。单片机的读时序与此类似,单片机将数据线拉至低电平后,延时 1560us(典型值为 30us) ,然后读入数据。图 1-1 DS18B20 的写时序1.1.2 传感器的常用命令单片机向传感器发送命令实际上就是按照写时序将命令字,从低位到高位依次发送到数据线。 (1) 初始化:初始化实际上是一个复位脉冲,单片机将数据线从高电平拉至低电平持续 480960us,然后释放数据线,60us 后如果从数据线读到低电平(持续 60240us) ,表明传感器与单片机连接无误。初始化命令可以使所有传感器结

13、束前一个命令的响应状态,准备接收新的命令;(2) Match ROM(55H) (匹配 ROM):单片机发送该命令后,紧接着发送一个 64 位二进制序列,序列号与该序列相同的传感器就被选中,在发送初始化脉冲之前,只有该传感器响应接下来的命令;(3) Skip ROM(0CCH) (忽略 ROM):该命令可以使所有传感器都响应随后的命令,如果总线上只有一个传感器,使用该命令,不需要序列号就可以完成温度的转换、读出等操作,但如果有多个传感器,读出温度数据时就会有冲突。在多路采集中,可以利用该命令使多个传感器同时启动温度转换,同时完成,缩短了温度采集的时间。(4) Search ROM(0F0H)

14、(搜索 ROM):该命令可以启动搜索温度传感器序列号的操作,单片机借助特定的算法,根据传感器的响应,可以读出总线上所有传感器的序列号。(5) Convert T(44H) (转换温度):该命令可以使传感器开始温度转换,结果数据位数不同,温度转换的时间也不同,结果为 12 位时,需要 750ms,结果为 11 位时,需要 375ms, 10 位, 187.5ms,9 位,93.75ms。(6) Read Scratchpad(0BEH) (读结果寄存器):传感器接收到该命令后,将滁州学院毕业设计4把结果寄存器中的数据依次发送到数据线,单片机此时就可以读入数据。该寄存器中,前两个字节存放温度转换后

15、的结果。其格式如下,高字节的高五位为符号位。1.1.3 测量方案设计方案一(图 1-2 a):将所有传感器的数据线接在一起,形成单总线结构,与单片机的一个双向口相连。AT24C16 为非易失性存储器,其中建立一个序列号表,按顺序存放各路传感器的序列号。由于每一个 DS18B20 都与一个唯一的标识码对应,对特定传感器的操作只有在发送该传感器的序列号来选通该传感器之后才能进行。因此,发送标识码的顺序也就决定了读取温度值的顺序,程序运行时,首先向所有传感器发送温度转换命令,再按顺序从 24C16 中读取序列号,匹配 ROM,选中该路传感器,读出温度,这样就可以完成多路的顺序采集。如果更换某一个传感

16、器或增加传感器,就需要搜索 ROM 程序来查出新传感器的序列号,并写入到 24C16 的对应位置上。如果要删去某一路传感器,也需要删去 24C16 中对应的序列号。该方案的优点是,结构简洁,远距离测量时,布线简单;由于可以同时对所有传感器发启动转换的命令,然后逐路读取,采集时间间隔较小(1s 左右) ;系统扩展时也不需要添加其他硬件。缺点是,程序编制复杂,需要搜索传感器序列号的程序。a. 单总线结构 b. 模拟开关控制图 1-2 多个 DS18B20 与单片机的连接方案二(图 1-2 b) ,通过控制模拟开关来顺序选通各路传感器,然后对该路启动温度转换,读取温度值。它的优点是可以忽略传感器的序

17、列号,可以任意更换传感器而程序中不需要作特殊的处理,简化了程序设计。缺点是:需要模拟开关控制,远距离测量时,每一路需要一根数据线,布线复杂;测量全部通道的时间是每一路时间的累加,测量时间长;扩展时,硬件和软件都需要修改。综合考虑,方案一具有更大的实用性,更良好的扩展性,更能充分发挥 DS18B20 的设计优点,这次毕业设计中,选择该方案来设计硬件和程序。1.2 虚拟仪器及其编程语言 LabVIEW虚拟仪器(Virtual Instrument)就是在通用计算机上加上软件和硬件,实现传统电子仪器所具有的各种功能。在虚拟仪器系统中,硬件仅仅是为了解决信号的输入滁州学院毕业设计5输出,软件才是整个仪

18、器系统的关键,使用者可以通过修改软件的方法,很方便地改变、增减仪器系统的功能与规模,对硬件输入的数据进行各种处理,灵活的定义各种输出,所以有“软件就是仪器”之说。虚拟仪器系统利用计算机系统的强大功能,结合相应的硬件,大大突破传统仪器在数据处理、显示、传送、处理等方面的限制,使用户可以方便地对其进行维护、扩展、升级等。LabVIEW(laboratory virtual instrument engineering workbench)是目前国际上应用最广的虚拟仪器开发环境之一,主要用于仪器控制、数据采集、数据分析和数据显示等领域。LabVIEW 是一种基于图形编程语言(G 语言)的开发环境,它

19、与 C, Basic 等传统编程语言有着诸多相似之处,如,相似的数据类型、数据流控制结构、程序调试工具,以及模块化的编程特点等。但二者最大的区别在于:传统编程语言用文本语言编程;而 LabVIEW 使用图形语言(即各种图标、图形符号、连线等)编程,界面非常直观形象,使用的都是人们熟悉的旋钮、开关、波形图等。LabVIEW 软件的主要特点:1)图形化的编程方式,无需设计者编写文本格式的代码;2)提供丰富的数据采集、分析、及存储的库函数;3)提供传统的程序调试手段,如设置断点、单步运行,同时提供独特的执行工具,使程序的调试和开发更为便捷;4)32 位的编译器编译生成 32 位的应用程序,保证用户数

20、据采集、测试和测量方案的高速、精确执行;5)提供 PCI,GPIP,PXI,VXI,RS-232/485,USB 等各种总线标准的功能函数,简化设备驱动程序的设计;6)提供大量与外部代码和软件进行链接的机制,如 DLL、DDE,ActiveX 等。LabVIEW 的开发环境主要包括两部分,VI 面板设计和流程图设计,前者建立程序运行的界面和各种变量、数据,后者组织程序的运行流程。在虚拟仪器的开发过程中,主要利用 LabVIEW 提供的三个模板:工具模板(Toolpalette) 、控制模板(control palette)和功能模板(Function palette)来完成 VI 面板和流程图

21、两部分的设计开发工作。工具模板提供用于操作,编辑前面板和流程图上对象的各种工具。面板开发窗口所需的各种控件均由控制模板提供。前面板的设计制作过程就是利用工具模板中的相应工具,从控制模板中取出所需控件,摆放在前面板的适当位置。并为其设定适当的参数。在流程图编辑窗口中设计 VI 的流程图时,所需的各种功能函数(包括各种数学运算函数,信号分析函数,仪器驱动函数等,每一个功能函数也称为一个节点(node)) ,均由功能模板提供。功能函数对输入参量进行特定的功能的操作,产生输出。设计者从功能模板中取出相应功能函数的图标,放置在流程图窗口中,用连线工具将输入量与这些函数的输入接口相连,将输出接口连接到输出

22、量,多个功能函数组合起来,就构成了流程图。滁州学院毕业设计6下面仅就我在设计 LabVIEW 程序中遇到的一些问题作一下简单的讨论。1.2.1 LabVIEW 程序的执行顺序LabVIEW 提供了几种控制程序流程的结构(structure),主要有条件结构(case structure)顺序结构( Sequence Structure)和循环结构(while 循环和 For 循环) 。对于结构内部节点,程序按照节点间的数据依赖性(连线)来确定执行的顺序,即一个节点的输入条件都满足后才会产生输出结果。而对于没有数据依赖性的程序之间,可以认为它们是同时执行,即两部分程序各自产生结果,不会相互影响执

23、行。图 1-3 中,程序的各个节点间的数据依赖关系很明显,它的执行顺序也如箭头所示。图 1-3 数据的依赖性决定程序的执行顺序1.2.2 LabVIEW 中的数据类型LabVIEW 中的数据类型有很多,大致可以分为数值型、布尔型、字符串型,这些数据类型可以各自组合成一维至多维数组,还可以相互组合为结构体,结构体也可以构成数组。LabVIEW 为各种数据类型的转换和组合提供了丰富的功能函数。以本次设计的程序为例,串口通讯中,LabVIEW 的串口读写功能函数读出和写入的都是字符串型的数据(读出或写入该字符串的 ASCII 码序列) ,从串口读出数据时,先将该字符串转换成八位无符号数构成的数组(与

24、字符的 ASCII 码值对应) ,再将数组中相邻的两个字节的无符号数转换为布尔型数组(无符号数的每一位对应一个布尔量) ,按照 DS18B20 中温度数据的格式,对布尔型数组的每一个布尔量,乘以不同的权,转换成 LabVIEW 中可以直接显示处理的十进制单精度型数据,同一次测量的数据再组合成一维数组,多次测量的一维数组再组合成二维数组(行数与测量通道序号对应,滁州学院毕业设计7列数与测量时间先后对应) ,该二维数组可以直接保存,或取出某一列送到波形图(Waveform Graph)显示,该二维数组转换成二维字符串型数组后,才能在表格(Table)中输出。1.2.3 LabVIEW 程序的功能设

25、计利用 LabVIEW 设置串口通讯,向单片机发送命令,读入温度采集数据。对这些数据进行处理后,显示在曲线图和表格中,也可以以文件的形式保存到磁盘上。用户可以对采集参数如:测量时间间隔、温度上下限报警、增加删除通道等进行设置或更改。计程序的执行界面,包括用户控制和参数设置部分,参数显示部分和数据显示部分。1.3 系统的总体设计系统的总体示意图如下图:计算机为主机,单片机为从机。计算机通过图形化的界面接收用户的命令和参数设置,通过串口向单片机发送相应的命令和参数。单片机查询串口输入中断,读入命令字,根据该命令执行相应的程序模块,如:启动温度采集,发送温度数据,增加通道数,在某一位置插入通道等。单

26、片机完成指令后,重新进入串口中断查询状态。单片机完成一次温度数据采集后,将数据发送到串口,计算机接收温度数据,进行格式转换后,显示在表格和曲线图中,并对温度数据进行一些简单的处理,如温度高低限报警、保存数据。程序还可以读出以前保存的数据文件,显示在表格和曲线图中。图 1-4 总体方案2. 单片机部分硬件及程序设计2.1 硬件设计系统硬件的原理图(见附录硬件线路原理图)所有温度传感器的数据端 DQ 通过一滁州学院毕业设计8根数据线连接起来,与 89C51 的 P1.0 口连接,并加上拉电阻。非易失性存储器 AT24C16(2KB)的时序控制端 SCL 与 P1.7 连接,数据传输端 SDA 与

27、P1.6 连接。单片机的串口 RXD 和 TXD 使用的是 TTL 电平(+5V 为逻辑 1,0V 为逻辑 0) ,而微机串口使用的是标准 RS-232 电平(3+15V 为逻辑 0,315V 为逻辑 1) ,两者不能直接相连,使用 MAX232 可以完成两者之间的电平转换,MAX232 使用 5 个 10uF 的电解电容,5V 电源。右侧的 DB9 插口为微机的串口。单片机晶振为 12MHz,采用阻容方式上电复位。2.2 单片机程序设计2.2.1 主程序结构及其流程图图 2-1 单片机主程序流程单片机主程序部分的流程图如图 2-2 所示:首先是串口初始化设置。上电复位后,首先将定时器/计数器

28、 T1 设定为定时器工作方式 2,即自动再装入的 8 位计数器,在该方式下,TL 为计数寄存器,TH 为 8 位计数常数寄存器。将串口设定为工作方式 1,不使用奇偶校验,数据的传输波特率由定时/计数器的溢出率决定。根据波特率的计算公式,选择合适的计数常数放入 TH,本方案中,波特率设定为 4800bit/s,则 TH 中放入的计数常数为 0F3H(SMOD1,波特率加倍) 。启动定时器 T1,向串口发送滁州学院毕业设计9一个字节的握手信号,主机接收到该握手信号后,回送一个字节的信号。单片机经 1s 的延时后,检查串口接收中断标准位,没有置位,则重复发送握手信号,有数据则读入数据,判断是否正确,

29、不正确,重复握手过程,正确,则说明串口通讯正常。图 2-2 温度采集流程通道总数是控制温度采集的一个重要参量,存储在 24C16 存储区的末尾,程序开始时要将通道总数读到数据存储区,便于后续程序使用。单片机通过查询串口接收中断标准位来读入主机发送的命令字,根据命令字来执行相应的操作。共有 5 个命令字:温度采集、增加通道、删除通道、发送通道总数、主机退出程序。将串口读入的命令字依次与 5 个命令字比较,与某个命令字相等,就执行相应的命令处理程序。执行完后,程序继续查询中断接收标准位,如此循环。计算机内的程序退出时,向单片机发送退出程序命令字,使单片机返回到复位以后的状态,即串口初始化,发送接收

30、握手信号。该命令字是为方便计算机程序的调试而设计的。可以在不需要重新关开单片机滁州学院毕业设计10电源的情况下,重新运行计算机程序。2.2.2 温度采集程序温度采集程序的流程图如图 2-3。首先通过 P1.0 口向 DS18B20 发复位脉冲,传感器准备接收命令。发送忽略 ROM(Skip ROM)命令,使所有传感器都能接收并响应下面的命令。发送温度转换(Convert T)命令,所有传感器都开始温度转换,延时后,温度转换完毕。向 DS18B20 发送匹配 ROM(Match ROM)命令,从 24C16 中读出一个传感器的序列号,再将该序列号发送到 P1.0 口,与该序列号相对应的传感器就会

31、被选中,发送读寄存器命令,该传感器将转换后的温度数据发送到数据线上,单片机读入并存放到特定的 RAM 区域。这样就完成了一路数据的采集。发复位脉冲后,再发匹配 ROM 命令,发送下一个序列号,选中相应的传感器,读出温度数据,依次循环,直到所有传感器的数据都读入到单片机的 RAM 中。2.2.3 增加通道程序在有序的多个通道中,在某一个位置增加一个传感器,由于某一个传感器所在通道的序号是由 24C16 中该传感器的序列号的保存顺序决定的,所以在某一位置增加传感器,就是在序列号表中的该位置插入该传感器的序列号。例如原有 1、2、3、N 个通道,现在要新增一个传感器作为通道 5,就要将序列号表中 5

32、、6、N 的序列号依次向下移 8 个字节,变为 6、7、N1,在 5 的序列号存储位置上补上 0,在温度采集程序中会自动搜索出新插入的 5 的序列号,覆盖在该位置上。A 增加通道 B.删除通道图 2-3 增加删除通道时序列号表的处理如果同时插入一个以上的传感器,由于不能确定序列号的查出的先后顺序,就不能将各个传感器与其插入位置序号对应起来。例如,要将传感器 A 插入到第 3 个位置,B 插入到第 5 个位置,程序中可能设定为将读出的第一个序列号写到 3,但读出的第一个序列号可能为 A 的,也可能为 B 的,就有可那将 B 的序列号写到 3,而 A 的写到 5,使两个传感器的位置与预期的相反。删

33、除某一通道的操作与此相似,将删滁州学院毕业设计11除通道之后的传感器的序列号都顺序前移 8 个字节。2.2.4 搜索序列号程序搜索序列号的程序流程序列号如图 2-4。图 2-4 搜索 ROM 程序流程单片机向所有 DS18B20 发送搜索 ROM 命令,所有 DS18B20 将自身序列号的第一位发送到数据线上,P1.0 口得到的数据为各个序列号第一位的与(and) ,然后,DS18B20 再将序列号第一位取反,发送到数据线上,P1.0 口这时得到的为所有序列号该位取反后的与。这样,如果单片机读入的两位为 10B,表明所有传感器的序列号该滁州学院毕业设计12位都为 1,如果读入 01B,表明所有

34、序列号该位都为 0,如果读入 00B,则表明有些序列号该位为 1,还有一些为 0,即在该位上有冲突;如果读入 11B,表明没有传感器连接在数据线上。此时,如果单片机向数据线发送 1,则所有该位为 1 的传感器被选中,发 0,所有该位为 0 的传感器被选中,只有这些选中的传感器将自身序列号的第二位和第二位取反依次发送到数据线上,单片机对这两位进行判断,发 0 或 1,选中相应的传感器。依此循环,发送 64 次后,必然只有一路传感器被选中,按次序发送的这 64 位就是该传感器的 64 位序列号。搜索多路传感器的序列号时关键是如何通过这些冲突位的处理来查出线上所有传感器的序列号并避免重复搜索到某一路

35、或某些路。在本程序中,R3 为冲突计数寄存器,记录当前冲突位是第几个冲突位,30H(R7)中依次存放路径冲突位序号。2.3 存储空间的分配本程序中的存储空间分配如下:(1)2027H,位地址和临时存储器(2)282FH,匹配 ROM 时,从 24C16 中读出的序列号(3)306FH,温度数据,每路两个字节(4)70H,堆栈栈底温度数据存放在内部数据存储器中,共 40H(64)个单元,一共可以存放 32 路温度值,也就是说,系统目前只能最多容纳 32 个温度传感器。如果要使采集的路数多于 32,就需要将温度数据分多次发送的计算机,即从传感器读入 32 路的温度数据后,将其发送到计算机,再读入剩

36、余路数的数据,再发送。也可以选用内部数据区更大的单片机。24C16 的存储空间位 2KB,其中一个字节用来存放通道总数,剩余的空间可以存放 255 个序列号,即可以容纳 255 路传感器。程序中,如果调用搜索 ROM 子程序,搜索路径最多需要 64 字节(30H6FH) ,读出的序列号要和 24C16 中存储的序列号比较,需要 16 字节,再加上临时存储单元和位寻址单元,需要占用寄存器区。2.4 小结每一个 DS18B20 都有一个唯一的序列号,通过序列号可以选中并操作连在一根数据线上的多个 DS18B20 中的某一个。在 AT24C16 中建立一个序列号表,依次读出表中的序列号,选中操作相应

37、的传感器,读出温度数据。更换某一路的传感器后,启动搜索序列号程序,找到与 24C16 中的序列号都不同的新的序列号(就是换上的传感器的序列号) ,写入该路序列号在表中的相应位置,覆盖原序列号。重新开始温度采集,就可以正常读出该路的温度。在某一位置插入(删除)传感器也是在 AT24C16 中相应的位置插入(删除)该传感器的序列号。DS18B20 有一些很好的特性,如可以调整温滁州学院毕业设计13度数据的位数,降低精度以加快温度转换速度,提高采集频率;还可以在传感器内部设定温度上下限,只对温度超出此限的传感器读取数据等。为了简化程序设计,这些在本程序中都没有实现。本程序中传感器的总数不能超过 32

38、 个,如果要兼容更多的传感器,还需要进一步的修改和完善。3. LabVIEW 中程序的设计3.1 程序界面程序的主界面如图 3-1。“退出”按钮可以退出应用程序。“选项”按钮可以打开一个对话框,对温度采集的参数进行配置。“保存数据”按钮可以将当前队列中的数据以表格的形式保存在文件中,同时保存的还有当前时间,通道总数,采集时间间隔。选择连续保存时,每采集到与“数据点数”相同数目的数据时,就以特定的文件名保存数据到特定的目录。“读出数据”文件可以打开以前保存的数据文件,读入采集时间,通道总数,采集时间将等采集参数,显示在中间的状态区,数据送入到表格和曲线图中显示。中间顶端显示的时间为数据保存时的时

39、间(其它情况下显示当前时间) 。“开始采集”按钮可以启动或停止温度数据的采集。程序处于温度采集状态时“退出” 、 “选项” 、 “读入数据”按钮都不会响应。图 3-1 主程序运行界面温度数据显示在主界面中间的表格中,最新采入的数据显示在最上面,最早采入的数据放在表格的末尾。表格的行数和数据点数相等,数据的列数与通道总数相等。温度数据同时显示在右侧的曲线图中,曲线图中的数据量也和数据点数相同。曲线图左上的“通道”数据决定图中显示的数据来自于那一路传感器。主界面中间显示的各滁州学院毕业设计14种采集参数,只能在“选项”对话框中,进行更改,在主程序中仅起显示的作用,更改无效。3.2 程序预处理Lab

40、VIEW 中的程序的流程和单片机程序很相似,在预处理后进入循环主体,对子程序的入口条件进行判断,满足条件,则执行相应的程序。LabVIEW 中的程序主体主要分成四个部分:选项程序、读出数据、温度采集和保存数据。温度采集的入口条件和选项、读入数据的入口是相斥的,和保存数据的入口是相容的。即执行温度采集时,不能响应选项和读入数据,但可以保存数据。图 3-2 是 LABVIEW 程序流程的示意图。图 3-2 LABVIEW 程序流程3.2.1 串口初始化和握手启动程序后,首先调用串口初始化和通讯测试子程序,将会出现图 3-3 的初始化对话框。滁州学院毕业设计15图 3-3 串口初始化对话框COM1

41、表示串口 1,打开此下拉选项,可以看到 COM2 选项,表示串口 2,根据实际接线情况选择,默认为 COM1。波特率为串口通讯的速度,设定为 4800bit/s,不可更改。在该对话框中选择“确定”后,调用 LabVIEW 中的串口初始化模块,使波特率和数据格式与单片机串口的设定相同。初始化无误后,从串口读入单片机发送的握手信号,该信号和预期的信号相同,就向串口发送回复信号,发送无误,串口初始化和测试完毕,指示灯亮,进入主程序。如果初始化模块执行错误或者 2s 内不能读入数据或者读入数据错误,或者发送握手信号错误,都将重新对串口初始化,直到握手正确或用户选择“取消” 。如果用户选择“取消”则显示

42、串口通讯失败,程序结束。3.2.2 参数读入和表格初始化串口初始化无误后,首先从配置文件中读入上一次程序运行的参数(时间间隔等)作为本次采集的默认参数,并将表格的行数设为与数据点数相同。计算机向单片机发送读入通道总数命令(通道总数存储在 24C16 中) ,单片机将通道总数发送到串口,计算机读入数据,将表格的列数设置为与此通道总数相等(表格窗口的宽度为 8 列) 。3.3 程序主体在程序的主体部分完成功能按钮的响应处理,数据输入、处理、显示、保存等功能,其结构如图 3-4 所示。滁州学院毕业设计16图 3-4 程序主要流程图程序最外围是一个“case”结构,如果初始化正常,就进入“true”部

43、分执行,此部分是一个分成三步的顺序结构,第一步,如 3.2.2 节所述,参数读入和表格初始化;第二步,如下图,程序主体部分,第三步,程序结束处理。在第二步中,包含一个“while”循环,由“退出”按钮控制该循环的结束,该循环结束,程序就进入第三步。运行该循环,实际上保证主界面的显示,以响应用户的操作。该循环中的程序由两部分组成,左侧的一个 case 结构,为“选项”按钮按下时的处理程序。右侧的 while 循环结构,由“开始采集”按钮控制,即如果没有按下“开始采集”按钮,该循环就结束。如果“开始采集”按下,程序就始终运行该循环,不会运行“选项”的处理程序。由于 while 首循环的存在(不管循

44、环结束的条件满不满足,循环体中的程序都会被执行一般,相当于 do while 循环) ,进入该循环后,即使“开始采集”按钮一直没有按下,该循环中的程序也会被执行一遍,因此放在此循环中的保存数据和读出数据程序仍可以响应执行。也就是说,保存数据在采集过程中或停止采集的情况下都可以执行。读出数据程序由于在采集温度 case 结构的“false”部分,该部分程序只有在“开始采集”为“false”的情况下才响应。3.3.1 选项对话框当“选项”按钮按下时,将执行左侧“case”结构中的程序,调用 option.vi ,完成参数的设置,并保存到配置文件中。同时将更改后的参数传回主程序,使其立即滁州学院毕业

45、设计17生效,以保证当前参数和配置文件中参数的一致性。并根毕业设计(论文)报告纸据通道总数和数据点数重新设置表格的行数和列数。option.vi 的执行界面如图 3-5。 图 3-5 选项对话框在“选项”对话框中按下确定键后,所有的参数都重新写入配置文件,并传回主程序。如果“增加通道”选中,程序将向串口发送增加通道命令,并将新增通道的序号发送到串口。单片机将根据该命令和插入通道的序号进行相应的处理。删除通道的操作与此相似。如果选中“取消”键,程序将不进行任何处理,直接返回主程序,此时传递到主程序中的参数仍然为配置文件中的参数(与主程序中原有参数一致) 。3.3.2 温度采集温度数据保存在一个二

46、维数组中,该二维数组的行号代表通道序号,列号代表不同的采集次数。经过程序处理,将该数组设置为一个先进先出的队列。数据点数代表该队列的长度,即温度数据的总数始终保持不变,新采入的数据将最早采入的数据挤出队列。出数据,找出温度最高和最低的通道,并与温度上下限比较,报警。RD Temperature.vi 向单片机发送温度采集命令,读出数据,并将数据转换为 LabVIEW 中的单精度数,这些温度数据以一维数组的形式输出,1d to2d Array.vi 将该数组中的数据加到已经采集的数据(二维数组 Array 中)末尾,并保证该二维数组的行数不超过数据点数所规定的大小。以二维数组的形式保存的数据经

47、2D Array to Table.vi 转换后,送到表格显示。如图 3-6 在完成一次处理后,根据时间间隔延时,然后判断温度采集是否为“TRUE” ,如果是,就进入下一次循环,调用 RD Temperature.vi 向单片机发送温度采集命令,读取数据,依此循环,就可以完成数据的连续采集。滁州学院毕业设计18图 3-6 温度采集及数据处理流程3.3.3 保存数据保存数据分为两种情况,连续保存和“保存数据”按键触发的保存。图 3-7 为连续保存的程序结构,i 为温度采集循环的次数,i 达到数据点数的整数倍时,将自动在程序文件所在目录中的 date 文件夹中产生一个数据文件 datN 为文件保存

48、的序号,即依次产生 date1.dat、d 还有一种方式为“保存数据”按键触发保存的。由于没有指定文件路径和名称,程序运行时将会弹出对话框,用户选择保存文件的路径和名称。图 3-7 连续保存数据流程3.3.4 读出数据该段程序位于温度采集的“false”部分,所以执行温度采集时不能运行该部分程序。LoadDate.vi 可以打开一个文件选择对话框,选择一个以前保存的数据文件,从中读出采集参数,采集时间和温度数据,回送到主程序中,显示在表格和波形图中。滁州学院毕业设计19这时,主 eN.dat,ate2.dat 、date3.dat、。程序,采集参数和温度数据都被送到 SaveData.vi 保

49、存“case”结构界面中间顶端的时间日期中显示的是数据保存时的时间信息。如图 3-8图 3-8 读入数据示意图3.4 小结利用 LabVIEW 提供的极为全面的功能函数,可以很方便地实现串口通讯、文件保存、曲图绘制、数据处理等功能。编程者需要做的只是合理确定程序的逻辑结构,组合运用各种功能函数,为功能函数提供适当的输入参量和数据类型。LabVIEW 的图形编程语言使程序的结构和数据的流向显得极为清晰明了。在用 LabVIEW 编制的这个程序中还有一些值范围,比如,主界面中“通道”一栏的用来选择哪一路显示在曲线图中,这一栏的数值应该不会超过通道总数,但在程序中并没有加上这一限制。另外一点,在连续保存数据的情况下,停止温度采集,在上一次保存之后采集的数据不会自动保存到文件中,这样可能会使部分数据丢失。4. 系统的抗干扰技术由传感器等组成的检测系统主要应用于实际的工业生产过程中,由于工业现场的环境往往比较恶劣干扰严重,这些干扰的存在较大的影响了检测系统的正常工作,所以 有效的排除和抑制各种干扰,保证传感器等能在实际应用中可靠的工作和测量数据的准确性。因此,在我们设计的多路温度采集系统中,对排除和 抑制各种干扰由为重要。在整个系统中我们为了更好的、更有效的保重系统工作 的可靠性和测量数据的准确性

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

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报