LoraWAN论坛
标题:
LoRa 的防冲突机制是什么,节点避免碰撞如何选择信道
[打印本页]
作者:
BeyondDream
时间:
2020-2-12 17:22
标题:
LoRa 的防冲突机制是什么,节点避免碰撞如何选择信道
本帖最后由 BeyondDream 于 2024-9-3 16:32 编辑
请问 LoRaWAN 的防冲突机制是什么?另外网关有 8 个信道,节点上行数据时怎么选择使用哪个信道呢?
关于无线电冲突避免,经典的答案在:《
LoRa 终端如何处理通信碰撞
》
http://lora.timeddd.com/forum.php?mod=viewthread&tid=51
LoRaWAN 防冲突的机制是
ALOHA 算法
,节点上行频率是“随机”选择 8 通道中的一个。
ALOHA 协议原理:很简单,只要用户有数据要发送,就尽管让他们发送。规定时间内若收到应答,表示发送成功,否则重发。
重发策略:等待一段随机的时间,然后重发;如再次冲突,则再等待一段随机的时间,直到重发成功为止。
优点:简单易行。
详情链接:
https://blog.csdn.net/jiangjunjie_2005/article/details/54176245
[attach]563[/attach]
请参考《扩展 LoRa 容量_降低冲突丢包》
http://www.rimelink.com/nd.jsp?fromColId=107&id=48#_np=107_316
作者:
BeyondDream
时间:
2020-2-12 17:26
本帖最后由 BeyondDream 于 2021-8-3 17:11 编辑
图1 8 通道随机上行_理想顺序
[attach]319[/attach]
图2 8 通道随机上行_现实顺序
[attach]320[/attach]
图3 8 通道随机上行_冲突丢包
[attach]321[/attach]
信道就像车道,如下图所示,SX130x 的 8 信道可以并行 8 辆汽车,SX127x/SX126x 的 1 信道只能并行 1 辆汽车。
[attach]489[/attach]
作者:
BeyondDream
时间:
2020-2-18 10:04
本帖最后由 BeyondDream 于 2020-2-18 10:53 编辑
其实节点每次上报都是“随机”选择信道的,它的实现代码如下:
Channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )];
randr() 是一个随机函数,上面的代码语句表示:从可用的信道中
随机选择一个频点上报
。
比如 A 和 B 节点第一次都选择了 3 信道,第二次它们随机选择(比如:A 选择 5,B 选择 7)
当然,第二次它们也可能冲突,我们可以算下概率,因为有 8 通道,每个节点有 8 种可能,那么两者同时冲突的概率是 1/(8*8)=1/64
作者:
ronronner
时间:
2020-5-7 14:42
谢谢分享,学习了!
作者:
tomi
时间:
2022-10-3 22:22
如果数据重发需要单片机参与还是模块自动进行!
作者:
BeyondDream
时间:
2022-10-6 08:25
本帖最后由 BeyondDream 于 2022-10-6 08:28 编辑
tomi 发表于 2022-10-3 22:22
如果数据重发需要单片机参与还是模块自动进行!
数据重发是 LoRaWAN 模组自动完成。更多详情请参考:
《节点如何发送 Confirmed 数据包并接收 loraserver 下发的 Ack 》
http://lora.timeddd.com/forum.php?mod=viewthread&tid=903
《LoRaWAN协议中终端和网关通信会收到网关的ACK回应吗 》
http://lora.timeddd.com/forum.php?mod=viewthread&tid=422
欢迎光临 LoraWAN论坛 (http://lora.timeddd.com/)
Powered by Discuz! X3.3