动态帧时隙aloha算法流程图,帧时隙aloha算法特点
【通信】基于Matlab的动态帧时隙Aloha(Dynamic Framed Slotted Aloha)算法的实现_ Matlab仿真技术博客_博客
作者:热爱科研,心智培养,技术同步提升的Matlab仿真开发者。matlab项目的合作可以私信。
个人主页:Matlab研究工作室
个人信条:从事物中学习。
点击查看更多Matlab仿真内容。
智能算法神经网络预测雷达通信无线传感器
信号处理,图像处理,路径规划,元胞自动机无人机
ALOHA算法1.1纯ALOHA算法原理
纯ALOHA算法是最简单最基础的防碰撞算法。该算法基于时分复用(TDMA ),并且是一种概率算法。当一个标签进入阅读器的活动区域时,它主动向阅读器发送自己的信息,不同标签发送信息的时间是随机的。当阅读器准确地识别出唯一的标签时,它开始与标签通信。
1.2纯ALOHA的基本思想
标签随机向阅读器发送自己的信息。由于这种随机性,传输的数据帧很可能会发生碰撞,标签得不到确认响应,也就是说它能识别出自己发送的数据帧损坏了,它会选择新的时隙发送。等待时间是随机的。直到所有标签都被识别。也可能有标签饿死的情况。适用于待识别标签数量较少的情况。
1.3纯ALOHA识别流程
对于具有接收功能的标签,当其他标签同时在发送数据时,信号会发生重叠,导致部分或完全冲突。一旦发生冲突,阅读器发出命令停止标签发送信息,然后随机等待一段时间再发送信息。不同的标签可以选择不同的时间延迟,从而避免冲突。如果没有冲突,阅读器正确读取标签信息后,标签进入睡眠状态。对于没有接收功能的标签,由于标签无法接收阅读器发送的信息,在检测过程中反复发送自己的信息,直到识别结束。
为了避免像纯ALOHA那样的不完全碰撞,提高系统的吞吐量,可以将时间分成等长的时隙,标记为T0。规定数据帧只能在时隙的开头发送,这就是时隙ALOHA(Slotted ALOHA)算法。
每个时隙有以下三种情况:
1)空闲时隙
2)成功时隙
3)冲突时隙
code%动态帧时隙aloha (DFSA)算法的冲突处理功能
函数[ S_succ,S_idle,S_coll ]=DFSA_anti ( TagsNum,帧长度)
s _ succ=0;成功时隙的百分比
s _ idle=0;空闲插槽的数量百分比
s _ coll=0;冲突插槽的数量百分比
RandSlot=randi( [ 1,FrameLength ],1,tags num);%每个标签随机选择一个1帧长的时隙发送。
SlotCounter=ones( 1,tags num);
%处于待识别状态的标签从帧长1-N中随机选择一个时隙发送数据,
%的值是由自己的伪随机数发生器随机产生的,同时自己的时隙计数器设置为1。
SlotCheck=零(1,帧长度);%检测每个帧中的所有时隙(成功/空闲/冲突)
对于i=1:FrameLength%开始查询帧中的时隙。
remove=[];%存储已冲突/正确识别的标签的序列号。
对于n=1:TagsNum
Randslot (n)==slotcounter (n)%开始查询帧中的时隙,每个标签将随机选择的时隙号与自己的时隙计数器的号进行比较。
slot check(I)=slot check(I)1;%当两者相等时,标签响应读取器,并在该时隙中开始传输数据信息。
Remove=[ Remove,n];%在行向量Remove中存储满足判断条件的标签序列号。
End%当两者不相等时,标签不再发送数据信息,而是保持时隙号,并等待来自阅读器的下一个时隙查询命令。
目标
%在这个阶段,以下三种情况存在于时隙中:
如果SlotCheck(i)==0%,阅读器不检测标签的数据信息,也就是说,在这个时隙中没有标签被发送,阅读器在这个时隙中结束查询。
插槽计数器=插槽计数器1;%并且所有标签将把它们自己的时隙计数器增加1。
S _ idle=S _ idle 1;%这个时隙是空闲的。
否则,如果slot (i)==1%,读取器检测到数据信息并正确地识别它,也就是说,只有一个标签在该时隙中发送消息。
rand slot(Remove(1))=[];收到标签信息后,%阅读器会向标签发送休眠指令,使标签进入休眠状态。
slot counter(Remove(1))=[];%不再响应读者的任何指示。我们可以从RandSlot和SlotCounter矩阵中删除它。
插槽计数器=插槽计数器1;%仍处于待识别状态的其它标签将把它们的时隙计数器加1,并等待来自阅读器的下一个时隙查询命令。
tags num=tags num-1;%更新此框架中要查询的标签数量。
S _ succ=S _ succ 1;%该时隙是成功的时隙。
Else% reader检测到数据信息但无法正确识别,即该时隙有多个标签在传输信息。
对于m=1:length(Remove)%,读取器指示该时隙中的标签在发送数据之前等待下一个帧查询周期。
rand slot(Remove(m)-(m-1))=[];
slot counter(Remove(m)-(m-1))=[];
目标
插槽计数器=插槽计数器1;%同时,其他标签将把它们的时隙计数器增加1。
TagsNum=TagsNum - length(删除);%更新此框架中要查询的标签数量。
S _ coll=S _ coll 1;%这个时隙是一个冲突时隙。
目标
End%当查询中的时隙数等于初始指定的帧长度n时,阅读器发送查询以结束该帧,
End%并根据本帧的S_succ、S_idle和S_coll估计下一帧未识别标签的数量,从而调整下一帧的查询帧长。
运行结果
参考文献[1]煤矿安全预警系统中RFID防碰撞算法的研究_赵岳
[2]基于动态帧时隙ALOHA _张静的标签防碰撞算法研究
[3]基于ALOHA _梦洁的RFID系统防碰撞算法的研究与设计
我注意收到大量的matlab电子书和数学建模资料,还有一些网上文献的理论引用。如有侵权,联系博主删除。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。