高效 RFID 系统中减轻阅读器冲突的研究
一、RFID 系统概述
随着无线技术的出现,射频识别(RFID)系统作为一种自动识别技术,正日益广泛地应用于库存管理、物体跟踪、零售结账等众多领域。它借助无线电波,帮助机器或计算机识别、记录或控制单个目标,是实现普适计算及其服务的关键技术之一,近年来受到了研究界和各行业的广泛关注。
一个典型的 RFID 系统由三个主要部分组成:RFID 阅读器、RFID 标签和后端数据库。阅读器利用外部电源产生信号,驱动天线将其转换为无线电波。当标签接收到这些无线电波时,会以信号形式反射自身的识别信息和其他相关内容。阅读器则充当接收器,对反射信号进行感知和解码,从而识别标签。在简单的 RFID 系统中,标签通常是无源的,依靠阅读器信号的能量供电。而在一些成熟的系统中,阅读器的射频信号还能指示标签的内存进行读写操作。
然而,由于 RFID 标签和阅读器之间的通信是在公共射频信道上进行的,系统可能会面临诸如准确性、可靠性、安全性和通信冲突等诸多问题。特别是,由于阅读器设计用于接收标签反射的微弱信号,同时刻其他阅读器的较强发射信号可能会对其产生严重干扰。因此,为避免干扰,需要合理设置阅读器之间的距离。
为了防止阅读器之间的相互干扰,通常有两种应对方案。分布式方案中,阅读器会相互切换通信状态,以避免同时进行交易;而集中控制模式则由特定的阅读器进行协调。本文提出了一种基于多素数的优先级事务(PBT - MP)机制,结合了集中式和分布式方案的优点,旨在高效地实现阅读器与标签之间的传输,并避免隐藏终端导致的通信冲突。该机制采用双信道方案,通过控制信道建立阅读器之间的通信,而实际的数据传输则在数据信道中进行。PBT - MP 调度机制适用于任意 RFID 网络,其中阅读器可以频繁加入和离开,形成自组织网络,并且具有不受限制的移动性。它不仅能基于无竞争的通信调度防止阅读器冲突,还能在静态和动态 RFID 环境中自适应调整。
二、RFID 网络中的隐藏终端问题
在 RFID 网络中,隐藏终端问题是一个常见且棘手的挑战。当一个标签被多个阅读器包围,而这些阅读器彼此不在对方的感知范围内时,就可能出现隐藏终端问题。这种情况下,阅读器之间无法相互通信,从而可能导致阅读器冲突。隐藏终端问题具有以下特点:
-
载波感知失效
:不在其他阅读器感知范围内的阅读器可能会干扰标签,使载波感知变得无效。
-
信号失真
:当多个阅读器的查询或传输在标签上发生冲突时,信号可能会失真,查询结果也可能不准确。
-
标签被动性
:由于 RFID 标签是无源元件,只有在被阅读器激活时才能进行通信,因此无法主动与阅读器进行通信以避免冲突。
RFID 系统中的干扰通常可分为阅读器之间的频率干扰和阅读器与标签之间的干扰:
-
阅读器频率干扰
:也称为频率干扰,当阅读器在与标签通信时相互干扰时就会发生。例如,当 RFID 阅读器 R2 处于阅读器 R1 的频率干扰范围内(R1 具有更广泛的干扰信号范围),标签 T1 响应 R2 时,可能会受到 R1 干扰信号的影响,即使两个阅读器的范围不重叠,也会出现这种隐藏终端问题。
-
多阅读器对标签的干扰
:也简称为标签干扰,当两个或多个阅读器在传输区域内试图同时与一个标签通信时就会发生。在这种情况下,每个阅读器都与标签进行一对一的通信,但阅读器可能不知道标签同时为多个阅读器服务,从而可能导致阅读器冲突。
为了解决隐藏终端问题,已经提出了许多方法,如 DCMA(双信道多址接入)协议、基于 CSMA 的 MAC 协议、高效动态帧时隙 ALOHA 协议、树型抗冲突协议等。
三、基于优先级的事务调度(PBT)
为了避免高密度环境中的阅读器冲突,PBT 调度算法采用时分多址的原理,确保阅读器在不同的时隙读取 RFID 标签,从而保证它们不会相互干扰。同时,通过在控制信道中向与目标 RFID 标签关联的协调代理注册新加入或离开的阅读器的存在,所有阅读器与标签之间的交易都可以在无竞争的情况下进行。
(一)激励示例
假设有四个阅读器 R1、R2、R3 和 R4 位于能够与标签通信的范围内,但它们彼此无法通信,因为超出了对方的感知范围,这就存在隐藏终端问题。为了解决这个问题,可以引入一个协调阅读器 R5 与目标标签关联。请求阅读器(R1 - R4)可以通过发送信标信息通知协调器它们的存在,协调器则跟踪阅读器的总数,并使阅读器能够在本地建立自己的交易时间表。
该技术属于半分布式算法,具有以下特点:每个请求阅读器在传输数据之前,通过控制信道向相应的协调器发送信标,通知其与标签通信的尝试。协调器根据接收到的帧了解信标的源地址,并通过回复信标告知现有阅读器分配了一个新的素数(代表优先级因素)。如果两个或多个阅读器在同一时隙与标签传输数据并导致通信冲突,具有较大素数的时隙将具有更高的优先级。
例如,R1 被分配了素数 2 的倍数的时隙进行交易,即 t2、t4、t6 等;而 R2 使用素数 3 的倍数的时隙,如 t3、t6、t9 等。较早加入网络的阅读器被分配较低的素数,代表使用较低优先级的时隙,这一策略旨在维护公平交易并防止后期加入的阅读器出现饥饿现象。对于较大素数具有较高优先级的概念,当 R1 和 R2 的传输发生冲突时,如在 t6 和 t12 时隙,R2 具有更高的优先级,会抢占这些时隙。
(二)动态情况处理
- 阅读器加入 :当新的阅读器加入网络时,会根据其加入顺序分配素数。例如,当阅读器 R3 加入后,由于较高的素数具有较高的优先级,R3 基于素数 5 保持正常的交易时间表,并从 R1 和 R2 中抢占 lcm(2, 5) 和 lcm(3, 5) 的倍数的时隙。
-
阅读器离开
:当一个阅读器离开网络时,需要对剩余阅读器的交易时间表进行动态调整。假设有 n 个阅读器 R1、R2、…、Rn,它们的关联时隙分别为 k1、k2、…、kn,若 Rleave = Ri(1 ≤ i ≤ n),则有以下三种情况:
- 对于 id 小于 i 的阅读器 Rj(j < i),将 lcm(kj, kn) 的倍数的时隙重置为“有效”。
- 对于 id 大于 i 且不等于 n 的阅读器 Rj(j > i 且 j ≠ n),将其时隙从 kj 切换到 kj - 1,并将与素数 kj、kj + 1、…、kn - 1 冲突的所有时隙设置为“无效”。
- 若 Rj = Rn,唯一的变化是将其交易从基于 kn 的时隙切换到基于 kn - 1 的时隙。
例如,当读者 R2 离开网络时,读者 R1 会启用 lcm(2, 7) 倍数的时隙(因为素数 7 被回收);读者 R3 会将其时隙从素数 5 切换到素数 3,并禁用与素数 5 冲突的所有时隙;读者 R4 会将其时隙从素数 7 重置为素数 5。
四、基于多素数的优先级事务(PBT - MP)
由于观察到 PBT 方案中时隙利用率较低的问题,例如时隙 t1 通常空闲,在低密度环境中 t5、t7、t11 等时隙也常常闲置,因此提出了 PBT 方案的增强算法 PBT - MP,它具有以下特点:
-
时隙 t1 的利用
:被分配使用素数 2 的阅读器将使用时隙 t1。
-
多素数分配
:一个阅读器可以被分配多个素数,以充分利用阅读器与标签通信中的时隙。
在 PBT - MP 方案中,采用了轮询式的时隙分配方式。例如,在一个 RFID 系统中,一个阅读器需要与标签传输数据 m 次才能完成一次交易。为了保证 100% 的效率,如果环境中只有一个阅读器,所有小于 m 的时隙都可以由该阅读器占用。由于 PBT 方案的时隙分配基于素数,这意味着小于 m 的所有素数都应由该阅读器使用。在多阅读器环境中,n 个阅读器完成 n 次交易需要 n * m 个时隙,因此小于 n * m 的所有素数都应在 n 个阅读器之间分配。
(一)阅读器加入算法
// 协调器程序
seq = 网络中阅读器的总数; // 初始为零
if ( 接收到新加入信标 ) { // 新阅读器加入
seq++; // 增加阅读器总数
向所有阅读器发送 seq; // 通知现有阅读器
}
// 阅读器程序
// 新阅读器加入时激活,Rseq 是一个阅读器的排名,初始为零
// 假设阅读器 R1、R2、R3、... 的素数分别为 k1[]、k2[]、k3[]、...
if ( Rseq == 0 ) { // 新加入的阅读器
向协调器发送 "加入" 信标;
接收与序列号 seq 关联的信标回复;
Rseq = seq;
} else { // 现有阅读器
接收与序列号 seq 关联的信标回复;
}
myrank = Rseq;
while ( 标签传输未完成 ) {
if ( ts == 1 && myrank == 1) { // ts 是当前时隙
从标签接收数据包;
} else if ( myrank == seq ) { // 新阅读器加入
flag = ts % kmyrank[]; // kseq[] 是阅读器 Rmyrank 的素数
// flag == 0,ts 是阅读器 Rmyrank 的时隙
while ( flag > 0); // 跳过锁定
从标签接收数据包;
} else {
flag = ts % kmyrank[]; // flag == 0,ts 是阅读器 Rmyrank 的时隙
suc_slot = ∏(ts % kj[]) 从 j = myrank + 1 到 seq;
// suc_slot == 0,ts 是阅读器 Rid 的后继阅读器的时隙之一
while ( flag > 0 || suc_slot == 0 ); // 跳过锁定
从标签接收数据包;
}
}
(二)阅读器离开算法
// 协调器程序
seq = 网络中阅读器的总数;
if ( 从阅读器 Ri 接收到离开信标 ) { // 阅读器 Ri 离开
seq--; // 减少阅读器总数
向所有阅读器发送 (seq, i); // 通知现有阅读器
}
// 阅读器程序
// 阅读器离开时激活,myrank 是一个阅读器的排名
接收信标回复 (seq, i);
if (myrank > i ) { // Ri 的后继阅读器
myrank--; // 提升其优先级
}
sync(); // 重置时隙 = 1
通过实验评估,PBT - MP 机制在静态和动态环境中都能提供比之前提出的 PBT 方案更优越的系统吞吐量,并且易于实现。这种机制为解决 RFID 系统中的阅读器冲突问题提供了一种有效的解决方案,有望在实际应用中得到广泛推广。
五、性能比较
为了评估 PBT - MP 机制的性能,将其与之前提出的其他协议一起进行了实验。研究重点关注了 RFID 阅读器的密度以及阅读器加入或离开的频率对系统吞吐量和效率的影响。
实验设置了不同的场景,包括静态环境和动态环境。在静态环境中,阅读器的数量和位置保持不变;而在动态环境中,阅读器可以频繁地加入和离开网络。通过模拟不同的网络密度和阅读器的移动性,全面测试了 PBT - MP 机制的性能。
实验结果表明,PBT - MP 机制在静态和动态环境中都表现出色。与之前的 PBT 方案相比,PBT - MP 能够显著提高系统的吞吐量。在高密度环境中,PBT - MP 机制通过更有效地利用时隙,减少了阅读器之间的冲突,从而提高了数据传输的效率。同时,在阅读器频繁加入和离开的动态环境中,PBT - MP 机制能够快速调整时隙分配,确保系统的稳定性和高效性。
以下是一个简单的性能对比表格:
| 协议 | 静态环境吞吐量 | 动态环境吞吐量 | 实现复杂度 |
| — | — | — | — |
| PBT | 一般 | 一般 | 中等 |
| PBT - MP | 高 | 高 | 低 |
从表格中可以看出,PBT - MP 机制在吞吐量方面明显优于 PBT 方案,并且实现复杂度较低,这使得它在实际应用中更具优势。
六、总结与展望
本文针对 RFID 系统中存在的阅读器冲突问题,提出了一种基于多素数的优先级事务(PBT - MP)机制。该机制结合了集中式和分布式方案的优点,通过双信道方案和无竞争的通信调度,有效地减轻了阅读器冲突,提高了系统的吞吐量和效率。
PBT - MP 机制的主要优点包括:
-
避免冲突
:基于素数分配时隙,能够有效地避免阅读器之间的冲突,特别是在隐藏终端问题存在的情况下。
-
自适应调整
:能够在静态和动态环境中自适应调整,适应阅读器频繁加入和离开的情况。
-
高效利用时隙
:通过多素数分配和轮询式时隙分配,充分利用了时隙资源,提高了系统的效率。
-
易于实现
:算法简单,实现复杂度低,便于在实际系统中应用。
未来的研究可以进一步探索 PBT - MP 机制在更复杂环境中的应用,例如大规模 RFID 网络和高移动性场景。同时,可以考虑与其他技术相结合,如机器学习和人工智能,以进一步优化系统的性能。此外,还可以研究如何提高系统的安全性,保护 RFID 标签和阅读器之间的通信数据。
总结
RFID 系统在现代社会中具有广泛的应用前景,但阅读器冲突问题一直是制约其发展的重要因素。本文提出的 PBT - MP 机制为解决这一问题提供了一种有效的解决方案。通过实验验证,该机制在静态和动态环境中都能显著提高系统的吞吐量和效率,并且易于实现。相信在未来,PBT - MP 机制将在 RFID 系统中得到更广泛的应用,推动 RFID 技术的进一步发展。
流程图
下面是 PBT - MP 机制中阅读器加入和离开的流程图:
graph TD;
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B{新阅读器加入?}:::decision;
B -- 是 --> C(协调器: seq++):::process;
C --> D(协调器: 向所有阅读器发送 seq):::process;
D --> E{是否为新加入阅读器?}:::decision;
E -- 是 --> F(新阅读器: 发送 "加入" 信标):::process;
F --> G(新阅读器: 接收信标回复):::process;
G --> H(新阅读器: Rseq = seq):::process;
E -- 否 --> I(现有阅读器: 接收信标回复):::process;
I --> J(阅读器: myrank = Rseq):::process;
J --> K(阅读器: 标签传输未完成):::decision;
K -- 是 --> L{ts == 1 且 myrank == 1?}:::decision;
L -- 是 --> M(阅读器: 从标签接收数据包):::process;
L -- 否 --> N{myrank == seq?}:::decision;
N -- 是 --> O(阅读器: flag = ts % kmyrank[]):::process;
O --> P{flag == 0?}:::decision;
P -- 否 --> O;
P -- 是 --> M;
N -- 否 --> Q(阅读器: flag = ts % kmyrank[]):::process;
Q --> R(阅读器: suc_slot = ∏(ts % kj[]) 从 j = myrank + 1 到 seq):::process;
R --> S{flag > 0 或 suc_slot == 0?}:::decision;
S -- 是 --> Q;
S -- 否 --> M;
M --> K;
K -- 否 --> T([结束]):::startend;
B -- 否 --> U{有阅读器离开?}:::decision;
U -- 是 --> V(协调器: seq--):::process;
V --> W(协调器: 向所有阅读器发送 (seq, i)):::process;
W --> X(阅读器: 接收信标回复 (seq, i)):::process;
X --> Y{myrank > i?}:::decision;
Y -- 是 --> Z(阅读器: myrank--):::process;
Z --> AA(阅读器: sync()):::process;
AA --> T;
Y -- 否 --> AA;
U -- 否 --> T;
这个流程图清晰地展示了 PBT - MP 机制中阅读器加入和离开的整个过程,有助于更好地理解该机制的工作原理。通过这种方式,读者可以更直观地了解如何在实际应用中实现 PBT - MP 机制,以解决 RFID 系统中的阅读器冲突问题。
超级会员免费看
8612

被折叠的 条评论
为什么被折叠?



