Я создал более простую версию вашего моделирования для проверки отношения 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
дБ сбиваются почти все кадры. - При plvl -10
дБ почти все кадры успешны. - При plvl -16
дБ я получаю потерю около 19 кадров. %.
Ожидается, что переход между всеми неудачными кадрами во всех последовательных кадрах будет довольно резким, что типично в действительности для стационарного шума, поскольку производительность FEC, как правило, весьма нелинейна. большие различия в частоте потери кадров вокруг переходной области (в этом примере около -16 дБ).
Также обратите внимание, что plvl 125
дБ недопустим (диапазон plvl
определяется как *От 1030 * до phy.maxPowerLevel
, от -96 дБ до 0 дБ по умолчанию). Поэтому настройка, которая не сработала бы:
> 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