RS485数据通信协议

(一)协议概述

RS485协议采用一问一答的轮询机制,控制器向读卡器查询读到的标签数据,读卡器向控制器汇报读到的标签数据。控制器可以根据实际情况决定轮询的策略,比如一次把一个读卡器上的数据全部查完,还是每次查固定数量数据后尽快查询下一个读卡器,保证论询的实时性。

(二)协议描述

1、消息格式

1111N2
设备地址版本(0)命令数据长度数据内容CRC校验

设备地址:查询或响应的读卡器的RS485地址。

版本号:用来控制器与读卡器版本兼容(当前版本号为0)。

命令:用来说明这是一条什么消息。

数据长度:消息中包含数据内容的长度。

数据内容:消息中包含数据的具体内容

CRC校验:CRC16校验算法。是消息中前面所有数据的校验值。

消息命令

命令方向说明
查询1控制器 --> 读卡器控制器向读卡器查询数据
响应2读卡器 --> 控制器读卡器向控制器反馈数据
查询+呼叫3控制器 --> 读卡器控制器向读卡器查询数据,同时命令读卡器向指定标签发起呼叫

2、查询消息(0x01)

消息的“内容数据”为1个字节,存放这次查询允许读卡器上报的最大标签数量。

举例:

如果“内容数据”为10,则读卡器则到本查询消息后,只能上报0~10个标签事件数据。控制器收到小于10个数据,则说明读卡器已发完所有数据。控制器收到10个数据,则读卡器有可能还有未发的数据,此时,控制器是继续查询,还是轮询下一个读卡器,各有利弊,由控制器自主决定。

消息举例:

01 00 01 01 08 56 48

3、响应消息(0x02)

消息的“内容数据”为读卡器上报标签事件的实际内容。具体如下:

“基站状态数据”占用1个字节长度,用来表示基站(读卡器)的状态。

状态0:读卡器正常工作

状态1:天线故障(没有接读卡天线或者读卡天线故障)

状态2:读卡器拥塞(标签太多超出读卡器处理能力)。

“标签事件数据”由1个字节的标签事件个数和相对应的标签事件数据组成。每个标签事件数据又分别由“卡号”、“属性”、“扩展数据”和“RSSI值”字段构成。

(1)卡号。4个字节,标签的号码,后面的信息都为该标签的信息。

(2)属性。1个字节,存放标签类型、欠压标志、扩展数据长度等内容。

位0 欠压标志。1:欠压    0:正常

位1-3  标签类型。0:普通标签   1:运动检测标签 7:空标签(注1)

位4 运动标志。该位只有运动检测标签才有效。0:标签静止  1:标签运动

位5-7 扩展数据长度。必要时,标签可以上传一些扩展数据(如湿度、湿度等数据),扩展数据区紧跟属性字节,长度可以为0—7个字节。

注1:空标签是指有源标签附件没有任何电子标签时,为了向控制器说明有源标签工作正常,而每隔3秒向控制器发送一次空标签信息。如果控制器长时间没有收到真实标签信息或空标签信息,则说明读卡天线工作故障。

(3)扩展数据。0—7个字节,扩展数据的长度在属性字节中说明,可以携带一些标签特有的数据,如温度、温度等数据。最多可以有7个字节,也可以没有。

(4)RSSI值。1个字节,读卡天线接收到该标签数据的无线信号强度值,通过该信号强度值可以换算出标签离读卡天线的距离。

消息举例:

01 00 02 0E 00 02 00 1B 81 7A 00 AB 00 1B 81 7B 00 AA 06 B2

4、查询+呼叫控制消息(0x03)

消息在查询读卡数据的同时,向指定标签发呼叫控制指令,让标签开始或停止发光发声。

呼叫模式:

             0:亮灯(不发声)

             1:亮灯(发声)

            255:停止发光发声

消息举例:01 00 03 0C 08 02 00 1B 81 7A 01 00 1B 81 7B 01 7E 9F