问题45:为什么多RFID标签在读取过程中会出现“碰撞”现象?
“冲突”、“碰撞”、“介质访问控制算法”是计算机网络中带有普遍性的问题,这是由于多节点共享一条通信信道引起的。在局域网、无线局域网、无线自组网、无线传感器网络的讨论中,都会遇到这个问题,在讨论RFID读写过程时,同样会遇到这个问题。
实际上,这种现象在我们日常生活中也普遍存在,只是利用人的智慧很容易解决它。举个例子,当我们在教室里上课时,规定课堂上是老师讲、学生听,如果学生要发言必须先举手,老师同意之后才能发言。如果有两个同学都申请发言,那么老师要指定这两个同学的发言顺序。在开班会自由发言时,如果没有规定发言的顺序,当两个及两个以上同学同时讲话时,就发生了“碰撞”,大家听不清任何一个人讲的话,出现由于“冲突”造成发言“失败”的情况。显然,要使多人参与的会议中人们都能成功“发言”,唯一的办法是先制定“下面该谁发言”的控制方法,这个方法就是我们在网络技术讨论中经常会遇到的术语“介质访问控制算法”。
实验室里的Ethernet局域网连接了几十台计算机,同学们都需要在下课时通过局域网将作业发送到老师的计算机。但是,老师的计算机在一个时刻只能接收一份作业。如果有两个或更多的同学同时向老师的计算机发送数据时,老师的计算机就无法分辨出这些作业到底是哪位同学提交的,这时就会出现传输错误。这个问题在局域网中叫做多台计算机同时发送数据的“冲突”和“碰撞”问题。IEEE 802.3协议的一个重要内容就是研究如何提高数据传输效率,尽量减少“冲突”的发生。局域网的研究人员提出了多种算法来解决“冲突”问题,最后选择出最有效的“带载波侦听的多路存取/冲突检测(CSMA/CD)”方法,并形成了IEEE 802.3协议标准。
图3-23 多RFID标签读取“碰撞”发生示意图
由于RFID标签与RFID读写器通信使用的是同一频率,属于共享信道问题。当你在超市推出一车贴有RFID标签的商品时,结账的RFID读写器要在最短的时间内读出所有商品的标识信息,并计算出总价格。这时就出现一个问题:一个读写器同一时刻要接收多个RFID标签发送的数据。这和我们在研究局域网时遇到的多台计算机同时工作的情况一样。
图3-23给出了多RFID标签同时发送数据出现“碰撞”和“冲突”的发生过程。图中给出了最简单的情况,即两个RFID标签RFID A与RFID B同时向读写器发出电信号VA(t) 、VB(t)时,读写器接收到的信号波形是VA(t) 和VB(t)叠加后形成的VA+B(t)。从图2-23中可以看出,VA+B(t)≠VA(t)≠VB(t),也就是说读写器不能正确接收RFID A发送的数据,也不能正确接收RFID B发送的数据,这次通信由于出现“冲突”而造成发送失败。需要注意的是,图3-23做了一些简化,忽略了信号叠加造成的叠加后信号幅度的变化。
因此,设计RFID多标签共享同一信道发送数据时同样需要研究“介质访问控制(MAC)算法”与MAC层协议问题。如何解决多标签读取过程中的“碰撞”问题是设计标签与读写器通信机制的核心技术。读写器在一秒内平均能够正确读出标签信息的数量是评价RFID读写器性能的重要指标之一。