前 言
近年来,随着人们对生活质量要求的不断提高,以及楼宇智能化、自动化的不断兴起与普及,许多大型场所如购物中心、酒店、写字楼等都需要较为精确的温湿度数据采集系统以监测控制环境的温湿度,满足人们对环境舒适度的要求,本文结合科研课题研究与开发了一个基于双串行口微控制器DS87C520的高精度、高速度、稳定可靠的分布式温湿度数据采集系统。
1 温湿度采集系统的总体设计
本温湿度采集系统分别通过RS-485总线、RS-232总线和相关的协议实现与智能传感器、上位PC机通信,图1为整个温湿度采集系统示意图。温湿度采集控制器定时与智能传感器通信以实时获得温度和湿度;通过DS87C520进行数字化的处理,将BCD码为00到70的温度采样值和00到99的湿度采样值,分别对应为温度-20℃到50℃和湿度0%到99%RH,在七段数码管上显示出来。上位机与温湿度采集控制器采用定时或随时通信,得到各个传感器的最新采样值,并将数据进行储存和处理,以备查询分析及打印报表。
图1 温湿度采集系统示意图
2 温湿度采集系统的硬件设计
本系统中的双层网络体系要求温湿度采集控制器具有两个串行口,考虑到系统抗干扰能力等诸多因素,笔者选用Dallas公司的全双工双串口高速微控制器——DS87C520作为主控制单元。图1中的智能温湿度传感器内部具有微处理器,负责将采样的温湿度模拟信号转换成数字信号并通过串口进行数据的传输。
2.1 DS87C520简介
DS87C520高速微控制器具有与Intel 80C51兼容的指令集、相同的引脚和基本资源,但DS87C520因为使用了全新设计的处理器内核,去掉了冗余的时钟周期和存储周期,所以在相同频率的晶振下每条指令执行速度可以被提高1.5到3倍。因此在使用相同代码编写的程序和同样速度的晶振情况下,程序的执行效率一般可以提高2.5倍。 DS87C520可在高达33MHz的晶振下工作,其主要的特点有:
1) 256字节的片内RAM,16KB的片内EEPROM,1KB的内部SRAM;
2) 两个全双工串口;
3) 每个机器周期只要4个时钟周期(80C51的一个机器周期需要12个时钟周期)。
2.2 DS87C520双串口寄存器的设置
DS87C520带有2个全双工的串行口,使用起来非常方便。通过设置串口控制寄存器SCON0(98H)和SCON1(C0H)来选择串口工作方式;通过设置PCON(87H)和WDCON(D8H)选择串口工作的波特率;需要注意的是串口2只能使用定时器1作为波特率发生器,而串口1则可使用定时器1和定时器2。本系统中由于两个串口波特率一致,故均采用定时器1作为波特率发生器,计算公式:
Reload=256-(2SMOD * Oscillator Freq)/ (384 * Baud rate)
其中Oscillator Freq为晶振频率,Baud rate为波特率,Reload为重装载值。
2.3 双串口硬件电路
DS87C520与传感器通信采用RS-485总线,接口芯片采用MAX487,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 网络通信程序的设计
温湿度采集控制器网络通信程序的流程图如图3所示。
图3 通信流程图
温湿度采集控制器每隔2秒钟向所有智能传感器发送一次数据请求,同时启动通信监控计时器。收到一帧后判断校验和(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函数如下表所示。用API函数编写通信程序,数据的读入和送出均是以文件的形式进行。
对于数据的存储和查询,首先要在数据源管理器中加载建立的数据库,以备Delphi进行访问;再通过3个数据库控件:Datasource、Query 和DBGrid来访问一个由MicroSoft Access建立的数据库。通过SQL语句完成数据的插入、查询等工作。
4 总 结
本系统运行的情况表明,基于DS87C520的分布式温湿度数据采集系统,在双层总线网络结构中,对于大量数据的通信和处理比传统的51系列单片机在稳定性、准确性和可靠性等方面更胜一筹,具有较大的推广应用前景。