1.IEEE 802.15.4协议简介
IEEE802协议族是IEEE标准中关于局域网和城域网的一系列标准,像常见的以太网、令牌环网、无线局域网协议都是IEEE 802协议族中的子标准,其中的子标准IEEE 802.15主要关注无线个域网(Personal Area Network,PAN)。无线个域网是指在个人周围空间形成的无线网络,通常指覆盖范围在10m半径以内的短距离无线网络,尤其指能在便携式消费者电器和通信设备之间进行短距离特别连接的自组织网。而IEEE 802.15.4则主要针对低速无线个域网,规定了其物理层和介质访问控制层(Media Access Control,MAC)。
IEEE 802.15.4为无线个域网的设备间提供低速通信的基础底层协议,其重点在于强调在没有辅助基础设施的情况下进行低成本和低功耗的通信。协议能够在10m的通信范围内提供250kbit/s速率的通信,通过多物理层定义,还可以支持如20kbit/s、40kbit/s等更低速率的通信,当然功耗也会随之降低。另外,协议还支持CSMA/CA、安全通信、电源管理等特性。
IEEE 802.15.4标准基于OSI模型,但是只定义了物理层和介质访问控制层,物理层提供原始的数据传输服务,其直接管理射频收发器并进行信道选择、能量和信号管理,主要特性包括激活和休眠射频发射器、信道能量检测、链路状态指示、信道选择、信道空闲评估以及在物理介质上收发数据。物理层提供868MHz,915MHz,2.4GHzISM频段上的共27个信道。其中:
● 信道0,868~868.6MHz,中心频率868.3Hz。提供20kbit/s的数据通路。
● 信道1~10,中心频率=906MHz+2×(信道号-1)。每信道提供40kbit/s的数据通路。
● 信道11~26,中心频率=2405MHz+5×(信道号-11)。每信道提供250kbit/s的数据通路。
MAC层通过使用物理信道进行MAC帧的传输,除了数据服务,MAC层还提供了MAC层管理服务,即维护MAC子层协议的状态相关信息。其主要的工作包括:信标管理以及基于信标的时间同步、支持CSMA/CA的信道访问、时槽保障管理、帧验证以及确认(ACK)帧传输、PAN网络协调器的关联和取消关联。IEEE 802.15.4的MAC层规定了4种帧,分别是信标帧、数据帧、确认帧、命令帧。各帧的功能如下。
● 信标帧主要用来建立和维护一个PAN,并进行时间同步。
● 数据帧用来承载上层发给MAC层的数据,数据传送至MAC子层时,被称为MAC服务数据单元,作为MAC层的负载,其首尾被分别附加了MHR头信息和MFR尾信息后,就构成了MAC帧。
● 确认帧用来使发送方确认数据正确到达。如果设备收到目的地址为其自身的数据帧或命令帧,并且帧的控制信息字段的确认请求位被置1,设备需要回应一个确认帧。确认帧的序列号应该与被确认帧的序列号相同,并且负载长度应该为零。确认帧紧接着被确认帧发送,不需要使用CSMA-CA机制竞争信道。
● 命令帧用于组建PAN网络,传输同步数据等。其主要完成3方面的功能:把设备关联到PAN网络,与协调器交换数据,分配GTS。
另外,标准通过定义逻辑链路控制(Logical Link Control)子层为上层提供服务。链路控制子层只是IEEE 802.15.4标准可能的上层协议,并不在IEEE802.15.4标准的定义范围之内。为IEEE 802.15.4的MAC层接入IEEE 802.2标准中定义的LLC子层提供聚合服务。
IEEE 802.15.4标准定义了两种类型的网络设备:全功能设备(Full Function Device,FFD)和精简功能设备(Reduced Function Device,RFD)。其中,FFD具有全部的通信能力;RFD具有部分的通信能力。FFD设备之间以及FFD设备与RFD设备之间都可以直接通信,但RFD设备之间不能直接通信,只能与FFD设备通信,或者通过以一个FFD设备向外传输数据,这个与RFD相关联的FFD设备成为该RFD的协调器。IEEE 802.15.4标准还定义了3种角色设备:协调器(Coordinator)、路由器(Router)以及端设备(End Device)。其中,协调器和路由器为FFD,端设备为FFD或RFD均可。在IEEE 802.15.4网络中,有一个称为PAN协调器的FFD设备,是LR-WPAN网络中的主控制器。PAN协调器除了直接参与应用外,还要完成成员身份管理、链路状态信息管理以及分组转发等任务。其他两种设备,路由器主要负责数据的转发,而端设备则负责数据的获取。(www.xing528.com)
IEEE 802.15.4支持点到点网络和星形网络两种拓扑结构,但是两种网络中均必须存在一个FFD作为协调器。在星形网络中,所有设备都与中心设备PAN协调器通信。星形网络适合家庭自动化、PC的外设以及个人健康护理等小范围的室内应用。点对点网络也需要协调器,负责链路状态信息管理、设备身份认证等功能。点对点网络模式可以支持ADHOC网络,允许通过多跳路由的方式在网络中传输数据。
2.TinyOS程序设计简介
TinyOS是由美国加州大学伯利克分校专门为WSN开发的一种微型操作系统。TinyOS虽然名字里有OS,但并不是传统意义上的操作系统。确切地说,它是一个适用于网络化嵌入式系统的编程框架,通过在这个框架内链接一组必要的组件,就能方便地编译出面向特定应用的操作系统。这对于资源非常有限的嵌入式系统来说是非常重要的。针对WSN包含节点多,以及并发操作的工作方式,该操作系统采用了事件驱动的体系结构。由于WSN既有多样化的上层应用,又强调系统的低功耗要求,为此,系统采用既便于上层应用的开发,也有利于程序的快速执行的模块化设计方案。
TinyOS使用nesC作为程序设计语言。nesC在C语言的基础上进行了扩充。使用nesC编写的应用程序是通过把一个或多个组件连接起来从而组成一个完整的可执行程序。nesC有两种类型的组件:模块(module)和配件(configuration)。组件的定义格式请见图4-8。模块提供应用程序代码,实现一个或多个接口;配件则是用来将其他组件连接起来的组件。组件定义了两个作用域,一个是形式说明(specification)作用域,在该作用域内声明了组件提供和使用的接口;另一个是组件实现(implementation)作用域,该作用域对于模块来说是程序功能的代码实现部分;而对于配件来说是将接口的使用组件和提供组件连接起来组成一个程序。组件内部还可以定义任务。
图4-8 组件的定义格式
组件可以提供(provide)和使用(use)接口,接口是一组相关函数的集合,它是双向的并且是组件间的唯一访问点。接口声明了一组函数,称为命令(command),接口的提供者必须实现它们;接口还声明了另外一组函数,称为事件(event),接口的使用者必须实现它们。图4-9是send接口的定义。
图4-9 send接口的定义
send接口定义了4个命令:send,cancel,maxPayloadLength,getPayload。其中,前两个命令的返回值都是error_t类型的;而后两个命令的返回值分别是uint8_t和void*。它还定义了一个事件sendDone,该事件无返回值。
对于一个组件而言,如果它要使用某个接口中的命令,那么它还必须实现这个接口的事件。一个组件可以使用或提供多个接口以及同一个接口的多个实例。
将组件所使用的接口与组件所提供的接口连接在一起,这种行为称为连接(Wiring)。每个nesC应用程序都由一个顶级配件所描述,其内容就是将该应用程序所用到的所有组件连接起来,形成一个有机整体。nesC的所有源文件,包括接口、模块和配件,其文件扩展名都是“.nc”。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。