UHF电子标签读写模块UHFReader用户手册V.docx
- 文档编号:18530457
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:67
- 大小:42.38KB
UHF电子标签读写模块UHFReader用户手册V.docx
《UHF电子标签读写模块UHFReader用户手册V.docx》由会员分享,可在线阅读,更多相关《UHF电子标签读写模块UHFReader用户手册V.docx(67页珍藏版)》请在冰点文库上搜索。
UHF电子标签读写模块UHFReader用户手册V
UHF电子标签读写模块UHFReader86
用户手册V1.10
一、通讯接口规格
读写模块通过UART或者USB接口与上位机串行通讯,按上位机的命令要求完成相应操作。
串行通讯接口的数据帧为一个起始位,8个数据位,一个停止位,无奇偶校验位,缺省波特率57600。
在串行通讯过程中,每个字节的最低有效位最先传输。
二、协议描述
通讯过程由上位机发送命令及参数给读写模块,然后读写模块将命令执行结果状态和数据返回给上位机。
读写模块接收一条命令执行一条命令,只有在读写模块执行完一条命令后,才能接收下一条命令。
在读写模块执行命令期间,如果向读写模块发送命令,命令将丢失。
上位机发送过程如下:
上位机
数据传递方向
读写模块
命令数据块
→
说明:
上位机发送的数据串中,每两个相邻字节之间的发送时间间隔必须小于15ms。
在上位机的命令数据块发送过程中,如果相邻字符间隔大于15ms,则之前接收到的数据均被当作无效数据丢弃,然后从下一个字节开始,重新接收。
读写模块接收到正确询查命令后,在不超过询查时间的范围内(不包括数据发送过程,仅仅是读写模块执行命令的时间),会返回给读写模块一个响应。
读写模块发送过程如下:
读写模块
数据传递方向
上位机
响应数据块
→
说明:
读写模块发送响应数据期间,相邻字节之间的发送时间间隔小于15ms
完整的一次通讯过程是:
上位机发送命令给读写模块,并等待读写模块返回响应;读写模块接收命令后,开始执行命令,然后返回响应;之后上位机接收读写模块的响应。
一次通讯结束。
三、数据的格式
1.上位机命令数据块
Len
Adr
Cmd
Data[]
LSB-CRC16
MSB-CRC16
数据各部分说明如下:
长度(字节)
说明
Len
1
命令数据块的长度,但不包括Len本身。
即数据块的长度等于4加Data[]的长度。
Len允许的最大值为255,最小值为4。
Adr
1
读写模块地址。
地址范围:
0x00~0xFE,0xFF为广播地址,读写模块只响应和自身地址相同及地址为0xFF的命令。
读写模块出厂时地址为0x00。
Cmd
1
命令代码。
Data[]
不定
参数域。
在实际命令中,可以不存在。
LSB-CRC16
1
CRC16低字节。
CRC16是从Len到Data[]的CRC16值
MSB-CRC16
1
CRC16高字节。
2.读写模块响应数据块
Len
Adr
reCmd
Status
Data[]
LSB-CRC16
MSB-CRC16
数据各部分说明如下:
长度(字节)
说明
Len
1
响应数据块的长度,但不包括Len本身。
即数据块的长度等于5加Data[]的长度。
Adr
1
读写模块地址。
reCmd
1
指示该响应数据块是哪个命令的应答。
如果是对不可识别的命令的应答,则reCmd为0x00。
Status
1
命令执行结果状态值。
Data[]
不定
数据域,可以不存在。
LSB-CRC16
1
CRC16低字节。
CRC16是从Len到Data[]的CRC16值。
MSB-CRC16
1
CRC16高字节。
CRC16的C语言算法:
#definePRESET_VALUE0xFFFF
#definePOLYNOMIAL0x8408
unsignedintuiCrc16Cal(unsignedcharconst*pucY,unsignedcharucX)
{
unsignedcharucI,ucJ;
unsignedshortintuiCrcValue=PRESET_VALUE;
for(ucI=0;ucI { uiCrcValue=uiCrcValue^*(pucY+ucI); for(ucJ=0;ucJ<8;ucJ++) { if(uiCrcValue&0x0001) { uiCrcValue=(uiCrcValue>>1)^POLYNOMIAL; } else { uiCrcValue=(uiCrcValue>>1); } } } returnuiCrcValue; } pucY是要计算CRC16的字符数组的入口,ucX是字符数组中字符个数。 上位机收到数据的时候,只要把收到的数据按以上算法进行计算CRC16,结果为0x0000表明数据正确。 四、操作命令总汇 1.EPCC1G2(ISO18000-6C)命令 序号 命令 功能 1 0x01 询查标签 2 0x02 读数据 3 0x03 写数据 4 0x04 写EPC号 5 0x05 销毁标签 6 0x06 设定存储区读写保护状态 7 0x07 块擦除 8 0x08 根据EPC号设定读保护设置 9 0x09 不需要EPC号读保护设定 10 0x0a 解锁读保护 11 0x0b 测试标签是否被设置读保护 12 0x0c EAS报警设置 13 0x0d EAS报警探测 14 0x0f 询查单标签 15 0x10 块写 16 0x11 读取Monza4QT工作参数 17 0x12 设置Monza4QT工作参数 18 0x15 指定掩码扩展读数据 19 0x16 指定掩码扩展写数据 20 0x18 带缓存询查 2.读写模块自定义命令 序号 命令 功能 1 0x21 读取读写模块信息 2 0x22 设置读写模块工作频率 3 0x24 设置读写模块地址 4 0x25 设置读写模块询查时间 5 0x28 设置串口波特率 6 0x2f 调整功率 7 0x40 蜂鸣器设置 8 0x46 GPIO控制命令 9 0x47 读取GPIO状态 10 0x4c 读写模块唯一序列号获取 11 0x3a 标签自定义功能设置 12 0x70 设置缓存的EPC/TID长度 13 0x71 获取缓存的EPC/TID长度 14 0x72 缓存数据获取 15 0x73 清缓存 16 0x74 查询缓存区标签数量 五、命令执行结果状态值 响应数据块 Status含义 说明 Len Adr reCmd Status Data[] CRC16 5+Data[]部分的长度 0xXX 0xXX 0x00 …….. LSB+MSB 操作成功 当成功执行命令后返回给上位机的状态值。 Data[]包含了所要信息 5+Data[]部分的长度 0xXX 0x01 0x01 …….. LSB+MSB 询查时间结束前返回 上位机发出询查G2标签命令时,读写模块询查电子标签时,如果在设定的询查时间内返回信息给上位机,则返回此状态值 5+Data[]部分的长度 0xXX 0x01 0x02 …….. LSB+MSB 指定的询查时间溢出 上位机发出询查G2标签命令时,当询查时间溢出时,读写模块还没有完成询查操作时返回给上位机的状态值 5+Data[]部分的长度 0xXX 0x01 0x03 …….. LSB+MSB 本条消息之后,还有消息 上位机发出询查G2标签命令时,如果询查命令读到的标签数量无法在一条消息内传送完,将分多次发送。 5+Data[]部分的长度 0xXX 0x01 0x04 …….. LSB+MSB 读写模块存储空间已满 上位机发出询查G2标签命令时,如果询查到的电子标签太多,超过了读写模块的存储容量,则读写模块返回读到的电子标签EPC号,同时,也将返回此状态值 5 0xXX 0xXX 0x05 无此项 LSB+MSB 访问密码错误 当读写模块执行需要密码才能执行的操作,而命令中给出的密码是错误的密码时返回给上位机的状态值 5 0xXX 0x05 0x09 无此项 LSB+MSB 销毁标签失败 当向G2标签进行销毁操作时,如果销毁密码错误,或是读写模块与标签通讯不畅,则将返回此状态值 5 0xXX 0x05 0x0a 无此项 LSB+MSB 销毁密码不能为全0 销毁标签时,销毁密码为0的标签是无法销毁的 5 0xXX 0xXX 0x0b 无此项 LSB+MSB 电子标签不支持该命令 G2协议中的某些可选命令,及一些厂商的特定命令,可能某些标签不支持这些命令,此时返回此状态值 5 0xXX 0xXX 0x0c 无此项 LSB+MSB 对该命令访问密码不能为全0 对NXPUCODEEPCG2X标签设置读保护及设置EAS报警时,访问密码不能为全0,若为全0,将返回此状态值 5 0xXX 0x0a 0x0d 无此项 LSB+MSB 电子标签已经被设置了读保护,不能再次设置 对已经被设置了读保护的NXPUCODEEPCG2X标签,在解除读保护之前,不能再次设置。 此情况下返回这个状态值 5 0xXX 0x0a 0x0e 无此项 LSB+MSB 电子标签没有被设置读保护,不需要解锁 对NXPUCODEEPCG2X标签解锁,如果标签没有被锁定,将返回此状态值,对不支持读保护设定命令的标签发送此命令,也将返回此状态值 5 0xXX 0x53 0x10 无此项 LSB+MSB 有字节空间被锁定,写入失败 在向6B标签写入数据时,因为有字节空间被锁定,使得写入数据失败时,返回此状态值 5 0xXX 0x55 0x11 无此项 LSB+MSB 不能锁定 当6B标签出现不能被锁定的情况,返回此状态值 5 0xXX 0x55 0x12 无此项 LSB+MSB 已经锁定,不能再次锁定 对已经锁定的6B标签进行再次锁定时,返回此状态值 5 0xXX 0xXX 0x13 无此项 LSB+MSB 参数保存失败,但设置的值在读写模块断电前有效 对于某些需要保存的参数,如果保存失败,则返回此之态 5 0xXX 0xXX 0x14 无此项 LSB+MSB 无法调整 调整功率的时候,在某些情况下,如果出现功率无法调整的错误,则返回此状态值 5+Data[]的长度 0xXX 0x51 0X15 …….. LSB+MSB 询查时间结束前返回 上位机发出询查6B标签命令时,读写模块询查电子标签时,如果在设定的询查时间内返回信息给上位机,则返回此状态值 5+Data[]的长度 0xXX 0x51 0x16 …….. LSB+MSB 指定的询查时间溢出 上位机发出询查6B标签命令时,当询查时间溢出时,读写模块还没有完成询查操作时返回给上位机的状态值 5+Data[]的长度 0xXX 0x51 0x17 …….. LSB+MSB 本条消息之后,还有消息 上位机发出询查6B标签命令时,如果询查命令读到的标签数量无法在一条消息内传送完,将分多次发送。 5+Data[]的长度 0xXX 0x51 0x18 …….. LSB+MSB 读写模块存储空间已满 上位机发出询查6B标签命令时,如果询查到的电子标签太多,超过了读写模块的存储容量,则读写模块返回读到的电子标签UID号,同时,也将返回此状态值 5 0xXX 0xXX 0x19 无此项 LSB+MSB 电子标签不支持该命令或者访问密码不能为0 当设置电子标签的EAS报警时,在通信正常的情况下,如果标签无法设置,则可能是电子标签不支持该命令,也可能是电子标签的访问密码不能为0 5 0xXX 0xXX 0x1A 无此项 LSB+MSB 标签自定义功能执行错误 当特定标签功能启动后某些命令执行失败时返回给上位机的状态值 5 0xXX 0xXX 0xF9 无此项 LSB+MSB 命令执行出错 命令执行出错 5 0xXX 0xXX 0xFA 无此项 LSB+MSB 有电子标签,但通信不畅,操作失败 当检测到有效范围内存在可操作的电子标签,但读写模块与电子标签之间的通讯质量不好,而无法完成整个通讯过程时返回给上位机的信息 5 0xXX 0xXX 0xFB 无此项 LSB+MSB 无电子标签可操作 当读写模块对电子标签进行操作时,有效范围内没有可操作的电子标签时返回给上位机的状态值 6 0xXX 0xXX 0xFC Err_code LSB+MSB 电子标签返回错误代码 电子标签返回错误代码时,错误代码由Err_code返回给上位机 5 0xXX 0xXX 0xFD 无此项 LSB+MSB 命令长度错误 当上位机输入的命令的实际长度和它应当具有的长度不同时,返回该状态 5 0xXX 0x00 0xFE 无此项 LSB+MSB 不合法的命令 当上位机输入的命令是不可识别的命令,如不存在的命令、或是CRC错误的命令 5 0xXX 0xXX 0xFF 无此项 LSB+MSB 参数错误 上位机发送的命令中的参数不符合要求时,返回此状态 六、电子标签返回错误代码 EPCC1G2(ISO18000-6C)电子标签错误代码: 错误代码支持 错误代码 错误代码名称 错误描述 特定错误代码 0x00 其它错误 全部捕捉未被其它代码覆盖的错误 0x03 存储器超限或不被支持的PC值 存储位置不存在或标签不支持的PC值 0x04 存储器锁定 存储位置锁定或永久锁定,且不可写入 0x0b 电源不足 标签电源不足,无法执行存储写入操作 非特定错误代码 0x0f 非特定错误 标签不支持特定错误代码 七、标签存储区及需要注意的问题 EPCC1G2标签(简称G2标签) G2标签分4个区: 保留区(又称密码区),EPC区,TID区和User区。 保留区: 保留区4个字。 前两个字是销毁密码,后两个字是访问密码。 可读可写,保留区的两个密码区的读写保护特性可以分别设置。 EPC区: 标签EPC号存储在该区,其中第0个字是PC值和标签EPC号的CRC16。 第1个字是PC值,该值指示标签EPC号长度,从第2个字开始才是标签的EPC号数据。 可读可写。 TIC区: 该区存储的数据是由标签生产商设定的ID号。 可读不可写。 User区: 是用户数据区。 可读可写。 G2命令中很多地方要求给出数据长度,这里要注意字与字节的区别。 1个字等于2个字节。 有些命令需要访问密码,如果没有密码设置,则用0填充密码区,而不能为空。 八、操作命令详细描述 8.1命令概述 操作命令包括协议相关、读写模块相关以及标签自定义命令。 如果上位机输入的命令是不可识别的命令,如不存在的命令、或是CRC错误的命令,则返回值如下: Len Adr reCmd Status CRC-16 0x05 0xXX 0x00 0xFE LSB MSB 如果命令的长度不对,则返回信息如下: Len Adr reCmd Status CRC-16 0x05 0xXX 0xXX 0xFD LSB MSB 有两种命令读写模块不会响应: 1.如果输入的命令的地址出错(地址不是0xFF,也不是读写模块地址),读写模块不会有任何响应。 2.如果输入的命令是不完整的,即命令的Len域指示的命令长度大于实际的命令长度,则读写模块将不会做出任何响应。 8.2EPCC1G2命令 8.2.1询查标签 询查命令的作用是检查有效范围内是否有符合协议的电子标签存在。 想要对未知EPC的新标签进行别的操作前,应先通过询查命令来得到标签的EPC号。 在运行询查命令之前,用户可以根据需要先设定好该命令的最大运行时间(询查时间)。 读写模块在询查时间规定的范围内必须给上位机一个结果,如果读写模块尚未读完有效范围内的所有标签,而询查时间已到,则读写模块不再询查其它标签,而是直接把已经询查到得标签返回给上位机,并提示上位机还有标签未读完。 然后等待下一个命令。 询查时间的缺省值是1s,用户可以通过运行读写模块自定义命令设定询查时间命令来修改。 允许的范围是: 3*100ms~255*100ms(实际的响应时间可能会比设定的值大0~75ms)。 询查时间如果设定的过短,可能会出现在规定时间内询查不到电子标签的情况。 命令: Len Adr Cmd Data[] CRC-16 0xXX 0xXX 0x01 —— LSB MSB Data参数如下: Data[] QValue Session MaskMem MaskAdr MaskLen MaskData AdrTID LenTID 0xXX 0xXX 0xXX 2Bytes 0xXX 变长 0xXX 0xXX Data[] Target Ant Scantime 0xXX 0x80 0xXX 参数解析: QValue: 1个字节,询查EPC标签时使用的初始Q值,Q值的设置应为场内的标签数量约等于2Q。 Q值的范围为0~15,若命令中出现了其它值,将返回参数出错的消息。 Session: 1个字节,询查EPC标签时使用的Session值。 0x00: Session使用S0; 0x01: Session使用S1; 0x02: Session使用S2; 0x03: Session使用S3。 其它值保留。 若命令中出现了其它值,将返回参数出错的消息。 MaskMem: 一个字节,掩码区。 0x01: EPC存储区;0x02: TID存储区;0x03: 用户存储区。 其他值保留。 若命令中出现了其它值,将返回参数出错的消息。 MaskAdr: 两个字节,掩码的起始位地址(单位: Bits)。 范围0~16383。 MaskLen: 一个字节,掩码的位长度(单位: Bits)。 MaskData: 掩码数据。 MaskData数据字节长度是MaskLen/8。 如果MaskLen不是8的整数倍,则MaskData数据字节长度为[MaskLen/8]取整再加1。 不够的在低位补0。 AdrTID: 询查TID区的起始字地址。 命令中有此参数和LenTID时表示询查的是TID而不是EPC号。 LenTID: 询查TID区的数据字数。 LenTID取值为0~15,若为其它参数将返回参数错误信息。 命令中有此参数和AdrTID时表示询查的是TID而不是EPC号。 Target(可选参数): 1个字节,询查EPC标签时使用的Target值。 0x00: Target值使用A。 0x01: Target值使用B。 其他值保留。 若命令中出现了其它值,将返回参数出错的消息。 Ant(可选参数): 1个字节,本次要进行询查的天线号。 0x80–天线1; 其他值保留。 若命令中出现了其它值,将返回参数出错的消息。 ScanTime(可选参数): 1个字节。 本次命令询查时间。 读写模块将会把询查命令最大响应时间设置为SanTime*100ms。 注: ①当MaskMem、MaskAdr、MaskLen、MaskData为空时表示无掩膜条件。 ②Target、Ant、ScanTime为可选参数,命令中必须同时带有这三个参数或同时不带这三个参数。 当命令中没有带这三个参数时,设备使用预先设定的Target、Ant、ScanTime参数询查标签;当命令中带有这三个参数时,设备使用这三个指定的参数值询查标签。 应答: Len Adr reCmd Status Data[] CRC-16 Ant Num EPCID 0xXX 0xXX 0x01 0xXX 0x01 0xXX EPC-1,EPC-2,EPC-3… LSB MSB 参数解析: Status是应答的状态,其代表的意义如下表所述: Status 说明 0x01 命令执行结束,同时返回询查到的电子标签数据 0x02 询查时间结束,命令执行强制退出,同时返回已询查到的标签数据 0x03 如果读到的标签数量无法在一条消息内传送完,将分多次发送。 如果Status为0x03,则表示这条数据结束后,还有数据。 0x04 还有电子标签未读取,电子标签数量太多,读写模块的存储区已满,返回此状态值,同时返回已询查到得电子标签数据。 参数解析: Ant: 表示有天线询查到该标签,此模块固定0x01。 Num: 本次应答中包含的电子标签的EPC/TID的个数。 EPCID: 读到的电子标签的EPC/TID数据,EPC-1是第一张标签的EPC/TID长度+第一张标签的EPC号或TID数据+第一张标签的RSSI值,依此类推。 每个电子标签EPC号或TID数据高字(EPCC1G2中数据以字为单位)在前,每一个字的高字节在前。 EPC/TID长度以一个字节表示。 RSSI值长度以一个字节表示。 8.2.2读数据 这个命令读取标签的保留区、EPC存储区、TID存储区或用户存储区中的数据。 从指定的地址开始读,以字为单位。 命令: Len Adr Cmd Data[] CRC-16 0xXX 0xXX 0x02 —— LSB MSB Data参数如下: Data[] ENum EPC Mem WordPtr Num Pwd MaskMem MaskAdr MaskLen MaskData 0xXX 变长 0xXX 0xXX 0xXX 4Byte 0xXX 2Bytes 0xXX 变长 参数解析: ENum: 在(0x00~0x0f)范围内表示EPC号长度,以字为单位。 EPC的长度在15个字以内。 此时无MaskMem、MaskAdr、MaskLen、MaskData参数项。 ENum为0xff时有MaskMem、MaskAdr、MaskLen、MaskData参数项,无EPC参数项。 如果为其它值将返回参数错误信息。 EPC: 要读取数据的标签的EPC号。 长度根据所给的EPC号决定,EPC号以字为单位,且必须是整数长度。 高字在前,每个字的高字节在前。 这里要求给出的是完整的EPC号。 Mem: 一个字节。 选择要读取的存储区。 0x00: 保留区;0x01: EPC存储区;0x02: TID存储区;0x03: 用户存储区。 其他值保留。 若命令中出现了其它值,将返回参数出错的消息。 WordPtr: 一个字节。 指定要读取的字起始地址。 0x00表示从第一个字(第一个16位存储区)开始读,0x01表示从第2个字开始读,依次类推。 Num: 一个字节。 要读取的字的个数。 不能设置为0x00,否则将返回参数错误
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UHF 电子标签 读写 模块 UHFReader 用户手册