(江阴职业技术学院 电子信息工程系,江苏 江阴 214405)
环境温湿度的变化会时刻影响着人们的日常生活,而伴随着气候和环境问题的日益严峻,人们对于温湿度这一基本环境要素愈加关注,更希望可以实时获知一定范围内具体温湿度要素信息。多点分布式监控系统能够适用于该采集控制领域。但其具有采样节点多,传输距离相对较远,且工作环境较为恶劣的特点。
本课题根据设计需要,构建了以STC12C5A60S2单片机为控制核心,基于RS-485总线的温湿度监测与控制系统,实现了PC上位机与多个终端检测节点之间的远距离通信功能。
主要设计内容有:
1)提出一种基于RS-485总线的远程温湿度监测与控制系统的方案,该监控系统主要由PC上位机、232/485转换接口以及终端温湿度检测节点组成;
2)完成终端检测节点的硬件电路与软件设计,温度精确到0.1 ℃,湿度精确到1%,在检测到数据之后,通过控制风扇或加湿器实现对温湿度远程监测和控制,将温湿度控制在设定阈值范围之内;
3)设计基于RS-485总线通讯的通信协议,完成多个终端检测点对环境温湿度的采集并通过RS-485总线传输到PC上位机;
4) 设计完成PC上位机监控界面,能够对温湿度数据进行实时波形和数值显示,此外还能够对环境温湿度设定阈值,当环境温湿度变化超出了预设情况时,工作人员可以通过系统对终端部分的温湿度进行实时调控。
本系统实现了多个终端检测节点环境温湿度的采集,实现了采集数据的远距离通信,基于RS485总线通信基础上的监控系统,实现了环境温湿度的采集、处理、对所采集到的数据进行远距离的传输和处理,通过对测试表明该系统的可靠性高、传输速度快、误码率低等优点,基本上完成了实际工作需求。基于RS485总线构成通信网络能够支持该系统的稳定运行和可靠传输,可以实现主机对从机的监测和控制。
单片机、PC及其他设备之间进行的信息交换称为数据通信,数据通信的方式有并行数据通信和串行数据通信两种,实际应用中具体采用哪种方式,要根据数据传送的距离来决定。如果是PC和外围设备之间的数据通信,距离小于30 m时,可以采用并行数据通信;而距离大于30 m时,则应采用串行数据通信。如果是单片机或PC与测量仪器之间的数据通信,距离小于15 m时,可以采用并行数据通信;而距离大于15 m时,则应采用串行数据通信[1]。
在通信距离要求为几十米到上千米时,通常采用RS-485串行总线标准格式。485总线采用了平衡发送和差分接收的接口标准。在发送端将串行口的TTL电平信号转换成差分信号由A、B两线输出,经过双绞线传输到接收端后,再将差分信号还原成TTL电平信号。由于总线上传输的是一对差分信号,为稳定信号传输,通常采用外加屏蔽层的双绞线传输数据,屏蔽层可靠接地。同时,总线上的收发器灵敏度相对较高,具有较强的抗共模干扰能力,因此传输的数据信号经过远距离传输也都可以完好恢复。
本设计是基于RS485的远程温度监测系统,属于远距离的数据通信,所以采用串行数据通信的通信方式
多机通信是目前通信控制领域里的主流通讯方式,点对点的的通信形式相较于多机通信而言已经无法满足人们对于现代数据通讯的需要。基于单片机的多机通信的网络拓扑结构由两台及以上的单片机构成,单片机之间的相互通讯以及对于某一过程的控制采用串行通信方式实现。主流的多机通信的形式有以下4种形式及星型、环型、串行总线型以及主从多机型[2]。
RS-485总线能够支持多机通信模式,其工作方式是半双工方式。对于远距离信号传输而言,总线上会产生影响数据稳定的反射回波信号,因此,为了能够稳定工作,RS-485总线通常在总线网络的首尾两端即开始端口和结束端口都并接120 Ω的电阻,构成终端匹配的总线型网络拓扑结构。
本系统的通信方式是一点对多点的通信方式,也就是说主机读取从机的信息,并且可以控制从机做出相应动作。为了区别各从机,需要对每台从机进行编号,如1号机是0x01、2号机是0x02、3号机是0x03,主机根据相应的编号识别从机,而从机也根据编号识别由主机通过485总线上发送的命令是否是本机的。
本系统以STC12C5A60S2单片机为核心设计电路,采用主从式多机型,是一种分散型的拓扑网络布线结构。本设计采用软硬件相结合的方式,具有接口简单和使用灵活等优点。图1为主从式基于RS485总线的单片机多机通信系统框图。
图1 基于RS-485总线单片机多机通信系统框图
主控机通过RS485转RS232与上位机进行串口通讯,借助RS485总线与从机电路构成采集、控制通讯网络。每个从机都能实时对环境周围的温湿度进行采集,并且将所采集到的数据发送给主控机;而主控机可以对接收到的每个从机所发送的信息进行相应的处理后转发给上位机,并且向所需要控制的从机发送上位机的相应命令。
由于上位机和主控机之间的串口电气特性不同,不能直接相通,因此需要将RS232C接口信号转换为RS485接口信号。本系统借助MAX232和MAX485芯片来实现两者之间的电平转换,转换器能够将RS-232串行口的TXD和RXD信号转换成平衡的半双工的RS-485信号实现串口通信链接[3]。
具体电路图如图2所示。
图2 RS232/RS485电路原理图
整个监测系统硬件电路部分主要分为两个部分:主控机系统和从机系统两部分。
根据系统的要求,主控机部分需要完成的功能:是读取并转发从机采集回来的实时数据信息,并且对从机的外设进行控制。主控机系统原理图如下图3所示。
图3 主控机系统原理图
在主控机系统中,STC12C5A60S2单片机是整个主控机系统的核心,整个主控机系统运行的控制由单片机进行处理。它既协调整机工作,又处理数据,是软硬件系统连接的桥梁。
该单片机有两个串口,其中串口1用来和从机进行通讯,串口2用来和上位机进行通讯。
从机部分负责采集相关信息,等待主控机的控制命令。以STC12C5A60S2单片机为核心,温湿度传感器采用DHT21。主要的功能是:正常模块下循环采集传感器的数据,并且处于监听状态,通过串口1来监听主控机是否发送上传数据命令或者控制继电器命令[4]。根据这些要求,从机系统的原理图如下图4所示。
图4 从机系统原理图
2.2.1 温度采集电路设计
DHT21数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,以保证产品具有极高的可靠性与卓越的长期稳定性。
图5 DHT21外观和接线
图5(a)为DHT21传感器的外形和内部结构图,该传感器内部含有一个8位的高性能的单片机,它与传感器内嵌的电容型的感湿器件和NTC型感温器件相互连接,采集到的温湿度值以数字形式输出。每个DHT21传感器都经过校验,内部在信号处理的过程中通过调用标准系数来修正测量数值,从而确保产品的测量数据稳定和可靠。该传感器的数据输出接口采用单总线制型,传输有效距离可达20米以上,其抗干扰和性价比相对较高。通常,产品的封装采用4针单排结构,与单片机连接的参考方式可以如图5(b)所示。
在本系统中,该单总线制输出的DHT21温湿度传感器与STC12C5A60S2单片机连接的外围电路相对较为简单, 1号脚5 V电源,3号脚接电线,2号脚是数据脚,为信号的稳定输出,数据脚接了一个上拉电阻S3(4.7 K)与STC12C5A60S2单片机的P2.0口相连,通过这条数据线接收数字式的温湿度测量值。4号脚悬空不用。
2.2.2 继电器控制电路设计
该部分主要是对所采集到的温湿度指标来做出相应的响应。该电路直接与单片机的P2.7口相连,由单片机的P2.7口进行直接控制。设置为低电平时吸合继电器,即当P2.7为低电平时,三极管(Q1)工作,此时三极管(Q1)的集电极为高电平,这样线圈就得电吸合继电器。如果P2.7为高电平,此时三极管(Q1)不工作,三极管(Q1)的集电极为低电平,继电器不工作
控制系统主要由三部分组成:上位机部分、主控机部分和从机部分。其中上位机部分采用C++语言编写。从前面可以看出,本系统的上位机采用C++语言编写,从机端软件包括温湿度采集和RS-485总线通信程序,主控端软件主要包括RS-485总线通信程序。整个程序的流程和协议设计密切相关[5]。
对于任何涉及通信或者数据交换的系统,通信协议的设计都是软件设计的前提和关键。整个系统软件分为上位机端和主控机(单片机)端、主控机(单片机)端和从机(单片机)端两部分。
对于协议设计而言,最重要的就是数据帧结构的设计。本系统中数据帧结构的定义如下列表格所示。
上位机端和主控机端之间的数据帧协议如下:
R湿度十位湿度个位.湿度小数位T温度十位温度个位.温度小数位设备代码
其中:湿度以R开头,含一个小数位,温度以T开头,含一个小数位,设备代码如1号从机则为A,2号从机则为B。
如当前温度为16.1度,湿度为73.9%,1号机上传,那么它的数据帧表示为:
设备代码指令代码
上位机端和主控机端之间的控制帧协议如下:设备代码指令代码其中:设备代码如1号从机则为A,2号从机则为B。增加湿度为0xf1、降低湿度为0xf2 停止为0xf3。
主控机端和从机端之间的协议如下:
0xf7湿度十位湿度个位湿度小数位温度十位温度个位温度小数位0xf3
其中:0xf7为数据帧头,0xf3为数据帧尾,总共8个字节。
如当前温度为16.1度,湿度为73.9%,1号机上传,那么它的数据帧表示为:
主控机主导整个通信过程。由主控机轮询各个节点处的从机,并要求这些从机提交其相对应的采集温湿度信息,同时根据上位机的控制命令,对相应从机转发控制命令[6]。
3.2.1 主控机程序设计
系统主控机主要软件设计思想是:先进行相关参数的初始化(串口、看门狗、当前状态),然后依次轮循发送从机地址,在等待过程中,主控机将从机上传的温湿度数据按照帧格式的要求上传至上位机,同时主控机接收上位机发送的控制命令[7]。主控机的主流程图如图6所示。
图6 主控机主流程图
3.2.2 从机程序设计
对于从机而言,它的工作与主机密切相关,它是完全被动的,根据主机的指令执行相应的操作。总的流程是:先进行相关参数的初始化(串口、看门狗),然后实时收集环境的温湿度信息,当从机收到主机发送的从机地址时,首先判断是不是它的地址,如果是,则从机按照数据帧要求发送温湿度数据给主控机,如果不是,该从机将不发送。同时从机还接收主控机发送的控制命令[8]。从机的主流程图如图7所示。
图7 从机主流程图
在上位机C++程序的编写中,最重要的是串口的初始化程序和接收触发程序的设计。本程序使用C++6.0的通用串口控件MSComm来对发送到串口的数据进行采集处理。主要结构拓扑图如图8所示。
图8 上位机系统拓扑图
打开上位机软件,开始设置串口,在上位机接通正常的情况下,上位机可以数字和实时曲线两种方式显示当前的从机温湿度信息,并能够指示从机号,调制温湿度上下限制,系统可以自动发送或手动发送控制命令。同时,在 系统运行期间能够实时显示系统时间[9]。
整个系统调试是本设计中的关键部分所在。主要分为主、从机硬件部分和上位机软件部分两部分的调试。
本系统的硬件分为主控机和从机两部分,但基本的调试方法都大致相同。具体方法是:先检查电路,并且确认无短路或断路的地方。如果都正常,则可以给电路进行通电检测。在进行通电连调时要结合软件调试进行,此时出现的问题往往可能不是硬件的问题,有些地方也有软件的设置问题。
上位机软件调试主要是结合串口调试助手测试。整个软件调试时的难点是通信协议方面的调试。
图9所示的是1号从机向上位机传送当前的采集温度是16.1 ℃,湿度是73.9%。同时系统能够比较当前湿度和上、下限值来自动或手动发送控制命令。
图9 1号从机向上位机传送当前的采集数据信息
人们一直在追求并提高通信性能,本系统以STC12C-5A60S2和MAX485为核心部件,使用数字温湿度传感器DHT21芯片,实现对周围环境的温湿度进行监测,并对相应的监测结果做出相应的处理。本系统最主要的核心在于串口通信协议的设置,重点设计的内容是单片机之间的串行异步多机通信[10]。
单片机多机通信在实际应用中,其性能的优越性和稳定性已逐渐被不少用户所认可,可以预见,支持高速率、远距离、性能稳定的通信标准将在激烈的市场竞争中脱颖而出,并随着技术进步而更加完善,它必将得到更广泛的应用和推广。