APP下载

一种无线传感器网络节点的故障检测算法

2020-07-06宁丰力梁国祥王志彬

计算技术与自动化 2020年2期
关键词:无线传感器网络

宁丰力 梁国祥 王志彬

摘   要:针对无线传感器网络中的数据故障问题,提出了一种新的分布式贝叶斯故障节点检测算法(DBA)。通过引入Bayesian来计算传感器节点的故障概率,利用边界节点来调整故障概率,提高故障概率的准确性,避免了大量故障节点的负面影响。最后将DBA和分布式故障检测(DFD)的性能进行了综合仿真比较。结果表明,即使在故障节点较多的情况下,DBA也能显著提高故障检测的精度。

关键词:无线传感器网络;数据故障检测;边界节点;贝叶斯检测

中图分类号:U285.2                                           文献标识码:A

文章编号:1003—6199(2020)02—0032—06

Abstract:To solve the problem of data failure in wireless sensor networks,a new distributed Bayesian fault node detection algorithm (DBA) is proposed. By introducing Bayesian network to calculate the fault probability of sensor nodes,and using boundary nodes to adjust the fault probability,the accuracy of the fault probability is improved,and the negative impact of a large number of fault nodes is avoided. Finally,the performance of DBA and distributed fault detection (DFD) is compared by comprehensive simulation. The simulation results show that DBA can significantly improve the accuracy of fault detection even when there are many fault nodes.

Key words:wireless sensor networks; data fault detection; boundary nodes; Bayesian detection

无线传感器网络(WSN)由大量的传感器节点组成,具有体积小且成本低的特点[1]。WSN可用于感知物理状态,收集和处理覆盖区域内物体的信息,并将信息发送给观察者进行加工和分析[2]。随着无线领域研究的不断深入,无线传感器网络在环境监测、医疗等领域得到了广泛的应用[3-4]。

由于传感器节点通常成本较低,并且在非连接或甚至危险的环境中运行工作,因此它们可能会出现故障和不可靠问题。通常,WSN中存在两种类型的节点故障:(1)功能故障[5],即传感器节点无法正确传送数据包,文献[5-7]已经提出了许多方法来解决这种类型的故障。(2)数据故障[8],这意味节点可以直接传递数据包,但传感器节点采集的数据不正确。在许多应用中,数据故障可能导致故障报警和漏检问题[9],因此数据的准确性至关重要。此外,利用故障的数据检测传感器节点,将大大提高无线传感器网络的性能。

提出了一种新的故障检测方法来解决WSN节点中的故障节点检测问题。该算法中每个节点根据相邻节点的读数和边界节点调整后的概率计算其故障概率。

1   模型假设

考虑一个网络模型,其中许多传感器节点随机部署在感兴趣的区域。为了更好地建立模型,提出了两个假设:

假设1:在WSN的生命周期中,传感器节点不可避免地会发生故障。如上所述,有两种类型的故障,功能故障和数据故障。由于功能类型的解决方法很多,因此将重点放在数据故障上,假设功能故障類型不会发生或已经通过其他方法解决。

假设2:传感器节点收集有关环境质量的数据并将其发送到接收器节点。在将数据发送到接收节点之前,传感器节点应检查数据是否损坏。在许多实际应用中,两个节点越接近,其数据的变化越小。假设附近节点数据的状态变化在一个小范围内。因此,传感器节点可以通过与所有相邻节点交换数据来估计其状态。

2   检测算法

提出了一种面向WSN的故障节点检测算法(DBA)。该算法包含三个步骤:

步骤1:传感器节点与相邻节点交换数据,并计算故障概率。

步骤2:由于计算的故障概率可能不正确,因此,还需要进一步进行调整。

步骤3:如果传感器节点的故障概率高于概率阈值,则传感器节点将被视为故障节点,并向接收器节点发送警告消息。

由于步骤3非常简单,将详细介绍前两个步骤。为了准确地描述所提出的算法,首先给出算法中所使用的符号。

p:故障概率

S:所有传感器节点的集合;

N(Si):传感器节点Si的相邻结合;

n(Si):Si相邻节点的数量,即n(Si) = |N(Si)|;

vij:Si与Sj之间的距离,即vij = |xi - xj|;

fij:节点状态的状态,如果Si与Sj处于不同的状态,则fij = 0;否则fij = 1;

pt:概率阈值;

rt:数据阈值;

xi:节点Si的读数;

ci:传感器节点Si的置信度。

2.1   故障概率

如果传感器节点之间的传输范围相同,则将它们视为相邻节点。每个传感器节点周期性地将其数据和故障概率发送给相邻节点。假设传感器节点 Sj和传感器节点Si是相邻节点,Sj接收Si的数据,然后计算vij。如果vij小于rt,fij将被设置为1,这意味着Si与Sj最有可能出现故障或良好。反之,fij設为0,Si和Sj处于不同的状态。

所有节点的故障概率p初始化为0.1(文献[10]指出实验表明最终结果对该值不敏感)。节点与相邻节点交换数据和故障概率。因此,每个节点都有其相邻的数据和概率故障p,并利用Bayesian公式[11]计算其后验故障概率。

给定一个传感器节点Si及其邻接集N(Si),N(Si) = {Si1,Si1,…,Sin},Si的后验故障概率为:

通过引入状态变量fij,公式(1)可以写成:

其中,Pi为传感器节点Si的先验故障概率,Pj为其相邻节点的先验故障概率。检测算法的步骤1具体操作如算法1所示。

算法1:计算概率

1. 每个传感器节点Si使用以下方法测试每个相邻节点Sj∈N(Si)

以获得Si的故障概率psi:

2. for每个传感器节点Si do

3. if |xi - xj| > rt  then

4. fij = 0

5. then

6. else

7. fij = 1

8. end

9. end

10. 运用公式(2)计算psi

2.2   调整概率

在故障概率的基础上,计算出每个节点的后验故障概率。如果某一区域内的传感器节点较多,则计算结果是正确的。但是,如果大多数传感器节点出现故障,则故障概率计算的概率是不正确的,因为在这种情况下,故障节点的大多数相邻节点也会出现故障。显然,这个故障节点会考虑到它与大多数相邻具有相同的状态。然后故障节点将认为自己是一个良好节点。相反,好的节点可能认为自己是故障的。这将极大地影响故障节点的判断,并且非常有必要修改这种情况。

例如,如图1所示,白点表示良好的传感器节点,黑点表示故障节点。如果一个区域中的大多数节点都有故障,则该区域称为故障区域。否则,这是一个良好的区域。而有些节点同时靠近一个好区域和一个故障区域,则它们定义为边界节点,在消除上述误诊情况中起着重要作用。详细展示边界节点的工作方式,如下所示。

首先,给出了确定传感器节点是否为边界节点的方法。如图1所示,位于故障区域的节点Sn2虽然是故障节点,但故障概率p2较低。节点Sn1的故障概率p1也较低,这是由于它是良好节点并且在良好区域内。对于节点Sb1,其相邻Sn1和Sn2具有较低的故障概率,但同时具有不同的状态,然后将Sb1视为一个边界节点[12]。

在找到边界节点后,利用边界节点判断哪些相邻是真正的良好相邻,哪些相邻是真正的故障相邻。首先,边界节点(以Sb1为例)向所有相邻节点发送消息,以获取Sn1和Sn2的置信度。其次,Sn1和Sn2分别计算它们的置信度。例如,Sn1的置信度为cn1,Sn2的置信度为cn2。最后,Sn1和Sn2将其反馈发送给Sb1。只有当节点的置信度大于0时,该节点才是可信节点。假设已经计算了相邻节点的置信度,并考虑三种不同的情况:

情况1:如果Sb1的所有相邻都不可靠,则Sb1就不能决定它们是好是坏。由于故障节点的故障概率较低,可能会影响其他节点的故障概率p,为了避免这种情况,将Sb1相邻节点的故障概率设置为0.5。

情况2:如果Sb1只有一个相邻是可信的,则该相邻节点表示为可信节点Sintst。将状态与Sinist相同的Sb1相邻的故障概率设置为Sintst的故障概率Sintst。对于其他与Sintst状态不同的相邻,其故障概率设置为1-pintst。

情况3:如果Sb1有多个相邻是可信的,则Sb1将选取置信度最高的可信节点。将SBL相邻的故障概率设置为情况2。

以Sn1为例,计算Sb1的相邻节点的置信度为:

其中,neq是支持Sn1的节点数。这包括两种情况:(1)节点Si与Sn1具有相同的状态,即Sin1 = 1,其故障概率p < pt。(2)fin1 = 0,p ≥ pt。类似地,nneq是不支持Sn1的节点数量。这意味着fin1 = 0且p < pt,或者fin1 = 1且p ≥ pt。

如果故障节点的置信度大于0,则边界节点可能会做出错误的判断,这将严重影响故障检测的准确性[13]。因此,假设Pfdg为第一步诊断为良好的故障节点的概率。同样,Pfdg、Pgdf、Pgdg分别表示故障节点诊断为故障、良好节点诊断为故障、良好节点诊断为良好的概率。Pf是传感器节点的故障率。故障节点置信度大于0的概率为:

其中,Pfdg、Pfdf、Pgdf和Pgdg的值是计算P(Si /N(Si))的必要前提,但在实际应用中,这些值与节点相邻的数量和传感器节点之间的分布有关[14]。当传感器节点随机部署在工况条件时,它们有不同数量的相邻。对于没有足够数量相邻节点进行分析的节点的不正确诊断概率要高于其他节点。为了估计P(ci > 0 | Si为故障),本文对6个平均邻域进行了仿真实验。得到了Pfdg、Pfdf、Pgdf和Pgdg的平均值,如表1所示。

将这些值代入公式(4),可以得到P(ci > 0 | Si为故障)。不同故障率下的P(ci > 0 | Si为故障),如表2所示。

由表2可见,P(ci > 0 | Si为故障)趋近于0。即故障节点的置信度高于0的概率很低,这表明ci > 0是区分好节点和故障节点的合适方法。本文检测算法的步骤2具体操作如算法2所示。

算法2:调整概率

1. 利用边界节点调整故障概率Psi:

2. 决定一个节点是否为边界节点

3. 边界节点向其相邻节点发送消息以获取其置信度c

4. if 所有的置信度c < 0  then

5. for 每个传感器节点Si  do

6. 故障概率Psi设为0.5

7. end

8. end

9. if 不止一个c > 0  then

10. 选择最大c的节点Sk

11. For每个传感器节点Si  do

12. if then

13. psi = 1- psk

14. end

15. else

16. psi = psk

17. end

18. end

19. end

3   实验分析

为了评估所提方法的分类性能,使用Matlab作为仿真工具。如图2所示,在大小为20mx20m区域中随机部署的总共400个传感器节点为模拟场景。上述参数xi代表温度。本文将良好传感器节点的范围为30-40℃,而故障节点的范围为100-110℃。模拟的读取阈值ri设置为20。在本文示例中,选择传输范围以确保传感器节点具有平均相邻数量。

400个传感器节点的WSN

将故障节点检测精度(FNDA)和误报率(FAR)两个指标用于评估DBA。其中,FNDA是报警的故障传感器节点数与故障传感器节点总数之比。FAR定义为诊断为故障的良好传感器节点数与良好传感器节点总数之比。在仿真中,本文随机选择节点成为故障节点,概率为0.05,0.10,0.15,0.20,0.25, 0.30,0.35和0.4。并且选择不同的传输范围以使相邻节点的平均数为3,5,7和9。

在文献[15]提出了一种在无线传感器网络中定位故障传感器节点的分布式故障检测(DFD)方法。每个节点定期向其所有相邻节点发送其读数。节点根据相邻节点的读数确定其状态。然后,处于良好状态的节点将决定输出给它们的聊天节点。图3至图6给出了当平均相邻数分别为3,5,7和9时,文献[15]中的DFD方法和本文所提方法DBA的FSDA 和FAR随传感器节点故障率的变化情况。

从图3至图6可以看出,在FNDA和FAR方面,所提方法的性能优于文献[15]中提出的原始DFD。对于FNDA指标,观察图3(a)-图6(a),当故障率增大时,DBA和DFD的检测精度都会降低。然而,在这个过程中,DBA始终比DFD表现更好。例如,从图6(a)可以看出,当传感器节点故障率约为40%时,DBA的故障检测精度仍接近90%,而DFD的检测精度仅低于80%。同样,从图3(b)-

6(b)可以看出,DBA的FAR始终低于DFD。对于9个相邻节点,DBA的FAR低至6%,而DFD的FAR约为16%。

从图3至图6可以看出,在FNDA和FAR方面,所提方法的性能优于文献[15]中提出的原始DFD。对于FNDA指标,观察图3(a)-图6(a),当故障率增大时,DBA和DFD的检测精度都会降低。然而,在这个过程中,DBA始终比DFD表现更好。例如,从图6(a)可以看出,当传感器节点故障率约为40%时,DBA的故障检测精度仍接近90%,而DFD的检测精度仅低于80%。同样,从图3(b)-6(b)可以看出,DBA的FAR始终低于DFD。对于9个相邻节点,DBA的FAR低至6%,而DFD的FAR约为16%。

随着相邻节点平均数量的增加,DBA的性能也越来越优越。此外,故障概率越高,DBA的性能越好。其原因可能是,当故障率较高且相邻的相邻数量较多时,DFD的误诊率较高。然而,在本方法中,边界节点用于校正可能被DFD误诊的传感器节点的故障概率。总之,所提出的DBA算法即使在故障率很高的情况下,也能实现高检测精度和低误报率,明显优于文献[15]中提出的DFD。

4   结   论

通过引入边界节点提出了一种新的故障节点检测算法(DBA),该算法中每个节点根据相邻节点的读数和边界节点调整后的概率计算其故障概率。通过对边界节点的调整,与传统的DFD方法相比,DBA的误诊率大大降低。最后,将该算法与现有的仿真方法进行了比较。实验结果表明,DBA的性能优于DFD,尤其是当相邻节点平均数目较大、故障率较高时。

参考文献

[1]    尚珵. 基于ZigBee网络的数据播发传输系统研究[J]. 信息技术,2018,42(10):131-136.

[2]    毕赣斌,何勇,赵诗辞. 基于ZigBee技术的智能家居控制系统的设计[J]. 计算技术与自动化,2017,36(01):74-77.

[3]    鄭少雄. 基于WSN的森林微气象监测系统的设计与实现[J]. 信息通信,2019(04):20-22.

[4]    王飞飞. 基于WSN的居家养老监护预警系统的研究[J].电脑知识与技术,2017,13(32):212-213.

[5]    张鹭莎,朱嘉林,高春丽,等. 基于时间同步的GIS闪络故障监测系统[J]. 北京信息科技大学学报(自然科学版),2018,33(06):48-51.

[6]    黄光勇,胡远军,许俊彬. 一种基于无线传感器网络技术的港口设备状态监测设计方案[J]. 工业控制计算机,2018,31(11):9-10.

[7]    吴耀东. 基于二维拓扑参数修正评估机制的WSN数据节点定位算法研究[J]. 国外电子测量技术,2018,37(10):10-14.

[8]    肖振锋,辛培哲,伍晓平,等. 满足可靠及泛在需求的无线传感器网络部署研究[J]. 武汉大学学报(工学版),2019,52(05):446-450.

[9]    周光海,宁兆龙,陈志奎,等. 基于核偏最小二乘法的物联网无线传感网络故障分析与研究[J]. 通信学报,2017,38(S2):94-98.

[10]  聂晨华,高西,董荣胜. 基于故障树的无线传感器网络可靠度符号计算[J]. 计算机工程与设计,2015,36(06):1425-1431.

[11]  沈士根,冯晟,周海平,等. 基于云计算和动态贝叶斯博弈的WSN恶意程序传播优化抑制方法[J]. 电信科学,2018,34(09):78-86.

[12]  赵利辉,杨秋翔. 基于几何方法的分布式无线传感器网络边界节点识别算法研究[J]. 中北大学学报(自然科学版),2018,39(05):521-528.

[13]  赵利辉,刘文怡,张斌,等. 无线传感器网络边界节点识别研究进展综述[J]. 电视技术,2016,40(08):62-70.

[14]  赵利辉,刘文怡. 基于连接信息的无线传感器网络边界节点识别算法[J]. 科学技术与工程,2016,16(15):216-222.

[15]  神显豪,李军,奈何. 基于三維地形修正的无线传感器网络覆盖盲区检测[J]. 传感技术学报,2016,29(01):109-115.

猜你喜欢

无线传感器网络
基于STC单片机及SI4432的无线传感网的设计与实现
无线传感器网络在农田数据监测中的应用研究
基于层次和节点功率控制的源位置隐私保护策略研究
基于无线传感器网络的绿色蔬菜生长环境监控系统设计与实现
基于无线传感器网络的葡萄生长环境测控系统设计与应用
一种改进的基于RSSI最小二乘法和拟牛顿法的WSN节点定位算法
无线传感器网络定位技术可靠性分析
对无线传感器网络MAC层协议优化的研究与设计
无线传感器网络技术综述
无线传感器网络在农田温湿度信息采集中的应用