一种基于Type A的冲突位防冲突方法
技术领域
本发明涉及无线射频识别技术领域,尤其涉及一种基于Type A的冲突位防冲突方法。
背景技术
RFID***中有多张电子标签同时进入读写器射频场时,由于电子标签的相互干扰导致不能选中卡片的现象称为冲突,为了在发生冲突时也能进行读写操作,便需要提出防冲突方法来实现选卡操作。
现有技术中应用最为广泛的二进制树型搜索算法是ISO/IEC 14443 Type A协议,Type A是通过将已经接收到的UID与由读写器选择的冲突位的值一起发回卡片,卡片将接到的UID和冲突位与自己UID的对应部分比较,相同的话就发送剩下的UID给读写器来实现防冲突的。
Type A协议的缺点在于读写器接收卡片UID时,如果发生碰撞在重新选卡时,会将已经接收到的UID和冲突位一起发送回卡片来完成选卡,这样做不仅增加了读写器与卡片间发送的数据量,还增加了卡片内部判断是否需要响应读写器的数据长度,增加了识别时间。
由于Type A卡在金融、物流等领域有着相当广泛的应用,所以优化Type A协议使其更加高效的工作就变得很有必要。
发明内容
本发明的目的在于克服现有技术的不足,本发明提供一种基于Type A的冲突位防冲突方法,通过加入一个ANTI命令与原有的SEL搭配使用,减少发送数据量,减少卡片需要判断的数据量,从而减少识别时间。
为了解决上述技术问题,本方案的技术方案为:
一种基于Type A的冲突位防冲突方法,所述方法包括:
卡片接收到读写器发送的SEL+NVB命令后,所述卡片向所述读写器依次发送UID数据;
所述读写器接收UID数据,并判断UID数据是否存在冲突;
若存在,识别UID冲突位T+1,将T+1的值写入ANTI的低7个字节;
所述读写器向所述卡片发送SEL+ANTI防冲突命令,用于向所述卡片反馈ANTI的低7个字节为UID数据的T+1位;
所述卡片根据SEL+ANTI防冲突命令对T+1进行判断,判断所述T+1是否为1,若是则从T+1位开始发送UID,否则进入闲置状态;
若不存在,完成接收UID数据。
应用于二进制树型搜索算法中的现有Type A在发生冲突后,需要对冲突位赋值后,再与已经接收到的UID一起发送给卡片,这种方式存在识别时间长的不足,由于卡片本身的UID对于读写器来说是未知的,在冲突位赋值时置0或置1没有区别,所以直接规定凡是冲突就选择冲突位为1的卡片,最后依然可以选中一张卡片。本技术方案将原有需要UID加冲突位才能确定选哪张卡片,修改为只需要判断冲突位即可选卡片,减少数据量的发送,减少卡片需要判断的数据量,从而减少识别时间(即读写器既不对冲突位赋值,也不用发送冲突位的值,只需要发送命令告诉卡片是UID第几位冲突了,冲突位为1的卡片就会从冲突位开始发送剩下的UID给读写器,读写器也就读到了这个冲突位的值,由于读写器减少了对冲突位赋值和发送的操作自然也就减少了识别的时间)。
优选地,所述方法还包括:
所述卡片接收首字节为SEL命令后,通过判断第二个字节的第一位数据确定所述命令为SEL+NVB命令或SEL+ANTI防冲突命令。
优选地,所述通过判断第二个字节的第一位数据确定所述命令为SEL+NVB命令或SEL+ANTI防冲突命令,包括:
判断所述第二个字节的第一位数据为0,则所述命令为SEL+NVB命令;
判断所述第二个字节的第一位数据为1,则所述命令为SEL+ANTI防冲突命令。
优选地,所述识别UID冲突位T+1,包括:
所述读写器每接收到UID数据的一位,所述读写器内的计数器加一;
所述读写器接收UID数据发送冲突时,所述读写器停止接收UID数据;
获取所述计数器计数T,则所述UID冲突位为T+1。
在本技术方案中,读写器在接收UID的过程中,每接收一位数据就将计数器T加1,当发生冲突时,计数器T值+1就代表UID的冲突位为第T+1位,只需判断该位的值就可进行选卡操作。
优选地,所述进入闲置状态为将冲突判断后没有被选中的卡置于闲置状态;本技术方案在每次冲突判断后将没被选中的卡片置于闲置状态,能够防止其在下一次冲突时被选中。
与现有技术相比,本发明的有益效果:
1)本发明将原有需要UID加冲突位才能确定选哪张卡,改为只需要冲突位即可选卡,可以简化操作命令,在原有Type A协议里加入一个ANTI命令与原有的SEL搭配使用,减少发送数据量,减少卡片需要判断的数据量,从而减少识别时间。
2)本发明在当发生冲突时,读写器将第几位冲突通过SEL+ANTI命令告诉卡片后,卡片直接选择该冲突位为1的卡片,从冲突位开始发送剩下的UID给读写器。在这个过程中读写器既不对冲突位赋值,也不需要将冲突位的值发送给卡片,只需要接收冲突位在UID中的位置信息即可,减少了读写器对冲突位的赋值操作以及将冲突位的值通过天线发送给卡片的步骤,减少了数据量的发送和天线的耗能,同时减少了识别时间。
附图说明
图1是本发明实施例中的冲突位防冲突方法的流程示意图;
图2是本发明又一实施例中的冲突位防冲突方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1是本发明实施例中的冲突位防冲突方法的流程示意图,如图1所示,所述方法包括:
S11:卡片接收到读写器发送的SEL+NVB命令后,卡片向读写器依次发送UID数据;
S12:读写器接收UID数据,同时判断UID数据是否存在冲突,若存在则进入S13;否则进入S16;
S13:识别UID冲突位T+1,将T+1的值写入ANTI的低7个字节;
S14:读写器向卡片发送SEL+ANTI防冲突命令,用于向卡片反馈ANTI的低7个字节为UID数据的T+1位;
S15:卡片根据SEL+ANTI防冲突命令对第T+1进行判断,判断T+1是否为1,若是则从T+1位开始发送UID,否则进入闲置状态;
S16:完成接收UID数据。
对S11作进一步说明:
首先,在卡片接近读写器时,读写器发送REQA命令,用于将处于闲置态的卡片唤醒为READY状态,使其可以响应读写器的命令;卡片在接到REQA命令后,向读写器发送ATQA,ATQA内部包含了卡片UID长度和卡片的防冲突类型;读写器检查发送回来的ATQA命令,获取UID的长度(0-4字节、0-7字节、0-10字节),并确定发射场内卡片采用的是哪种防冲突类型。
读写器发送读取UID的SEL+NVB命令,SEL命令CL1先从UID第一部分开始读,SEL有三个值CL1、CL2、CL3分别表示读UID的三个部分,UID分为第一部分0~4字节,第二部分5~7字节,第三部分7~10字节。NVB有两个值“20”和“70”,NVB等于“20”时与SEL组合,表示卡片从UID第一位开始向读写器发送;在卡片接到SEL+NVB命令后,卡片向读写器依次发送UID(卡片序列号)。
对S12作进一步说明:
读写器接收卡片反馈回来的UID数据,在接收UID数据同时,判断该UID数据是否存在冲突。
对S13作进一步说明:
读写器每接收到UID数据的一位,读写器内的计数器加一;读写器接收UID数据发送冲突时,读写器停止接收UID数据;获取计数器计数T,则UID冲突位为T+1;然后将冲突位T+1的值写入ANTI的低7个字节。
读写器接收卡片发回的UID数据,每接到一位UID数据计数器自行加一,若没发送碰撞,则接收到一个完整的UID数据,若发生碰撞,通过计数器可知已接收到T位数据,也就知道是第T+1位冲突;然后将冲突位T+1的值写入ANTI的低7个字节,该ANTI命令如下表所示:
对S14作进一步说明:
在读写器内形成行的防冲突命令SEL+ANTI,该读写器向该卡片发送SEL+ANTI防冲突命令,用于向卡片反馈ANTI的低7个字节为UID数据的T+1位。
对S15作进一步说明:
卡片在接到SEL+ANTI防冲突命令后,根据SEL+ANTI防冲突命令自动对T+1位进行比较判断,判断T+1是否为1,若比较判断结果T+1为1,则从T+1位开始发送UID,若比较判断T+1不为1,则该卡片进入闲置(IDLE)状态,进入闲置状态的卡片不再响应防冲突命令;进入闲置状态为将冲突判断后没有被选中的卡置于闲置状态。
若在上述流程中再次出现冲突状态,则循环S13-S15步骤。
对S16作进一步说明:
若上述步骤中不再出现冲突现象,完成接收UID数据。
在上述过程中,卡片需要检测接收首字节为SEL命令的第二个字节的第一位数据才能区分命令为SEL+NVB命令或SEL+ANTI防冲突命令,其中,第二个字节的第一位数据为0,则表示命令为SEL+NVB命令;第二个字节的第一位数据为1,则命令为SEL+ANTI防冲突命令。
图2是本发明又一实施例中的冲突位防冲突方法的流程示意图,其具体过程为:
S201:SEL表示的是读UID的哪一部分,开始时为SEL的值为93,代表读UID的第一部分;
S202:将NVB的值设为20;
S203:将SEL+NVB命令向卡片发送;
S204:当卡片接到SEL+NVB后,向读写器依次发送UID;
S205:读写器依次接收UID,同时判断UID是否存在冲突,若是,进入S206,若否,则进入
S206:读写器根据自身携带的计数器对已接收的UID进行计数,获取已接收UID位数T;
S207:根据读写器已接收位数T,得到冲突位为T+1,将T+1写入ANTI的低7个字节中,即将T+1写入ANTI的低7位中;
S208:读写器向卡片发送SEL+ANTI防冲突命令;
S209:卡片接到SEL+ANTI防冲突命令,判断UID的T+1位是否为1,若为1,进入S210,若不为1,则该卡片进入闲置状态;
S210:从T+1位开始发送UID,判断是否冲突,若是,返回S206,若否,进入S211;
S211:接收完UID,将NVB设置为70;
S212:读写器发送SELECT,其中SELECT由下表组成:
SEL |
NVB |
UID |
CRC |
1字节 |
1字节 |
4字节 |
1字节 |
S213:卡片接收到SELECT命令后,由卡片返回SAK,读写器接到SAK则说明现在接收到的UID为全部UID,若读写器没有接到SAK,则表示接收的UID不完整,需要继续接收UID。
在本发明实施例中,将原有需要UID加冲突位才能确定选哪张卡,改为只需要冲突位即可选卡,可以简化操作命令,在原有Type A协议里加入一个ANTI命令与原有的SEL搭配使用,减少发送数据量。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
另外,以上对本发明实施例所提供的一种基于Type A的冲突位防冲突方法进行了详细介绍,本文中应采用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。