如何通过增加功率水平来减少损耗?
这是我正在使用的代码: https ://github.com/maibewakoofhu/Unet
我正在使用以下方法更改功率级别:
phy[1].powerLevel = -20.dB;
在噪声级别 68dB、功率级别 = -20dB 时,所有DatagramReq都已成功发送。
在噪声级别 70dB、功率级别 = -20dB 时,DatagramReq失败。
现在,将功率电平增加到高达 125dB,DatagramReq仍然失败。
如何通过增加功率水平来减少损耗?
这是我正在使用的代码: https ://github.com/maibewakoofhu/Unet
我正在使用以下方法更改功率级别:
phy[1].powerLevel = -20.dB;
在噪声级别 68dB、功率级别 = -20dB 时,所有DatagramReq都已成功发送。
在噪声级别 70dB、功率级别 = -20dB 时,DatagramReq失败。
现在,将功率电平增加到高达 125dB,DatagramReq仍然失败。
我创建了一个更简单的模拟版本来测试 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.html和http://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 -20
dB 处,几乎所有帧都失败了。- 在plvl -10
dB 处,几乎所有帧都是成功的。- 在plvl -16
dB 时,我得到大约 19% 的帧丢失。
由于 FEC 性能往往是非线性的,因此所有帧与所有帧都失败之间的过渡预计将非常尖锐,这在现实中对于静态噪声来说是典型的。因此,您会预计过渡区域周围的帧丢失率会有很大差异(在本示例中,约为 -16 dB)。
还要注意plvl 125
dB 无效(默认情况下,范围plvl
由phy.minPowerLevel
to给出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