1

如何通过增加功率水平来减少损耗?

这是我正在使用的代码: https ://github.com/maibewakoofhu/Unet

我正在使用以下方法更改功率级别:

 phy[1].powerLevel = -20.dB;

在噪声级别 68dB、功率级别 = -20dB 时,所有DatagramReq都已成功发送。

在噪声级别 70dB、功率级别 = -20dB 时,DatagramReq失败。

现在,将功率电平增加到高达 125dB,DatagramReq仍然失败。

4

1 回答 1

0

我创建了一个更简单的模拟版本来测试 SNR 和丢包关系:

import org.arl.fjage.RealTimePlatform
import org.arl.unet.sim.channels.BasicAcousticChannel

platform = RealTimePlatform

channel = [
  model:                BasicAcousticChannel,
  carrierFrequency:     25.kHz,
  bandwidth:            4096.Hz,
  spreading:            2,
  temperature:          25.C,
  salinity:             35.ppt,
  noiseLevel:           73.dB,
  waterDepth:           1120.m
]

simulate {
    node 'C', address: 31, location: [180.m, 0, -1000.m], web: 8101
    node 'A', address: 21, location: [0.m, 0.m, 0.m], web: 8102
}

这些web:条目允许我们与每个节点交互以探索正在发生的事情。我连接到每个节点(http://localhost:8101/shell.htmlhttp://localhost:8102/shell.html)并subscribe phy查看所有物理层事件。

现在,从节点 A,我尝试广播帧以查看(在各种功率级别)节点 C 是否接收到它们:

> plvl -20
OK
> phy << new TxFrameReq()
AGREE

在节点 C 上,如果成功,您将看到接收:

phy >> RxFrameStartNtf:INFORM[type:CONTROL rxTime:3380134843]
phy >> RxFrameNtf:INFORM[type:CONTROL from:21 rxTime:3380134843]

如果不是,则为坏帧:

phy >> RxFrameStartNtf:INFORM[type:CONTROL rxTime:3389688843]
phy >> BadFrameNtf:INFORM[type:CONTROL rxTime:3389688843]

观察结果: - 在plvl -20dB 处,几乎所有帧都失败了。- 在plvl -10dB 处,几乎所有帧都是成功的。- 在plvl -16dB 时,我得到大约 19% 的帧丢失。

由于 FEC 性能往往是非线性的,因此所有帧与所有帧都失败之间的过渡预计将非常尖锐,这在现实中对于静态噪声来说是典型的。因此,您会预计过渡区域周围的帧丢失率会有很大差异(在本示例中,约为 -16 dB)。

还要注意plvl 125dB 无效(默认情况下,范围plvlphy.minPowerLevelto给出phy.maxPowerLevel,-96 dB 到 0 dB)。所以设置将不起作用:

> plvl 125
phy[1]: WARNING: Parameter powerLevel set to 0.0
phy[2]: WARNING: Parameter powerLevel set to 0.0
phy[3]: WARNING: Parameter powerLevel set to 0.0
phy: WARNING: Parameter signalPowerLevel set to 0.0
于 2019-10-13T07:36:58.897 回答