微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZIGBEE协调器单播控制多个终端的方法

ZIGBEE协调器单播控制多个终端的方法

时间:10-02 整理:3721RD 点击:

我想做了协调器轮询多个终端,构建的星型网络,求问下怎么实现单播控制啊?广播我看到有个差不多100MS的延迟,所以想使用单播。

我看到绑定需要外部按键来建立。我们方案不接受,而且看着是只能绑定一个?

而想着自己再协调器里面建立一个表格保存终端的网络短地址,但有下面几个问题:

(1)抓包看,终端在入网成功后,会发送自己的网络短地址,但这个帧在哪里处理啊?难道必须我自己在终端入网后写个发送函数?

(2)存的表格,如果在断电重启后,又要重新建立一遍,怎么保存呢?好实现断电后不用再建立表格。

看来是新同学啊,问题都比较基础,估计TI大神不会回答的。我最近也在做zigbee,针对你的问题分享下我的思路,你还是要多看官方资料多实践才行。

广播我看到有个差不多100MS的延迟,所以想使用单播。

在我看来广播和单播的延迟没什么区别。只不过广播会在网络里多次转发,占用信道时间较多,有可能导致下一包数据不能及时发送。所以在知道短地址的情况下建议使用单播。

我看到绑定需要外部按键来建立。我们方案不接受,而且看着是只能绑定一个?

在官方开发板中是使用按键的,实质上就是调用了程序中的“绑定函数”。关于绑定的方法你可以参考http://blog.csdn.net/tanqiuwei/article/details/7642716

(1)抓包看,终端在入网成功后,会发送自己的网络短地址,但这个帧在哪里处理啊?难道必须我自己在终端入网后写个发送函数?

提供几种获取短地址方法

1.就像你说的,当有新节点入网后,会广播device announce数据包,目的是告诉网内其他节点我来了以及我的短地址和长地址。协调器收到device announce数据包,你可以在应用层接收系统事件“ZDO_CB_MSG”,对该事件中的“clusterID”判断,如果是“Device_annce”,则以“ZDO_DeviceAnnce_t”这个数据结构解析收到的数据即可获得短地址。上面的名词你直接在协议栈搜索就能找到。

2.网络建立好之后,你可以读取协调器的子节点数量及他们的短地址;然后再依次读取这些子节点的子节点的数量及短地址,直到遍历整个网络。相应的操作方法参考Method for Discovering Network Topology.pdf

3.你的终端应该都是你预先准备好的,所以你应该知道他们的长地址。因此你可以使用ZDP_NwkAddrReq(),以长地址来查询短地址。使用方法参考Z-Stack API.pdf的3.1.4.1

(2)存的表格,如果在断电重启后,又要重新建立一遍,怎么保存呢?好实现断电后不用再建立表格

想要保存自己的数据,可以使用OSAL API.pdf的第10章节的函数。

太谢谢你了。大神!

最后我在子节点的state change那里给父节点发送他的短地址,父节点 在保存,绑定,这样的方式,

本来因为想的我的网络结构很简单。节点很少,想到每个节点给个组编号,利用组播发送。。。。但没想到协调器组播发送的时候一直没成功,一直发router request。。没想通。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top