【摘要】以LabWindows/CVI虚拟仪器为软件开发平台,以计算机和STC12C5410AD单片机为主要硬件平台,采用上位机与下位机通信模式构建了水温采集的虚拟仪器系统,介绍了系统的硬件设计和Labwindows/CVI功能的实现,包括温度转换电路设计,串口通信,单片机数据采集和数据传输等功能的实现。
【关键词】LabWindows/CVI;虚拟仪器;单片机;串口通信
Labwindows是常用的编写控制系统的软件,基于它的采集系统可以通过串行通信实现远距离的温度采集,而且这样的系统兼容性和扩展性好,可以被集成在一个更大的系统里面实现复杂的工业控制,具有良好的应用前景。
1.系统总体功能设计
本系统的所有功能都是由上位机控制完成,根据系统设计要求可以抽象出具体的功能:
(1)能够选择串口端口并在点击检测之后能够判断此端口是否连接正常以及是否能够正常的收发数据。
(2)能够控制下位机的数据采集并能随时暂停采集;能够根据采集上来的温度值绘制出温度波动曲线。
(3)能够任意设置温度超限值并以此判断采集的温度是否超界。
(4)能保存当前的波形图并能够恢复。
系统功能设计主要分为温度转换电路、单片机采集处理模块、数据传输模块、上位机测控模块。
温度转换电路将温度信号转换为电信号,其最关键的就是温度传感器电路;单片机采集处理模块对此模拟电信号进行A/D转换并进行计算处理从而获得上位机所需数据;数据传输模块是单片机与PC机的接口电路,单片机输出的数据与上位机的控制信号都通过此模块进行传输;上位机测控模块对传上来的数据进行处理得到此时的温度值,对单片的采集控制也是通过此模块进行的。在这些模块中最关键的是设计温度转换电路,它对整个系统的精度和误差以及数据处理方式都会产生影响。
2.硬件设计
硬件设计部分主要分为3个部分,即温度转换电路设计,单片机数据采集处理模块和数据传输处理模块。
2.1 温度转换电路设计
准备有效地计算某时刻水温,其关键技术是准确地测量此时刻PT100的电阻值,即怎样将PT100的电阻值转为电压值供STC
12C5410AD采样并由此计算出电阻值。常用的有两种方案:一种是设计一个恒流源法;另一种是采用惠斯顿电桥法。
2.2 单片机数据采集处理模块
电信号转化为数字信号,如选用了内部集成了A/D转换的STC12C5410AD单片机,可以有如下优点:(1)减少了单片机与模数转换芯片连接的外围电路;(2)省去了模数转换芯片需要精确电压的供电要求;(3)单片机的编程时减少了对外围电路的复杂控制;(4)减少了调试时间和误差。采用单片机数据采集中,主要方法是:通过多次采样得到一个A/D转换的数据序列,然后对这个数据序列进行中值滤波、算术平均滤波、去极值平均滤波、加权平均滤波等方法进行数据处理。
2.3 数据传输模块
数据的传输是指单片机STC12C5410AD与PC机之间的通信,系统中传输的数据主要是单片机处理获得的数据、对STC12C54
10AD进行ISP(在系统可编程)时产生的数据以及上位机产生的控制信号。本系统主要研究水温测试数据的收集和处理,在数据休集过程中,通信传输的数据量较少,对实时性要求不高,应采用常规的RS232串口MAX232电平转换芯片,以提高数据采集的准确率。
3.Labwindows/CVI功能实现
Labwindows/CVI系统软件功能实现部分主要分为两部分:(1)单片机程序设计。(2)CVI程序设计。
3.1 单片机程序设计的主要技术
串口工作方式的确定是由寄存器SCON中的SMO、SM1决定,当SMO=0,SM1=1时串口工作在方式一;常用的串口波特率为2400、3600、4800、7200、9600、14400等,本系统配置的波特率为9600,所以定时器1的初始值为:TH=0xfd、TL=0xfd;为了保证波特率的稳定,定时器1需工作在16位自动重装初值的方式。
(1)串口初始化
void init()
{ TMOD=0x20; //定时器工作在方式1
TH1=0xfd; TL1=0xfd;
TR1=1; SM0=0;SM1=1; //SCON=0x50
REN=1; EA=1; ES=1; }
(2)A/D转换初始化
void AD_init()
{P1M0=0x01; //P1M0为AD采样口
P1M1=0x01;
ADC_CONTR=0xe0; //开启电源
delayms(100); }
(3)启动A/D转换程序
int get_ad()
{ uchar AD_finished=0;
int result;
ADC_CONTR|=0x08; //启动Ad ADC_START=1
while(AD_finished==0)
{ AD_finished=(ADC_CONTR&0x10); }
result=4*ADC_DATA+ADC_LOW2;
ADC_CONTR&=0xe7; //清除标志
return(result); }
(4)数据处理程序
for(num=50;num>0;num--)
{ Val_av+=get_ad(); }
Val_av/=50.0;
3.2 CVI设计
Labwindows/CVI能将功能强大的C语言与测控技术有机结合,具有灵活的交互式编程方法、丰富的库函数,为开发人员建立检测系统、自动测试环境、数据采集系统、过程监控系统提供了理想的软件开发环境。更重要的是它是集成式的开发环境,可利用其提供的库函数方便的创建基于DAQ、GPIB、PXI、VXI、串口和以太网的虚拟仪器系统。其功能主要包括:数据的采集与接收、数据的保存、数据的显示和串口检测。
4.结束语
以LabWindows/CVI虚拟仪器为软件开发平台,用STC12C5410AD来代替传统温度传感器,不仅在其内部就能进行A/D转换,而且输出的数据可以直接供单片机处理,提高了系统在采集水温数据时的抗干扰性和可靠性,精度高,有利于在复杂环境的布线工作,适用于工业其他领域或行业的温度测量。
参考文献
[1]吴赘,蒋新华,解晶莹.基于LabWindows/CVI的BMS测试系统设计[A].电源技术,2009,7(33):
621-623.
[2]王浩,齐建宇.基于Labwindows/CVI的捷联惯导测试软件设计[A].航天控制,2011,2(29):56-60.
[3]陈怀民,安玉娇,王亮.基于LabWindows/CVI虚拟测试系统软件设计与实现[A].测控技术,2009,11(28):61-62.
[4]王晓莉,王为,宋汉广.基于LabWindows+CVI多路温度采集系统的设计与实现[A].机械与电子,2009(12):22-25.
作者简介:杨叶(1987—),女,甘肃庆阳人,现就读于海南师范大学物理与电子工程学院。