第一篇:zigbee学习自我总结!!!!!
1.Zigbee网络节点类型
Zigbee网络有三类节点类型:即协调器Coordinator、路由器Router和终端设备EndDevice,其中协调器和路由器均为全功能设备,而终端设备选用精简功能设备。
2.Zigbee协议栈各层主要功能模块
3.Zigbee网络节点地址
Zigbee网络协议的每一个节点皆有两个地址:64位的IEEE MAC地址及16位网络地址.EUI-64(64-bit extended unique identifier)
1)64-bit地址,又称为MAC地址或IEEE地址。
每个ZigBee节点都应该有全球唯一的64位IEEE地址。这个地址需要向IEEE组织申请才能使用。通信时,将待发送的数据包的目的地址设为此64位IEEE地址,从而实现数据包的正确投递。
2)16-bit地址,即网络地址,或称为短地址。当一个ZigBee网络形成后,ZigBee网络内的每个节点,都会分配到一个16位的网络地址。通信时,将待发送的数据包的目的地址设为此16位网络地址。
4.Zigbee协议术语
配置文件(profile):Zigbee协议的配置文件是对逻辑组件及其相关接口的描述,是面向某个应用类别的公约、准则.通常没有程序代码与配置文件相关联.
属性(attribute):设备之间通信的每一种数据像开关的状态或温度计值等皆可称为属性.每个属性可得到唯一的ID值.
簇(cluster):多个属性的汇集形成了簇,每个簇也拥有一个唯一的ID。虽然个体之间传输的通常是属性信息,但所谓的逻辑组件的接口指的却是簇一级的操作,而非属性一级.
终端(endpoint):每个支持一个或多个簇的代码功能块称为终端。不同的设备通过它们的终端及所支持的簇来进行通信。
PAN IDs:PAN IDs是用来在逻辑上分离在同一领域内的多个节点组。这样不同组之间节点通信就不会干扰,且可以在同一通道channel上(zigbee2007不行,因为它通信时可以改变频率的)Pan id是16位,范围是0x0000~03fff。当建立或加入网络时没有指定PAN ID的话,就会根据default PAN ID确定。它是个常量。
Extended PAN ID:zigbee 增加了一个8字节的扩展PAN ID,便于提供服务和PAN ID冲突检测。5.Zigbee协议结构
●物理层(PHY)物理层定义了物理无线信道和MAC子层之间的接口,提供物理层数据服务和 物理层管理服务。物理层内容: 1)ZigBee的激活;2)当前信道的能量检测;3)接收链路服务质量信息;4)ZigBee信道接入方式;5)信道频率选择;6)数据传输和接收。●介质接入控制子层(MAC)MAC层负责处理所有的物理无线信道访问,并产生网络信号、同步信号;支持PAN连接和分离,提供两个对等MAC实体之间可靠的链路。
MAC层功能:
1)网络协调器产生信标; 2)与信标同步;
3)支持PAN(个域网)链路的建立和断开; 4)为设备的安全性提供支持;
5)信道接入方式采用免冲突载波检测多址接入(CSMA-CA)机制; 6)处理和维护保护时隙(GTS)机制;
7)在两个对等的M AC实体之间提供一个可靠的通信链路。●网络层(NWK)
ZigBee协议栈的核心部分在网络层。网络层主要实现节点加入或离开网络、接收或抛弃其他节点、路由查找及传送数据等功能。网络层功能: 1)网络发现;2)网络形成;3)允许设备连接;4)路由器初始化;5)设备同网络 连接;6)直接将设备同网络连接;7)断开网络连接;8)重新复位设备;9)接收机 同步;10)信息库维护。●应用层(APL)
ZigBee应用层框架包括应用支持层(APS)、ZigBee设备对象(ZDO)和制造商所定义的应用对象。应用支持层的功能包括:维持绑定表、在绑定的设备之间传送消息。
ZigBee设备对象的功能包括:定义设备在网络中的角色(如ZigBee协调器和终端设备),发起和响应绑定请求,在网络设备之间建立安全机制。ZigBee 设备对象还负责发现网络中的设备,并且决定向他们提供何种应用服务。ZigBee应用层除了提供一些必要函数以及为网络层提供合适的服务接口外,一个重要的功能是应用者可在这层定义自己的应用对象。●应用程序框架(AF)
运行在ZigBee协议栈上的应用程序实际上就是厂商自定义的应用对象,并且遵循规范(profile)运行在端点1---240上。在ZigBee应用中,提供2种标准服务类型:键值对(KVP)或报文(MSG)。●Zigbee设备对象(ZDO)
远程设备通过ZDO请求描述符信息,接收到这些请求时,ZDO会调用配置对象获取相应描述符值。另外,ZDO提供绑定服务。
6.Z-Stack软件构架
Z-Stack由main()函数开始执行,main()函数共做了2件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统,如下图所示:
7.Z-Stack 系统运行流程图
8.Z-Stack在项目中的目录结构
(1)App:应用层目录,这个目录下的文件就是创建一个新项目时自己要添加的文件,(2)HAL:硬件层目录,Common目录下的文件是公用文件,基本上与硬件无关,其中hal_assert.c是断言文件,用于调用,hal_drivers.c是驱动文件,抽象出与硬件无关的驱动函数,包含有与硬件相关的配置和驱动及操作函数。Include目录下主要包含各个硬件模块的头文件,而Target目录下的文件是跟硬件平台相关的,可能看到有两个平台,分别是Cc2430DB平台和一个CC2430EB平台。后面的DB和EB表示的是TI公司开发板的型号,其实还有一种类型是BB的,BB: Battery Board DB: Development Board EB: Evaluation Board 分别对应TI公司开发的三种板型,其功能按上顺序依次变强。可以参看“Z-Stack User's Guide for CC2430”的图片,可以获得更直观的认识。
(3)MAC:MAC层目录,High Level和Low Level两个目录表示MAC层分为了高层和底层两层,Include目录下则包含了MAC层的参数配置文件及基MAC的LIB库函数接口文件,这里的MAC层的协议是不开源的,以库的形式给出
(4)MT:监制调试层目录,该目录下的文件主要用于调试目的,即实现通过串口调试各层,与各层进行直接交互。
(5)NWK:网络层目录,含有网络层配置参数文件及网络层库的函数接口文件,及APS层库的函数接口
(6)OSAL:协议栈的操作系统抽象层目录
(7)Profile:AF层目录,Application Farmework 应用框架,包含AF层处理函数接口文件。
(8)Security:安全层目录,包含安全层处理函数接口文件
(9)Services:ZigBee和802.15.4设备地址处理函数目录,包括地址模式的定义及地址处理函数
(10)Tools:工作配置目录,包括空间划分及Z-Stack相关配置信息
(11)ZDO:指ZigBee设备对象,可认为是一种公共的功能集,文件用户用自定义的对象调用APS子层的服务和NWK层的服务
(12)ZMAC:其中Zmac.c是Z-StackMAC导出层接口文件,zmac_cb.c是ZMAC需要调用的网络层函数
(13)Zmain:Zmain.c主要包含了整个项目的入口函数main(),在OnBoard.c包含硬件开始平台类外设进行控制的接口函数
(14)Output:输出文件目录,这个是EW8051 IDE自动生成的
9.Z-stack 中实现自己的任务
在Zstack(TI的Zigbee协议栈)中,对于每个用户自己新建立的任务通常需要两个相关的处理函数,包括: ①用于初始化的函数
如:SampleApp_Init(),这个函数是在osalInitTasks()这个osal(Zstack中自带的小操作系统)中去调用的,其目的就是把一些用户自己写的任务中的一些变量,网络模式,网络终端类型等进行初始化;②用于引起该任务状态变化的事件发生后所需要执行的事件处理函数
如:SampleApp_ProcessEvent(),这个函数是首先const pTaskEventHandlerFn tasksArr[ ]中进行设置(绑定),然后在osalInitTasks()中如果发生事件进行调用绑定的事件处理函数。
1)用户自己设计的任务代码在Zstack中的调用过程
main()执行(在Zmain目录中ZMain.c)-osal_init_system()(在OSAL目录中的OSAL.c 中)-调用osalInitTasks()(在APP目录中的OSAL_SerialApp.c)-调用SerialApp_Init(),(在APP目录中的SerialApp.c中)。
在osalInitTasks()中实现了多个任务初始化的设置,其中macTaskInit(taskID++)到ZDApp_Init(taskID++)的几行代码表示对于几个系统运行初始化任务的调用,而用户自己实现的SampleApp_Init()在最后,这里taskID随着任务的增加也随之递增.所以用户自己实现的任务的初始化操作应该在osalInitTasks()中增加。(在APP目录中的OSAL_SerialApp.c中增加)。2)任务处理调用的重要数据结构
在Zstack里,对于同一个任务可能有多种事件发生,那么需要执行不同的事件处理,为了方便,对于每个任务的事件处理函数都统一在一个事件处理函数中实现,然后根据任务的ID号(task_id)和该任务的具体事件(events)调用某个任务的事件处理函数,进入了该任务的事件处理函数之后,再根据 events 再来判别是该任务的哪一种事件发生,进而执行相应的事件处理。
pTaskEventHandlerFn 是一个指向函数(事件处理函数)的指针,这里实现的每一个数组元素各对应于一个任务的事件处理函数,比如SampleApp_ProcessEvent对于用户自行实现的事件处理函数 uint16 SampleApp_ProcessEvent(uint8 task_id,uint16 events),所以这里如果我们实现了一个任务,还需要把实现的该任务的事件处理函数在这里添加。
注意,tasksEvents(在APP目录中的OSAL_SerialApp.c的osalInitTasks(void)函数中)和tasksArr[](在APP中的OSAL_SerialApp.c中)里的顺序是一一对应的,tasksArr[]中的第i个事件处理函数对应于tasksEvents中的第i个任务的事件。
3)对于不同事件发生后的任务处理函数的调用
osal_start_system()很重要,决定了当某个任务的事件发生后调用对应的事件处理函数(在Zmain目录中ZMain.c)。
10.Z-stack 添加一个新的任务
在osalInitTasks()和tasksArr[]添加相应的项就可以了。osalInitTasks()为初始化系统的任务,tasksArr[ ]为任务处理事件矩阵。在 osalInitTasks()和 tasksArr[]添加相应的项就可以。
1)修改 osalInitTasks()void osalInitTasks(void){ ……
OuhsApp_Init(taskID++);PhotoApp_Init(taskID);} 2)修改 tasksArr[] const pTaskEventHandlerFn tasksArr[] = { ……
OuhsApp_ProcessEvent PhotoApp_ProcessEvent };3)添加_Init()和_ProcessEvent()void PhotoApp_Init(uint8 task_id){ PhotoApp_TaskID=task_id;PhotoInit();RegisterForPhoto(PhotoApp_TaskID);} uint16 PhotoApp_ProcessEvent(uint8 task_id uint16 events){ afIncomingMSGPacket_t *MSGpkt;if(events &SYS_EVENT_MSG){ MSGpkt =(afIncomingMSGPacket_t *)osal_msg_receive(PhotoApp_TaskID);while(MSGpkt){ switch(MSGpkt->hdr.event){ case PHOTO_CHANGE: HalLedblink(HAL_LED_1 3 30 300);//P0IE=1;break;} // Release the memory osal_msg_deallocate((uint8 *)MSGpkt);// Next0 if not set */
uint16 clusterId;
/* Message's cluster ID */
afAddrType_t srcAddr;
/* Source Address, if endpoint is STUBAPS_INTER_PAN_EP,it's an InterPAN message */
uint16 macDestAddr;
/* MAC header destination short address */
uint8 endPoint;
/* destination endpoint */
uint8 wasBroadcast;
/* TRUE if network destination was a broadcast address */
uint8 LinkQuality;
/* The link quality of the received data frame */
uint8 correlation;
/* The raw correlation value of the received data frame */
int8 rssi;
/* The received RF power in units dBm */
uint8 SecurityUse;
/* deprecated */
uint32 timestamp;
/* receipt timestamp from MAC */
afMSGCommandFormat_t cmd;/* Application Data */ } afIncomingMSGPacket_t;typedef struct {uint8 event;
uint8 status;} osal_event_hdr_t;typedef struct {
byte
TransSeqNumber;
uint16 DataLength;
// Number of bytes in TransData
byte *Data;} afMSGCommandFormat_t;
第二篇:Zigbee心得体会
心得体会
本次实训之前,我就上网搜索了Zigbee的概念和相关信息。通过这次为期五周的无线通信技术综合训练,我对Zigbee无线通信技术,以及单片机CC2530开发板的硬件结构和功能有了初步的了解和认识。
实训的第一周,我们学习利用IAR Embedded Wordbench软件,建立工程,编写、调试和下载程序,通过CC2530开发板的现象来分析程序的功能。亲眼目睹了软件驱动硬件工作之后,我开始对这次实训产生了浓厚兴趣。在熟悉了软件和硬件的基本操作后,我们开始编写和调试相对复杂的程序。这个编写和调试的过程对我来说是个很大的挑战,因为我的C51基础很薄弱,所以很多看似简单的程序,我都要去查资料或者请教老师同学。最后一周的综合实验,是小组合作共同完成的。我体会到了Zigbee技术的功能强大,也体会到了团队合作的快乐和价值。
现实和理想总是有差距的,或多或少都会出现一些问题。对于通信方面的实训来说更是如此。在这次实训过程中,我遇到了各种问题:某句程序不理解,程序调试不成功,节点指示灯不闪烁,液晶屏显示乱码,实验现象和预期要求不符等。通过查阅相关资料、小组成员探讨和请教老师等途径,这些问题得到了及时有效的解决。解决问题的过程不是一帆风顺的,是要付出汗水和努力的,但这个过程很值得。
通过这次实训,我认识和了解了热门的Zigbee技术,提高了C51的程序编写和调试能力。更重要的是,这次实训提高了我们通信专业所必需的实践能力和职场所需的团队合作能力,培养了我们认真严谨的科学态度。这些东西将让我们终身受益!
第三篇:自我学习总结
(一)、传统的聚类算法可以被分为五类:
划分方法、层次方法、基于密度方法、基于网格方法和基于模型方法。
1、划分方法(PAM:PArtitioning method)首先创建k个划分,k为要创建的划分个数;然后利用一个循环定位技术通过将对象从一个划分移到另一个划分来帮助改善划分质量。典型的划分方法包括:
k-means,k-medoids,CLARA(Clustering LARge Application),CLARANS(Clustering Large Application based upon RANdomized Search).FCM
第四篇:资深移动通信工程师学习zigbee心得
2010-11-1
2物理层的PIB是什么概念?有什么用?
2010-11-18
物理层的CCA.物理层是怎么知道信道的被占用情况.AODV+ENY是什么概念?
AODVjr协议[2]在考虑了无线节点的有限移动性之后,以最大限度降低节点功耗为目的,对AODV协议进行了简化。AODVjr协议仅保留了AODV协议按需路由的动态特性,而将HELLO消息、路由错误信息、问询序列号等AODV协议为了适应节点移动性提出的优化措施统统省略,对AODV协议进行了最大限度的简化。受益于这样的简化,AODVjr协议在能耗方面极大地优于AODV协议,因此AODVjr协议被广泛应用于各种无线传感器网络。AODVjr协议最大的问题是没有考虑路由的安全性,不仅数据在传输过程中极有可能被篡改或故意丢弃,路径信息本身也有可能被更改。
为了维持路径的可用性,路径的生命期只有在收到数据包时才进行更新,而发送数据包不进行路径更新。
Zigbee和adhoc网络不同.在adhoc网络中各个结点间的地位是相同的.而zigbee中网元间的地位是不一样的.建网过程中,协调器对信道的主导扫描是干什么?发出信标请求又是干什么?
PAN ID又是根据什么机制确定的?
64为IEEE地址的作用是什么?
一个终端节点第一开机,检测信道,如果有1个以上信道上有信标,这个节点怎么做选择呢? 是不是所以拓扑结构的地址分配算法都是:An=Ak+Cship(d)*Rm+n?还是,只是树状拓扑结构时,按这个算法分配地址呢?
官方的网络层的路由协议是什么?是AODVjr和Cluster-Tree都有吗?
RF4CE是什么?
GTS是什么概念?
Beacon的一个作用是注册/识别一个PAN?是什么概念?
路由表入口是什么概念?
CAP contention access period
CFP contention free period
GTS Guaranteed time slot
2010年12月31日星期五 听视频 Zigbee和 蓝牙 红外 wifi是一个档次的概念
2005年颁布第一个zigbee规范。现在有zigbee2006 2007各个版本。
802.15只定义了物理层和MAC层。Zigbee在802.15上又定义了网络层和应用层。
应用层上可以连240个应用层设备。
2011年1月4日星期二
2011年2月15日星期二 学习《Zigbee无线组网技术的研究》心得找到合适的信道后,协调器将为网络选定一个网络标识符(PAN ID,取值_<0x3FFF),这
个PAN ID是16位短地址中的一个吗? 不是吧主动扫描和被动扫描有区别吗?无论怎么样,扫描一遍不行吗?
2011年2月16日星期三本文通过减小每个节点加入网络的时间及原语数来达到减小这种冲突的目的,从加入网络的时间分析,加入网络的绝大部分时间花费在主动扫描、信标周期和等待协调器处理时间上,而前两者时间是固定不变的,但是等待协调器处理的时间却是可变的,和协调器要处理的原语数量有关,可以通过减少原语的数量,减小协调器处理这些原语通信握手过程所需要的时间,这样协调器就能更快的响应节点的关联加入。节点加入过程是个半盲目的过程。估计是为了减少接入时间和减少复杂度的原因吧。节点向协调器发 Association request后,协调器会发一个ACK。这个ACK只是用来说”哦“。
然后节点要等,再做一个CSMA?这里做CSMA估计是为了防冲突吧,估计不是必须要做的。接着,节点再去问协调器要地址等信息。这些信息应该在Association response里。
如果节点等了一段时间,协调器不通过信令给他分配信息,节点会自己从协调器的信标里提取响应命令(?比较神奇)这个响应命令里会有地址信息吗?
传统MAC设计目标是:最大化吞吐量、最小时延、公平性
ZIGBEE MAC设计目标是:最小化能耗、自组织能力。所以速率、时延、公平性都要做牺牲。
S-MAC提出用3种方法来减少能耗并支持自组织:节点定期睡眠以减少空闲监听邻近节点组成虚拟簇,使睡眠调度时间自动同步用消息传递方法 来减少时延
在星型网拓扑结构中,网络协调者定义了整个网络的时分复用和多址接入方式。
根据业务流性质,zigbee应用可以分成连续性、周期性(如流速计)和间断性(如家电控制)
三种。
Zigbee协议栈只要8位处理器再加4kbrom和32kbrom就可以了。
SD和BI长度是由网络协调器决定的。
超帧的的活跃期间划分为3个阶段:信标发送时段、竞争访问时段CAP、非竞争访问时段CFP。超帧的活跃期被划分成(默认16)个等长的时隙。时隙个数、时隙长度等参数有协调者决定,并通过信标帧广播
在超帧的竞争访问阶段,节点使用带时隙的CSMA-CA访问机制,并且任何通信都必须在竞争访问时段结束前完成。
GTS,在非竞争时段,这个时段被分成若干个GTS。每个GTS又由多个时隙组成。
2种通信模式:1 带信标 带时隙的CSMA-CA不带信标 使用非时隙的CSMA-CA机制访问信道 确认帧不需要使用CSMA-CA机制
MAC帧通用结构:帧头、负荷、帧尾
帧头:帧控制域 帧号 地址域
负荷:是可变的,具体内容由帧类型决定
帧尾:16位CRC校验吗
16位地址是一个zigbee网的内部节点,是协调者来分配的,在一个网内是唯一的。也就意为着一个网做多有65000个左右的端点。
PAN标识也是16位的。
64为地址是,设备的出厂地址,是全球唯一的。类似每个计算机网卡的MAC地址。
信标帧 其中的待发送数据目标地址字段的作用是:在协调器要给某个节点用间接发送方式时,节点会去监听信标帧的这个字段。如果在这个字段里有我的地址,那节点会随后发起向
协调器要数据的流程。
楼老师胶片中的和蓝牙比较中,zigbee有254个节点设备。这个256是怎么来的?一个主节点下可以联256个节点。简单理解,在星型拓扑模式下,一个FFD可以联254个RFD。
第五篇:党校学习自我总结
党校学习自我总结
很荣幸我参加了学校党组织举办的第54期入党积极分子培训班,通过学习和各位老师的交流,提高了我的思想境界,扩宽了视野,进一步端正了我的入党动机,更坚定了我要求加入中国共产党的决心。
在短短的几十天的学习培训中,我们学习了列宁同志的建党原则,明确的当代大学生的政治使命和责任,掌握了发展党员的基本知识及应具备的基本材料。通过几十天的党校学习,我各方面都得到了提高。
首先,我们进一步提高了对党指导思想的认识,深刻的领会了将“三个代表”作为指导思想的重要意义。这次学习是一次思想的洗礼,这次学习是一次思想的碰撞,这次学习是一次思想的转变,这次学习更是一次思想的升华。在党校学习中,我对党有了更加深刻的认识,我更加坚信我们党的领导。我们党从几十名党员发展到如今的几千多万党员,党的自身建设得到不断加强和完善。从党的一大到党的十七大,党章的修改看到了党的理论与建设的与时俱进。在党的十七届四中全会上提出,党内民主是党的生命,集中统一是党的力量保证。必须坚持民主基础上的集中和集中下的民主相结合,以保障党员民主权利为根本,以加强党内基层民主建设为基础切实推进党内民主。党内民主是一个政党生命所系、力量所在。我们要坚信中国共产党的领导,确保共产党的地位,毫不动摇地高举中国特色社会主义伟大旗帜,坚定不移地走中国特色社会主义伟大道路。
其次,在理论学习方面。从党章修改看到党的理论与建设的与时俱进,了解世界第一个共产党的纲领、政党的基本知识及中国共产党的历史梗概,我们党的性质、宗旨和组织制度,要坚定自己的理想、信念、情操与成长成才,明确党员的条件、义务和权力入党的程序,端正入党动机、争取早日做一名合格共产党员。以邓小平理论和“三个代表”重要思想、科学发展观为指导,将理论与实际相结合。科学发展观是对共产党执政、社会主义社会发展和人类社会发展“三大规律”认识的深化,是对我国社会主义现代化建设指导思想的重大发展,是中国社会主义理论体系即马克思主义中国化的最新成果。然后,我进一步明确了入党的基本条件和树立正确的入党动机的重要性。通过步步深入的学习,我对入党要求的认识渐渐从朦胧走向清晰,明白了不仅要在学习中创造入党条件,更要在实践中不断总结,不断进步,理论系实际,才能成为一名合格的党员发展对象。只有把全心全意为人民服务,为共产主义事业奋斗终身的崇高理想作为入党的唯一动机,才能在入党的道路上越走越近,越走越快,才能真正领悟和实践“组织上入党一生一次,思想上入党一生一世”。最后,我深深的感到,作为新时期的先进青年,先进大学生,我们应该在生活里克勤克俭,严格要求;不断增强贯彻党基本路线的自觉性;在学习上,以“书山有路勤为径,学海无边苦作舟”的精神,不断增加新的科学文化知识,不断提高自我政治理论修养,努力争取在建设有中国特色社会主义过程中建功立业。这不仅是一种政治责任,也是一种精神追求,是实现个人社会价值和人生价值的最高理想。
尽管这短暂的五次培训尚不能让我在最深刻、最高度的层次上去领会和感受其间的要旨及内涵,但我的收获和启示却是巨大的,也足以让我在对党的理解和党性修养上得到了又一次升华。我认为作为一名入党积极分子,一个有志投身于共产主义事业的当代青年,必须增强党性锻炼,提高政治理论素养,加强个人修养。“不以恶小而为之,不以善小而不为”。一名共产党员要做一个有抱负有大志,踏实苦干、乐于奉献的跨世纪新人;做一个不计名利和得失,不被灯红酒绿所迷惑的坚强革命战士;做一个有道德良知、遵纪守法的现代公民。
作为一名大学生,要有大学精神、大学理想与大学文化实践,我一定要以这次培训为新的起点,转化好培训成果,不辱使命,承担起责任,做一名合格的大学生,争取早日能够加入中国共产党。