第3章 设备角色与端点机制
本章目标
搞清网络里三种角色(协调器/路由器/终端)各干什么,以及「端点 + 簇 + Profile」如何完成应用寻址。
3.1 三种角色
| 角色 | 缩写 | 干什么 | 供电 |
|---|---|---|---|
| 协调器 | ZC | 创建网络(选信道/PAN)、短地址固定 0x0000、信任中心 | 必须常电 |
| 路由器 | ZR | 入网后可转发数据、可让设备挂靠、扩展覆盖 | 通常常电 |
| 终端 | ZE | 只跟父节点通信、不转发、可休眠 | 电池 |
记忆口诀
协调器「开张」、路由器「看场子」、终端「来消费」。
在真实仿真日志里,角色差异一目了然:
// 路由器入网
Node 1 | The device joined the network SUCCESSFULLY with short address 07:8b
[树的分支] 以路由器身份加入,启动路由接受子设备
// 终端入网
Node 3 | The device joined the network SUCCESSFULLY with short address c1:aa
[树的叶子] 以终端身份挂靠在父节点下,不参与路由3.2 端点 Endpoint
一台 Zigbee 设备可以同时跑多个应用,每个应用占一个端点号(0~240)。端点 0 是 ZDO(设备管理),255 是广播,普通应用用 1~240。
在我们的点对点实验里:
协调器(控制器)端点 8 ──→ 终端(LED 执行器)端点 3
源端点 src=8 目的端点 dst=3命令帧的 APS 头里就写着这两个端点号——端点寻址解决「哪个应用的哪个应用在对话」。
3.3 簇与 Profile
| 编号 | 含义 | 例子 |
|---|---|---|
| 簇 ID(Cluster ID) | 「这一类业务有哪些命令」 | 0x0006 = On/Off 簇(开/关/切换) |
| Profile ID | 「整套互操作标准」 | 0x0104 = Home Automation 智能家居 |
端点 + 簇 + Profile 合起来:端点 3 上跑着一个「Home Automation 的 On/Off 应用」,端点 8 发来簇 0x0006 的命令,它知道是在叫我开灯。
3.4 ns-3 代码对应
capa.SetDeviceType(ENDDEVICE); // 终端:不转发、可休眠
// 或 ROUTER // 路由器:启动路由
req.m_srcEndPoint = 8; // 源端点
req.m_dstEndPoint = 3; // 目的端点
req.m_clusterId = 0x0006; // On/Off 簇
req.m_profileId = 0x0104; // Home Automation与真机差异
ns-3 里不用「注册端点」就能收发;CC2530 真机必须先用 afRegister 注册端点描述符(见第 14 章迁移表)。