发明内容
因此,本发明的目的是提供一种能够克服上述技术问题的环境数据多点实时采集解决方案。
本发明提供了一种环境数据多点实时采集系统,包括:上位机和分布在不同区域并与所述上位机互联的一个或多个下位机,每个下位机包括微控制单元和与所述微控制单元连接的部署在相应区域内不同监测点的多个传感器;
所述传感器用于采集其被部署至的监测点的环境数据;
所述微控制单元用于实时获取各个监测点的环境数据;将实时获取的每个监测点当前的环境数据与前一时刻的缓存值进行比较,确定是否将当前的环境数据上传给所述上位机;
所述上位机用于实时接收各个下位机发送的环境数据和相应监测点的身份信息。
其中,所述微控制单元还用于判断实时获取的每个监测点当前的环境数据的变化是否超过预设的阈值,如果是,则将当前的环境数据和相应监测点的身份信息传输给所述上位机,如果否,则不将当前的环境数据传输给所述上位机。所述上位机中,对于任一监测点,如果上位机未接收到该监测点的新数据,则默认该监测点当前的环境数据与上一次所接收的数据一致。
其中,所述下位机的微控制单元具有多个I/O端口,每个传感器与其中一个I/O端口连接,所述监测点的身份信息用下位机编号和I/O端口号的组合唯一地表征。
其中,所述环境数据为温度数据。
其中,所述传感器采用Dallas半导体公司的DS18B20芯片。
其中,所述下位机和所述上位机通过无线通信模块实现多对一无线互联。
本发明还提供了一种基于上述的环境数据多点实时采集系统的环境数据多点实时采集方法,包括下列步骤:
1)每个下位机的微控制单元轮询其所连接的每个传感器并实时获取各个监测点的环境数据;
2)每个所述下位机的微控制单元在接收到任一个传感器的温度数据时,计算当前接收到的环境数据与上一时隙所缓存的同一监测点的环境数据的差值,如果该差值小于预定的阈值,则进入步骤3),否则进入步骤4)
3)所述下位机的微控制单元丢弃当前接收到的环境数据,且所缓存的相应传感器的环境数据不变;
4)所述下位机的微控制单元用当前接收到的环境数据替换所缓存的上一时隙的相应监测点的环境数据,并将变化后的环境数据和相应监测点身份信息传输给所述上位机。
其中,所述传感器采用Dallas半导体公司的DS18B20芯片,所述步骤1)中,所述下位机的微控制单元进行轮询DS18B20芯片时,在DS18B20芯片的ROM操作阶段直接向其发送跳过指令。
其中,所述步骤1)包括下列子步骤:
11)下位机的微控制单元连续地依次通过各I/O端口对所连接的各DS18B20芯片进行初始化操作,然后延迟一个初始化周期;
12)延迟结束后,下位机的微控制单元立即连续地依次向各I/O端口依次发跳过ROM命令;
13)步骤12)结束后,下位机的微控制单元立即连续地依次向各I/O端口依次发温度转换命令;
14)下位机的微控制单元延迟一个温度转换等待周期;
15)延迟结束后,下位机的微控制单元立即连续地依次通过各I/O端口再次初始化各DS18B20;
16)步骤15)结束后,下位机的微控制单元立即连续地依次向各I/O端口发跳过ROM命令;
17)步骤16)结束后,下位机的微控制单元立即连续地依次向各I/O端口发数据读取命令;
18)步骤17)结束后,下位机的微控制单元立即连续地依次在各I/O端口读取相应DS18B20芯片的高速暂存器。
其中,每个所述下位机对应唯一的地址码,所述步骤4)中包括:
41)所述下位机发射该下位机的地址码;
42)所述上位机接收并识别地址码,如地址码不匹配,则继续检测,如地址码匹配,则接收该下位机传输的环境数据和所对应的监测点身份信息,然后将这些信息上传给PC机,并进行下一个地址码的检测;
43)如所述上位机在规定时间内上位机没有检测到与该地址码匹配的下位机所传输的环境数据,则本次采集到的环境数据和上次采集到的环境数据一致,用所保留的该下位机上一次的数据代替本次数据上传给PC机然后进行下一个地址码的检测。
本发明还提供了一种基于上述环境数据多点实时采集方法的数据中心温度管理方法,其特征在于,在数据中心的各服务器和机房中若干关键部位部署监测点,所述数据中心温度管理方法包括:根据前述环境数据多点实时采集方法实时采集各监测点的温度数据,然后根据所述各监测点的温度数据实时调节各服务器的负载,使各服务器发热均衡。
与现有技术相比,本发明具有下列技术效果:
1、能够以较低的开销来提高环境数据汇总跟踪的实时性。
2、能够节省线缆,布线简单。
3、低能耗。
4、能够兼容常用的DS18B20芯片,只需对现有的基于DS18B20芯片的温度采集系统做相对简单的改造,即可显著提高温度跟踪的实时性。
5、特别适合用于大规模数据中心机房,有助于在确保服务器的安全运行的前提下解决机房过度制冷问题,大幅降低机房的总能耗。
具体实施方式
下面结合附图和实施例对本发明做进一步地描述。
图1示出了根据本发明一个实施例提供的环境数据多点实时采集系统的结构,包括:上位机和与上位机无线互联的多个下位机。其中,下位机分布在不同的待测区域。每个下位机包括MCU、与MCU连接的无线发送/接收模块、以及与MCU连接的多个传感器。其中,MCU具有多个I/O端口,每个传感器分别通过其中一个I/O端口与MCU连接。与MCU连接的各传感器布置在该MCU周围(即待测区域)的多个监测点,用于采集环境数据。所述上位机包括MCU和与MCU连接的无线发送/接收模块以及与MCU连接的监控端PC或服务器。上位机与下位机之间通过各自的无线发送/接收模块实现无线互联。上位机的MCU通过RS232将数据传输给监控端PC或服务器。
本实施例中,对于每个下位机,其MCU依次轮询各个I/O端口,读取与该I/O端口连接的传感器所采集的环境数据。在接收到任一个传感器的环境数据时,下位机的MCU计算当前接收到的环境数据与所缓存的上一时隙同一传感器的环境数据之间的差值,如果该差值小于预定的阈值,则丢弃当前接收到的环境数据,所缓存的相应监测点的环境数据不变,否则用当前接收到的环境数据替换所缓存的上一时隙的相应监测点的环境数据,并将变化后的环境数据和所对应的监测点身份信息传输给所述上位机。这种方案一方面大幅减少了下位机向上位机转发的数据量,另一方面又能将环境数据的短时间剧烈变化及时地传递给上位机,从而及时发现所监测区域的突发情况,因此能够以较小的代价提高环境数据多点采集的实时性。
一个实施例中,所述环境数据多点实时采集系统为用于数据中心机房的温度采集系统。所述传感器采用Dallas半导体公司的DS18B20芯片。DS18B20芯片是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点,已广泛应用于供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制等各个领域。MCU基于单片机最小系统实现,包括:51单片机芯片(例如STC89C58Rd芯片)、晶振电路、复位电路及电源电路。晶振电路采用频率为11.0952Mhz的晶振;复位电路采用手动按键产生复位信号(按键时间大于两个机器周期),完成单片机复位;电源电路采用+5V电池进行供电。
图2示出了传感器芯片和单片机芯片及二者的连接方式的示意图。使用STC89C58Rd芯片的P0(P0.1、P0.2、…、P0.8)、P1(P1.1、P1.2、…、P1.8)各8个以共计16个I/O口连接16个DS18B20芯片的DQ线(即数据输入输出线),并用外部的+5V电源通过一个4.7K电阻连接到DQ线上,使外部+5V电源为DS18B20芯片提供电压。通过单片机的I/O口来对应DS18B20编号以确定相应的监测点。
图3示出了本发明一个实施例的单片机芯片和无线通信芯片及二者的连接方式的示意图。其中,无线发送/接收模块采用nRF24L01发送/接收芯片。nRF24L01芯片与STC89C58Rd芯片连接的nRF24L01引脚功能如下:CE为RX(接收)或TX(发送)模式选择引脚、CSN为SPI片选信号引脚、SCK为SPI时钟引脚、MOSI为从SPI数据输入脚、MISO为从SPI数据输出脚、IPQ为可屏蔽中断脚。nRF24L01芯片具有接收模式、发送模式、待机模式Ⅱ、待机模式Ⅰ、掉电模式,表1示出了nRF24L01芯片的各主要工作模式及其对应的引脚电平,nRF24L01芯片的工作模式,由nRF24L01芯片的配置寄存器中的PWR_UP位,PRIM_RX位及nRF24L01芯片的CE引脚共同决定。PWR_UP位与PRIM_RX位通过在代码中设置为“1”或“0”来实现,CE是使能芯片为发送模式或接收模式的的引脚。表2示出了nRF24L01芯片的时序信息。
表1
表2
其中,待机模式Ⅰ在保证快速启动的同时减少系统平均消耗电流,在待机模式Ⅰ下,晶振正常工作。在待机模式Ⅱ下部分时钟缓冲器处在工作模式,当发送端TX FIFO寄存器为空并且CE为高电平时进入待机模式Ⅱ。在待机模式期间,寄存器配置字内容保存不变。在掉电模式下,nRF24L01各功能关闭,保持电流消耗最小。进入掉电模式后,nRF24L01停止工作,但寄存器内容保持不变。掉电模式由寄存器中PWR_UP位来控制。由nRF24L01芯片的引脚功能可知,nRF24L01芯片各个模式间的切换由PWR_UP、PRIM_RX及CE可以确定,另外,STC89C58Rd芯片内部不带SPI接口,在一个实施例中,STC89C58Rd芯片使用自身的4个I/O引脚模拟SPI输入输出时序,进而与nRF24L01芯片进行通信。
一个实施例中,上位机通过MAX232芯片将RS232电平转换为TTL电平,从而实现监控端PC的RS232串行接口与MCU相连,将MCU中的温度值传输给监控端PC。上位机与下位机采用相同的单片机芯片和无线通信芯片及连接方式,如图2、图3所示。
进一步地,由于MCU(例如STC89C58Rd芯片)在任意一时刻只能运行一条指令,为了加快下位机的数据采集速率,本发明的一个实施例还进一步提供了一种基于图2实施例的环境数据多点实时采集系统的环境数据多点实时采集方法。图4示出了基于图2实施例的环境数据多点实时采集方法的流程图,包括下列步骤:
步骤101:下位机MCU依次初始化各DS18B20芯片。本实施例中,依次将MCU各连有温度传感器的I/O口电平拉低,并在所有I/O口(指连接了DS18B20芯片的所有I/O口)电平拉低后,然后延时至少480us,以确保芯片成功初始化,本文中将这一延时称为一个初始化周期。
步骤102:下位机MCU向各I/O口依次发跳过ROM命令CCh,对于每个I/O口,发送发跳过ROM命令CCh的写入时间均为60us。MCU向DS18B20写数据是指令和数据发送的基本操作,采用位右移操作实现低位在前高位在后的逐位写入,主要包括写“0”和些“1”两种时序。写时序从主机拉低总线大于1us开始,在随后的15us内把待发送的信号发送至DQ上(DQ是温度传感器用于与控制器相连的数据线),等待传感器对其进行采样,传感器在45us内完成对数据的采集。数据采集时,如果总线是高电平,写入逻辑“1”;反之写入逻辑“0”。可以看出,一个写周期至少需要60us,2个写周期之间必须有一个大于1us的恢复时间。本步骤中,下位机MCU向第一个I/O口发跳过ROM命令CCh,保持写入时间60us,然后再向第二个I/O口发跳过ROM命令CCh并保持写入时间60us,再向第三个I/O口发跳过ROM命令CCh并保持写入时间60us,依此类推,直至所有连接了传感器的I/O口都被轮询了一遍。
步骤103:下位机MCU向各I/O口依次发温度转换命令44h,向每个I/O发送命令的写入时间为60us。与步骤102类似,本步骤中,下位机MCU向第一个I/O口发温度转换命令44h,保持写入时间60us,然后再向第二个I/O口发温度转换命令44h并保持写入时间60us,再向第三个I/O口发温度转换命令44h并保持写入时间60us,依此类推,直至所有连接了传感器的I/O口都被轮询了一遍。
步骤104:下位机MCU进入延迟以等待温度转换,延迟时间根据传感感器温度转换时间设置。温度转换时间通常大于750ms。在延迟时间内,DS18B20芯片执行温度转换指令,即DS18B20芯片进行温度的测量和A/D转换,产生的温度转换结果数据以2个字节的形式被存储在DS18B20芯片的高速暂存器中,而后DS18B20保持等待状态。本步骤中,由于向多个DS18B20芯片写入指令是由下位机MCU通过流水化的操作实现的,因此各个DS18B20芯片能够大致在同一时间内并行地执行温度转换指令,所以下位机MCU只需要等待一个温度转换时间(例如750ms)即可。
105:延迟结束后,下位机MCU依次通过各I/O口再次初始化各DS18B20。本步骤中,初始化具体手段与步骤101一致。
106:下位机MCU依次向各I/O口发跳过ROM命令CCh,向每个I/O发送命令的写入时间为60us。本步骤与步骤102一致。
107:下位机MCU依次向各I/O口发数据读取命令BEh,向每个I/O发送命令的写入时间为60us。与步骤102类似,本步骤中,下位机MCU先向第一个I/O口发数据读取命令BEh,保持写入时间60us,然后再向第二个I/O口发数据读取命令BEh并保持写入时间60us,再向第三个I/O口发数据读取命令BEh并保持写入时间60us,依此类推,直至所有连接了传感器的I/O口都被轮询了一遍。
108:下位机MCU各I/O口依次读取相应DS18B20芯片的高速暂存器,将数据存入下位机MCU的缓存区。单片机从DS18B20读取数据,包括温度的采集和其他状态信息的回传,也是以位为单位,包括读“0”和读“1”两种时序。读取也是以总线拉低至少1us作为启动信号,然后置1并保持至少60us进入接收状态。传感器在接收到启动信号后15us内把数据(0或1)发送到DQ端供单片机读取,主机由低到高依次读取8位二进制数,随后的45us又释放总线。可以看出,一个读周期至少需要60us,2个都周期之间需要一个大于1us的恢复时间。本步骤中,对每个I/O口,读取时间为60us。在数据存入下位机MCU缓存区后,MCU对所存入的数据进行取舍处理。
这一方案能够极大地提高DS18B20芯片的数据采集频率。目前DS18B20芯片通常采用总线形式连接MCU,即MCU的一个I/O端口通过总线连接多个DS18B20。此时读取温度时需要发匹配ROM指令,后跟64位ROM编码序列,让总线控制器在多点总线上定位一只特定的DS18B20芯片,即用64位ROM编码来表明监测点身份。而图4的实施例利用I/O端口号和下位机编号的组合唯一地确定监测点身份,在对DS18B20芯片进行读取温度时,ROM操作直接发送“CCh”跳过指令,节省了读取64位ROM编码序列的时间。另外,图4的实施例还通过流水化的指令发送实现了对多个DS18B20芯片的控制和数据读取,提高了DS18B20芯片温度转化的并行性能,节省了大量的时间,显著地提高了轮询频率。
在下位机中,将温度数据用二维数组根据温度传感器的顺序依次保存在下位机的单片机ROM中,对于任一个温度传感器所采集的数据,只需对本次温度采集中该温度传感器采集到的温度数据与预存的该温度传感器的温度数据(通过读取ROM的相应位置即可)进行比较,例如A温度传感器的温度采集值与预存的A温度传感器采集温度值进行比较,如果每对温度的差值小于所设定的阈值,则不需要将采集的温度数据传输给无线发送模块,如果某一对或某几对温度的差值大于所设定的阈值,则把相应用此次温度变化后的温度值取代原来存储在ROM对应位置中的温度值,并将变化后的温度值传输给无线发送模块,由无线发送模块传输给上位机。由于在相当长的一段时间内,很多服务器温度变化不大,因此这样可以减少无线发送/接收模块的发送次数及发送数据量,从而提高无线传输的效率,同时也降低了无线发送/接收模块的功耗。而当服务器温度剧烈变化时,实时采集的温度与预存温度的差值将显著增加,超过所设定的阈值,促使下位机向上位机转发数据,因此,上述方案能够及时发现所监测区域的突发情况。图5示出了本发明一个实施例的下位机的数据取舍处理的流程示意图,数据取舍处理的流程包括下列步骤:
步骤201:MCU在接收到(即读取)任一个传感器的环境数据。
步骤202:下位机的MCU计算当前接收到的环境数据与所缓存的上一时隙同一传感器的环境数据之间的差值,如果该差值小于预定的阈值,则直接返回,即丢弃当前接收到的环境数据,所缓存的相应监测点的环境数据不变,否则,进入步骤203。
步骤203:用当前接收到的环境数据替换所缓存的上一时隙的相应监测点的环境数据。
步骤204:将变化后的环境数据和所对应的监测点身份信息传输给所述上位机。
这种方案一方面大幅减少了下位机向上位机转发的数据量,另一方面又能将环境数据的短时间剧烈变化及时地传递给上位机,从而及时发现所监测区域的突发情况,因此能够以较小的代价提高环境数据多点采集的实时性
在一个实施例中,通过对不同下位机设定不同地址,实现一个上位机对多个下位机的无线数据采集。其中,每个下位机的无线收发芯片nRF24L01均设置一个地址,利用无线模块的地址识别功能,只有收到和自己对应的地址时才会发送数据。众所周知,nRF24L01有接收、发送、待机、掉电几种主要的模式,其中收发模式有三种,分别是EnhancedShockBurstTM模式、ShockBurstTM模式、直接收发模式,本系统采用Enhanced ShockBrustTM模式,在该模式下,nRF24L01自动处理字头和CRC校验码,在接收数据时自动将字头和CRC校验码移去,在发送数据时自动加上字头和CRC校验码。nRF24L01还集成了自动应答功能,即接收端收到数据后自动发送一个答应信号,发送端收到答应信号后确认完成这次数据的发送;在默认的发送时间内如果没有收到答应信号,发送端的MAX_RT位置1,触发发送端中断信号,并停止数据的发送。无线发送模块发送的信号格式是“地址A+数据D+校验码CRC”,地址为A的数据采集模块接收到命令开始测温将数据返回,然后等待下次测温命令。每一个温度传感器每一次采集的温度数据包含4个字节,依次是起始字节"温度高位"、“温度低位”校验码。数据D中包含采集一次的所有温度数据。对于上位机,首先,上位机寻找与自己对应的下位机地址,然后,在设定的时隙内,分别对不同的下位机进行数据的无线接收,并且通过RS232串口传输给PC,同时保留该下位机的温度数据。如果在设定的时间内没有接收到该下位机传输过来的温度数据,说明这次和上次的温度基本一样,下位机中没有发送这次的采集温度,只需拿上一次保留的该下位机温度值传输给PC;如果接收到新的数据,需要将新的数据与保留的数据,根据其编号,用新数据替换原来的数据,并将其更换后的数据传输给PC并重新保存。
图6和图7分别示出了本发明一个实施例中的环境数据多点实时采集系统实例的下位机和上位机工作的流程图。其中左侧为下位机工作的流程图,右侧为上位机工作的流程图。其中,虚线框内依次初始化DS18B20,对温度传感器依次发跳过ROM命令与温度温度转换命令,依次读取温度并对数据进行取舍处理,这几个步骤相当于前文中的步骤101至108。
图6和图7分别示出了本发明一个实施例中的环境数据多点实时采集系统实例的下位机和上位机工作的流程图。其中左侧为下位机工作的流程图,右侧为上位机工作的流程图。其中,虚线框内依次初始化DS18B20,对温度传感器依次发跳过ROM命令与温度温度转换命令,依次读取温度并对数据进行取舍处理,这几个步骤相当于前文中的步骤101至108。
参考图6,环境数据多点实时采集系统实例的下位机工作流程包括下列步骤:
步骤301:初始化STC89C58RD芯片(即MCU)。
步骤302:初始化nRF24L01芯片(即无线收发芯片)。
步骤303:依次初始化DS18B20芯片(即温度传感芯片)。
步骤304:对DS18B20芯片依次发跳过ROM命令与温度转换命令。
步骤305:依次读取各个DS18B20芯片所测的温度,并对数据进行取舍(可采用前文中的步骤201至203进行数据取舍处理)。
步骤306:将处理后的数据通过SPI接口写入nRF24L01芯片。
步骤307:判断本地nRF24L01芯片是否与上位机的无线接收模块(也可以是nRF24L01芯片)发出的地址码相匹配,如果判断为是,继续执行步骤308,否则重新执行步骤307。
步骤308:本地nRF24L01芯片发送数据。所发送的数据是经过步骤305的数据取舍处理后的数据,缓存中未改变的数据可以不发送,这样能够节省能源。
步骤309:本地nRF24L01芯片所缓存的数据是否发送完毕,如果判断为是,则回到步骤302,否则回到步骤308。
参考图7,环境数据多点实时采集系统实例的上位机工作流程包括下列步骤:
步骤401:初始化STC89C58RD。
步骤402:串口(即RS232接口)初始化。
步骤403:设定定时器的中断时间,例如设定中断时间为1s。
步骤404:初始化nRF24L01。
步骤405:判断当前是否进入中断,如果判断为是,则继续执行步骤406,否则重新执行步骤405。本步骤中,根据定时器的状态来判断是否进入中断。
步骤406:通过匹配地址,依次接收下位机发送过来的数据。
步骤407:对数据处理后,通过RS232串口传给PC机。
步骤408:判断下位机的数据是否接收完毕,如果判断为是,回到步骤404,否则,回到步骤406。
另外,本发明还提供了一种基于上述环境数据多点实时采集方法的数据中心温度管理方法,在数据中心的各服务器和机房中若干关键部位部署监测点,实时采集各监测点的温度数据,根据各监测点的温度数据实时调节各服务器的负载,使各服务器发热均衡。随着现代信息技术的飞速发展,数据中心的高能耗成为日益严重的问题,其中空调制冷能耗约占数据中心总能耗的50%。而空调制冷温度的设置直接影响其能耗。本实施例能够以较小的代价提高温度数据多点采集的实时性,进而及时处理温度短时间剧烈升高的突发情况,有助于解决数据中心机房的过度制冷问题,进而降低总能耗。
最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其它的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。