实验箱通信协议V12刘明星.docx

上传人:b****8 文档编号:30070100 上传时间:2023-08-04 格式:DOCX 页数:26 大小:70.87KB
下载 相关 举报
实验箱通信协议V12刘明星.docx_第1页
第1页 / 共26页
实验箱通信协议V12刘明星.docx_第2页
第2页 / 共26页
实验箱通信协议V12刘明星.docx_第3页
第3页 / 共26页
实验箱通信协议V12刘明星.docx_第4页
第4页 / 共26页
实验箱通信协议V12刘明星.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

实验箱通信协议V12刘明星.docx

《实验箱通信协议V12刘明星.docx》由会员分享,可在线阅读,更多相关《实验箱通信协议V12刘明星.docx(26页珍藏版)》请在冰豆网上搜索。

实验箱通信协议V12刘明星.docx

实验箱通信协议V12刘明星

产品名称

配置管理编号

文档编号

版本

V1.1

密级

 

智能实验箱

协议说明书

 

拟制:

日期:

审核:

日期:

审核:

日期:

批准:

日期:

 

版本历史

版本

日期

描述(修改原因)

作者(修改者)

V1.0

2012.3.23

草案初稿

徐朝农

V1.1

2012.6.11

根据八篇章的实验指导书,添加最新实验协议

林伟刁博宇

V1.2

2013.8.24

添加气体传感器、红外避障传感器实验协议

刘明星

目录

1、引言4

1.1、编写目的4

1.2、技术术语4

1.3、参考资料4

2、总体设计5

2.1、需求概述5

2.2、框架结构5

3、无线Zigbee通讯协议5

3.1、报文格式5

3.1.1、示例1:

传感器上传数据包格式6

3.1.2、示例2:

传感器控制命令包格式6

3.2、数据类型(Pkt_Type)定义规则7

3.3、数据类型定义规则8

3.3.1.1、传感数据类型(sensor_type)8

3.3.2、命令类型定义9

3.3.3、配置信息11

4、有线测试床协议12

4.1、在程序下载态时的协议12

4.2、在非程序下载状态的协议13

4.2.1、报文格式13

4.2.2、报文类型(Pkt_Type)定义规则13

4.2.3、命令类型定义14

4.2.4、配置信息的数据负荷定义15

5、典型工作流程16

5.1、灯的状态指示16

5.2、终端节点工作流程16

5.3、PAD工作流程16

6、地址分配方案17

1、引言

本文档针对智能实验箱节点定义出接口,将连接软硬件部分,为下一步的系统设计提供依据。

本文档重点描述框架结构以及功能需求,不涉及具体应用。

1.1、编写目的

根据项目开发需求,定义网关节点的接口和架构,本文档实现如下说明:

Ø无线Zigbee部分

⏹节点上报报文的数据结构

⏹命令报文的数据结构

⏹配置报文的数据结构

⏹节点无线地址的规定

⏹各类传感器编号规则

⏹CRC16定义算法

Ø有线部分

⏹命令报文的数据结构

⏹节点有线地址的规定

⏹配置报文的数据结构

1.2、技术术语

UART:

UniversalAsynchronousReceiver/Transmitter

TCP/IP:

TransmissionControlProtocol/InternetProtocol

UDP:

UserDatagramProtocol

Sink:

协调器节点

PAD:

上位机,这里代表上位机来进行描述

ACK:

回复信息

Node:

传感器节点

RFID读头:

低频13.56M/身份证卡读卡设备

1.3、参考资料

1.《NOKIA-CSDL说明文档》

2.《TCP-IP详解卷一:

协议》

3.《节点与协调器通信协议(V2.0)》

2、总体设计

分为两类通讯协议:

无线Zigbee通信和有线测试床通信。

无线Zigbee通信针对各类实验;有线测试床通信针对实验程序下载、传感板与2530子板与程序之间的配对检查,节点复位控制。

2.1、需求概述

根据节点的设计需要,无线通信采用Zigbee协议,有线测试床通信采用以太网协议(对节点来说为串口)。

有线通信与无线通信互不相干

2.2、框架结构

3、无线Zigbee通讯协议

3.1、报文格式

数据传输结构,如图所示。

字节数2

1

8

8

1

2

1

1

LEN-22

2

前导码

消息类型

TYPE

目的地址

Destination

源地址

Source

包序号

SN

数据长度

Len

包类型

Pkt_Type

冗余位

Reserved

数据指针

效验码

CRC16

*data

同步头

协议层

数据负载

CRC

HEAD

playload

footer

Ø同步头:

通讯数据包同步字节,包含前导码和帧起始分隔符。

前导码为两字节定义为“0xAA44”

ØType:

1byte上行数据为0x01,下行数据为0x02

ØDest_ID:

8bytes目标地址。

ØSource_ID:

8bytes源地址。

ØSeq:

1byte报文流水号(主要为了判断传感报文的乱序到达)

ØLength:

2byte整个报文的长度(以字节为单位)

ØPkt_Type:

1byte包类型。

分为Pkt_Type_Ind和Pkt_SubType_Ind两个部分。

ØReserved:

1byte冗余位。

可以考虑用于区分同一个mac上的系统类型的不同传感器。

Ø帧尾(CRC):

CRC16效验部分,检测数据包中的数据的完整性。

3.1.1、示例1:

传感器上传数据包格式

typedefstruct_UART_PACKET

{

uint8head1;//0xaa前导码

uint8head2;//0x44

uint8type;//上下行数据标识0x01表示上行,0x02表示下行数据

uint8dest[8];//目的地址8个字节Zigbee的MAC地址

uint8src[8];//源地址8个字节Zigbee的MAC地址

uint8sn;//数据包序号

uint8len[2];//len[0]存放高字节,len[1]存放低字节,len指示负载长度

uint8Pkt_Type;//数据包类型0x10表示普通传感器数据包

uint8Reserved;//冗余位

uint8data[3];//数据指针data[0]表示传感器类型(sensor_type),如0x01为温度,见3.3.1定义

uint8crc[2];//CRC16算法数据

}UART_PACKET;

3.1.2、示例2:

传感器控制命令包格式

typedefstruct_UART_COMMAND

{

uint8head1;//0xaa

uint8head2;//0x44

uint8type;//上下行数据标识

uint8dest[8];//目的地址

uint8src[8];//源地址

uint8sn;//数据包序号

uint8len[2];//len[0]存放高字节,len[1]存放低字节,len指示负载长度

uint8Pkt_Type;//数据包类型0x20表示普通传感器控制命令包

uint8Reserved;//冗余位

uint8data[2];//数据指针字节数可以变化见3.3.2定义

uint8crc[2];//CRC16算法数据

}UART_COMMAND;

3.2、数据类型(Pkt_Type)定义规则

在数据结构中数类型为一个字节,因此本规则将定义这一个字节数据每一位所代表的意义,如同所示:

ØPkt_Type_Ind:

描述了此数据包的类型,参见下节。

ØPkt_SubType_Ind:

描述了各种命令类型中实施的具体命令类型。

注:

Data_type:

根据Pkt_Type_Ind中的类型定义相应的业务类型或者子类型

Pkt_Type_Ind(4Bit)

Pkt_SubType_Ind(4Bit)

0001:

传感数据类型类

0000:

普通传感数据

(在处理上没有优先级)

0001:

事件型传感数据

0010:

命令类型类

0000:

普通传感器控制命令

0011:

命令ACK类

0000:

普通传感器控制命令ACK

0001:

保留

0010:

保留

其他:

无效

0100:

配置信息

0001:

节点上传自己的地址和传感板ID信息

0010:

配置信息确认ACK回应(暂不实现)

0011:

节点上传自己的网络地址

0100:

节点上传mac地址和PanID

其他:

保留

其他

其他

备注1:

包优先级说明,根据包的作用确定其优先级取值,优先级取值越小代表优先级越大,例如优先级取值为1,其优先性高于优先级取值为2,当前优先级映射中保留优先级1~5用来以后映射,对应关系如上表所示。

备注2:

所有命令ACK回应都是原始命令中的Pkt_Type_Ind改为0011,其他不动。

备注3:

配置信息ACK回应都是原始命令中的Pkt_SubType_Ind改为0010,其他不动

例如:

(1)、当Pkt_Type_Ind=0001时

Sensor_Type与Sensor_data具体定义如下:

data_Type:

1byte传感数据类型。

对于普通传感器类型,具体定义见6.1.1描述。

(2)、当Pkt_Type_Ind=0010时

Pkt_SubType_Ind=0000、0001时无效。

Pkt_SubType_Ind=0011时,

data_Type:

1byte请求命令类型,具体如下:

0x01:

请求分配节点ID,此时Data域无效。

3.3、数据类型定义规则

3.3.1.1、传感数据类型(sensor_type)

根据现有的传感器定义出如下表格。

可根据传感器数据手册定义另行修改

传感器

类型

备注

0x00(保留,6.2.1节中使用)

温度

0x01

湿度

0x02

电压

0x03

三轴角速度X轴

0x04

三轴角速度Y轴

0x05

三轴角速度Z轴

0x06

光照

0x08

两字节数据

开关

0x1C

比如窗帘继电器

三轴加速度X轴

0x19

三轴加速度Y轴

0x1A

三轴加速度Z轴

0x1B

气体传感器(CO2和O2)

0x1E

前2个字节为CO2值,后2个字节O2值

语音识别

0x23

识别一个短句,输出一个数值。

短句事先录入,与数值是一一对应的关系。

短句编号示例:

“1号”:

0x11“2号”:

0x12

“红灯”:

0x21“绿灯”:

0x22

“亮”:

0x31“关”:

0x32

交流电机

0x24

暂时未规定数据

直流电机

0x25

暂时未规定数据

超声测距

0x26

数据为一个整数,表示距离

扬声器

0x27

LED灯

0x28

点对点通信

0x29

红外避障传感器

0x2D

状态值0x01有障碍区,0x00无障碍区

广播通信

0x30

射频信号强度

0x31

数据为一个1字节整数,表示功率

组包实验

0x32

源节点上报路由

0x33

数据为2字节整数,第一个为源节点号,第二个为目标节点号

目标节点上报路由

0x34

数据为2字节整数,第一个为源节点号,第二个目标位

协调器控制

0x35

指定路由实验

0x36

动态自组网

0x37

两个字节表示父亲的网络地址

设定功率

0x38

网络地址

0x39

两个字节表示网络地址

MAC地址和PANID

0x40

10个字节前8个表示MAC,后面PANID

时间同步报文

0x41

四个字节表示当前时间

3.3.2、命令类型定义

在UART数据包当发送命令时,数据域中的传感器类型和命令格式如下图所示:

普通传感器的命令类型定义如下:

传感器

测试用传感器类型

备注

传感器节点本身

Node_Reset:

1(1字节命令,无参数)

温度

湿度

电压

三轴角速度X轴

三轴角速度Y轴

三轴角速度Z轴

三轴加速度X轴

三轴加速度Y轴

三轴加速度Z轴

气体传感器

Switch_Off:

0(无参数)

Switch_On:

1(无参数)

红外避障传感器

Switch_Off:

0(无参数)

Switch_On:

1(无参数)

开关

大灯

Switch_Off:

0(1字节命令,有1个字节参数)

Switch_On:

1(1字节命令,有1个字节参数)

交流电机

(1)ACMotor_Foward:

1(1字节命令,无参数)

(2)ACMotor_BackWord:

2(1字节命令,无参数)

(3)ACMotor_ContinuousForward:

3(1字节命令,1字节参数,如下)

ACMotor_ContinuousForward+Spped

(1字节命令+1字节速度参数)

(4)ACMotor_ContinuousForward:

4(1字节命令,1字节参数,如下)

ACMotor_ContinuousBackward+Spped

(1字节命令+1字节速度参数)

(5)ACMotor_Stop:

5(1字节命令,无参数)

直流电机

(1)DCMotor_Foward:

1(1字节命令,无参数)

(2)DCMotor_BackWord:

2(1字节命令,无参数)

(3)DCMotor_ContinuousForward:

3(1字节命令,1字节参数,如下)

DCMotor_ContinuousForward+Spped

(1字节命令+1字节速度参数)

(4)DCMotor_ContinuousForward:

4(1字节命令,1字节参数,如下)

DCMotor_ContinuousBackward+Spped

(1字节命令+1字节速度参数)

(5)DCMotor_Stop:

5(1字节命令,无参数)

超声测距

Switch_Off:

0(无参数)

Switch_On:

1(无参数)

扬声器

Play0:

(参数为乐谱内容,后面前两个字节为乐谱数据域长度,不包括自身)

Pause1:

无参数

Stop2:

无参数

LED灯

On:

1

Off:

0(参数:

0x01表示黄灯,0x02表示红灯,0x03表示绿灯)

语音识别

On:

0

Off:

1

点对点通信

0x29

On:

1表示点对点实验(协调器向所有节点广播启动命令,但只有1,2号节点能够解析并启动点对点通信)

Off:

0(停止命令同上)

广播通信

0x30

On:

1表示广播实验

Off:

0(协调器向所有广播,但只有123能够解析命令包,启动点对点通信)

射频信号

0x31

射频功率

0x32

参数为功率值一个字节

源节点上报路由

0x33

目标节点上报路由

0x34

数据为2字节整数,第一个为源节点号,第二个目标位

协调器控制

0x35

第一个字节为实验内容:

0x01为广播实验

0x02为Zigbee组包实验后接3个字节为点灯控制命令

0x03为射频信号强度实验

0x04为Zigbee地址与参数实验

0x05为指定路由实验参数为1号节点的MAC和2号节点MAC

0x06时间同步实验后面一个字节参数为0x01开始,0x00停止

指定路由实验

0x36

0x010x00发给1号节点启动实验

0x01网络地址发给2号节点启动试验

0x00停止实验

动态自组网

0x37

0x01发给4号节点,启动周期发包

0x00停止

设定功率

0x38

1个字节的功率值协调器和端设备都可以改

时间同步实验

0x41

0x00一个字节表示停止

3.3.3、配置信息

当节点发送配置信息时,数据域中格式如下图所示:

DataType

Data

DataType

Data

其中,DataType定义为:

信息类型

数据类型取值

数据备注

Mac地址

0x02

Mac地址(8字节)

传感器板ID

0x03

5字节

程序版本

0x04

1字节

传感板ID定义:

厂商ID

传感器板ID

信息类型

数据类型取值

数据备注

厂商ID

0x01

深联

1字节

其他

保留

传感器板ID

0x01

六轴传感板

4字节

0x02

超声波+光+温湿度+扬声器传感板

0x03

语音板

0x04

电机控制板

0x05

RFID板

0x06

气体传感器板

0x07

保留

程序版本定义如下:

程序内容

版本ID

实验一

0x01

实验二

0x01

实验三

0x01

实验四

0x04

实验五

0x01

实验六

0x06

实验七

0x07

实验八

0x08

保留

4、有线测试床协议

4.1、在程序下载态时的协议

采用串口协议:

波特率115200bps,8位数据位,1位停止位,1个起始位。

分为两步:

(1)进入bootloader模式,用户端发送

SOF(1byte)

LEN(1byte)

CMD(1byte)

其中:

SOF:

帧的起始字节,恒定为0xFE;LEN:

恒定为0x00;CMD:

恒定为0x4F。

(2)用户端发送

SOF(1byte)

LEN(1byte)

CMD1(1byte)

CMD2(1byte)

DATA

FCS(1byte)

SOF:

帧的起始字节,恒定为0xFE;

LEN:

DATA字段的长度;

CMD1:

恒定为0x4D,表示远程的控制命令;

CMD2:

具体的操作命令,包括:

●0x01:

写flash,DATA字段的前两个字节存放写flash的首地址(其中DATA[0]存放地址的低字节,DATA[1]存放地址的高字节),DATA字段剩余部分长度不可超过64字节,存放要烧写的程序片段。

●0x02:

读flash,DATA字段的前两个字节存放读flash的首地址(DATA[0]存放地址的低字节,DATA[1]存放地址的高字节),可以读取此首地址开始的连续64个字节数据

●0x03:

如果确定节点上应用程序代码可用,可发送该命令取消节点上电后对应用程序文件的校验,减小节点启动时间

FCS:

存放CMD1、CMD2、DATA三个字段的crc校验值。

处理完用户命令后,节点返回的响应数据包格式如下:

SOF(1byte)

LEN(1byte)

CMD1(1byte)

CMD2(1byte)

DATA

FCS(1byte)

SOF:

帧的起始字节,恒定为0xFE;

LEN:

DATA字段的长度;

CMD1:

恒定为0x4D,表示远程的控制命令;

CMD2:

响应包中CMD2值=(命令包中CMD2)or0x80,具体响应如下:

●0x81:

对写flash命令的响应

●0x82:

对读flash命令的响应,DATA字段的第2个和第3个字节存放已读flash的首地址,DATA[1]存放地址的低字节,DATA[2]存放地址的高字节。

其后存放读取到的64个字节数据

●0x83:

对0x03命令的响应

DATA:

该字段的第一个字节指示命令执行后的状态:

●0x00:

成功

●0x01:

失败

FCS:

存放CMD1、CMD2、DATA三个字段的crc校验值。

4.2、在非程序下载状态的协议

4.2.1、报文格式

数据传输结构,如图所示。

与3.1相同

4.2.2、报文类型(Pkt_Type)定义规则

在数据结构中数类型为一个字节,因此本规则将定义这一个字节数据每一位所代表的意义,如同所示:

ØPkt_Type_Ind:

描述了此数据包的类型,参见下节。

ØPkt_SubType_Ind:

描述了各种命令类型中实施的具体命令类型。

注:

Data_type:

根据Pkt_Type_Ind中的类型定义相应的业务类型或者子类型

Pkt_Type_Ind(4Bit)

Pkt_SubType_Ind(4Bit)

0001:

保留

0010:

命令类型类

0000:

节点、传感控制命令

0011:

命令ACK类

0000:

节点控制命令ACK

0001:

保留

0010:

保留

其他:

无效

0100:

配置信息

0001:

PAD请求节点的配置信息(无数据负荷)

0010:

配置信息确认ACK回应(无数据负荷)(暂不实现)

0011:

节点上传自己的配置信息(数据负荷见4.2.4)

其他

其他

备注1:

所有命令ACK回应都是原始命令中的Pkt_Type_Ind改为0011,其他不动。

备注2:

配置信息ACK回应都是原始命令中的Pkt_SubType_Ind改为0010,其他不动。

4.2.3、命令类型定义

在UART数据包当发送命令时,数据域中的传感器类型和命令格式如下图所示:

普通传感器的命令类型定义如下:

传感器

测试用传感器类型

备注

传感器节点本身

0x00

Node_Reset:

1(1字节命令,无参数)

温度

3.3.1定义,以下同

湿度

电压

三轴角速度X轴

三轴角速度Y轴

三轴角速度Z轴

三轴加速度X轴

三轴加速度Y轴

三轴加速度Z轴

开关

扬声器

Switch_Off:

0(1字节命令,无参数)

Switch_On:

1(1字节命令,无参数)

有参数(1字节,0x00表示语音识别,0x01表示黄灯,0x02表示红灯,0x03表示绿灯,0x04表示扬声器)

交流电机

(1)ACMotor_Foward:

1(1字节命令,无参数)

(2)ACMotor_BackWord:

2(1字节命令,无参数)

(3)ACMotor_ContinuousForward:

3(1字节命令,1字节参数,如下)

ACMotor_ContinuousForward+Spped

(1字节命令+1字节速度参数)

(4)ACMotor_ContinuousForward:

4(1字节命令,1字节参数,如下)

ACMotor_ContinuousBackward+Spped

(1字节命令+1字节速度参数)

(5)ACMotor_Stop:

5(1字节命令,无参数)

直流电机

(1)DCMotor_Foward:

1(1字节命令,无参数)

(2)DCMotor_BackWord:

2(1字节命令,无参数)

(3)DCMotor_ContinuousForward:

3(1字节命令,1字节参数,如下)

DCMotor_ContinuousForward+Spped

(1字节命令+1字节速度参数)

(4)DCMotor_ContinuousForward:

4(1字节命令,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1