1 引 言
LabVIEW是美国国家仪器公司(National Instru-ment)开发的一种虚拟仪器平台,他是一种用图标代码来代替文本式编程语言创建应用程序的开发工具。Lab-VIEW功能强大,提供了丰富的数据采集、分析和存储库函数以及包括DAQ,GPIB,PXI,VXI,RS 232/485在内的各种仪器通信总线标准的所有功能函数。利用LabVIEW设计的数据采集系统,可模拟采集各种信号,但是配备NI公司的数据采集板卡比较贵,在实际开发中可选用单片机小系统对数据进行采集。
冷库是发展冷藏业的基础设施,也是在低温条件下贮藏货物的建筑群。食品保鲜主要以食品冷藏链为主,将易腐畜禽、水产、果蔬、速冻食品通过预冷、加工、贮存和冷藏运输,有效地保持食品的外观、色泽、营养成分及风味物质,达到食品保质保鲜,延长食品保存期的目的,起到调剂淡、旺季市场的需求并减少生产与销售过程中经济损耗的作用。在这些实际应用中,温度是冷库的一个很重要的指标,因此,本文设计了一种基于LabVIEW的单片机温度自动测试系统,并对其系统的组成、实现给出了详细描述。
2 系统的组成结构及工作原理
本系统的数据采集系统由温度传感器和AT89C51单片机以及MAX232组成。由单片机组成的小系统对温度信号进行采
集、调理和转换,然后通过RS 232串口通讯将数据送给计算机,在LabVIEW开发平台下,对数据进行各种处理、分析,并对信号进行存储、显示和打印,最后由PC机显示实时测量的冷库的8个冷冻室的温度,从而实现了一种在Lab-VIEW环境下的单片机温度自动测试系统。
2.1 硬件电路设计
系统的硬件电路如图1所示,采用AT89C51作为主芯片,温度传感器选用由美国AD公司生产的集成电路温度传感器AD590,该温度传感器具有体积小、测温精度高、稳定性好、反应速度快、线性度好、能进行远距离传送和价格低廉等优点。这种温度传感器特别容易和微电脑配合,组成自动测温系统。放大电路选用AD627,将被测温度转换并放大到0~5 V范围,然后送到A/D转换器的输入端。由于温度的变化比较缓慢,因此在系统中可以不用采样/保持器。模数转换电路选用内部带有锁存器和8路模拟开关的ADC0809,他的分辨率为1/256,完全能满足分辨率为±1℃的要求。
启动ADC0809的工作过程是:先送通道号地址到ADDA,ADDB,ADDC,由ALE信号锁存通道号地址,后让START有效,启动A/D转换,即执行一条“MOVX@DPTR,A”指令产生WR信号,使ALE,START有效,锁存通道号并启动A/D转换。A/D转换完毕,EOC端发出一正脉冲,申请中断。在中断服务程序中,“MOVX A,@DPTR”产生RD信号,使OE端有效,打开输出锁存器三态门,使用“MOVX A,@DPTR“指令就可将8位数据读人到CPU中。
2.2 软件设计
系统软件设计主要包括主程序、中断服务子程序等。软件流程图如图2所示。
主程序的功能:负责整个系统的管理工作,如对89C51外部中断方式进行设置,建立数据指针,置通道初值,启动A/D转换和上位机进行通讯等。
中断服务程序的功能:读取A/D转换后的数据,更改通道号及数据存储器地址指针并判断8个通道是否采集完毕,未完则继续启动下一个通道;若8个通道已转换完毕,则重新设置通道号初值,再次启动IN0通道。
3 LabVIEW下的串行通讯设计
3.1 VISA介绍
由于使用计算机控制的仪器逐步增多,出现了许多I/O控制软件,一些是用户自己开发的,一些是硬件接口厂家为其开发的硬件接口设备设计的,但他们都不具有通用性,这就给用户带来了许多麻烦,VISA(Virtual Instru-ment Software Architecture,虚拟仪器软件体系结构)这种通用的仪器驱动软件结构就是为解决这些问题而产生的。作为通用I/O标准,VISA具有与仪器硬件接口和具体计算机无关的特性,即VISA是面向器件功能,而不是面向接口总线的。使用他控制VXI,GPIB,RS 232等仪器时,不必考虑接口总线类型。针对计算机标准的串行口,Lab-VIEW提供了串行端口子模板。串行端口子模板中还包含许多的子模板(也称子VI),其中主要包括以下6个子VI:
(1)VISA Configure Setial Port:VI串行口初始化子VI;
(2)VISA Write:VI向串行口缓冲区写入数据的子VI;
(3)VISA Read:VI从串行口设备中读取数据的子VI;
(4)VISA Close:VI关闭串行口的子VI;
(5)VISA Bytes at Serial Port:VI返回指定串行口中输入缓冲区内的字节数子VI;
(6)VISA Serial Break:VI串行口中断子VI。
LabVIEW是基于图形化的程序设计语言,程序的核心代码是类似于流程图的方框图和线条的连接。每个方框图代表一个功能模块即子VI,程序执行的过程是条件满足方式,当一个功能模块的所有输入都齐备后,此功能模块产生输出,传送给下
一个模块。程序的动态流程可以通过点亮Block Diagram工具栏上的Highlight Execution小灯泡看到。
3.2 串行通讯程序设计
首先是对串口的初始化设置:波特率为默认值9 600,8位数据位,1位停止位,无校验位,串口号为1。当系统开启时,通过VISA Write.vi向单片机发送“发送请求命令1”由于LabVIEW的串行通信子VI只允许对字符串的读写,因此在数据处理时,必须进行字符串与数字之间的正确转换,在这里我们通过调用一个“组串”子VI来实现此转换。在收到上位机的发送请求命令后,单片机则回应应答信号3,上位机通过VISA Read.vi节点读取单片机的应答信号,并且判断是否收到3来控制顺序结构中的While循环。若上位机没收到单片机的应答信号则重发“发送请求命令”,若收到应答信号则执行顺序结构的第二步。在顺序结构第二步中,我们将通过VISA Read.vi读取数据,用实时趋势图控件Waveform Chart显示。图3给出了上位机对PIC单片机进行读操作的框图程序。
4 前面板设计
LabVIEW中的前面板就是图形化用户界面,用于设置输入数值和观察输出量。本系统的前面板中设置波特率、串口号、数据位和停止位为控件,用实时趋势图控件Waveform Chart来显示下位机实时采集到的数据。如图4所示,给出本系统的前面板设计。
5 结 语
在实际开发中,LabVIEW表现了很好的灵活性。尤其是利用其提供的外部接口,结合以单片机为核心组成的小系统,可以很方便地完成数据采集及处理等功能,具有很强的工程实用性,可广泛应用于测试控制领域。