传感器网络高频数据采集算法❋
2019-01-05王续澎郭忠文刘颖健刘石勇
王续澎, 郭忠文, 刘颖健, 刘石勇, 王 玺
(中国海洋大学信息科学与工程学院,山东 青岛 266100)
在工业制造、环境监测、医疗护理、海洋探测等领域,传感器网络得到广泛应用[1]。传感器网络作为物联网技术发展的一个重要产物,已经得到专家、学者的广泛认可,数据采集技术作为传感器网络一个重要环节,也在不断向前发展。目前传感器网络数据采集正朝着高精度、高速度的方向发展[2]。
现阶段传感器网络研究集中于无线传感器网络,有关传感器网络的研究重点是降低传感器能耗,延长生存周期[3-4],对有关于数据采集效率等的研究没有足够重视,而在一些环境下,对于数据的实时性要求较高[5-6],尤其是对于环境监测等领域,需要迅速响应、获取数据,并进行应急措施,来预防灾害的发生,因此需要更加高效的采集算法来处理当前所面对的困境。并且前端传感器节点数据响应周期很短,数据采集大多数时间耗费在线路传输延迟之上[7],如果数据采集周期长、效率低,会造成大量的数据及时间浪费。目前数据采集接口广泛采用串行口,传感器网络传统的数据采集模式大多采用串行处理[8],从一个设备采集完数据后在继续从另一个设备采集数据,不同设备的响应时间长短不同,整个采集周期是所有设备响应时间的累计总和,一旦设备数量比较多,会使整个数据采集周期严重加长,可能会达到几秒,甚至十几秒,并且如果有设备发生故障,无法正常通讯,更加延长了采集周期。由于采集时间大多数耗费在传输延迟之上,如何通过改进现有的数据采集算法,减小传输延迟的影响,缩短数据采集的时间,是一个急需解决的问题。基于上述问题,结合传统数据采集算法与并行技术,本文建立了一种高频数据采集处理模型,提出了高频数据采集处理算法,该算法不再依次对每个设备进行数据采集,而是批量进行数据采集,根据接口的数量,依次发送所有设备的数据采集命令,待所有数据获取之后统一进行处理,并记录每个设备的采集周期,如此,采集时间只与采集周期最长的设备相关,整个采集时间缩短很多,解决了当前数据采集速率较低的问题。
根据实际实验室环境使用PC和智能仪表进行了大量的模拟实验,获得了大量有关数据采集周期的数据,经过理论及可视化图表分析,以及各种设备数据横向和纵向比较,详细验证了高频数据采集处理算法采集速率的高效性。
1 数据采集
1.1 物理结构
传感器网络数据采集物理结构如图1所示,主要包括3个部分:传感设备、智能转换模块以及数据采集系统。传感器是指数据采集的对象,位于传感器网络结构的最底层,其功能为“感知”,即获取设备运行信息。传感设备是传感器网络的核心,是信息获取的关键部分,主要任务为通过传感器探测外界的声音、温度和压力等物理量,并向外输出。智能转换模块是将传感设备输出的物理量按照一定的规则变换成可以被计算机识别的电信号信息输出,以及将计算机的电信号转换为传感器能识别的物理量信号。数据采集系统可以对外发送数据采集命令,并可以将智能转换模块输出的电信号处理为具有实际意义的数值信息。
图1 传感器网络数据采集物理结构图Fig.1 Physical structure of data acquisition in sensor network
1.2 逻辑流程
传感器网络单节点数据采集逻辑流程如下,数据采集系统发送命令后,经过智能转换模块处理,传感设备接收命令后进行响应,再经过转换后,发送给前端数据采集系统,在数据采集系统判断数据的完整性之后,进行接收处理分析,然后将数据返回给前台显示或者在服务器中存储。如果采集到的数据不完整或者没有采集到数据,则重新发送数据采集命令,在设定的时间或者重复采集次数上限内,重复执行以上操作。具体算法见算法1。
算法1
单节点数据采集算法INPUT: Instrument, Comport // Instrument:采集设备序列;Comport:智能转换接口序列OUTPUT: CollectCycle, Data //CollectCycle:每个设备数据采集周期序列;Data:采集到的数据1:Initialize(Instrument, Comport) //初始化设备以及智能转换接口2: send(command) //发送预先设定好的数据采集命令3: if(receive data)4: record(CollectCycle, Data) //如果获取到数据,记录采集周期及采集到的数据5: else6: return(cannot receive data) //如果获取不到数据,返回提示信息
2 高频数据采集算法
2.1 传统数据采集算法
传感器网络传统的数据采集模式大多采用串行处理,具体处理算法见算法2,数据采集系统在发送采集命令,该命令通常是由设备生产厂家在说明文件中规定的,传感器设备接收命令并进行响应,此时数据采集系统判断传感器设备返回的字节长度是否正确、完整,如果是则进行数据读取操作,并对数据进行分析、处理,记录采集周期,否则进入循环等待,直到返回数据被完整读取,但循环等待需要有一个时间域,时间域是在前期经过多次测试后人为设置的大小,通常是依据参与人的经验确定的,具有很大的不确定性。整个串行数据采集算法依据设备个数重复执行以上过程,直到所有传感设备循环执行一遍。从以上描述可以看出,假设设备总数为L,每个设备的采集周期为ti(i=1,2……L),则传统串行数据采集算法的采集时间为
T0=∑Lti。
(1)
算法2
串行数据采集算法INPUT: Instrument, Comport // Instrument:采集设备序列;Comport:智能转换接口序列OUTPUT:CollectTime, CollectCycle, Data //CollectTime:数据采集时间;CollectCycle:每个设备数据采集周期序列;Data:采集到的数据序列1:Initialize(Instrument, Comport) //初始化设备以及智能转换接口序列,并获取到设备总数L2:for i=1to L//对所有设备进行采集3: send(command) //发送预先设定好的数据采集命令4: if(receive data)5: record(CollectCycle, Data) //如果获取到数据,记录采集周期及采集到的数据序列6: else7: return(cannot receive data) //如果获取不到数据,返回提示信息8:end for9: record(CollectTime) //记录整个采集时间
从上述描述中我们可以发现,串行数据采集算法是等待一个传感设备数据采集结束之后开始执行另一个设备的采集,采集时间是所有传感设备采集时间的累计总和,数据采集时间主要耗费在等待每个传感设备响应,并且如果传感设备的数量较多,很容易造成数据采集周期较长的问题,严重影响了数据采集的效率。表1是对同种类型设备个数不断增加数据采集周期的变化,并且每个接口直接有一个传感设备,可以发现随着设备个数增加,采集周期基本上呈线性增长。
表1 串行数据采集周期
2.2 高频数据采集模型
并行计算是相对于串行计算来说的,它是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。从上述描述我们可以知道并行算法是同时对多条指令进行处理,基于这种思想,提出了高频数据采集算法,即同时对多个传感设备进行数据采集。根据此思想建立了高频数据采集模型,如图2所示,该模型主要包含配置模块、数据采集系统、智能转换模块以及传感设备,数据采集系统调用配置模块预先配置好的信息,通过智能转换模块发送数据采集命令给传感设备,传感设备进行响应,并通过智能转换模块对影响数据进行转换之后,将数据返回给数据采集系统进行处理分析。以下针对每个模块进行简要的介绍:配置模块是整个模型的基础,可以通过该模块配置需要进行采集的接口、接口对应的传感设备以及传感设备上的传感器。数据采集系统是整个模型的核心部分,包括主控模块和采集模块两部分,主控模块主要是获取配置模块配置好的信息,调用相应的采集模块,以及接收采集模块返回的数据并进行分析处理;采集模块发送数据采集命令并接收响应的数据帧。智能转换模块是整个模型的连接部分,对发送的数据采集命令进行转换通过对应的接口发送给传感设备,以及对传感设备响应的数据命令进行转换。传感设备是整个模型的前端部分,接收数据采集的命令并响应返回数据命令。
图2 传感器网络高频数据采集模型Fig.2 High fvequcncy data acquisition model sensor network
2.3 高频数据采集算法
高频数据采集算法核心思想是统一发送所有设备的命令,等待所有数据返回完毕后进行分析,记录采集周期。具体算法介绍见算法3。
算法3
高频数据采集算法INPUT: Instrument,Comport // Instrument:采集设备序列;Comport:智能转换接口序列OUTPUT:CollectTime, CollectCycle, Data //CollectTime:数据采集时间;CollectCycle:每个设备数据采集周期序列;Data:采集到的数据序列1:Initialize(Instrument,Comport) //初始化设备以及智能转换接口序列,并获取到智能转换模块接口数N,单个接口最多连接设备个数M2:for i=1to M//对所有设备进行M轮采集3:for j=1to N //对所有接口上的设备按照轮次进行采集4: send(command) //发送预先设定好的数据采集命令5: if(receive data)6: record(CollectCycle, Data) //如果获取到数据,记录采集周期及采集到的数据序列7: else8: return(cannot receive data) //如果获取不到数据,返回提示信息9: end for10: end for11: record(CollectTime) //记录整个采集时间
(2)
如表2所示,每个接口只接有一个传感设备,在一定的设备数量范围中,采集周期随着传感设备数量的增加,基本上保持不变;当设备数量达到70时,采集周期突然变长,并且设备数据持续增加,采集周期更加变长。
表2 高频数据采集周期Table 2 High frequency data acquisition cycle
3 实验和分析
3.1 理论分析
从高频数据采集算法的介绍我们可以知道,如果以每一次发送命令、数据响应作为一轮采集的话,则每一轮采集的时间等于响应时间最长的传感设备的响应时间,另外由于大多数系统传感设备基本上是均匀分布在多个硬件接口上,所以整个数据采集周期就是多轮采集时间的总和T1,而传统的串行数据采集是所有设备响应时间的总和T0,在通常情况下T1≪T0,因此大大缩短了数据采集的周期,提高了数据采集的效率。然而在设备数量达到一定程度后,超出了算法所能承受的范围,高频数据采集周期T1将会迅速变长,但在实际情况下,一套数据采集系统并不会接有大量的传感设备,该算法仍然具有实际意义。
3.2 实验验证
为了更好地验证该算法的高效性,在相同的实验环境下利用两种不同的算法进行数据采集,记录数据采集周期,并且采用不同数量、种类的传感设备进行横向与纵向验证,从多个角度进行全方位分析。
3.2.1 同一种设备数量不断增加 如图3所示,同种设备采集周期基本呈现以下趋势:串行数据采集算法采集周期与设备数量成正比,而高频数据采集算法采集周期在传感设备数量上限内与采集轮数基本成正比,并且当设备数量达到70时,高频数据采集周期上升的十分明显。
图3 同种设备采集周期图
3.2.2 多种设备数量不断增加 选取五种设备,并且每一个接口只连接有一个设备,每种设备在高频数据采集算法中的采集周期如表3所示,每种设备选取1~20个,从图4可以看出,串行数据采集周期仍然呈线性增长,而高频数据采集周期在一定设备数量内基本上保持不变,与设备一的采集周期基本一致,并且周期随着轮数的增加呈现出倍数增加,但超过了数量上限会迅速增长。
表3 每种设备高频数据采集周期Talbe 3 High frequency data acquisition cycle for euch Instrument
图4 多种设备采集周期图
从以上情况我们可以看出,在一定的传感设备数量范围内,高频数据采集算法采集周期随着设备数量的增加并没有发生显著的变化,采集周期与每一轮采集响应时间最长的传感设备关系最大,整个数采集效率提高很多,并且在实际情况下,每一个硬件接口上不会连接太多的设备,采集的设备总量也不会十分巨大,因而具有广泛的使用性。另外,针对高频数据采集周期变长进行分析,发现当设备数量达到一定的上限之后,由于设备之间命令响应存在一定的冲突,导致响应数据不能正常接收,采集周期也随之变长,并且,设备数据越多,响应命令冲突越剧烈,采集周期变长的越明显,很可能导致无法接收到相应数据,采集周期达到无限长。
4 结语
通过对传感器网络传统数据采集算法采集周期较长的原因分析,结合并行计算的原理,建立了一种高频数据采集模型,提出了一种高频数据采集算法,提高了数据采集效率,并通过模拟实验,验证了该算法的可行性。
在未来的研究计划中,我们将进一步研究影响传感器网络数据采集效率的关键问题,进一步优化高频数据采集算法,提高传感设备采集的数量上限,并在此算法的基础上,优化设备通讯流程,减少响应等待时间,进一步提高传感器网络数据采集效率。