首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ZigBee协议请教?

ZigBee协议请教?

1、隔壁两户人家同时使用自己的一套基于zigbee的灯光系统,则各自建立了不同的网络,由不同的PANID来区分?现有一新的结点要加入到某户人家的网络里,那该结点是如何避免不加入另外一户人家的呢?


2、zigbee协议是如何实现低功耗的,即其结点的睡眠和唤醒机制怎么实现?是通过定时的广播becon唤醒帧实现的吗?

关于z-stack的应用实例有哪些文档呢?我只看到AN2994.pdf.
请问Z-STACK的OSAL是哪一种OS的API? 我初看提供的OSAL源码,这不是一个简单的OS的源码吗?为什么说它仅是API?

[此贴子已经被作者于2006-4-12 15:37:39编辑过]

对Beacon帧中,如
FFD发出的00 80 0f ef be fe ca 11 ef 80 00
通过分析,该帧类型为BEACON,11 ef为super frame specification
80为GTS
00为pending
但我对这几个表示的是什么意思,有啥作用,还没领会出来也?请指教!
我在对freescale针对802.15.4 MAC PHY Software所提供的例子MyWirelessApp中的应用例程,如My_Wireless_App_Ex05a及My_Wireless_App_Ex05b,所抓下来的over the air的帧,
RFD:23 c8 20 ef be fe ca ff ff ff ff ff ff ff ff ff ff 01 80(associate.request)
RFD:63 c8 29 ef be fe ca ff ff ff ff ff ff ff ff 04(poll-data.request)
FFD:12 00 29(ack)
FFD:62 cc 3b ef be ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 02 01 00 00(associate.response)

以上RFD完成了接入FFD所建成的PAN.
不明白的地方是,按照IEEE 802.15.4 specification所提供的接入过程,FFD应该对RFD的associate.request给一个ACK,然后RFD才向FFD发送poll-data.request的帧,为什么这里不是呢?freescale的MAC PHY库也有不符合标准的吗?
[upload=image/pjpeg]uploadImages/association.jpg[/upload]
第一种情况:
RFD1:63 88 d2 30 34 0 0 6f 79 4 (MLME_POLL_request)
Coordinator:12 0 d2(ACK)
Coordinator:41 88 4a 30 34 6f 79 0 0 (MLME_POLL_response)

第二种情况:
RFD1:63 88 cf 30 34 0 0 6f 79 4(MLME_POLL_request)
Coordinator:2 0 cf(ACK)
第一种和第二种效果不是一样吗?为啥要区分出来呢?是怎么样的情况下才需要第一种的应答形式呢?
为什么没人回复我呢?

该网络内有三个结点,即coordinator,RFD1,RFD2,现在是由RFD1与coordinator绑定后,向coordinator发送数据(64 65 66 ),

RFD1(short address:6F 79)向coordinator发送数据64 65 66
RFD1: 61 88 bc 30 34 0 0 6f 79 4 0 0 0 6f 79 7 1 54 1 5 f b 21 0 3 64 65 66
RFD2:63 88 3d 30 34 0 0 70 79 4 (poll data)
Coordinator:12 0 3d(ack)
Coordinator:41 88 43 30 34 70 79 0 0 (data send(NO_DATA),need not ack)

RFD1:63 88 bd 30 34 0 0 6f 79 4 (poll data)
Coordinator :12 0 bd(ack)
Coordinator :61 88 42 30 34 6f 79 0 0 44 0 6f 79 0 0 7 1 6 b 1 5 f

疑问如下:可以看到,当RFD2向coordinator 进行poll_data_request时,coordinator做出的反馈如下:
Coordinator:12 0 3d(ack,frame pending=1)
Coordinator:41 88 43 30 34 70 79 0 0 (data send(NO_DATA),need not ack)
也就是说此时,coordinator有RFD1的indirect data frame,而没有RFD2的indirect data frame,但对RFD2的poll data request回复为什么带frame pending=1,并紧跟一个data_length=0的数据帧,何不更省略一点,就回复一个frame pending=0的ACK呢?

[此贴子已经被作者于2006-6-14 14:46:33编辑过]

我现在是以freescale所提供的协议库功能为参照物,我当然期望它能和协议specification里的一样,不然我理解起来会非常费劲。
我再把我的问题重新叙述一遍,现在我以Fingure 8 Wireless->FS-1.0-1.2.0->Zstack->SerialApp为例,该实例利用Zstack的库,实现了网络结点间通过串口互发消息.下面是其RFD接入网络的通信过程:
RFD1(MAC add: 5d 79 22 23 24 25 26 27)加入PAN 30 34,分配的短地址为6F 79:
RFD1: 3 8 a7 ff ff ff ff 7(active scan)
coordinator: 0 80 c0 30 34 0 0 ff cf 0 0 0 11 84(beacon frame,PANID=34 30,SRC Add=00 00)

RFD1: 23 c8 aa 30 34 0 0 ff ff 5d 79 22 23 24 25 26 27 1 80(associate.request)
RFD1: 63 c8 ab 30 34 0 0 5d 79 22 23 24 25 26 27 4(poll-data.request)
coordinator: 12 0 ab(ack,FD=1,for poll_data.request)

coordinator : 63 cc 40 30 34 5d 79 22 23 24 25 26 27 30 34 12 13 14 15 16 17 2 6f 79 0 (associate.response)

RFD1: 63 88 ac 30 34 0 0 6f 79 4 (poll_data.request)
coordinator:2 0 ac(ACK,FD=0,for poll_data.request)
问题如下:
coordinator的应答机制似乎只针对POLL_DATA_request的帧?而按照IEEE802.15.4标准,针对其他的所有命令数据消息,似乎都应该有应答,具体见楼9的图,即coordinator应该对RFD1的associate.request应答,RFD1应该对associate.response应答.

[此贴子已经被作者于2006-6-14 15:35:29编辑过]

jimmytan,能不能你也抓一下包,看看是不是我这样的,现在我理解的很乱,为什么明明要求ACK的帧(如frametype=61),却没有得到ACK.
我是用我们实验室做的sniffer抓的,谢谢提醒,我差点忘了看这些文档!
(802.15.4 MAC PHY Software Reference Manual,3.5 Association Feature)
a MAC command frame containing the association request is
then sent to the coordinator. ......A timer is started upon successful reception.The timer expires after aResponseWaitTime symbols.......

"A timer is started upon successful reception.",请问RFD怎么确定自己的associate.request帧被coordinator成功接收呢,因为RFD并没有得到coordinator的ACK呀?
下面是我做的一个实验,RFD(基于freescale zigbee库)欲接入一PAN(coordinator是本人的试验代码)中,但未成功.RFD根本就不向coordinator发送data_request.
RFD:03 08 0B FF FF FF FF 07(active scan)
coordinator:00 80 12 12 2F 00 00 FF CF 00 00 00 11 84(beacon frame)
RFD:23 C8 0C 12 2F 00 00 FF FF 2E E1 22 23 24 25 26 27 01 80(assocaite.request)
RFD:23 C8 0C 12 2F 00 00 FF FF 2E E1 22 23 24 25 26 27 01 80
RFD:23 C8 0C 12 2F 00 00 FF FF 2E E1 22 23 24 25 26 27 01 80
RFD:23 C8 0C 12 2F 00 00 FF FF 2E E1 22 23 24 25 26 27 01 80
RFD:03 08 0D FF FF FF FF 07(active scan)
coordinator:00 80 15 12 2F 00 00 FF CF 00 00 00 11 84(beacon frame)

[此贴子已经被作者于2006-6-16 15:09:57编辑过]

jimmytan,上面的例子,网络均为NONE_BEACON,NONE_SECURITY网络.

原Freescale网络RFD1接入PAN过程中的帧:RFD1(MAC add: 5d 79 22 23 24 25 26 27)加入PAN 30 34,分配的短地址为6F 79:
RFD1: 3 8 a7 ff ff ff ff 7(active scan)
coordinator: 0 80 c0 30 34 0 0 ff cf 0 0 0 11 84(beacon frame,PANID=34 30,SRC Add=00 00)
RFD1: 23 c8 aa 30 34 0 0 ff ff 5d 79 22 23 24 25 26 27 1 80(associate.request)
RFD1: 63 c8 ab 30 34 0 0 5d 79 22 23 24 25 26 27 4(poll-data.request)
coordinator: 12 0 ab(ack)
coordinator : 63 cc 40 30 34 5d 79 22 23 24 25 26 27 30 34 12 13 14 15 16 17 2 6f 79 0 (associate.response)
我不晓得为什么这能成功,而我上面的例子就不成功!

 

 

[此贴子已经被作者于2006-6-23 11:19:57编辑过]

jimmytan,如果你能用你的抓包工具证明我抓下的包漏掉了ACK(如assocaite.request对应的ACK)的话,那我的问题就迎刃而解了.期盼!!!
返回列表