梁 波,宋 莹,王 博,3,郭 建
(1.湘潭大学材料与光电物理学院,湖南 湘潭 411105;2.中国科学院计算技术研究所计算机体系结构国家重点实验室,北京 100190;3.西安交通大学电子与信息工程学院,西安 710049)
随着现代信息技术的飞速发展,数据中心的规模越来越大。当前数据中心存在局部温度过高和整体过度制冷的严重问题。局部温度过高会造成该区域电路元器件易老化、易出故障等,从而给数据中心带来不能稳定、正常的工作等问题[1]。为了避免系统过热,许多数据中心存在过度制冷的问题,给数据中心带来巨大的能量消耗,造成浪费,大幅度地提高数据中心的运行成本。绿色和平组织评估当前全球数据中心的功率约310 ×108W[2],并且功率随着数据中心规模的扩大而增加。Garter[3]数据中心消耗的电能中有1/3~1/2 的被用于制冷。于是设计通过降低制冷能耗来节能的作业或虚拟机调度算法成为当前的研究热点之一[4-5]。对大量服务器或机房中若干关键部位温度的实时监控,为避免数据中心出现局部温度过热和过度制冷问题提供依据,是数据中心高效管理必不可少的工作。细粒度、高频度的温度监控有利于提供准确、及时的温度信息,从而及时预测、发现数据中心热点,为数据中心进行下一步避免由于系统过热造成的故障和由于空调温度设置过低造成的能耗浪费提供支持。因此,设计多点温度的高频实时采集系统显得尤为重要。
在温度采集方面,文献[6-7]利用热电偶、热敏电阻或铂电阻等温度传感器作为温度器件,再通过测量传感器两端的电势差,间接测量出温度值,用这种方法测温占用控制器端口多,电路结构复杂,不利于对多点温度采集。文献[8-9]利用总线接口实现对多点温度的采集,但由于基于单总线协议,为了实现单总线上的可扩展性,必须通过标识每一个监测点的身份,并在每一次通信中使用。各测量点身份的识别操作将会导致大量的通信时间开销,然而,一方面一个DS18B20 将温度转换12 位数字最大转换时间为750 ms,一个下位机如果连接10 个DS18B20全部采集一次需要7.5 s;另一方面,CPU 是服务器的主要热贡献点,CPU 的温度又与CPU 的利用率直接关联,在实际环境中,CPU 的利用率可以在瞬间上升到100%,测得某些服务器的出风口温度在1 s 时间间隔中上升的温度超过1°C。因此,不利于多点的高频实时采集。文献[9-11]中采用一对一的无线传输(即一个无线接收端接收一个无线发送端数据),很浪费资源,不便于管理。实际温度采集中,温度数据之间相关度高[12],若不对数据进行处理,数据传输效率低、无线模块功耗大,大大缩减了采用移动电源供电时系统的使用寿命。
为了达到多点高频实时温度采集的目的,本文提出的系统采用上、下位机的结构,将STC90C58RD作为系统的控制器、DS18B20 作为温度采集传感器、nRF24L01 作为无线通信芯片,从硬件电路设计和软件设计2 个方面对系统进行优化,从而实现系统多点温度的高频实时采集。负责温度的多点采集、采集数据的压缩和发送,利用单片机多个I/O 端口,连接多个DS18B20[13]温度传感器进行多点温度采集,单片机对采集到的数据进行数据压缩后,由nRF24L01[14]无线收/发送芯片发送给上位机;上位机面向多个下位机,负责温度数据收集、还原、数据传输至服务器管理节点,由单片机控制nRF24L01 无线收/发芯片依次接收各下位机传输的数据,并进行数据还原处理,再由单片机通过串口将数据传输给服务器管理节点;在Linux 系统上编写串口驱动程序,用于温度数据接收、显示及将温度数据写入Mysql 数据库,方便管理及温度过高报警等,系统结构如图1 所示。整个系统组网灵活,控制可靠,管理方便,系统容量大,兼容Linux 系统,易于编程。
图1 系统结构
本文系统采用一个上位机对应多个下位机的结构,实现系统的多点高频实时温度采集,其中下位机
该系统涉及软、硬件部分的设计和开发,分别从硬件设计和软件设计角度阐述对于上述上位机和下位机部分的设计思路。
温度传感器的选择,直接决定了系统的温度采集频率、测量精度、可靠性和稳定性等。由于单片机的I/O 端口资源有限,为了最大化利用I/O 资源,本系统采用的是美国DALLAS 半导体公司的数字化温度传感器DS18B20。该传感器与传统的热敏电阻相比,能直接读出被测温度,不需要进行A/D 转换占用单片机的I/O 端口,并可以通过编程实现9 位~12位的数字值读取,提供-55 ℃~125 ℃的测量范围,分辨度在12 bit 时最高达到0.062 5°,最大转换时间为75 0ms。在-10°~85°范围内,误差±0.5°,供电3.3 V~5.5 V,使用微处理器作为控制机时,可以直接使用I/O 端口驱动传感器芯片。但DS18B20 基于单总线协议,为了实现单总线上的可扩展性,必须通过ROM ID 来标识每一个监测点的身份,而且对总线上的DS18B20 的操作只能依次进行,大大增加了系统的采集周期,不利于多点温度的高频实时采集,但利用单片机的各I/O 口连接各DS18B20 的电路设计,比较容易就解决了该问题。
本文系统采用具有高速、低功耗、抗干扰能力强的STC 单片机。其中,STC90C58RD[15]内部集成了32 KB 闪存和1280BSRAM,比较适合需要存储大量处理代码的无线高频温度采集系统。用单片机的P0.0~P0.7,P1.0~P1.7 和P3.0~P3.7 引脚实现与24 个DS18B20 的连接,即一个I/O 端口分别连接一个DS18B20 温度传感器,直接使用单片机I/O 端口号标识监测点身份,通过软件编写跳过ROM 指令,提高温度采集系统的采集频率,温度传感器连接电路如图2 所示。
图2 温度传感器连接电路
另外,DS18B20 的供电方式采用外加电源方式,即DS18B20 的VCC 引脚需接入外部+5 V 电源,以保证I/O 线不需要强加上拉,这样能提高采集温度的精度。
为了不占用更多的串口,及便于数据的统一收集与管理,本系统采用Nordic 公司推出的高集成的单片无线收发芯片nRF24L01,实现数据的无线传输。nRF24L01 为单片射频收发芯片,工作于2.4 GHz全球开放的ISM 频段,最高工作速率为2 Mb/s,片内集成了频率合成器、功率放大器、晶体振荡器、调制器等功能模块,采用高效的QFSK 调制,抗干扰能力非常强[15-16]。具有126 个频道,满足多点通信和跳频通信的需要,内置硬件CRC 校验和点对多点通信地址控制,只需用少量的外围器件就能完成无线通信模块的搭建,同时简化了射频电路的设计。
时钟晶振采用16 MHz 无源晶振,nRF24L01 可以采用单边天线或环形天线,天线的频率和阻抗必须与射频芯片匹配,以获得最大的传输功率,减少无效的功率损耗。通常情况下,天线的阻抗为50 Ω 左右,与射频芯片不匹配,因此,外围电路接入了电感L1,L2,L3 和电容C5,C6 等器件作为网络匹配,并抑制高频噪声,nRF24L01 芯片外围接口电路如图3所示。
图3 nRF24L01 芯片外围接口电路
nRF24L01 芯片与单片机的接口可以采用I/O直接连接,这样可以非常方便地与各种高低速单片机进行通信,同时也有利于单片机与其他端口的通信。本文中nRF24L01 芯片与STC90C58RD 的连接图如图4 所示。
图4 STC89C58RD 与nRF24L01 的连接图
STC90C58RD 单片机有一个全双工的串行通信口,单片机和服务器之间进行串行通信时必须有一个电平转换电路,因为服务器的串口是RS232 电平,而单片机的串口是TTL 或CMOS 电平,这里采用MAX232 等系列芯片进行转换。
为简化电路设计,统一供电电源,设计中选用USB 提供5 V;由于nRF24L01 的工作电压为1.9 V~3.6 V,选用AMS 公司生产的AMS1117-3.3 电源芯片,该芯片将5 V 电压转换成3.3 V 电压输出、精度在±1%以内、稳定性高,而且有限制电流和热保护的功能。为了防止干扰,提高系统的稳定性,在ASM117-3.3V 芯片的电压输入输出端口并联了消噪电容器,nRF24L01 供电电路如图5 所示,其中C13 和C15 采用10 μF 的胆电解电容器,C14 和C16选用0.1 μF 的陶瓷电容器。
图5 nRF24L01 供电电路
DS18B20 温度传感器将温度转换成12 位数字的最大转换时间为750 ms。为了提高系统对多点温度的采样频率,本设计中,利用I/O 端口号和下位机编号的组合唯一地确定监测点身份,在对DS18B20 进行温度读取前,单片机依次对各温度传感器ROM 操作时直接发送“CCH”跳过指令,无需进行器件的身份识别,从而节省了对每个DS18B20 身份识别的时间;对DS18B20 操作时需要严格遵循其读写时序,即对DS18B20 操作时需要保证命令的执行时间,可以通过单片机I/O 端口依次操作各传感器,即只需要一个延迟时间,就可满足各个传感器操作所需的延迟时间,从而节省采集所需的时间,如温度传感器进行温度转换时12 位温度转换的最大转换时间为750 ms,由于向多个DS18B20 芯片写入指令是由下位机MCU 通过一次发送操作实现的,因此各个DS18B20 芯片能够大致在同一时间内并行地执行温度转换指令,所以下位机MCU 只需要等待一个温度转换时间750 ms 即可;各I/O 口可以同时控制各DS18B20 的温度采集操作,而采用“一总线”连接时,对各DS18B20 的操作需依次进行,从而将系统的采样频率提高到1 Hz。下位机对温度采集的流程如图6 所示。
图6 下位机温度采集流程
由于数据中心的各个关键部件的温度变化相对比较缓慢,相邻时刻温度值的相关性高,因此可以采用数据压缩处理来减少无线传输的数据量,从而提高无线传输的效率,同时也降低无线发送/接收模块的功耗。
在下位机中,将温度数据用二维数组根据温度传感器的顺序依次保存在下位机的单片机缓存中,对于任一个温度传感器所采集的数据,只需对本次温度采集中该温度传感器采集到的温度数据与预存的该温度传感器的温度数据进行比较,如A 温度传感器的温度采集值与预存的A 温度传感器采集温度值进行比较,如果每对温度的差值小于所设定的阈值,则不需要将采集的温度数据传输给无线发送模块,如果某一对或某几对温度的差值大于所设定的阈值,则把相应用此次温度变化后的温度值取代原来存储在缓存对应位置中的温度值,并将变化后的温度值传输给无线发送模块,由无线发送模块传输给上位机。
在上位机中,同样将温度数据用二维数组根据温度传感器的顺序依次保存在上位机的单片机缓存中。如果该时刻没有接收到某下位机传来的数据,用上一次该下位机传来的温度数据代替本次的温度数据并传给服务器管理节点;如果接收到了某下位机传来的数据,对上一次该下位机传来的温度数据更新、上传给服务器管理节点,并重新保存该温度数据。
本文选用增强型的ShockBurstTM模式。该模式可以使得双向链接协议执行起来更为容易、高效,即发送方要求终端设备在接收到数据后又答应信号,以便于发送方检测有无数据丢失,一旦数据丢失,则通过重新发送功能将丢失的数据恢复。增强型的ShockBurstTM模式可以同时控制应答机重发功能而无需增加MCU 工作量。
增强型ShockBurstTM下的数据格式如图7 所示,在发射数据时自动添加前导码和CRC 效验码,再接收数据时自动移去前导码和CRC 效验码。由于节点一次发送的有效数据宽度最大为32 Byte,而从DS18B20读出的十六进制温度数据,需要占2 Byte,所以一次最多只能发送16 个十六进制表示的温度值。下位机一次对24 个传感器采集温度后,通过前后0.5 s的2 次数据的传输来完成24 个温度数据的传输。
图7 增强型ShockBurstTM模式下的数据包格式
nRF24L01 在接收模式下可以接收6 路不同通道的数据,每一个数据通道使用不同的地址,但是共用相同的频道。即6 个不同的nRF24L01 设置为发送模式后可以与同一个设置为接收模式的nRF24L01 进行通信,而设置为接收模式的nRF24L01 可以对这6 个发送端进行识别。因此,在代码中设置上下位机数据通道的发送端及接收端的地址,其中发送端的地址各不相同,接收模块通过依次匹配各下位机的地址来建立通信,从而保证了每个下位机实时监测的情况可以及时地上传给上位机。
用C 语言编写Linux 系统下的串口驱动程序,用于接收单片机通过RS232 传来的数据,实时显示及将数据传递给Mysql 数据库。温度显示部分用不同颜色来标识各温度区间的温度值,如对温度值小于30 ℃的温度值用绿色显示,温度值在30 ℃~40 ℃的温度值用粉红色显示,温度值高于40 ℃的温度值用红色显示,便于管理人员一目了然地了解各服务器的实时温度监控。
针对实验环境,该系统由1 个上位机与3 个下位机组成,通过对硬件电路和软件的优化,实现了同时监测多个温度点、室内50 m 范围内、以1 Hz 为采集频率的温度采集、无线传输、汇总及显示等功能,具有体积小、精度高、实用性强、可靠性高、拓展性好等优点。可对服务器机箱中关键部位的温度进行实时测量,从而为基于数据中心热交换效率或能量最小化等绿色计算提供有力的温度测量工具。
测量温度与标准温度计测的真实温度的对比如表1 所示,误差小于0.5℃,满足高精度的要求。1 个上位机与6 个下位机系统,且每个下位机接24 个温度传感器,没有对数据进行压缩处理时的丢包测试如表2所示,其中每次测试时间为10 min,每秒应该接收312 Byte 的数据,理论接收为187 200 Byte。由表可知10 min 中内丢包率小于5%;加入数据压缩,并将阈值设为0.5 ℃时,减少60%数据量的传输,极大提高了无线通信的传输效率,同时也降低了无线模块的能耗,延长了系统选用移动电源供电时的使用寿命。
表1 测量温度与真实温度的对比 ℃
表2 丢包测试结果
本文设计了一种基于nRF24L01 的无线多点高频实时温度采集系统,通过对系统电路进行改进和对软件进行优化,实现了多点温度以1 Hz 采集速率的实时采集与统一收集,同时系统丢包率小于5%,无线传输部分数据传输量减少60%。该系统满足实时监控数据中心温度的要求,相比其他温度采集系统,克服了采集温度点数目少、采样及传输频率低、复杂环境下布线复杂、功耗高、不便于监控等问题,具有较大的实际推广和应用价值。
[1]江 和,张培铭,翁桂华.基于无线通信的高压设备温度监测系统的设计[J].仪器仪表学报,2009,30(9):1969-1975.
[2]Cook G.How Clean is Your Cloud?[EB/OL].(2012-04-17).http://issuu.com/greenpeaceinternational/docs/h owcleanisyourcloud.
[3]Garter Research,Top 10 Techniques to Improve Data Center Cooling Efficiency[EB/OL].(2012-06-27).https://www.gartner.com/doc/1998515.
[4]Orgerie A C,Assuncao M D D,Lefevre L.A Survey on Techniques for Improving the Energy Efficiency of Large Scale Distributed Systems[J].ACM Computing Surveys,2014,46(4):1-35.
[5]Jing S Y,Ali S,She K,et al.State-of-the-Art Research Study for Green Cloud Computing[J].The Journal of Supercomputing,2013,65(1):445-468.
[6]赵敏华,李 莉,呼 娜.基于无线传感器网络的水质监测系统设计[J].计算机工程,2014,40(2):92-96.
[7]张修太,胡雪惠,翟亚芳,等.基于PT100 的高精度温度采集系统设计与实验研究[J].传感技术学报,2010,23(6):812-815.
[8]侯俊才,侯莉侠,胡景清,等.基于单总线技术的温室大棚多点温度采集系统[J].农机化研究,2012,(8):152-155.
[9]李世芳,赵 佩.基于STC89C58RD+芯片的无线多点温度采集系统设计[J].安徽农业科学,2010,38(24):13556-13557.
[10]丁 辉,姚庆文,宦 娟,等.基于nRF2401 的盐度和温度无线网络检测的研究[J].东北师大学报:自然科学版,2013,45(4):71-76.
[11]李 闪,黄小莉,胡 兵,等.基于nRF24L01 的无线智能温度监测系统[J].仪表技术与传感器,2011,(12):52-54,57.
[12]程 剑,李 平,朱海荣.WSN 中基于区间小波的偶合数据压缩算法[J].计算机工程,2011,37(9):150-152.
[13]DALLAS 公司.DS18B20 使用手册[Z].2003.
[14]Semiconductor N.Single Chip 2.4 GHz Transceiver nRF24L01 [EB/OL].(2007-07-01).http://www.nordicsemi.com.
[15]宏晶科技.STC90C51/RD +系列单片机器件手册[Z].2009.