遵守ISO15693协议的电子标签都有一个8字节共64bit的全球唯一序列号(UID),这个UID一方面可以使全球范围内的标签互相区别,更重要的是可以在多标签同时读写时用于防冲突。8字节UID按权重从高到低标记为UID7--UID0,其中UID7固定为16进制的E0H,UID6是标签制造商的代码,例如NXP的代码为04H,TI的代码为07H;UID5为产品类别代码,比如ICODE SL2 ICS20是01H,Tag-it HF-I Plus Chip为80H,Tag-it HF-I Plus Inlay为00H。剩下的UID4-UID0为制造商内部分配的号码。

电子标签数量众多,应用范围极为广泛。为了区分不同行业中的电子标签,ISO用一个字节的AFI (Application family identifier)来区分不同行业中的电子标签。AFI的高半字节表示主要行业,低半字节表示主要行业中的细分行业。其中AFI=00H表示所有行业。需要注意的是并不强制要求电子标签支持AFI,电子标签是否支持AFI是可选的,在收到"Inventory"清点命令后,如果标签不支持AFI,则标签必须立刻做出应答;如果支持AFI,则只有收到的AFI与标签存储的AFI一致才做出应答。

15693国际标准还规定了一个字节的可选的数据存储格式识别符(DSFID),用来区分标签中不同的数据存储格式。如果标签支持DSFID,在清点命令中标签将返回一个非零的DSFID,读写器可据此判断射频场中的标签是否具有期望的数据格式。

电子标签的内存最大可达8K字节,以数据块(Block)为单位进行管理,标签内最多可以有256个数据块,每个数据块最大可以有32字节。数据块的内容可以锁定以防止修改。

读写器与标签之间的数据交流使用"命令-应答"的方式,如下所示:

命令:标志(Flags)+命令码(Command code)+参数(parameters)+数据(Application data)+校验(CRC16)

应答:标志(Flags)                     +参数(parameters)+数据(Application data)+校验(CRC16)

可见应答除了没有应答码之外,结构与命令码类似。每一条命令及其应答都使用CRC校验以保证数据的完整性。读写器可以发出一条请求后让射频场内的所有电子标签同时应答(Addressed mode),也可以指定一个电子标签应答(Non-addressed mode)。在Non-addressed模式下,可以使用两种方法指定一个电子标签,一种是命令中给出电子标签的唯一序列号UID,另一种是命令中不给出 UID,而是在之前的步骤中先选中一个标签,使其处于选中(select)状态,然后命令中指明仅要求处于选中状态的标签做出应答。

ISO15693电子标签的防冲突与ISO14443A中基于位的防冲突类似。其最根本的一点就是基于标签有一个全球唯一的序列号。因为序列号的唯一性,所以全球范围内的任意两个标签,其64bit的序列号中总有一个bit的值是不一样的,也就是说任意两个标签的序列号总有一个bit上一个是“0”,另一个是“1”。防冲突的过程可以1位1位的进行,也可以4位4位的进行。具体的原理参见位和时隙相结合的防冲突机制

电子标签支持的命令可以分为强制(Mandatory)命令、可选(Optional)命令和用户(Custom)命令三种。强制命令和可选命令的功能和格式在标准中都有明确而详细的定义,用户命令则由标签制造商制定。

强制命令有两个:清点(Inventory)和保持静默(Stay quiet),标签必须支持。标签最基本的功能是可以通过防冲突送出一个标签识别号,这两个命令就是实现这个功能的。如果磁场中有多个标签,使用清点命令可以得到一个标签UID,然后使用保持静默命令使其休眠;然后再使用清点命令可以得到下一个标签UID,依次类推,从而实现对射频场中的所有标签实现清点轮询。

可选命令是否支持由标签制造商决定,可以分为以下4类:

1.对整个标签操作:选择(Select)、复位(Reset to ready)、读取系统信息(Get system information);

2.对标签数据块操作:读单块(Read single block)、写单块(Write single block)、锁数据块(Lock block)、读多块(Read multiple blocks)、写多块(Write multiple blocks)、读多块安全状态(Get multiple block security status);

3.对AFI操作:写AFI(Write AFI)、锁定AFI(Lock AFI);

4.对DSFID操作:写DSFID(Write DSFID)、锁定DSFID(Lock DSFID)。

射频识别技术漫谈(24)——ISO15693的防冲突与传输协议的更多相关文章

  1. 射频识别技术漫谈(23)——ISO15693的载波、调制与编码

    射频识别技术中的通讯大多是主从式,主动方一般是读写器,被动方称为“卡片”或“标签”.到底是叫“卡片”还是“标签”,好像也没有严格的区分.习惯上可以从以下4个方面界定:一是形状,卡片通常体积较大,更像“ ...

  2. 射频识别技术漫谈(2)——国际标准【worldsing 笔记】

    如果你只是智能卡的用户,通常可以不必关注国际标准,但作为智能卡的专业开发人员,则至少也要对相关标准有所了解.国际标准一般都是西方人制定的,原版都是英文的,而所谓中文版往往是对原版的直译,许多情况下并未 ...

  3. 射频识别技术漫谈(10)——识别号的格式变化【worldsing笔记】

    从事RDID行业的朋友经常会遇到这样的情况,同一张ID卡,在不同厂家生产的读卡器上读出的识别号完全不一样,有时甚至差之千里.ID卡的识别号一般是在出厂时被固化在卡片的ROM里,本身是不会改变的,问题出 ...

  4. 射频识别技术漫谈(5)——防冲突【worldsing 笔记】

    正常情况下读写器某一时刻只能对磁场中的一张射频卡进行读写操作.但是当多张卡片同时进入读写器的射频场时,读写器怎么办呢?读写器需要选出唯一的一张卡片进行读写操作,这就是防冲突. 防冲突机制是非接触式智能 ...

  5. 射频识别技术漫谈(6)——通讯协议概述【worldsing笔记】

    通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是谁先发起通讯,很显然有两种,读写器先发言 ...

  6. 射频识别技术漫谈(4)——数据编码【worldsing 笔记】

    前已述及,射频识别技术中的调制方法一般使用调幅(AM),也就是将有用信号调制在载波的幅度上传送出去.这里的"有用信号"指用高低电平表示的数据"0"或" ...

  7. 射频识别技术漫谈(25)——Felica简介

    Felica是SONY公司开发的射频识别技术,该技术使用的载波频率与ISO14443A和ISO14443B一样,都是13.56MHz,所以有人把它称为ISO14443C,但SONY并没有正式接受这样的 ...

  8. 射频识别技术漫谈(15)——Mifare1的安全性及7字节序列号M1卡【worlsing笔记】

    Mifare1的安全性主要指卡中数据的安全性,要求卡中的数据不能被非法修改或窃听.数据的安全性主要使用加密技术来保证,加密技术有两个关键因素:加密算法和密钥.现代加密技术的一大特点是加密算法公开,如果 ...

  9. 射频识别技术漫谈(1)——概念、分类

    现代社会智能卡已经渗透到生活的方方面面,公交卡.考勤卡.身份证.手机卡等等数不胜数.    智能卡按使用时是否和读卡器接触可分为接触式智能卡和非接触式智能卡,接触式智能卡上有6-8个触点,使用时插在卡 ...

随机推荐

  1. javaScript 工作必知(二) null 和undefined

    null null 表示个“空” , 使用typeof (null) ;//Object ; 说明他是一个特殊的对象. null 类型只自己唯一个成员.他是不包含属性和方法的. undefined u ...

  2. 读写分离提高 SQL Server 并发性

    转自:http://www.canway.net/Lists/CanwayOriginalArticels/DispForm.aspx?ID=476 在一些大型的网站或者应用中,单台的SQL Serv ...

  3. SQLite 终端相关命令

    SQLite ALL Last login: Fri Dec  5 09:52:08 on ttys002 BeSilent:~ qianfeng$ sqlite3 data.db SQLite ve ...

  4. XLSReadWrite控件简介

    2015-10-22  23:57:55 原帖地址:http://www.cnblogs.com/dabiao/archive/2011/07/08/2100609.html XLSReadWrite ...

  5. JQ插件开发方法

    由于项目原因,不得不写个JQ侧滑插件来满足需求.. 先引用两篇博文,待测试了 再写怎么做.. http://blog.csdn.net/business122/article/details/8278 ...

  6. 循环-21. 求交错序列前N项和

    /* * Main.c * C21-循环-21. 求交错序列前N项和 * Created on: 2014年8月18日 * Author: Boomkeeper ***********测试通过**** ...

  7. SQL Server 数据库所有者

    1. 数据库所有者应当永远是 sa 用户 2. 改变数据库的所有者 alter authorization on database :: databaseName to sa; -- 这一句话把数据库 ...

  8. sicily-1029 Rabbit

    一.      题意(0.04s) 每一对成熟的兔子可以生一对兔子,兔子在m个月之后成熟,假设兔子都不会死,计算d个月后一共有多少只兔子. 二.      要高精度加法(用string) 三.     ...

  9. Linux c 信号—pause、sigsuspend 的相同于区别

    pause函数:      功能:让进程暂停直到信号出现 #include<unistd.h> intpause(); 函数说明:pause()会令目前的进程暂停(进入睡眠状态),直至信号 ...

  10. MySQL性能调优的方法

    第一种方法 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的 性能,我们可以将表中字 ...