返回该小组首页 回复主题
mpuhome

mpuhome

小组等级:     E币:441  (E币换礼)

#1楼主:zigbee网络技巧之CSkip

文章发表于:2008-03-19 09:33

ZIGBEE 网络层的功能主要包括组建网络,加入网络,离开网络,路由建立,数据传输等.在使用分布式地址分配的网络中,COORDINATOR建立网络后,设置自己的地址为0X0,其他的ROUTER或则END DEVICE 加入网络,都由自己的父节点来分配网络地址.网络地址的分配与三个参数有关:

    允许的最大子节点数(MAXCHILDREN)
    允许的最大路由节点数(MAXROUTER)
    允许的最大网络深度(MAXDEPTH)
    根据此三参数可以算出在每一级(也就是每个深度的)情况下,兄弟节点之间的地址间隔(CSKIP).
    比如一个MAXCHILDREN = 4,MAXROUTER = 2,MAXDEPTH = 2的网络,CSKIP 布局为:
   深度为1的设备的CSKIP 是:  5 
   深度为2的设备的CSKIP :  1 

   其网络结构为:
   COORDINATOR 地址 0X0, 深度为0; 则深度为1的设备的ROUTER 有两个,END DEVICE 也有两个,全局地址分配为:
COORINATOR                            0X0
     ROUTER1 :                            0X1
         ROUTER11 :                              0X2
         ROUTER12 :                              0X3 
         END13    :                              0X4
         END14    :                              0X5
     ROUTER2 :                            0X6
         ROUTER21 :                              0X7
         ROUTER22 :                              0X8
         END23    :                              0X9
         END24    :                              0Xa
     END1:                                0Xb
     END2:                                0Xc
  
  CSKIP 计算公式ZIGBEE规范有说明,下面是VC实现代码:

   int AddrParse::GetCskip(int id)
  {
       int rel;

       if(M_MAXROUTER<1 || M_MAXDEPTH<1||M_MAXCHILDREN<1)//if wrong para
           return -1;
    
        if(id<0||id>M_MAXDEPTH)
            return -2;

        if(M_MAXROUTER ==1)//if 1 the ari is esay
        {
            rel = 1+M_MAXCHILDREN*(M_MAXDEPTH-id-1);
         }

         else if(M_MAXROUTER>1)//
         {
              int ml_increase=M_MAXDEPTH-id-1;
              int ml_temp = 1;
  
              if(ml_increase == -1)
             {
                 rel=(1+ M_MAXCHILDREN-M_MAXROUTER-M_MAXCHILDREN/M_MAXROUTER)/(1-M_MAXROUTER);
              }
              else if(ml_increase>-1)
              {
                  for(;ml_increase>0;ml_increase--)
                  {
                      ml_temp=M_MAXROUTER*ml_temp;
                   }
                   rel = (1+ M_MAXCHILDREN-M_MAXROUTER-M_MAXCHILDREN*ml_temp)/(1-M_MAXROUTER);
               }
           }
           if(rel>-1)
              return rel;
           else return 0;
    }

  
 
本文谈论之ZIGBEE网络层技巧是基于ZIGBEE2004.

      【回复】

快速回复主题--如果想加入编辑器功能,建议使用 [高级回复]

您目前还不是小组成员,请先加入

回复贴子区

用户名:    您没有注册?

密码:    忘记了密码?

内容:

浏览该小组的用户还看过...

设计资源与分销

";