摘 要:本文是基于ZigBee自组网协议设计的一种新型的无线自组网通信协议,该通信协议简单明了、配置灵活、方便测试,可以在各种环境下传输信息,创建了一种蜂窝状网络,实现点对点的信息传输。经过实践操作,测试得其运行稳定,模块化好,达到了设计的目的。
关键词:ZigBee,蜂窝状网络,自组网,路由表,退避算法
1 协议的目的及意义
近年来,ZigBee自组网协议广泛应用于物联网无线数据终端,本协议基于此设计一种新型自组网协议,使其更好的贴合日常生活,实现信息高效传输,整体结构清晰明了,节点安装方便,可以根据实际需求扩展节点的功能,适用于不同环境,在学生宿舍的应用与推广有较好的前景。
2 总体设计
2.1 系统方案
本系统基于物联网工程,使用类ZigBee的方式自建组网实现上下行的数据传输。整个系统结构分为设备,中继,终端三层结构。
2.2 通信协议设计
数据传输由十三位字节组成,第一、十三位作为起始和终止的标志位,定义起始位为0xF1表示正常上行,0xF2表示正常下行,0xF3表示组网请求上行,0xF4表示组网请求下行,0xF5表示测试指令,对应的终止位为其起始位的最后一位取反,分别为0xFE、0xFD、0xFC、0xFB、0xFA;第二、三位共同表示信号发出的设备标识号,第四、五位共同表示数据最初来源的设备号;第六位表示操作数;第七位是一个计数位;第八、九、十、十一、十二位表示中继ID,初始值为0xF6,自组网成功后从左至右的顺序表示其在系统中的传输路径。
正常上行时由设备发出十三位十六进制的数据,中继接收到这个数据后首先会判断这是否是上行消息且是否为自己处理,如果是则进行改编再发出,否则忽略这条信息,最后是终端,接收到数据进行判断后将信息写入数据库中,然后根据数据库内容显示在网页界面上,使用者便可看到设备的状态变化。正常下行时,使用者可通过网页中的按键对设备进行操作,此时这种携带着操作指令的消息将从终端传至中继。中继判断其是否为下行消息且是否为自己处理,如果是,则对这段数据进行改编再发出,传输到设备时,设备判断后根据发送来的指令做出相应的动作并根据需求返回数据。
2.3 稳定性实现
为保障数据传输的稳定性,我们采取退避算法,当数据传向下一级后,若下一级收到这个信息,自动向上一级发出确认收到的回复,上一级在设定时间内收到回复,则停止发送消息,若超出设定时间未收到回复,表示下一级未收到消息,上一级也将停止发送消息,在0-1024之中选择任意时间退避,再重新发送消息,等待回复,若仍未收到回复,继续退避,以此类推。
3 具体实施方案
3.1 自组网实例
当一个中继(ID为‘0‘1)要自组网时,计数位为初始值0x01,它将发送消息:
0xF3,0x30,0x31,0x30,0x31,0xF3,0x01,0xF6,0xF6,0xF6,0xF6,0xF6,0xFC。
当终端收到这个组网消息时,判断是有效数据,同时返回给中继消息:0x30,0x31,0x46,0x46,中继收到此回复消息后停止发送组网消息。终端发现是申请加入组网的请求,判别计数位为0x01初始值则此中继未加入组网,终端将中继ID的第二位0x31写入数据的第八位即路由表的第二位,将计数位改为0x06,再把这个传输路径写入数据库,同时终端给中继返回组网数据,操作数0xF6表示组网成功,下行数据计数位加1,则消息为:
0xF4,0x46,0x46,0x30,0x31,0xF6,0x07,0x31,0xF6,0xF6,0xF6,0xF6,0xFB。
当中继收到这个组网消息时,判断是有效数据,同时返回给终端消息:0xFF 0xFF 0x46 0x46,终端收到此回复消息后停止发送组网消息。中继发现是组网成功的请求,判断计数位的值与其指向数据数组的值相等,则将路由表保留。
3.2 数据传输实例
假设已经存在一条数据传输网络:终端(ID为‘F‘F)、中继(ID为‘0‘0)和设备(ID为‘a‘1)。下面介绍一般信息下行,即信息由设备产生发出经由中继到终端的过程。
当设备向中继发送指令:起始位为0xF1,请求由设备发出,则第二、三位为设备编号0x61,0x31;原始请求由设备提出,则第四、五位为设备编号0x61,0x31;第六位为指令位,这里假设为0x01;第七位指针位的P本为8,上行左移一位变为7;第八、九、十、十一、十二位为已组网成功的目标路由表,即0x30,0xF6,0xF6,0xF6,0xF6;终止位为0xFE。该设备发出的消息为:
0xF1,0x61,0x31,0x61,0x31,0x01,0x07,0x30,0xF6,0xF6,0xF6,0xF6,0xFE。
数据发出后,设备会在设定时间内等待直到收到0x61,0x31,0x46,0x46的回复,否则重发或重新申请组网。中继收到上条数据时,通过识别起始位,指针位所指向的a[7]路由表第一位0x30,为自己,首先向上级回复收到指令0x61 0x31 0x46 0x46,然后改编数据,将第二、三位替换为自己的设备号0x30,0x30,再将指针位减一变为6。则该设备发出的消息为:
0xF1,0x30,0x30,0x61,0x31,0x01,0x06,0x30,0xF6,0xF6,0xF6,0xF6,0xFE。
数据发出后,设备会在设定时间内等待直到收到0x30,0x30,0x46,0x46的回复,否则重发或重新申请组网。终端收到上条數据时,通过识别起始位和指针位P为0x06,为自己要处理的信息,首先向上级回复收到指令0x30,0x30,0x46,0x46,然后存储数据。
参考文献
[1]任秀丽, 于海斌. ZigBee无线通信协议实现技术的研究[J]. 计算机工程与应用, 2007, 43(6):143-145.
[2]马玉春, 宋瀚涛. 串行通信协议的研究及应用[J]. 计算机应用研究, 2004, 21(4):228-229.
[3]孙宇霖, 屈玉贵, 赵保华. 一种通信协议测试序列生成的新方法[J]. 通信学报, 2001, 22(6):122-127.
作者简介
张远(1997-),女,汉族,西北工业大学电子信息学院通信工程专业2014级学生。