分布式温湿度数据采集系统

时间:2023-06-19
  摘要:介绍了一种基于双串口高速微控制器DS87C520的智能化、网络化、数字化的分布式温湿度数据采集系统,该系统一方面可通过与数字化温湿度传感器通信来获得温湿度数据,另一方面可以与上位机进行周期性或随机性的通信,从而实现对温湿度的采集、存储和打印等功能的操作。

 

  近年来,随着人们生活质量的不断提高,以及楼宇智能化、自动化的不断兴起与普及,许多大型场所如购物中心、酒店、写字楼等都需要较为舒适的温湿度环境,因此,的温湿度数据在温湿度控制系统中显得极为重要。本文结合科研课题研究开发了一个基于双串行口微控制器DS87C520的高、高速度、稳定可靠的分布式温湿度数据采集系统,该系统可以实时记录和分析温湿度数据。


 

  1 温湿度采集系统的总体设计

 

  本温湿度采集系统分别通过RS-485、RS-232总线和相关的协议来实现与智能传感器、上位PC机的通信。图1为整个温湿度采集系统示意图。图中,温湿度采集控制器定时与智能传感器通信以获得实时温度和湿度,同时通过DS87C520进行数字化处理,以便将BCD码为00~70的温度采样值和00~99的湿度采样值分别与-20℃~50℃的温度和0%~99%RH的湿度相对应,之后将结果在七段数码管上显示出来。上位机与温湿度采集控制器进行定时或随时通信可以得到各个传感器的采样值,并对数据进行储存和处理,以备查询分析及报表打印。

  2 温湿度采集系统的硬件设计

 

  本系统中的双层网络体系要求温湿度采集控制器具有两个串行口,考虑到系统抗干扰能力等诸多因素,笔者选用Dallas公司的全双工双串口高速微控制器DS87C520作为主控制单元。图1中的智能温湿度传感器内部含有微处理器,可以实现非电量到电压模拟量的线性转换。系统工作时,先通过A/D转换将温湿度模拟信号采样到微处理器,然后由微处理器对采样所得的数字信号进行查表计算处理便可得到相应的数字量之后再将数字量由D/A转换成电压信号输出,通过串口进行数据的传输。

 

  2.1 DS87C520简介

 

  DS87C520高速微控制器具有与Intel80C51兼容的指令集以及相同的引脚和基本资源,而且由于使用了全新设计的处理器内核,同时去掉了冗余的时钟周期和存储周期,所以在相同频率的晶振下,每条指令的执行速度可以提高1.5~3倍。因此在使用相同代码编写的程序和同样速度的晶振情况下,程序的执行效率一般可提高2.5倍。 DS87C520可在高达33MHz的晶振下工作。其主要特点如下:

 

● 带有256字节的片内RAM、16kB的片内EEPROM、1kB的内部SRAM;

● 带有两个全双工串口;

● 每个机器周期只要4个时钟周期(80C51的一个机器周期需要12个时钟周期)。

 

  2.2 DS87C520双串口寄存器的设置

 

  DS87C520带有2个全双工的串行口,使用起来非常方便。通过设置串口控制寄存器SCON098H 和SCON1C0H 可以选择串口的工作方式;而通过设置PCON87H 和WDCOND8H 则可选择串口工作的波特率;需要注意的是:串口2只能使用定时器1作为波特率发生器,而串口1则既可使用定时器1,也可使用定时器2。本系统中由于两个串口波特率一致,故均采用定时器1作为波特率发生器。

    2.3 双串口硬件电路

 

  DS87C520与传感器之间用RS-485总线实现通信,接口芯片选用MAX487,该芯片的输入阻抗为RS-485标准输入阻抗的4倍,故可以在总线上连接多达128个传感器。温湿度采集控制器通过DIP开关来读入接入的传感器总个数,并通过按键选择自动操作模式或者手动操作模式。如为自动操作模式,温湿度采集控制器将按传感器由小到大的地址编号顺序与传感器进行通信以获得每个传感器对应的温湿度数据;而在手动模式下,只要将键盘所指定的传感器编号输入,系统便可将查询到的信息包括传感器号、温度和湿度值等显示在数码管上。

 

  考虑到通信成本和通信距离,采用RS-232总线与上位机通信,并用MAX232进行电平转换。系统的双串口通信硬件原理图如图2所示。

  3 温湿度采集系统的软件设计

 

  3.1 网络体系结构与通信协议

 

  温湿度采集系统网络体系采用三层结构,从下往上依次为物理层、链路层和应用层。

 

  物理层采用EIA RS-485总线标准,以双绞线为传输介质,通信距离为1200米,从机个数为128台(使用MAX487),数据传输速率为2400Bit/s,数据传输格式为:1位起始位,8位数据位,1位停止位,无奇偶校验位。

 

  链路层参照HDLC(数据链路控制)标准制定,采用适合于主-从网络的正常操作-响应模式。帧的定义格式为:帧开始符、目的地址、发送地址、控制、信息、校验和帧结束符。

 

  应用层用标志7EH(同步字符)所包含的内容作为一帧;控制字为1个字节,位0或1分别表示信息帧或管理帧;管理帧无信息段,信息帧则根据实际情况决定其字节数。校验段占一个字节,其值为控制字、地址和信息三部分内容的逻辑和。

 

  3.2 网络通信程序的设计

 

  温湿度采集控制网络的通信程序。

    温湿度采集控制器每隔2s向所有智能传感器发送数据请求,同时启动通信监控计时器。每收到一帧后即判断校验和(BCC)是否出错,若出错则废弃该帧,同一帧的纠错重发多为3次,超过3次仍不正常,则退出并报警;若通信监控定时器定时时间已到但仍未收到应答,则重发,多重发3次,若仍无应答,则退出并报警。通信正常时,即可将的各智能传感器的温湿度值存入温湿度表,以备上位机查询。温湿度采集控制器通过串口中断方式与上位机通信。当与上位机进行周期性数据通信时,则将温湿度表中存储的各传感器温湿度值上传给上位机;若上位机需要查询某一传感器的实时温湿度值时,则立即向该传感器发送数据请求,同时回送温湿度值给上位机。

 

  3.3 温湿度采集系统上位机软件的实现

 

  上位机管理软件采用Delphi 6.0编写。该程序主要包括两个部分:一是与温湿度采集控制器的通信,另一个是数据的处理。

 

  Delphi中有3种方法可以实现通信功能:一是使用Windows操作系统提供的API函数;二是使用Delphi自带的串行通信控件ActiveX的MSComm;三是使用第三方控件。但无论使用那种方法,一个阶段都要调用API函数,并由API函数执行通信操作。因此,笔者采用种方法直接使用API函数来完成上位机与控制器的串行通信。

 

  由于在Delphi的Windows.pas单元文件中已经将Win32 API声明,因此在Delphi里面使用API时,只要在uses区段中加入Windows即可。API中与串行通信相关的函数约有20个,本系统中使用到的API函数如表1所列。用API函数编写通信程序时,数据的读入和送出均以文件形式进行。

表1 温湿度采集系统使用的API函数

 

函  数  名  称说    明
CreateFile用来打开通信端口
CloseFile用来关闭通信端口
GetCommState取得串行端口设置参数
SetCommState设置串行端口参数
WriteFile将数据从串口送出
ReadFile读入串口数据
PurgeComm清除串口缓冲区

  

  进行数据的存储和查询时,首先要在数据源管理器中加载建立的数据库,以备Delphi进行访问;然后通过Datasource、Query 和DBGrid三个数据库控件来访问一个由MicroSoft Access建立的数据库。通过SQL语句完成数据的插入、查询等工作。

  4 结束语

 

  实际运行情况表明:基于DS87C520的分布式温湿度数据采集系统在双层总线网络结构中,对于大量数据的通信和处理比传统的51系列单片机在稳定性、准确性和可靠性等方面更胜一筹,因而具有较好的推广应用前景。

上一篇:2004年第二季度十大热门IP&E新品评析
下一篇:高效转换的同步回扫电路

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料