如何使用ZStack——網絡配置


1.PAN ID 和Channel(f8wConfig.cfg)

ZigBee協議使用一個14位的個域網標志符(PAN ID)來標識一個網絡。ZStack允許用兩種方式配置PAN ID,當ZDAPP_CONFIG_PAN_ID值不設置為0xFFFF時,那么設備建立或加入網絡的PAN ID由ZDAPP_CONFIG_PAN_ID指定;如果設置ZDAPP_CONFIG_PAN_ID為0xFFFF,那么設備就將建立或加入一個“最優”的網絡。

//-DZDAPP_CONFIG_PAN_ID=0xFFFF
-DZDAPP_CONFIG_PAN_ID=0x2FFF

IEEE 802.15.4/ZIGBEE規范在2.4G頻段上規定了16各頻道,用戶可以通過選擇DEFAULT_CHANLIST不同的值選擇不同的頻道,協議默認頻道為0xB即0x00000800。

//-DDEFAULT_CHANLIST=0x04000000  // 26 - 0x1A
//-DDEFAULT_CHANLIST=0x02000000  // 25 - 0x19
-DDEFAULT_CHANLIST=0x01000000  // 24 - 0x18
//-DDEFAULT_CHANLIST=0x00800000  // 23 - 0x17
//-DDEFAULT_CHANLIST=0x00400000  // 22 - 0x16
//-DDEFAULT_CHANLIST=0x00200000  // 21 - 0x15
//-DDEFAULT_CHANLIST=0x00100000  // 20 - 0x14
//-DDEFAULT_CHANLIST=0x00080000  // 19 - 0x13
//-DDEFAULT_CHANLIST=0x00040000  // 18 - 0x12
//-DDEFAULT_CHANLIST=0x00020000  // 17 - 0x11
//-DDEFAULT_CHANLIST=0x00010000  // 16 - 0x10
//-DDEFAULT_CHANLIST=0x00008000  // 15 - 0x0F
//-DDEFAULT_CHANLIST=0x00004000  // 14 - 0x0E
//-DDEFAULT_CHANLIST=0x00002000  // 13 - 0x0D
//-DDEFAULT_CHANLIST=0x00001000  // 12 - 0x0C
//-DDEFAULT_CHANLIST=0x00000800  // 11 - 0x0B

 2.網絡結構(nwk_globals.h,nwk_globals.c)

STACK_PROFILE_ID定義為NETWORK_SPECIFIC、 HOME_CONTROLS、BUILDING_AUTOMATION、GENERIC_STAR、GENERIC_TREE中的一個,默認為HOME_CONTROLS,並據此設置MAX_NODE_DEPTH、NWK_MODE等,具體如下:

#define STACK_PROFILE_ID      HOME_CONTROLS

#if ( STACK_PROFILE_ID == HOME_CONTROLS )
    #define MAX_NODE_DEPTH      5
    #define NWK_MODE            NWK_MODE_MESH
    #define SECURITY_MODE       SECURITY_RESIDENTIAL
#if   ( SECURE != 0  )
    #define USE_NWK_SECURITY    1   // true or false
    #define SECURITY_LEVEL      5
#else
    #define USE_NWK_SECURITY    0   // true or false
    #define SECURITY_LEVEL      0
#endif

網絡最大設備數設定:

#if !defined( NWK_MAX_DEVICE_LIST )
  #define NWK_MAX_DEVICE_LIST     20  // Maximum number of devices in the
                                    // Assoc/Device list.
#endif

路由器和終端設備數設定:

#if defined ( RTR_NWK )
  // change this if using a different stack profile...
  // Cskip array
  uint16 *Cskip;

  #if ( STACK_PROFILE_ID == HOME_CONTROLS )
    byte CskipRtrs[MAX_NODE_DEPTH+1] = {6,6,6,6,6,0};
    byte CskipChldrn[MAX_NODE_DEPTH+1] = {20,20,20,20,20,0};
  #elif ( STACK_PROFILE_ID == GENERIC_STAR )
    byte CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
    byte CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
  #elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC )
    byte CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
    byte CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
  #endif // STACK_PROFILE_ID
#endif  // RTR_NWK

其中CskipRtrs和CskipChldrn分別為每一級的最大路由器數和最大節點數,前者是后者的子集。

轉自:http://blog.sciencenet.cn/blog-114642-351776.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM