资源描述
无线传感器网络节点能耗建模
THE MODELING OF ENERGY CONSUMPTION ON WIRELESS SENSOR NETWORK NODE
吴文婕
(电子科技大学自动化工程学院 成都 611731)
摘要:随着嵌入式系统、无线通信、网络及微电子机械系统等技术的快速发展,无线传感器网络(WSN)引起人们的极大关注。在军事、环境、医疗、家庭和其他商业领域有广发应用。而由于每个传感器节点能量有限又很难补充能量的特点,能耗问题成为WSN的关键技术。目前,很多研究对无线传感器网络的能量消耗进行了分析。本文在此基础上围绕节点能耗建模问题进行了研究,通过个模块运行时的工作状态转换模型,分析了在状态运行以及状态变迁史的能耗情况,揭示了节点各能耗设备的能量变化规律,最后建立起节点整齐的能耗模型。
关键词:无线传感器网络;能量建模;
ABSTRACT: AS the embed system
0 引言
无线传感器网络是由大量具有感知、计算和通信能力的微型传感器,通过无线链路自组织而成的分布式网络。它综合了传感器技术、嵌入式计算机技术、分布式信息处理技术和无线通信技术,能够感知并采集各种检测对象的信息,对其进行处理传送到用户。传感器节点体积微小,能量有限,由于无线传感器网络通常运行在人无法接近的恶劣环境中,一般不能对节点进行充电或更换电池。因此,如何高效地使用能量来最大化网络生存寿命或提高网络能量效率是传感器网络面临的首要挑战之一,也是无线传感器网络的核心问题。
在传感器网络中,包括传感器节点、网关、互联网及用户界面等。节点按一定方式不熟在区域内,节点之间以协作的方式实时感知和处理网络中的信息,同时还要维持节点互相之间的网络,形成一个多跳的自组织网络。每个无线传感器网络有一个连接到传输网络的网关,网关通过传输网络把感测数据从传感区域发送到提供数据服务与处理的基站,基站再通过Internet联系到远程数据库。用户可以通过远程计算机进行数据浏览及处理,并能发送想要的命令进行监控和操作。
无线传感器网络中的节点与一般传感器不同,除了能够感知被测物理量以外,还要具备远程通信功能,传感器节点由处理模块、通信模块、感知模块、能量供应模块组成。处理模块式节点和功能控制模块和数据处理中心,它由嵌入式系统构成,负责控制传感器,执行通信协议及处理感知数据等算法。通信模块报告基带部分和RF部分,负责节点间数据的接收和发送。能量供应模块由电池和电压转换模块组成,主要任务是为其他模块提供能量。传感模块由传感器及数模转换模块组成,主要任务是采集被测控对象的信息,并转换成相应的数字信息。
图1
1 处理器能耗模型
处理器状态如图2所示,一般具有3个状态:运行状态、空闲状态、睡眠状态。运行状态为处理器的正常状态,正在执行指令,各个模块都在运行。空闲状态时一部分模块处于运行状态,节省了一部分能耗。睡眠状态提供了最低的功耗,处理器的大部分模块都关闭,系统的可用资源最少。
图2
各状态之间互相转换的条件如下表所示
表1
序号
状态转换条件
1
电池电量不足,软件选择进入休眠状态
2
实时时钟匹配中断、按键唤醒
3
系统T1时间内未捕捉到信息或电量不足,软件选择进入休眠状态
4
运行状态下T2时间内未捕捉到信息或软件选择进入空闲状态
5
产生中断信号、捕捉到信息或者按了复位键
处理器的能耗为三种状态能耗及状态间切换的能耗之和,即
(1-1)
其中,、、分别为三个状态运行时的能耗,而为状态转换时的能耗,它可以由下面的公式计算得到。
(1-2)
Na-b表示从状态a到b切换次数,ea-b表示完成一次状态从a到b切换所需要的能量。
通过上面简要介绍,可以总结出处理器能耗的算法如下:
输入:各参数值——初始状态
输出:处理器能耗
While(the state is RUN)
{
If(last state is not IDLE)
{Record(idle_begin_time); Nrun-idle=Nrun-idle+1;}
If(not set timer T1) set timer T1;
If(timer overtime)
{Tidle=Tidle+T1; update Ecpu; go to state SLEEP;}
If(mission is to handle)
{cancel timer T1; record idle_begin_time;
Tsleep=Tsleep+idle_end_time - idle_begin_time;
Update Ecpu; go to state RUN}
}
While(the state is RUN)
{
If(the last state is not RUN) record(run_begin_time);
If(the last state is IDLE) } Nidle-run=Nidle-run+1;
Else if (the last state is SLEEP) Nsleep-run=Nsleep-run+1;
If(the energy is out or software select the state SLEEP)
{record(run_end_time); Trun=Trun+run_end_time - run_begin_time;
Update Ecpu; go to the state SLEEP;}
If (the timer T2 is not set) set T2 ;
If (timer overtime)
{Trun=Trun+run_end_time - run_begin_time; update Ecpu; go to the state IDLE;
If(mission is to handle)
{cancel timer T2; reset timer T2}
}
While(the state is SLEEP)
{
If(the last state is not SLEEP) record(sleep_begin_time);
If(the last state is IDLE) Nidle-sleep=Nidle-sleep+1;
Else if(mission is to handle)
{record(sleep_end_time); Tsleep=Tsleep+sleep_end_time - sleep_begin_time;
Calculate Ecpu; go to the state RUN;}
}
2 通信模块能耗模型设计
一般情况下通信模块有六个状态:TX(发送状态),RX(接受状态),OFF(关闭状态),Idle(空闲状态),Sleep(睡眠状态),CCA/ED(空闲信道评估与信道能量检测)。各状态之间的转换关系如下:
图1-3
与处理器能耗模式类似,通信模块能耗Eradio为个状态能耗及状态间切换能耗之和,一般来说可用公式1-3计算。
(1-3)
而Eradio-change可以用下面的公式来计算
(1-4)
由此,我们可以得到通信模块能耗的具体算法:
输入:各参数值——初始状态
输出:通信模块能耗
While(the state is TX)
{
If(the last state is IDLE)
{NIdle-TX=NIdle-TX+1; ETX=ETX+VtrITXL/R; update Eradio;}
If(the TX state is over) go to the state IDLE;
}
While (the state is RX)
{
If(the last state is IDLE)
{NIdle-RX=NIdle-RX+1; ERX=ERX+VtrIRXL/R; update Eradio;}
If(the RX state is over) go to the state IDLE;
}
While(the state if SLEEP)
{
If(the last state is not IDLE) record (idle_begin_time);
If(the last state is TX) NTX-Idle=NTX-Idle+1;
Else if (the last state is RX) NRX-Idle=NRX-Idle+1;
Else if (the last state is SLEEP) NSleep-Idle=NSleep-Idle+1;
Else if (the last state is CCA) NCCA-Idle=NCCA-Idle+1;
Else if (the last state is OFF) NOFF-Idle=NOFF-Idle+1;
If (the timer isn’t set) set the timer;
If (timer overtime)
{TIdle=TIdle+Tsleep; update Eradio; go to the state SLEEP}
If (a packet is to send)
{cancel the timer Tsleep; record (idle_end_time);TIdle=TIdle+idle_end_time - idle_begin_time;
update Eradio; go to the state TX;}
If(a packet is to receive)
{cancel the timer Tsleep; record (idle_end_time); TIdle=TIdle+idle_end_time - idle_begin_time; update Eradio; go to the state TX;}
If (a channel is to check)
{cancel the timer Tsleep; record (idle_end_time); TIdle=TIdle+idle_end_time - idle_begin_time; update Eradio; go to the state CCA;}
}
3 感知模块能耗模型设计
感知模块通过传感器感知各类相关信息,如电压、电流、温度、湿度、光强、压力等,然后交给处理器模块进行信息的融洽和处理,最后由无线通信模块对数据信息进行转发。传感器模块通常只有开启与关闭两个状态,本文以周期性开关的状态为例,介绍传感器模块能耗的建模。
它的能耗可用下面的公式得到:
(1-5)
其中,N为传感器开启的次数,Is为传感器工作的电流,Vs为工作电压,Ts为传感器每次工作的时间。
由上面的介绍,可以得到感知模块能耗的算法:
输入:各参数值,初始状态
输出:感知模块能耗
While(the state is OFF)
{
If (the timer isn’t set) set the timer;
If (the timer overtime) go to the state ON;
}
While(the state is ON)
If(the data is all collected) Esensor=Esensor+eon-off+eoff-on+VsIsTs;
4 基于事件触发机制的节点整体能耗模型设计
前面几章介绍了处理器、通信模块、感知模块的能耗模型,三个模型各自运行,而咋实际的应用中,三个模型之间是存在着联系的,本节将基于事件触发的机制建立起三个模型之间的联系,进而建立节点整体能耗模型。
引起个模块运行状态发生变化的事件有来自能耗模型外部的触发事件和来自能耗模型之间的触发事件。能耗模型外部的触发事件有时钟周期事件、需要发送包事件、收发机接收包事件、收发机信道检测事件等;能耗模型之间的触发世家有周期采集数据事件、发送包事件、接收包事件、节点整体能耗模型如图1-6所示。各模块的事件触发清单如下:
表2
传感器模块的事件触发
周期性进入能耗统计ON状态进行能耗统计,完成后回到OFF状态
处理器模块的事件触发
若处理器模块为IDLE或SLEEP状态则进入RUN状态,若已处在RUN状态则不发生改变
通信模块的事件触发
发送包事件触发
由idle状态进入TX状态
接收包事件触发
有idle状态进入RX状态
信道检测事件触发
由idle状态进入CCA/ED状态
5 总结
本文首先通过处理器模块、通信模块、感知模块运行时工作状态转换模型,分析了各模块在各状态运行以及状态变迁时的能耗情况,设计了处理器模块能耗模型、通信模块能耗模型、感知模块能耗模型,揭示了节点各耗能设备的能量变化规律。然后给予事件触发的机制,明确各个模块能耗模型之间的关联,建立起节点整体的能耗模型。
根据本文设计的各模块能耗算法及节点整体能耗模型,在无线传感器网络系统中,只要在运行任务的同时实现节点整体模型,各模块就可以根据任务的情况进入相应的状态,准确的计算出各模块的耗能及节点整体耗能。
参考文献
1 高 妍, 杨孝宗.无线传感器网络节点能耗建模与仿真. 哈尔滨:哈尔滨工业大学, 2010.6
2 谢和平, 周海鹰, 左德承, 等. 无线传感器网络能量优化与建模技术综述. 计算机科学, 2012.10,Vol.39 No.10
3 王淑华, 陈国定, 赵国炳. 一种无线传感器网络能耗模型及有效性分析. 计算机应用与软件, 2011.2, Vol.28 No.2
4 张志东, 孙雨耕, 刘洋, 等. 无线传感器网络能量模型. 天津大学学报, 2007,9 Vol.40 No.9
5 高 博, 何 晨. 无线传感器网络中IEEE 802.15.4 MAC的协议建模与能量有效性研究. 上海: 上海交通大学, 2009,1
展开阅读全文