您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页Zigbee模块通信协议

Zigbee模块通信协议

来源:筏尚旅游网


ZigBee模块无线数据通信通用协议Version 1.2.7

浙江瑞瀛网络科技有限公司

版权声明

本文档所包含的所有信息均为浙江瑞瀛网络科技有限公司(以下简称“瑞瀛”或“本公司”)版权所有。未经本公司书面许可,不得向本公司雇员、代理商、合作方或授权许可方以外的任何第三方泄露本文档内容,不得以任何形式擅自复制或传播本文档。若使用者违反本版权保护的约定,本公司有权追究使用者由此产生的法律责任。 版本更新 V1.0.0 2011-01-01 V1.0.1 2011-03-15 V1.1.0 2011-04-06 V1.1.1 2011-04-20 V1.1.2 2011-04-22 V1.1.3 2011-05-17 V1.2.0 2011-06-01 V1.2.6 2011-09-11 V1.2.7 2011-12-21

www.rexense.cn

初稿

修改了一些笔误

根据用户需求重新排列了对象字典 对操作范例中的数据进行了解释 增加用户自定义参数

增加默认参数值和对应AT指令说明 完善了数据通信方式的说明 对细节进行了补充说明

修改模块信息参数以及触发参数使用说明

2

目录

1.1. 2.1. 2.2. 2.3.

1. 概述 ................................................................................................................................................ 4

节点类型 ........................................................................................................................... 4 串口帧格式 ....................................................................................................................... 6 通用帧格式 ....................................................................................................................... 6 应用层数据帧(ADF)格式 .......................................................................................... 8 2.3.1. 2.3.2. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7.

读(Read)命令帧:ID = 0x20 ..................................................................... 8 写(Write)命令帧:ID = 0x25 .................................................................... 8

2. 帧格式 ............................................................................................................................................ 6

3. 对象字典(OD)定义 ............................................................................................................... 10

模块信息参数 ................................................................................................................. 10 网络参数 ......................................................................................................................... 10 当前时间参数 ................................................................................................................. 12 执行控制参数 ................................................................................................................. 13 应用配置参数 ................................................................................................................. 15 用户自定义参数 ............................................................................................................. 16 虚拟参数 ......................................................................................................................... 16 3.7.1. 3.7.2. 3.7.3. 4.1. 4.2. 5.1. 5.2. 6.1. 6.2. 6.3. 7.1. 7.2. 7.3. 7.4.

UART端口映射参数 ........................................................................................ 16 触发参数 ............................................................................................................. 17 节点信息参数 .................................................................................................... 18

4. 无线通信密码交换过程 ............................................................................................................. 20

COO建立网络 ............................................................................................................... 20 节点加入网络 ................................................................................................................. 20 UART数据传递 ............................................................................................................. 21 访问本地节点参数 ......................................................................................................... 23 写UART端口映射参数 ................................................................................................ 27 带目的地址的半透传 .................................................................................................... 29 全透传方式 ..................................................................................................................... 31 网络参数 ......................................................................................................................... 33 当前时间参数 ................................................................................................................. 33 执行控制参数 ................................................................................................................. 34 应用配置参数 ................................................................................................................. 34

5. 操作范例 ...................................................................................................................................... 21

6. 用户数据的传递方式 ................................................................................................................. 27

7. 参数默认值以及对应AT指令 .................................................................................................. 33

3

www.rexense.cn

1. 概述

本协议适用于本公司所生产的所有无线通信模块,实现数据在模块之间的传递。

本协议中包含对象字典以及串口控制协议。对象字典将无线模块内的参数和硬件资源标准化,从而可以采用相同的方法来访问和控制模块内部的资源;串口控制协议为用户提供了对模块的控制访问通道,用户设备可以通过串口对无线通信进行控制,完成数据的传递,参数的访问等。

1.1. 节点类型

在无线模块组成的网络中,一个无线模块就被称为一个节点。每个无线模块都有唯一的,不重复的8字节的MAC地址。MAC地址的高4字节固定为0x0080E102。因此在对模块进行寻址时,只使用低4字节的MAC地址即可。根据各个节点功能不同,无线网络中的节点分为以下类型:

 协调器(Coordinator,COO)

COO节点是无线网络的逻辑中心点。通常而言,COO在无线网络中充当网关的功能,实现外界与无线网络之间的信息交换。COO节点能够建立并管理一个新的无线网络。COO节点建立一个无线网络之后,就可以接收其他节点加入网络的请求,从而使无线网络扩展开。COO节点一般使用有线电源供电,不需要休眠,并且能够管理休眠节点。其串口参数配置为115200 8 N 1.

 路由节点(ROUTER)

ROUTER节点具备路由能力,具备为网络中其他节点中继、转发数据的能力。ROUTER节点不能建立一个新的无线网络,但是能够加入到一个已经存在的无线网络中。ROUTER节点加入到无线网络中之后,就可以接受其他节点加入网络,从而实现无线网络的扩展。ROUTER节点一般使用有线电源供电,不需要休眠,并且能够管理休眠节点。其串口参数配置为9600 8 N 1.

 休眠节点(ZigBee End Device, ZED)

ZED节点是无线网络中的末端节点,通常使用电池供电,是休眠节点。ZED不具备路由功能,也无法接受其他节点加入网络。ZED需要通过其他具备休眠节点管理能力的节点(COO或ROUTER)才能加入到无线网络中,并且该节点

4

www.rexense.cn

被称为ZED的父节点(PARENT)。由于ZED大部分时间是出于休眠状态,因此PARENT节点需要为ZED完成无线数据的缓冲和转发工作。其串口参数配置为9600 8 N 1.

 手持节点(Hand-Hold-Unit,HHU)

HHU节点是无线网络中的移动节点,能够搜索并任意加入/离开无线网络。HHU节点一般用于移动的数据采集或网络诊断,不具备路由能力,也无法接受其他节点加入网络,不能管理休眠节点。HHU节点一般使用电池供电,采用间歇工作模式。其串口参数配置为115200 8 N 1.

www.rexense.cn

5

2. 帧格式

2.1. 串口帧格式

应用程序通过串口(UART)访问模块时,为了保证通信的正确率,采用以下的帧格式:

1 Byte 1 Variable Payload 1 1 Header Length Check Footer UART帧由帧头(Header),帧长(Length),有效数据(Payload),校验和(Check),以及帧尾(Footer)五个部分组成。其中, Header取值为0x2A,Footer取值为0x23;Length取值为Payload的长度(不包括Header,Footer,Check和Length本身),Check取值为Payload相加值的最低字节。

本协议以下描述的数据帧格式,就是指Payload的格式。

2.2. 通用帧格式

通用帧格式是指所有数据都遵守的帧格式,定义如下:

Bytes 2 Frame Control 6 Reserved 4 Source Address 4 Reserved 4 Target Address 6 2 2 variable ADF Reserved Cluster Reserved ID 其中:

Frame Control:取值为0x8841 Reserved:保留字段,可使用0x00填充

Source Address:数据发起的源节点MAC地址低4字节,也可以使用0x00填充。

Target Address:数据发送的目的节点的MAC地址低4字节。几个特殊的目的地址定义如下:

0xFFFFFFFF:全网络广播地址

0xFFFFFFFE:一跳半径内广播地址

0xFFFFFFF0:COO节点的代替地址,只在节点还不知道COO节点

6

www.rexense.cn

地址的情况下使用。

0x00000000:本节点的代替地址,即串口数据是针对本地节点的 Cluster ID:命令标识,用于区分不同的命令,基本的定义如下:

Bits: 15 Resp. Resp.:应答标识 =0:数据帧为命令帧,请求帧或消息帧 =1:数据帧为上述帧的应答帧

ERR:错误标识,仅用于应答帧(即Resp.=1的情况)

=0:应答帧中包含正确的应答数据

=1:应答帧中包含错误信息(例如由于接收到非法的命令)

Sender:数据帧的发起节点类型 Bit13:数据帧发起节点的特殊属性

=0:发起节点为普通节点

=1:发起节点为COO,或HHU

Bit12:数据帧发起节点是否具备路由能力

=0:发起节点不具备路由能力

=1:发起节点具备路由能力

Bit11:数据帧发起节点是否需要休眠

=0:发起节点需要休眠 =1:发起节点不需要休眠

Bit13 Bit12 Bit11:

=111:数据帧的发起节点为COO =011:数据帧的发起节点为ROUTER =001:数据帧的发起节点为NRR =000:数据帧的发起节点为ZED

=100:数据帧的发起节点为HHU

ID:数据帧类型码

ADF:发送的应用层数据帧内容,其格式在本协议后续定义

注意:需要特别指出的是,除非特别指明,本通信协议中,整型数据在数据帧中的排列顺序是低位在前,高位在后。例如,整型数据1000(0x03E8)和长整型数据0x67ABCD在数据帧中的排列方式分别为:

E8 CD 03 AB 67 7

14 Err 13-11 10-8 7-0 ID Sender Reserved www.rexense.cn

2.3. 应用层数据帧(ADF)格式 2.3.1. 读(Read)命令帧:ID = 0x20

通过读命令可以访问节点中的各种信息,命令格式如下: Bytes: 2 Index 1 1 Sub Opt. Index:被访问参数的OD索引,2字节

Sub:被访问参数的子索引,1字节。如果Sub为0,则说明读的是整个参数

Opt.:读命令的选项,保留 读命令的应答帧格式如下: Bytes: 2 Index 1 Sub 1 1 Variable data Opt. Length Length:Data域的长度,Length = n;如果命令执行错误,Length是错误码的长度1字节

data:读取的数据结果,n字节;如果命令执行错误,则data域包含错误码1个字节

2.3.2. 写(Write)命令帧:ID = 0x25

通过写命令可以配置节点中的参数值,从而改变节点的执行策略。 Bytes: 2 Index 1 Sub 1 1 Variable data Opt. Length Index:被访问参数的OD索引,2字节 Sub:被访问参数的子索引,1字节。如果Sub为0,则说明写入的是整个参数

Opt.:写命令的选项,保留

Length:写入数据的长度,1字节,Length = n data:需要写入的数据,n字节 写命令的应答帧格式如下:

8

www.rexense.cn

Bytes: 2 1 1 1 Variable Index Sub Opt. Length Status Length:Status域的长度 Status:写命令的执行状态

一般而言,写命令返回的Status长度为1,即返回写命令操作的状态

=0:写命令执行成功

=其他值:写命令执行失败的错误码

www.rexense.cn

9

3. 对象字典(OD)定义

无线模块中的所有参数和硬件资源,都使用对象字典(Object Dictionary,OD)来进行描述,从而使这些参数和硬件资源都变成标准化的对象,只需使用统一的读和写操作就能对这些对象进行访问,从而简化对无线的操作。 每个参数或硬件资源都使用的OD索引(Index)来编排,因此访问索引就可以访问到具体的对象。

3.1. 模块信息参数

模块信息参数的OD索引是0,使用读(Read)命令访问此参数,可以获得模块的详细信息。需要注意的是,本参数的所有参数都是只读的,写(Write)操作将被拒绝访问。其结构定义如下:

typedef struct {

USIGN8 aucSoftware_Version[4]; USIGN8 aucHardware_Version[4]; USIGN8 aucDev_Type[6];

USIGN16 auiSurport_Func[8]; USIGN8 aucReserved[2]; } Node_Status; 其中:

aucSoftware_Version[4]:软件版本号,用于在远程升级时判断是否需要升级。 aucHardware_Version[4]:硬件版本号,标识出当前设备的硬件版本。 aucDev_Type[6]:设备类型,与公司设备类型定义相符。 auiSurport_Func[8]:设备支持的应用层功能索引。

3.2. 网络参数

网络参数的OD索引是1001(0x03E9),主要用于配置无线模块的的无线网络属性,其结构定义如下:

typedef struct

10

www.rexense.cn

{

USIGN32 USIGN8 SIGN8 USIGN8 USIGN8 USIGN32 USIGN32 USIGN16

ulPAN_ID;

ucCurrent_Channel; cTransmit_Power; ucMax_Hops;

ucRout_To_COO_Only; ulGroup_ID; ulChosen_COO; uiProfile_ID;

USIGN16 uiPowerMode;

USIGN8 ucNode_Age_Step; USIGN8 ucPoll_MSG_Life; USIGN8 ucAnt_Sel;

USIGN8 aucReserved[9]; } Network_Parameter; 其中:

ulPAN_ID参数设置当前无线网络的网络标识(PAN ID)。此参数被修改之后,节点复位后生效。

ucCurrent_Channel设置了当前正在使用的通道,取值范围11-26(0x0B-0x1A)。对此参数的写操作将改变无线模块的通信频率。此参数被修改之后,节点复位后生效。

cTransmit_Power参数设置节点的发送功率。由于大多数RF芯片的发送功率是可以通过软件调节的,因此改变这一参数,就可以调节其发送功率。取值范围是:-26dBm – 7dBm

aucMax_Hops参数设置节点传递无线数据时,最大的传播半径。 ucRout_To_COO_Only参数指示本节点是否只记录通往COO的路由。

0:只要路由表有空间,记录通向其他路由节点的路由 1:只记录通向COO的路由

当发送的数据使用组别来寻址ulGroup_ID参数设置当前模块的所属组别,

时使用。此功能暂未实现。

ulChosen_COO参数指示当前已经选择的COO地址。当节点接收到COO发送的数据后,将COO的地址记录在这个参数中,为0则说明还没有接受到COO发送的数据。因此这是一个只读的参数,在COO中设置为0。

uiProfile_ID:行规标识

11

www.rexense.cn

uiPowerMode:模块的射频模式。

Bit0:=0

=1

Normal Mode Boost Mode 单端输出模式

双端输出模式,用于外置功放应用

Bit1:=0

=1

ucNode_Age_Step:设置节点Age增加的时间间隔,单位是秒。例如,将此参数设置为10,则表明每隔10秒,节点的Age将增加1。Age表示表示距离上一次接收到该节点数据的时间长度,每次接收到来自某个节点的无线数据,则该节点的Age将被重新设置为0。

ucPoll_MSG_Life:需要发送给ZED的无线数据,是由ZED的Parent先进行缓存,然后等待ZED唤醒之后来查询(Poll)取走的。本参数设置Parent为ZED缓存数据的时间长度,单位是秒。某条无线数据缓存的时间超过本参数设置的时间长度之后,将被放弃以释放Parent的存储空间。

ucAnt_Sel:外置功放的天线选择。

=0:选择PCB天线 =1:选择U.FL天线

3.3. 当前时间参数

当前时间参数的OD索引是1002(0x03EA),用于指示当前系统维护的实时时间,其结构定义如下:

typedef struct { }

USIGN8 USIGN8 USIGN8

ucYear; ucMonth; ucDate; ucHour; ucMinute; ucSecond; ucWeek; ucStatus;

USIGN8 USIGN8 USIGN8 USIGN8 USIGN8 Date_Time;

其中:

12

www.rexense.cn

ucStatus参数用于指示当前的时间状态:

=0:当前时间还未同步,时间无效 =1:保留

=2:当前时间完成了网络同步 =3:当前时间是由本地设置的

说明:一般而言只需要设置COO节点的时间。COO节点时间被设置之后,COO就会自动将这个时间通知网络中的所有节点,从而实现网络中所有节点的时间同步。

3.4. 执行控制参数

执行控制参数的OD索引是1003(0x03EB),用于设置执行控制策略,其结构定义如下:

typedef struct { u32 u8 u8 u8 u8 u8 u8 u8 u8 u8 u8

ulMAC_Addr; aucPWD[16]; bEncrypt_Enable; ucResponse_Delay_Scale; ucAuto_Report_Event; ucBaud_Rate; ucParity;

ucUART_Reverse; uiReset_Times; aucReserved[4]; ucCheck_Sum;

} BASIC_PARAMETER; 其中:

ulMAC_ADDR:设备的MAC地址低4字节只读参数。

13

www.rexense.cn

aucPWD[16]是用于加密的128位密码。

bEncrypt_Enable参数设置当前的通信是否使用数据加密技术。 ucResponse_Delay_Scale设置节点在响应广播命令时的随机延时范围:本参数定义选取随机数之后,右移的位数。此参数将与ucDistance一起使用来避免通信冲突。

ucAuto_Report_Event参数设置休眠模块在数据同步窗口中,是否自动上报数据。

0x00:不自动上报 0x01:自动上报

ucBaud_Rate参数设置串口通信波特率 BAUD_1200 = 3, BAUD_9600 = 6, BAUD_28800 = 9,

BAUD_2400 = 4, BAUD_14400 = 7, BAUD_38400 = 10,

BAUD_4800

= 5,

BAUD_19200 = 8, BAUD_50000 = 11, BAUD_100000 = 14,

BAUD_57600 = 12, BAUD_76800 = 13, BAUD_115200= 15, BAUD_230400= 16 ucParity参数设置串口通信的校验方式 0x00:无校验 0x01:奇校验 0x02:偶校验

ucUART_Reverse参数设置串口通信中,是否需要将数据取反。这主要是在煤气表和水表应用中,为了保证低功耗而采用反向的串口逻辑。

Bit7:=0:使用UART与Meter通信

=1:使用SIMU_UART与Meter通信

Bit0:=0:UART不取反

=1:UART取反 Bit1:=0:SIMU_UART不取反

=1:SIMU_UART取反

14

www.rexense.cn

3.5. 应用配置参数

应用配置参数的OD索引是1005(0x03ED),用于设置与具体应用相关参数,其结构定义如下

typedef struct {

u8 aucUID[16];

u8 ucBcast_Rpt_Time; u8 ucNode_Type;

u16 u8 u8 u16 u8 u8 u8 u8 u8

uiMAX_ReSend_Gap; ucDisable_Write_Rsp; ucOutput_Debug; uiFurther_Delay_Step; ucQuik_Upload_Radium; ucData_Renew_Distance; ucLink_Cost_Shift; ucUART_Frame_Gap; aucReserved[4];

// in ms

} APP_CONFIG; 其中:

aucUID:模块的唯一识别码,用于唯一识别一个模块,在密码交换时使用。 ucBcast_Rpt_Time:广播数据的发送次数,最小值为1,最大值为3 ucNode_Type:节点类型,定义与ClusterID参数的高字节相同 uiMAX_ReSend_Gap:数据发送之后,下一次重发尝试的最大时间间隔。下一次重发的时间是一个随机数,但是最大值不超过本参数设置的值。如果本参数设置为0,则说明下一次重发时间间隔为:RF_ACK_MIN_WAIT_GAP(20),单位是毫秒。

ucDisable_Write_Rsp:模块被其他模块使用写命令访问时,一般都会返回一个写命令的应答,以通知对方写操作的结果;但是对于UART端口映射参数的写操作比较特殊,有些应用情况下,不希望被访问的模块返回写应答从而加快数据的传递频率,因此可以使用此参数来进行控制是否返回写应答。 0x00:返回写应答 0x01:不返回写应答

注意:此参数仅对Write方式访问UART端口映射参数(索引0x0FA0)时有效

15

www.rexense.cn

ucOutput_Debug:设置是否输出调试信息:

0x00:不输出调试信息 0x01:输出调试信息

uiFurther_Delay_Step,ucQuik_Upload_Radium,ucData_Renew_Distance,ucLink_Cost_Shift:这4个参数主要用于设置路由优化策略,不建议用户自行更改,以免对网络路由产生不利的影响。

ucUART_Frame_Gap:两个不同串口数据帧之间的间隔时间,单位是毫秒(ms)。模块在接收串口数据时,如果在此参数所定义的时间内,没有从串口接收到新的数据,则模块确认已经接收完毕一帧完整的串口数据。

3.6. 用户自定义参数

本参数的OD索引是1100(0x044C),用于存储用户自定义的数据,可读写。其结构定义如下:

typedef struct {

u8 aucCustom_Para1[10]; u8 aucCustom_Para2[10]; u8 aucCustom_Para3[11]; } CUSTOMIZE_PARA;

其中:aucCustom_Para各个子索引中的数据格式、含义由用户自定义并管理,可以通过读写操作来访问。

3.7. 虚拟参数

虚拟参数包含硬件的OD映射,触发参数等。

3.7.1. UART端口映射参数

,只写属性。使用写命令访UART端口映射参数的索引是4000(0x0FA0)

问此索引,则所有写入的数据将被输出到串口;读访问将被拒绝。然而模块在向COO上报从UART端口接收到的数据时,返回的是读响应。

注意对4000索引的访问,只能使用自索引0来访问整个对象。

16

www.rexense.cn

3.7.2. 触发参数

触发参数的索引是4700(0x125C),一般是只写属性,并且只能使用子索引来访问,不能使用索引0来访问整个对象。每个子索引代表一个特定的执行操作。对这个子索引的写入访问,将触发这个特定的操作,定义如下:

typedef struct {

USIGN8 aucWake_Trigger[2]; USIGN8 ucReLoad_Token; USIGN8 ucReset; USIGN8 ucBoot; USIGN8 ucJoin; USIGN8 ucMTO; } Trigger_Parameter; 其中,

aucWake_Trigger[2]:用于HHU唤醒ZED

ucReLoad_Token:参数用于恢复所有参数的默认值。向此参数写入1,则模块中的所有参数都将被恢复为默认值(即出厂设置值);写入其他值则不触发任何操作。

ucReset:参数用于使模块复位,向此参数写入一个非0值n,则模块将在n秒后自动复位。

ucBoot:参数用于使模块进入Bootloader模式。向此参数写入一个非0值n,则模块将在n秒后自动进入Bootloader模式。

ucJoin:参数用于触发父/子节点之间的加入/离开操作。此参数在父节点和子节点中的功能有所不同,描述如下:

父节点中,子节点使用写命令来访问父节点的此参数,以通知父节点本节点需要离开还是加入父节点。

写入1:子节点要求加入父节点,父节点必须返回写应答 写入0:子节点要求离开父节点,父节点不必返回写应答

子节点中,父节点使用写命令来访问子节点的此参数,以通知子节点本节点要求对方离开。

写入1:父节点要求子节点离开,子节点不必返回应答

17

www.rexense.cn

写入0:没有任何效果

ucMTO:此参数仅对COO节点有效,用于触发COO节点重新建立网络,

写入1:触发重新建立网络, 写入0:无变化

3.7.3. 节点信息参数

本参数仅COO模块支持,并且是只读参数,写(Write)操作将被拒绝访问。本参数的索引从8000(0x1F40)开始,一共占用10个索引(8000-8009)。这是因为COO模块中包含了网络中所有模块的节点信息(目前最大支持100个节点),每个索引包含10个节点信息,这样100个节点就需要10个索引;每个节点的节点信息占用8个字节,定义如下:

typedef struct {

u32 ulNode_Addr; u8 ucSeq;

union {

s8 cRSSI;

u8 ucDistance; } uRSSI_Distance; struct {

u8 ucAge:5; u8 ucFailure:3;

} sFailure_Or_Age; u8 ucNode_Type; } NODE_TABLE; 其中,

ulNode_Addr:节点的MAC地址低4字节 ucSeq:该节点的通信序号,用于识别重复帧

uRSSI_Distance:如果该节点是COO节点的邻居,则此参数表示该节点到COO通信的信号强度,单位是dBm;如果该节点不是COO节点的邻居,则此参数表示该节点到COO的距离(跳数)。

18

www.rexense.cn

sFailure_Or_Age:低5位指示该节点的Age(表示距离上一次接收到该节点数据的时间长度,单位由Network_Parameter. ucNode_Age_Step定义);高3位指示本节点向该节点发送数据时,发送失败的次数。

ucNode_Type:指示该节点的类型,节点类型与ClusterID参数的高字节相同,但是扩展了Bit2作为邻居节点指示。如果在节点信息表中,某个节点的ucNode_Type值为NODE_TYPE_UNINIT(0x80),则说明还没有接收到发自该节点的数据,ucSeq值无效。

Bit2:节点的邻居属性

=0:节点不是本节点的邻居 =1:节点是本节点的邻居

说明1:从8000开始的索引,每个索引对应10个节点信息。即如果使用读命令访问8000,将返回第1到第10个节点的信息;如果使用读命令访问8001,将返回第11到第20个节点的信息,以此类推。每次读请求的应答数据长度为80个字节。

说明2:可通过ucNode_Type信息中的Bit2来获知该节点否为COO的邻居节点。

19

www.rexense.cn

4. 无线通信密码交换过程

4.1. COO建立网络

COO在运行时,如果发现其无线通信加密功能打开(即Strategy_Parameter.bEncrypt_Enable参数设置为1),且网络标识(PANID)参数值是默认值,则会自动进行一个扫描过程:依次检查16个通信通道的噪音强度。扫描完毕之后,COO将自动选择一个噪音最小的通信通道,使用自己的MAC地址作为网络标识(PANID),使用COO的初始密钥作为网络密钥,用于对无线通信数据进行加密。这些网络参数将被COO记录起来,在以后的网络通信中使用

4.2. 节点加入网络

网络中其他节点中运行时,如果发现其无线通信加密功能打开(即Baisc_Parameter.bEncrypt_Enable参数设置为1),且网络标识(PANID)参数值是默认值,则先进行一个网络扫描过程:从最低通信通道(Channel11,2405MHz)开始,逐一在每个通道以明码方式发送密码请求。COO接收到密码请求后,需要向该节点发送网络密码(即COO自身的密码),且这条命令是使用请求节点的初始密码进行加密的,因此其他任何节点都无法破解,从而保证了网络密码的安全性。

用户需要手动向COO输入请求节点的初始密码,一般是通过与COO连接的电脑或者PDA完成的。每个模块的初始密码一般与模块产品包装在一起,用户很容易就可以获得各个模块的初始密码。

需要用户手动输入每个节点的初始密码,在网络刚刚建立时比较繁琐,但是这样的好处在于:1)节点不会误加入到错误的网络中,只有拥有模块的用户才能获得模块的初始密码;2)网络密码在空中传递时不会泄漏,杜绝了恶意攻击的可能。

20

www.rexense.cn

5. 操作范例

假设范例无线网络中有2个节点,其中COO节点的MAC地址低4字节为0x0015AC96,与用户设备A通过UART端口连接;另一个ROUTER节点的MAC地址低4字节为0x0015D17E,与用户设备B通过UART端口连接。如下图所示:

COO

设备A

ROUTER

UART

UART

设备B

0x0015AC96 0x0015D17E

图1 范例无线网络

以下降针对此范例无线网络来示例如何对无线模块进行操作。

5.1. UART数据传递

如果设备A需要向设备B的UART端口传递一条数据,则可以使用Wirte命令向ROUTER节点的UART端口映射参数写入需要传递的数据。例如,设备A向设备B需要传递3字节的16进制数据[01 02 03],可使用以下命令:

设备A向COO的UART端口发送以下数据:

2A 26 41 88 00 00 00 00 00 00 96 AC 15 00 00 00 00 00 7E D1 15 00 00 00 00 00 00 00 25 38 00 00 A0 0F 00 00 03 01 02 03 65 23 Header Length Frame Control Reserved 6 Bytes Source Address Reserved 4 Bytes Target Address 2A 26 8841 00 00 00 00 00 00 00 15 AC 96 00 00 00 00 00 15 D1 7E 21

www.rexense.cn

Reserved 6 Bytes ClusterID Reserved 2 Bytes Write Index Write Sub Index Write Opt Write Data Length Write Data Check Footer 00 00 00 00 00 00 3825 00 00 0FA0 00 00 03 01 02 03 65 23 Type=0x38, COO ID=0x25, Write

22

www.rexense.cn

设备B将从ROUTER的UART端口接收到以下数据:01 02 03

5.2. 访问本地节点参数

如果设备需要访问与之通过UART连接的模块的参数,可以使用读,写命令来完成,但注意使用的目的地址是本节点的替代地址0x00000000。例如,设备A使用读命令访问COO模块的通信通道参数(索引0x03E9,子索引2),返回的将是COO模块的当前正在通信的通道(频率)值,命令如下:

2A 22 41 88 00 00 00 00 00 00 96 AC 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 38 00 00 E9 03 02 00 09 23 Header Length Frame Control Reserved 6 Bytes 2A 22 8841 00 00 00 00 00 00 23

www.rexense.cn

Source Address Reserved 4 Bytes Target Address Reserved 6 Bytes ClusterID Reserved 2 Bytes Read Index Read Sub Index Read Opt Check Footer 00 15 AC 96 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3820 00 00 03E9 02 00 09 23 目的地址全0表示访问的是本地节点 Type=0x38, COO ID=0x20, Read 命令执行完毕,则设备A将从COO的UART端口接收到以下应答: 2A 24 41 88 00 00 00 00 00 00 96 AC 15 00 00 00 00 00 96 AC 15 00 00 00 00 00 00 00 20 B8 00 00 E9 03 02 00 01 14 52 23 Header Length Frame Control Reserved 6 Bytes Source Address Reserved 4 Bytes Target Address 2A 24 8841 00 00 00 00 00 00 00 15 AC 96 00 00 00 00 00 15 AC 96 24

www.rexense.cn

Reserved 6 Bytes ClusterID Reserved 2 Bytes Read Index Read Sub Index Read Opt Read Data Length Read Data Check Footer 00 00 00 00 00 00 B820 00 00 03E9 02 00 01 14 52 23 Type=0xB8: COO, response ID=0x20, Read 从返回的数据,设备A可以得知,目前COO正在工作于0x14通道(2450MHz)。

25

www.rexense.cn

26

www.rexense.cn

6. 用户数据的传递方式

用户设备之间的数据需要通过无线网络传递时,可以使用以下3种方式来完成:

6.1. 写UART端口映射参数

这种方式是本协议推荐的设备之间数据无线通信方式,可按照4.1节所述的方式进行。此方法的优点是通信稳定可靠,不仅可以实现设备间的无线数据通信,而且可以完成参数访问和网络管理,缺点是需要与模块连接的设备都按照本协议进行修改,有一定的工作量。

以下例子中,COO向ROUTER的UART端口映射参数写入3字节的16进制数0x010203;ROUTER向COO的UART端口映射参数写入7字节的16进制数0x4142434447。

27

www.rexense.cn

www.rexense.cn

28

6.2. 带目的地址的半透传

为了实现设备之间的简单数据交换,也可以用带目的地址的半透传方式来完成。具体方法是,在需要发送数据的前面,加上8个字节的目的节点的MAC地址,这样数据将被传递到目的地址所指示的设备。这种方法的优点是比较简单,数据通信通信比较可靠,缺点是只能完成设备UART端口之间的数据交换,无法实现参数访问和网络管理。

事实上,无线模块从UART接收到带地址的半透传数据后,首先判断地址是否合法;如果地址合法,则将需要传递的数据,转换成一个写目的地址所指示的无线模块的UART端口映射参数的服务,从而实现数据的传递,本质上是与6.1节相同的。

以下例子中,两个无线模块之间通过带目的地址的半透传方式,实现了数据的交换。在需要发送的数据前面,分别加上了目的地址。注意所有模块的MAC地址高4字节固定为0x0080E102

29

www.rexense.cn

www.rexense.cn

30

6.3. 全透传方式

全透传方式是指,无线模块从设备接收到的数据不符合6.1和6.2节所描述的数据,也不是合法的AT指令,则无线模块将把接收到的数据转换成6.1所述的写UART端口映射参数命令,传递到其他设备。对于COO而言,数据传递的目的地址是网络中的所有模块;对于其他无线模块而言,数据传递的目的地址是COO。

这种方法最简单,不需要设备做任何改动就可以实现无线接入,对于已有设备的无线改造非常方便;缺点在于,由于没有指明目的节点的地址,COO在发送数据时,需要将数据都发送给网络中所有节点,会占用较大的通信带宽,因此COO数据发送的频率不能太快,否则将导致网络堵塞。

以下是2个设备之间进行全透传方式的例子。

31

www.rexense.cn

www.rexense.cn

32

7. 参数默认值以及对应AT指令

7.1. 网络参数

Parameter ulPAN_ID ucCurrent_Channel cTransmit_Power ucMax_Hops ucRout_To_COO_Only ulGroup_ID ulChosen_COO uiProfile_ID uiPowerMode ucNode_Age_Step ucPoll_MSG_Life ucAnt_Sel Default Value 0x474E524C 0x14 +03 0x20 0x00 0x00000000 0x00000000 0x4741 0x0000 0x0F 0x23 Corresponding AT CMD AT+SETPID AT+SETCH AT+SETPWR AT+SETPWRMODE 7.2. 当前时间参数

Parameter Date_Time

Default Value Corresponding AT CMD AT+TIME AT+SHOWTIME 33

www.rexense.cn

7.3. 执行控制参数

Parameter ulMAC_ADDR aucPWD[16] bEncrypt_Enable ucResponse_Delay_Scale ucAuto_Report_Event ucBaud_Rate Default Value Corresponding AT CMD AT+SHOWADDR AT+SETPWD AT+SHOWPWD AT+ENCRYPT AT+RSPDLYSCALE 0x00 0x06 0x00 COO:0x0F HHU:0x0F; Other:0x06 0x00 0x00 0x00 AT+SETUART ucParity ucUART_Reverse uiReset_Times; AT+SETUART 7.4. 应用配置参数

Parameter aucUID[16] ucBcast_Rpt_Time ucNode_Type Default Value Corresponding AT CMD AT+GETINFO AT+SETBCASTRPT 0x02 COO: 0x38 ROUTER: 0x18 NRR: 0x08 ZED: 0x00 HHU: 0x20 0x00 0x00 0x00 16000 uiMAX_ReSend_Gap ucDisable_Write_Rsp ucOutput_Debug uiFurther_Delay_Step AT+RESENDGAP AT+DBGINFO 34

www.rexense.cn

ucQuik_Upload_Radium 3 ucData_Renew_Distance 5 ucLink_Cost_Shift 6 ucUART_Frame_Gap 15 AT+UARTGAP

www.rexense.cn

35

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务